diff options
| author | fdschmidt93 <39233597+fdschmidt93@users.noreply.github.com> | 2021-03-03 22:33:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-03 22:33:03 +0100 |
| commit | db7615578b43586ef6526c56ba397f86b13fbed9 (patch) | |
| tree | 0b1644a0269b96f96370962b77babe8486403058 /lua/telescope/builtin | |
| parent | 390e5fa9f50a2946e2c1d080f114313d984bc4e1 (diff) | |
feat: lsp diagnostics and prefiltering by entry attribute (#543)
prefiltering for lsp_document_symbols and lsp_workspace_symbols.
example: type `:var:` to show all vars
Diffstat (limited to 'lua/telescope/builtin')
| -rw-r--r-- | lua/telescope/builtin/init.lua | 1 | ||||
| -rw-r--r-- | lua/telescope/builtin/lsp.lua | 32 |
2 files changed, 31 insertions, 2 deletions
diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua index 2d76c79..940d3a3 100644 --- a/lua/telescope/builtin/init.lua +++ b/lua/telescope/builtin/init.lua @@ -64,6 +64,7 @@ builtin.spell_suggest = require('telescope.builtin.internal').spell_suggest builtin.lsp_references = require('telescope.builtin.lsp').references builtin.lsp_document_symbols = require('telescope.builtin.lsp').document_symbols builtin.lsp_code_actions = require('telescope.builtin.lsp').code_actions +builtin.lsp_diagnostics = require('telescope.builtin.lsp').diagnostics builtin.lsp_range_code_actions = require('telescope.builtin.lsp').range_code_actions builtin.lsp_workspace_symbols = require('telescope.builtin.lsp').workspace_symbols diff --git a/lua/telescope/builtin/lsp.lua b/lua/telescope/builtin/lsp.lua index 49bc698..8324cf1 100644 --- a/lua/telescope/builtin/lsp.lua +++ b/lua/telescope/builtin/lsp.lua @@ -64,7 +64,10 @@ lsp.document_symbols = function(opts) entry_maker = opts.entry_maker or make_entry.gen_from_lsp_symbols(opts) }, previewer = conf.qflist_previewer(opts), - sorter = conf.generic_sorter(opts), + sorter = conf.prefilter_sorter{ + tag = "symbol_type", + sorter = conf.generic_sorter(opts) + } }):find() end @@ -180,7 +183,32 @@ lsp.workspace_symbols = function(opts) entry_maker = opts.entry_maker or make_entry.gen_from_lsp_symbols(opts) }, previewer = conf.qflist_previewer(opts), - sorter = conf.generic_sorter(opts), + sorter = conf.prefilter_sorter{ + tag = "symbol_type", + sorter = conf.generic_sorter(opts) + } + }):find() +end + +lsp.diagnostics = function(opts) + local locations = utils.diagnostics_to_tbl(opts) + + if vim.tbl_isempty(locations) then + print('No diagnostics found') + return + end + + pickers.new(opts, { + prompt_title = 'LSP Diagnostics', + finder = finders.new_table { + results = locations, + entry_maker = opts.entry_maker or make_entry.gen_from_lsp_diagnostics(opts) + }, + previewer = conf.qflist_previewer(opts), + sorter = conf.prefilter_sorter{ + tag = "type", + sorter = conf.generic_sorter(opts) + } }):find() end |
