From 1c4cd6cdaa321a50f6a84a6381421d4fda47d767 Mon Sep 17 00:00:00 2001 From: tami5 Date: Fri, 11 Mar 2022 14:46:29 +0300 Subject: [PATCH] feat(lsp_references): expose include_declaration option (default still true) (#1449) --- doc/telescope.txt | 10 ++++++---- lua/telescope/builtin/init.lua | 1 + lua/telescope/builtin/lsp.lua | 13 ++++++++----- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/doc/telescope.txt b/doc/telescope.txt index 1aec296..2f63b28 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -1342,10 +1342,12 @@ builtin.lsp_type_definitions({opts}) *builtin.lsp_type_definitions()* {opts} (table) options to pass to the picker Options: ~ - {jump_type} (string) how to goto definition if there is only - one, values: "tab", "split", "vsplit", - "never" - {ignore_filename} (boolean) dont show filenames (default: true) + {jump_type} (string) how to goto definition if there is + only one, values: "tab", "split", + "vsplit", "never" + {ignore_filename} (boolean) dont show filenames (default: true) + {include_declaration} (boolean) include symbol declaration in the lsp + references (default: true) builtin.lsp_implementations({opts}) *builtin.lsp_implementations()* 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