diff --git a/doc/telescope.txt b/doc/telescope.txt index bb43329500..5217fc74d4 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -1605,20 +1605,22 @@ builtin.lsp_references({opts}) *telescope.builtin.lsp_references()* {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) - {jump_type} (string) how to goto reference if there is - only one and the definition file is - different from the current file, - values: "tab", "tab drop", "split", - "vsplit", "never" - {show_line} (boolean) show results text (default: true) - {trim_text} (boolean) trim results text (default: false) - {reuse_win} (boolean) jump to existing window if buffer is - already opened (default: false) - {file_encoding} (string) file encoding for the previewer + {include_declaration} (boolean) include symbol declaration in the + lsp references (default: true) + {include_current_line} (boolean) include current line (default: + false) + {jump_type} (string|function) how to goto reference if there is + only one and the definition file is + different from the current file, + values: "tab", "tab drop", "split", + "vsplit", "never" or a function, + which will be executed before the + jump + {show_line} (boolean) show results text (default: true) + {trim_text} (boolean) trim results text (default: false) + {reuse_win} (boolean) jump to existing window if buffer is + already opened (default: false) + {file_encoding} (string) file encoding for the previewer builtin.lsp_incoming_calls({opts}) *telescope.builtin.lsp_incoming_calls()* @@ -1658,15 +1660,17 @@ 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 - and the definition file is different from - the current file, values: "tab", "tab - drop", "split", "vsplit", "never" - {show_line} (boolean) show results text (default: true) - {trim_text} (boolean) trim results text (default: false) - {reuse_win} (boolean) jump to existing window if buffer is - already opened (default: false) - {file_encoding} (string) file encoding for the previewer + {jump_type} (string|function) how to goto definition if there is only one + and the definition file is different from + the current file, values: "tab", "tab + drop", "split", "vsplit", "never" or a function, + which will be executed before the + jump + {show_line} (boolean) show results text (default: true) + {trim_text} (boolean) trim results text (default: false) + {reuse_win} (boolean) jump to existing window if buffer is + already opened (default: false) + {file_encoding} (string) file encoding for the previewer builtin.lsp_type_definitions({opts}) *telescope.builtin.lsp_type_definitions()* @@ -1678,15 +1682,17 @@ 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 - and the definition file is different from - the current file, values: "tab", "tab - drop", "split", "vsplit", "never" - {show_line} (boolean) show results text (default: true) - {trim_text} (boolean) trim results text (default: false) - {reuse_win} (boolean) jump to existing window if buffer is - already opened (default: false) - {file_encoding} (string) file encoding for the previewer + {jump_type} (string|function) how to goto definition if there is only one + and the definition file is different from + the current file, values: "tab", "tab + drop", "split", "vsplit", "never" or a function, + which will be executed before the + jump + {show_line} (boolean) show results text (default: true) + {trim_text} (boolean) trim results text (default: false) + {reuse_win} (boolean) jump to existing window if buffer is + already opened (default: false) + {file_encoding} (string) file encoding for the previewer builtin.lsp_implementations({opts}) *telescope.builtin.lsp_implementations()* @@ -1698,15 +1704,17 @@ builtin.lsp_implementations({opts}) *telescope.builtin.lsp_implementations()* {opts} (table) options to pass to the picker Options: ~ - {jump_type} (string) how to goto implementation if there is only - one and the definition file is different - from the current file, values: "tab", "tab - drop", "split", "vsplit", "never" - {show_line} (boolean) show results text (default: true) - {trim_text} (boolean) trim results text (default: false) - {reuse_win} (boolean) jump to existing window if buffer is - already opened (default: false) - {file_encoding} (string) file encoding for the previewer + {jump_type} (string|function) how to goto implementation if there is only + one and the definition file is different + from the current file, values: "tab", "tab + drop", "split", "vsplit", "never" or a function, + which will be executed before the + jump + {show_line} (boolean) show results text (default: true) + {trim_text} (boolean) trim results text (default: false) + {reuse_win} (boolean) jump to existing window if buffer is + already opened (default: false) + {file_encoding} (string) file encoding for the previewer builtin.lsp_document_symbols({opts}) *telescope.builtin.lsp_document_symbols()* diff --git a/lua/telescope/builtin/__lsp.lua b/lua/telescope/builtin/__lsp.lua index 0d268ae4e2..1d00165e54 100644 --- a/lua/telescope/builtin/__lsp.lua +++ b/lua/telescope/builtin/__lsp.lua @@ -255,6 +255,8 @@ local function list_or_jump(action, title, funname, params, opts) cmd = "vnew" elseif opts.jump_type == "tab drop" then cmd = "tab drop" + elseif type(opts.jump_type) == "function" then + opts.jump_type() end if cmd then diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua index 6e27c27ab3..c8f69fca52 100644 --- a/lua/telescope/builtin/init.lua +++ b/lua/telescope/builtin/init.lua @@ -423,7 +423,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 and the definition file is different from the current file, values: "tab", "tab drop", "split", "vsplit", "never" +---@field jump_type string|function: how to goto reference if there is only one and the definition file is different from the current file, values: "tab", "tab drop", "split", "vsplit", "never" or a function, which will be executed before the jump ---@field show_line boolean: show results text (default: true) ---@field trim_text boolean: trim results text (default: false) ---@field reuse_win boolean: jump to existing window if buffer is already opened (default: false) @@ -446,7 +446,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 and the definition file is different from the current file, values: "tab", "tab drop", "split", "vsplit", "never" +---@field jump_type string|function: how to goto definition if there is only one and the definition file is different from the current file, values: "tab", "tab drop", "split", "vsplit", "never" or a function, which will be executed before the jump ---@field show_line boolean: show results text (default: true) ---@field trim_text boolean: trim results text (default: false) ---@field reuse_win boolean: jump to existing window if buffer is already opened (default: false) @@ -456,7 +456,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 and the definition file is different from the current file, values: "tab", "tab drop", "split", "vsplit", "never" +---@field jump_type string|function: how to goto definition if there is only one and the definition file is different from the current file, values: "tab", "tab drop", "split", "vsplit", "never" or a function, which will be executed before the jump ---@field show_line boolean: show results text (default: true) ---@field trim_text boolean: trim results text (default: false) ---@field reuse_win boolean: jump to existing window if buffer is already opened (default: false) @@ -465,7 +465,7 @@ builtin.lsp_type_definitions = require_on_exported_call("telescope.builtin.__lsp --- 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 and the definition file is different from the current file, values: "tab", "tab drop", "split", "vsplit", "never" +---@field jump_type string|function: how to goto implementation if there is only one and the definition file is different from the current file, values: "tab", "tab drop", "split", "vsplit", "never" or a function, which will be executed before the jump ---@field show_line boolean: show results text (default: true) ---@field trim_text boolean: trim results text (default: false) ---@field reuse_win boolean: jump to existing window if buffer is already opened (default: false)