From 7eeea5be054dd13d83e21761c06249bb2323ef98 Mon Sep 17 00:00:00 2001 From: Marcel Arie Date: Sun, 19 Dec 2021 14:00:38 +0100 Subject: [PATCH] break: cleanup preview.treesitter language setting this follows nvim-treesitter more closely but enable can also be a table of enabled languages The config now looks like this: ```lua defaults = { preview = { treesitter = { enable = false, -- or enable = { "c" }, -- disable can be set if enable isn't set disable = { "perl", "javascript" }, }, }, }, ``` --- doc/telescope.txt | 13 +++++++++++-- lua/telescope/config.lua | 13 +++++++++++-- lua/telescope/previewers/utils.lua | 26 ++++++++++++++++++++------ 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/doc/telescope.txt b/doc/telescope.txt index 6381b12d23..4a6eb1ad4a 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -497,8 +497,17 @@ telescope.setup({opts}) *telescope.setup()* highlighting, which falls back to regex-based highlighting. `true`: treesitter highlighting for all available filetypes `false`: regex-based highlighting for all filetypes - `table`: table of filetypes for which to attach treesitter - highlighting + `table`: following nvim-treesitters highlighting options: + It contains two keys: + - enable boolean|table: if boolean, enable all ts + highlighing with that flag, + disable still considered. + Containing a list of filetypes, + that are enabled, disabled + ignored because it doesnt make + any sense in this case. + - disable table: containing a list of filetypes + that are disabled Default: true - msg_bg_fillchar: Character to fill background of unpreviewable buffers with Default: "╱" diff --git a/lua/telescope/config.lua b/lua/telescope/config.lua index c5a9ebf4a4..8198ee2b1b 100644 --- a/lua/telescope/config.lua +++ b/lua/telescope/config.lua @@ -593,8 +593,17 @@ append( highlighting, which falls back to regex-based highlighting. `true`: treesitter highlighting for all available filetypes `false`: regex-based highlighting for all filetypes - `table`: table of filetypes for which to attach treesitter - highlighting + `table`: following nvim-treesitters highlighting options: + It contains two keys: + - enable boolean|table: if boolean, enable all ts + highlighing with that flag, + disable still considered. + Containing a list of filetypes, + that are enabled, disabled + ignored because it doesnt make + any sense in this case. + - disable table: containing a list of filetypes + that are disabled Default: true - msg_bg_fillchar: Character to fill background of unpreviewable buffers with Default: "╱" diff --git a/lua/telescope/previewers/utils.lua b/lua/telescope/previewers/utils.lua index d250894b5c..b1d1d5ec56 100644 --- a/lua/telescope/previewers/utils.lua +++ b/lua/telescope/previewers/utils.lua @@ -82,12 +82,26 @@ end utils.highlighter = function(bufnr, ft, opts) opts = opts or {} opts.preview = opts.preview or {} - opts.preview.treesitter = vim.F.if_nil( - opts.preview.treesitter, - type(conf.preview) == "table" and conf.preview.treesitter - ) - local ts_highlighting = opts.preview.treesitter == true - or type(opts.preview.treesitter) == "table" and vim.tbl_contains(opts.preview.treesitter, ft) + opts.preview.treesitter = vim.F.if_nil(opts.preview.treesitter, conf.preview.treesitter) + if type(opts.preview.treesitter) == "boolean" then + local temp = { enable = opts.preview.treesitter } + opts.preview.treesitter = temp + end + + local ts_highlighting = (function() + if type(opts.preview.treesitter.enable) == "table" then + if vim.tbl_contains(opts.preview.treesitter.enable, ft) then + return true + end + return false + end + + if vim.tbl_contains(vim.F.if_nil(opts.preview.treesitter.disable, {}), ft) then + return false + end + + return opts.preview.treesitter.enable == nil or opts.preview.treesitter.enable == true + end)() local ts_success if ts_highlighting then