feat: filtering for dynamic workspace symbols (#1336)
* enable `symbols` filtering opt for builtin.dynamic_workspace_symbols
This commit is contained in:
@@ -1401,11 +1401,14 @@ builtin.lsp_dynamic_workspace_symbols({opts})*builtin.lsp_dynamic_workspace_symb
|
||||
{opts} (table) options to pass to the picker
|
||||
|
||||
Options: ~
|
||||
{ignore_filename} (boolean) dont show filenames (default: false)
|
||||
{show_line} (boolean) if true, shows the content of the line
|
||||
the symbol is found on (default: false)
|
||||
{symbol_highlights} (table) string -> string. Matches symbol with
|
||||
hl_group
|
||||
{ignore_filename} (boolean) dont show filenames (default:
|
||||
false)
|
||||
{show_line} (boolean) if true, shows the content of the
|
||||
line the symbol is found on
|
||||
(default: false)
|
||||
{symbols} (string|table) filter results by symbol kind(s)
|
||||
{symbol_highlights} (table) string -> string. Matches symbol
|
||||
with hl_group
|
||||
|
||||
|
||||
builtin.lsp_document_diagnostics({opts}) *builtin.lsp_document_diagnostics()*
|
||||
|
||||
@@ -428,6 +428,7 @@ builtin.lsp_workspace_symbols = require_on_exported_call("telescope.builtin.lsp"
|
||||
---@param opts table: options to pass to the picker
|
||||
---@field ignore_filename boolean: dont show filenames (default: false)
|
||||
---@field show_line boolean: if true, shows the content of the line the symbol is found on (default: false)
|
||||
---@field symbols string|table: filter results by symbol kind(s)
|
||||
---@field symbol_highlights table: string -> string. Matches symbol with hl_group
|
||||
builtin.lsp_dynamic_workspace_symbols = require_on_exported_call("telescope.builtin.lsp").dynamic_workspace_symbols
|
||||
|
||||
|
||||
@@ -381,7 +381,7 @@ lsp.workspace_symbols = function(opts)
|
||||
}):find()
|
||||
end
|
||||
|
||||
local function get_workspace_symbols_requester(bufnr)
|
||||
local function get_workspace_symbols_requester(bufnr, opts)
|
||||
local cancel = function() end
|
||||
|
||||
return function(prompt)
|
||||
@@ -400,6 +400,9 @@ local function get_workspace_symbols_requester(bufnr)
|
||||
assert(not err, err)
|
||||
|
||||
local locations = vim.lsp.util.symbols_to_items(results_lsp or {}, bufnr) or {}
|
||||
if not vim.tbl_isempty(locations) then
|
||||
locations = utils.filter_symbols(locations, opts) or {}
|
||||
end
|
||||
return locations
|
||||
end
|
||||
end
|
||||
@@ -411,7 +414,7 @@ lsp.dynamic_workspace_symbols = function(opts)
|
||||
prompt_title = "LSP Dynamic Workspace Symbols",
|
||||
finder = finders.new_dynamic {
|
||||
entry_maker = opts.entry_maker or make_entry.gen_from_lsp_symbols(opts),
|
||||
fn = get_workspace_symbols_requester(curr_bufnr),
|
||||
fn = get_workspace_symbols_requester(curr_bufnr, opts),
|
||||
},
|
||||
previewer = conf.qflist_previewer(opts),
|
||||
sorter = conf.generic_sorter(opts),
|
||||
|
||||
Reference in New Issue
Block a user