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
|
{opts} (table) options to pass to the picker
|
||||||
|
|
||||||
Options: ~
|
Options: ~
|
||||||
{ignore_filename} (boolean) dont show filenames (default: false)
|
{ignore_filename} (boolean) dont show filenames (default:
|
||||||
{show_line} (boolean) if true, shows the content of the line
|
false)
|
||||||
the symbol is found on (default: false)
|
{show_line} (boolean) if true, shows the content of the
|
||||||
{symbol_highlights} (table) string -> string. Matches symbol with
|
line the symbol is found on
|
||||||
hl_group
|
(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()*
|
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
|
---@param opts table: options to pass to the picker
|
||||||
---@field ignore_filename boolean: dont show filenames (default: false)
|
---@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 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
|
---@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
|
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()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_workspace_symbols_requester(bufnr)
|
local function get_workspace_symbols_requester(bufnr, opts)
|
||||||
local cancel = function() end
|
local cancel = function() end
|
||||||
|
|
||||||
return function(prompt)
|
return function(prompt)
|
||||||
@@ -400,6 +400,9 @@ local function get_workspace_symbols_requester(bufnr)
|
|||||||
assert(not err, err)
|
assert(not err, err)
|
||||||
|
|
||||||
local locations = vim.lsp.util.symbols_to_items(results_lsp or {}, bufnr) or {}
|
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
|
return locations
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -411,7 +414,7 @@ lsp.dynamic_workspace_symbols = function(opts)
|
|||||||
prompt_title = "LSP Dynamic Workspace Symbols",
|
prompt_title = "LSP Dynamic Workspace Symbols",
|
||||||
finder = finders.new_dynamic {
|
finder = finders.new_dynamic {
|
||||||
entry_maker = opts.entry_maker or make_entry.gen_from_lsp_symbols(opts),
|
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),
|
previewer = conf.qflist_previewer(opts),
|
||||||
sorter = conf.generic_sorter(opts),
|
sorter = conf.generic_sorter(opts),
|
||||||
|
|||||||
Reference in New Issue
Block a user