feat(config): LSP Blacklist

Addresses #9
This commit is contained in:
simrat39
2021-04-28 22:39:19 -07:00
parent 067fd91f16
commit b8ec42f32a
3 changed files with 27 additions and 10 deletions

View File

@@ -35,6 +35,7 @@ vim.g.symbols_outline = {
rename_symbol = "r", rename_symbol = "r",
code_actions = "a", code_actions = "a",
}, },
lsp_blacklist = {},
} }
``` ```
@@ -52,15 +53,17 @@ let g:symbols_outline = {
\ "rename_symbol": "r", \ "rename_symbol": "r",
\ "code_actions": "a", \ "code_actions": "a",
\ }, \ },
\ "lsp_blacklist": [],
\ } \ }
``` ```
| Property | Description | Type | Default | | Property | Description | Type | Default |
| ---------------------- | ------------------------------------------------------------------ | ----------------- | ------------------------ | | ---------------------- | ------------------------------------------------------------------ | ------------------ | ------------------------ |
| highlight_hovered_item | Whether to highlight the currently hovered symbol (high cpu usage) | boolean | true | | highlight_hovered_item | Whether to highlight the currently hovered symbol (high cpu usage) | boolean | true |
| show_guides | Wether to show outline guides | boolean | true | | show_guides | Wether to show outline guides | boolean | true |
| position | Where to open the split window | 'right' or 'left' | 'right' | | position | Where to open the split window | 'right' or 'left' | 'right' |
| keymaps | Which keys do what | table | [here](#default-keymaps) | | keymaps | Which keys do what | table (dictionary) | [here](#default-keymaps) |
| lsp_blacklist | Which lsp clients to ignore | table (array) | {} |
### Commands ### Commands

View File

@@ -49,8 +49,9 @@ end
function M._refresh() function M._refresh()
if M.state.outline_buf ~= nil then if M.state.outline_buf ~= nil then
vim.lsp.buf_request(0, "textDocument/documentSymbol", getParams(), vim.lsp.buf_request(0, "textDocument/documentSymbol", getParams(),
function(_, _, result) function(_, _, result, client_id)
if result == nil or type(result) ~= 'table' then return end if result == nil or type(result) ~= 'table' then return end
if config.is_client_blacklisted(client_id) then return end
M.state.code_win = vim.api.nvim_get_current_win() M.state.code_win = vim.api.nvim_get_current_win()
M.state.outline_items = parser.parse(result) M.state.outline_items = parser.parse(result)
@@ -182,8 +183,9 @@ local function setup_buffer()
vim.api.nvim_buf_set_option(M.state.outline_buf, "modifiable", false) vim.api.nvim_buf_set_option(M.state.outline_buf, "modifiable", false)
end end
local function handler(_, _, result) local function handler(_, _, result, client_id)
if result == nil or type(result) ~= 'table' then return end if result == nil or type(result) ~= 'table' then return end
if config.is_client_blacklisted(client_id) then return end
M.state.code_win = vim.api.nvim_get_current_win() M.state.code_win = vim.api.nvim_get_current_win()

View File

@@ -12,8 +12,9 @@ local defaults = {
focus_location = "o", focus_location = "o",
hover_symbol = "<C-space>", hover_symbol = "<C-space>",
rename_symbol = "r", rename_symbol = "r",
code_actions = "a", code_actions = "a"
} },
lsp_blacklist = {}
} }
M.options = {} M.options = {}
@@ -34,6 +35,17 @@ function M.get_split_command()
end end
end end
local function has_value(tab, val)
for _, value in ipairs(tab) do if value == val then return true end end
return false
end
function M.is_client_blacklisted(client_id)
local client = vim.lsp.get_client_by_id(client_id)
return has_value(M.options.lsp_blacklist, client.name)
end
function M.setup(options) function M.setup(options)
M.options = vim.tbl_deep_extend("force", {}, defaults, options or {}) M.options = vim.tbl_deep_extend("force", {}, defaults, options or {})
end end