feat: filtering for dynamic workspace symbols (#1336)
* enable `symbols` filtering opt for builtin.dynamic_workspace_symbols
This commit is contained in:
@@ -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