diff --git a/doc/telescope.txt b/doc/telescope.txt index 419e495..8d44c04 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -2470,6 +2470,28 @@ actions.select_tab({prompt_bufnr}) *telescope.actions.select_tab()* {prompt_bufnr} (number) The prompt bufnr +actions.select_drop({prompt_bufnr}) *telescope.actions.select_drop()* + Perform 'drop' action on selection, usually something like + `:drop ` + + i.e. open the selection in a window + + + Parameters: ~ + {prompt_bufnr} (number) The prompt bufnr + + +actions.select_tab_drop({prompt_bufnr}) *telescope.actions.select_tab_drop()* + Perform 'tab drop' action on selection, usually something like + `:tab drop ` + + i.e. open the selection in a new tab + + + Parameters: ~ + {prompt_bufnr} (number) The prompt bufnr + + actions.file_edit({prompt_bufnr}) *telescope.actions.file_edit()* Perform file edit on selection, usually something like `:edit ` diff --git a/lua/telescope/actions/init.lua b/lua/telescope/actions/init.lua index 1f047e2..3384b54 100644 --- a/lua/telescope/actions/init.lua +++ b/lua/telescope/actions/init.lua @@ -299,6 +299,38 @@ actions.select_tab = { end, } +--- Perform 'drop' action on selection, usually something like
+---`:drop ` +--- +--- i.e. open the selection in a window +---@param prompt_bufnr number: The prompt bufnr +actions.select_drop = { + pre = function(prompt_bufnr) + action_state + .get_current_history() + :append(action_state.get_current_line(), action_state.get_current_picker(prompt_bufnr)) + end, + action = function(prompt_bufnr) + return action_set.select(prompt_bufnr, "drop") + end, +} + +--- Perform 'tab drop' action on selection, usually something like
+---`:tab drop ` +--- +--- i.e. open the selection in a new tab +---@param prompt_bufnr number: The prompt bufnr +actions.select_tab_drop = { + pre = function(prompt_bufnr) + action_state + .get_current_history() + :append(action_state.get_current_line(), action_state.get_current_picker(prompt_bufnr)) + end, + action = function(prompt_bufnr) + return action_set.select(prompt_bufnr, "tab drop") + end, +} + -- TODO: consider adding float! -- https://github.com/nvim-telescope/telescope.nvim/issues/365 diff --git a/lua/telescope/actions/set.lua b/lua/telescope/actions/set.lua index 6177c9b..7861bb2 100644 --- a/lua/telescope/actions/set.lua +++ b/lua/telescope/actions/set.lua @@ -68,6 +68,7 @@ local edit_buffer do local map = { drop = "drop", + ["tab drop"] = "tab drop", edit = "buffer", new = "sbuffer", vnew = "vert sbuffer", @@ -79,7 +80,7 @@ do if command == nil then error "There was no associated buffer command" end - if command ~= "drop" then + if command ~= "drop" and command ~= "tab drop" then vim.cmd(string.format("%s %d", command, bufnr)) else vim.cmd(string.format("%s %s", command, vim.api.nvim_buf_get_name(bufnr))) diff --git a/lua/telescope/actions/state.lua b/lua/telescope/actions/state.lua index b07248a..d5109ed 100644 --- a/lua/telescope/actions/state.lua +++ b/lua/telescope/actions/state.lua @@ -33,6 +33,8 @@ local select_to_edit_map = { horizontal = "new", vertical = "vnew", tab = "tabedit", + drop = "drop", + ["tab drop"] = "tab drop", } function action_state.select_key_to_edit_key(type) return select_to_edit_map[type]