From d7cdfcbeb63af82a949a8cc0f9135631d2db5dc6 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 5 Aug 2021 04:33:13 +0800 Subject: [PATCH] feat: add option jump_type to lsp_definitions and lsp_implementations (#1077) --- doc/telescope.txt | 8 ++++++++ lua/telescope/builtin/init.lua | 2 ++ lua/telescope/builtin/lsp.lua | 9 ++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/telescope.txt b/doc/telescope.txt index 7eb6ead..a12166c 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -789,6 +789,10 @@ builtin.lsp_definitions({opts}) *builtin.lsp_definitions()* Parameters: ~ {opts} (table) options to pass to the picker + Fields: ~ + {jump_type} (string) how to go to definition if there is only one, + values: "tab", "split", "vsplit", "never" + builtin.lsp_implementations({opts}) *builtin.lsp_implementations()* Goto the implementation of the word under the cursor if there's only one, @@ -798,6 +802,10 @@ builtin.lsp_implementations({opts}) *builtin.lsp_implementations()* Parameters: ~ {opts} (table) options to pass to the picker + Fields: ~ + {jump_type} (string) how to go to implementation if there is only one, + values: "tab", "split", "vsplit", "never" + builtin.lsp_code_actions({opts}) *builtin.lsp_code_actions()* Lists any LSP actions for the word under the cursor which can be triggered diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua index e4b34e2..b1153ee 100644 --- a/lua/telescope/builtin/init.lua +++ b/lua/telescope/builtin/init.lua @@ -316,10 +316,12 @@ builtin.lsp_references = require("telescope.builtin.lsp").references --- 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 go to definition if there is only one, values: "tab", "split", "vsplit", "never" builtin.lsp_definitions = require("telescope.builtin.lsp").definitions --- 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 go to implementation if there is only one, values: "tab", "split", "vsplit", "never" builtin.lsp_implementations = require("telescope.builtin.lsp").implementations --- Lists any LSP actions for the word under the cursor which can be triggered with `` diff --git a/lua/telescope/builtin/lsp.lua b/lua/telescope/builtin/lsp.lua index dccda5d..42a1851 100644 --- a/lua/telescope/builtin/lsp.lua +++ b/lua/telescope/builtin/lsp.lua @@ -64,7 +64,14 @@ local function list_or_jump(action, title, opts) if #flattened_results == 0 then return - elseif #flattened_results == 1 then + 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" + end vim.lsp.util.jump_to_location(flattened_results[1]) else local locations = vim.lsp.util.locations_to_items(flattened_results)