summaryrefslogtreecommitdiff
path: root/lua/telescope/builtin
diff options
context:
space:
mode:
authorfdschmidt93 <39233597+fdschmidt93@users.noreply.github.com>2021-03-03 22:33:03 +0100
committerGitHub <noreply@github.com>2021-03-03 22:33:03 +0100
commitdb7615578b43586ef6526c56ba397f86b13fbed9 (patch)
tree0b1644a0269b96f96370962b77babe8486403058 /lua/telescope/builtin
parent390e5fa9f50a2946e2c1d080f114313d984bc4e1 (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.lua1
-rw-r--r--lua/telescope/builtin/lsp.lua32
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