15
README.md
15
README.md
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user