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

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

View File

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