@@ -1342,6 +1342,12 @@ builtin.lsp_references({opts}) *builtin.lsp_references()*
|
|||||||
Parameters: ~
|
Parameters: ~
|
||||||
{opts} (table) options to pass to the picker
|
{opts} (table) options to pass to the picker
|
||||||
|
|
||||||
|
Options: ~
|
||||||
|
{include_declaration} (boolean) include symbol declaration in the
|
||||||
|
lsp references (default: true)
|
||||||
|
{include_current_line} (boolean) include current line (default:
|
||||||
|
false)
|
||||||
|
|
||||||
|
|
||||||
builtin.lsp_definitions({opts}) *builtin.lsp_definitions()*
|
builtin.lsp_definitions({opts}) *builtin.lsp_definitions()*
|
||||||
Goto the definition of the word under the cursor, if there's only one,
|
Goto the definition of the word under the cursor, if there's only one,
|
||||||
@@ -1367,12 +1373,10 @@ builtin.lsp_type_definitions({opts}) *builtin.lsp_type_definitions()*
|
|||||||
{opts} (table) options to pass to the picker
|
{opts} (table) options to pass to the picker
|
||||||
|
|
||||||
Options: ~
|
Options: ~
|
||||||
{jump_type} (string) how to goto definition if there is
|
{jump_type} (string) how to goto definition if there is only
|
||||||
only one, values: "tab", "split",
|
one, values: "tab", "split", "vsplit",
|
||||||
"vsplit", "never"
|
"never"
|
||||||
{ignore_filename} (boolean) dont show filenames (default: true)
|
{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()*
|
builtin.lsp_implementations({opts}) *builtin.lsp_implementations()*
|
||||||
|
|||||||
@@ -352,6 +352,8 @@ builtin.jumplist = require_on_exported_call("telescope.builtin.internal").jumpli
|
|||||||
|
|
||||||
--- Lists LSP references for word under the cursor, jumps to reference on `<cr>`
|
--- Lists LSP references for word under the cursor, jumps to reference on `<cr>`
|
||||||
---@param opts table: options to pass to the picker
|
---@param opts table: options to pass to the picker
|
||||||
|
---@field include_declaration boolean: include symbol declaration in the lsp references (default: true)
|
||||||
|
---@field include_current_line boolean: include current line (default: false)
|
||||||
builtin.lsp_references = require_on_exported_call("telescope.builtin.lsp").references
|
builtin.lsp_references = require_on_exported_call("telescope.builtin.lsp").references
|
||||||
|
|
||||||
--- Goto the definition of the word under the cursor, if there's only one, otherwise show all options in Telescope
|
--- Goto the definition of the word under the cursor, if there's only one, otherwise show all options in Telescope
|
||||||
@@ -365,7 +367,6 @@ builtin.lsp_definitions = require_on_exported_call("telescope.builtin.lsp").defi
|
|||||||
---@param opts table: options to pass to the picker
|
---@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 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 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
|
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
|
--- Goto the implementation of the word under the cursor if there's only one, otherwise show all options in Telescope
|
||||||
|
|||||||
@@ -16,9 +16,10 @@ lsp.references = function(opts)
|
|||||||
local filepath = vim.api.nvim_buf_get_name(opts.bufnr)
|
local filepath = vim.api.nvim_buf_get_name(opts.bufnr)
|
||||||
local lnum = vim.api.nvim_win_get_cursor(opts.winnr)[1]
|
local lnum = vim.api.nvim_win_get_cursor(opts.winnr)[1]
|
||||||
local params = vim.lsp.util.make_position_params(opts.winnr)
|
local params = vim.lsp.util.make_position_params(opts.winnr)
|
||||||
|
local include_current_line = vim.F.if_nil(opts.include_current_line, false)
|
||||||
params.context = { includeDeclaration = vim.F.if_nil(opts.include_declaration, 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)
|
vim.lsp.buf_request(opts.bufnr, "textDocument/references", params, function(err, result, ctx, _)
|
||||||
if err then
|
if err then
|
||||||
vim.api.nvim_err_writeln("Error when finding references: " .. err.message)
|
vim.api.nvim_err_writeln("Error when finding references: " .. err.message)
|
||||||
return
|
return
|
||||||
@@ -27,10 +28,14 @@ lsp.references = function(opts)
|
|||||||
local locations = {}
|
local locations = {}
|
||||||
if result then
|
if result then
|
||||||
local results = vim.lsp.util.locations_to_items(result, vim.lsp.get_client_by_id(ctx.client_id).offset_encoding)
|
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)
|
if include_current_line then
|
||||||
-- Remove current line from result
|
locations = vim.tbl_filter(function(v)
|
||||||
return not (v.filename == filepath and v.lnum == lnum)
|
-- Remove current line from result
|
||||||
end, results or {})
|
return not (v.filename == filepath and v.lnum == lnum)
|
||||||
|
end, vim.F.if_nil(results, {}))
|
||||||
|
else
|
||||||
|
locations = vim.F.if_nil(results, {})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if vim.tbl_isempty(locations) then
|
if vim.tbl_isempty(locations) then
|
||||||
@@ -54,7 +59,7 @@ local function list_or_jump(action, title, opts)
|
|||||||
opts = opts or {}
|
opts = opts or {}
|
||||||
|
|
||||||
local params = vim.lsp.util.make_position_params(opts.winnr)
|
local params = vim.lsp.util.make_position_params(opts.winnr)
|
||||||
vim.lsp.buf_request(opts.bufnr, action, params, function(err, result, ctx, _config)
|
vim.lsp.buf_request(opts.bufnr, action, params, function(err, result, ctx, _)
|
||||||
if err then
|
if err then
|
||||||
vim.api.nvim_err_writeln("Error when executing " .. action .. " : " .. err.message)
|
vim.api.nvim_err_writeln("Error when executing " .. action .. " : " .. err.message)
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user