feat: filtering for dynamic workspace symbols (#1336)

* enable `symbols` filtering opt for builtin.dynamic_workspace_symbols
This commit is contained in:
fdschmidt93
2021-10-12 18:48:55 +02:00
committed by GitHub
parent 45051df61b
commit c19eae901c
3 changed files with 14 additions and 7 deletions

View File

@@ -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()*

View File

@@ -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

View File

@@ -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),