summaryrefslogtreecommitdiff
path: root/lua/telescope
diff options
context:
space:
mode:
authortami5 <kkharji@protonmail.com>2022-03-11 14:46:29 +0300
committerGitHub <noreply@github.com>2022-03-11 12:46:29 +0100
commit1c4cd6cdaa321a50f6a84a6381421d4fda47d767 (patch)
treee177baafd7ef646fc8155a442f072225e668b37a /lua/telescope
parentd331433ed82f68beb54135a5b7f9ef02e90a0ade (diff)
feat(lsp_references): expose include_declaration option (default still true) (#1449)
Diffstat (limited to 'lua/telescope')
-rw-r--r--lua/telescope/builtin/init.lua1
-rw-r--r--lua/telescope/builtin/lsp.lua13
2 files changed, 9 insertions, 5 deletions
diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua
index 1edf1c8..ed65a45 100644
--- a/lua/telescope/builtin/init.lua
+++ b/lua/telescope/builtin/init.lua
@@ -365,6 +365,7 @@ builtin.lsp_definitions = require_on_exported_call("telescope.builtin.lsp").defi
---@param opts table: options to pass to the picker
---@field jump_type string: how to goto definition if there is only one, values: "tab", "split", "vsplit", "never"
---@field ignore_filename boolean: dont show filenames (default: true)
+---@field include_declaration boolean: include symbol declaration in the lsp references (default: true)
builtin.lsp_type_definitions = require("telescope.builtin.lsp").type_definitions
--- Goto the implementation of the word under the cursor if there's only one, otherwise show all options in Telescope
diff --git a/lua/telescope/builtin/lsp.lua b/lua/telescope/builtin/lsp.lua
index 4b9de3c..464caef 100644
--- a/lua/telescope/builtin/lsp.lua
+++ b/lua/telescope/builtin/lsp.lua
@@ -13,8 +13,10 @@ local utils = require "telescope.utils"
local lsp = {}
lsp.references = function(opts)
+ local filepath = vim.api.nvim_buf_get_name(opts.bufnr)
+ local lnum = vim.api.nvim_win_get_cursor(opts.winnr)[1]
local params = vim.lsp.util.make_position_params(opts.winnr)
- params.context = { includeDeclaration = true }
+ params.context = { includeDeclaration = vim.F.if_nil(opts.include_declaration, true) }
vim.lsp.buf_request(opts.bufnr, "textDocument/references", params, function(err, result, ctx, _config)
if err then
@@ -24,10 +26,11 @@ lsp.references = function(opts)
local locations = {}
if result then
- vim.list_extend(
- locations,
- vim.lsp.util.locations_to_items(result, vim.lsp.get_client_by_id(ctx.client_id).offset_encoding) or {}
- )
+ local results = vim.lsp.util.locations_to_items(result, vim.lsp.get_client_by_id(ctx.client_id).offset_encoding)
+ locations = vim.tbl_filter(function(v)
+ -- Remove current line from result
+ return not (v.filename == filepath and v.lnum == lnum)
+ end, results or {})
end
if vim.tbl_isempty(locations) then