@@ -49,8 +49,9 @@ end
|
||||
function M._refresh()
|
||||
if M.state.outline_buf ~= nil then
|
||||
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 config.is_client_blacklisted(client_id) then return end
|
||||
|
||||
M.state.code_win = vim.api.nvim_get_current_win()
|
||||
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)
|
||||
end
|
||||
|
||||
local function handler(_, _, result)
|
||||
local function handler(_, _, result, client_id)
|
||||
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()
|
||||
|
||||
|
||||
@@ -12,8 +12,9 @@ local defaults = {
|
||||
focus_location = "o",
|
||||
hover_symbol = "<C-space>",
|
||||
rename_symbol = "r",
|
||||
code_actions = "a",
|
||||
}
|
||||
code_actions = "a"
|
||||
},
|
||||
lsp_blacklist = {}
|
||||
}
|
||||
|
||||
M.options = {}
|
||||
@@ -34,6 +35,17 @@ function M.get_split_command()
|
||||
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)
|
||||
M.options = vim.tbl_deep_extend("force", {}, defaults, options or {})
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user