diff --git a/.luacheckrc b/.luacheckrc index b035079..1602e62 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -24,3 +24,11 @@ globals = { read_globals = { "vim", } + +files = { + ["lua/telescope/builtin/init.lua"] = { + ignore = { + "631", -- allow line len > 120 + } + }, +} diff --git a/doc/telescope.txt b/doc/telescope.txt index efa49d7..8135b0f 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -1454,8 +1454,10 @@ builtin.lsp_references({opts}) *telescope.builtin.lsp_references()* {include_current_line} (boolean) include current line (default: false) {jump_type} (string) how to goto reference if there is - only one, values: "tab", "split", - "vsplit", "never" + only one and the definition file is + different from the current file, + values: "tab", "split", "vsplit", + "never" {fname_width} (number) defines the width of the filename section (default: 30) {show_line} (boolean) show results text (default: true) @@ -1501,8 +1503,10 @@ builtin.lsp_definitions({opts}) *telescope.builtin.lsp_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" + {jump_type} (string) how to goto definition if there is only one + and the definition file is different from the + current file, values: "tab", "split", + "vsplit", "never" {fname_width} (number) defines the width of the filename section (default: 30) {show_line} (boolean) show results text (default: true) @@ -1518,8 +1522,10 @@ builtin.lsp_type_definitions({opts}) *telescope.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" + {jump_type} (string) how to goto definition if there is only one + and the definition file is different from the + current file, values: "tab", "split", + "vsplit", "never" {fname_width} (number) defines the width of the filename section (default: 30) {show_line} (boolean) show results text (default: true) @@ -1536,8 +1542,9 @@ builtin.lsp_implementations({opts}) *telescope.builtin.lsp_implementations()* Options: ~ {jump_type} (string) how to goto implementation if there is only - one, values: "tab", "split", "vsplit", - "never" + one and the definition file is different from + the current file, values: "tab", "split", + "vsplit", "never" {fname_width} (number) defines the width of the filename section (default: 30) {show_line} (boolean) show results text (default: true) diff --git a/lua/telescope/builtin/__lsp.lua b/lua/telescope/builtin/__lsp.lua index c23f25c..96b7cfa 100644 --- a/lua/telescope/builtin/__lsp.lua +++ b/lua/telescope/builtin/__lsp.lua @@ -40,12 +40,14 @@ lsp.references = function(opts) end if #locations == 1 and opts.jump_type ~= "never" then - if opts.jump_type == "tab" then - vim.cmd "tabedit" - elseif opts.jump_type == "split" then - vim.cmd "new" - elseif opts.jump_type == "vsplit" then - vim.cmd "vnew" + if filepath ~= locations[1].filename then + if opts.jump_type == "tab" then + vim.cmd "tabedit" + elseif opts.jump_type == "split" then + vim.cmd "new" + elseif opts.jump_type == "vsplit" then + vim.cmd "vnew" + end end -- jump to location local location = locations[1] @@ -184,12 +186,14 @@ local function list_or_jump(action, title, opts) if #flattened_results == 0 then return elseif #flattened_results == 1 and opts.jump_type ~= "never" then - if opts.jump_type == "tab" then - vim.cmd "tabedit" - elseif opts.jump_type == "split" then - vim.cmd "new" - elseif opts.jump_type == "vsplit" then - vim.cmd "vnew" + if params.textDocument.uri ~= flattened_results[1].uri then + if opts.jump_type == "tab" then + vim.cmd "tabedit" + elseif opts.jump_type == "split" then + vim.cmd "new" + elseif opts.jump_type == "vsplit" then + vim.cmd "vnew" + end end vim.lsp.util.jump_to_location(flattened_results[1], offset_encoding) else diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua index c9c0ae3..e74cdf4 100644 --- a/lua/telescope/builtin/init.lua +++ b/lua/telescope/builtin/init.lua @@ -379,7 +379,7 @@ builtin.jumplist = require_on_exported_call("telescope.builtin.__internal").jump ---@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) ----@field jump_type string: how to goto reference if there is only one, values: "tab", "split", "vsplit", "never" +---@field jump_type string: how to goto reference if there is only one and the definition file is different from the current file, values: "tab", "split", "vsplit", "never" ---@field fname_width number: defines the width of the filename section (default: 30) ---@field show_line boolean: show results text (default: true) ---@field trim_text boolean: trim results text (default: false) @@ -401,7 +401,7 @@ builtin.lsp_outgoing_calls = require_on_exported_call("telescope.builtin.__lsp") --- Goto the definition of the word under the cursor, if there's only one, otherwise show all options in Telescope ---@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 and the definition file is different from the current file, values: "tab", "split", "vsplit", "never" ---@field fname_width number: defines the width of the filename section (default: 30) ---@field show_line boolean: show results text (default: true) ---@field trim_text boolean: trim results text (default: false) @@ -410,7 +410,7 @@ builtin.lsp_definitions = require_on_exported_call("telescope.builtin.__lsp").de --- Goto the definition of the type of the word under the cursor, if there's only one, --- otherwise show all options in Telescope ---@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 and the definition file is different from the current file, values: "tab", "split", "vsplit", "never" ---@field fname_width number: defines the width of the filename section (default: 30) ---@field show_line boolean: show results text (default: true) ---@field trim_text boolean: trim results text (default: false) @@ -418,7 +418,7 @@ builtin.lsp_type_definitions = require("telescope.builtin.__lsp").type_definitio --- Goto the implementation of the word under the cursor if there's only one, otherwise show all options in Telescope ---@param opts table: options to pass to the picker ----@field jump_type string: how to goto implementation if there is only one, values: "tab", "split", "vsplit", "never" +---@field jump_type string: how to goto implementation if there is only one and the definition file is different from the current file, values: "tab", "split", "vsplit", "never" ---@field fname_width number: defines the width of the filename section (default: 30) ---@field show_line boolean: show results text (default: true) ---@field trim_text boolean: trim results text (default: false)