feat: Add ability to choose window to edit (#745)

This commit is contained in:
TJ DeVries
2022-05-15 16:08:16 -04:00
committed by GitHub
parent 2e421ef02d
commit 0b5f1d69d7
4 changed files with 30 additions and 1 deletions

View File

@@ -658,6 +658,15 @@ telescope.setup({opts}) *telescope.setup()*
Default: nil Default: nil
*telescope.defaults.get_selection_window*
get_selection_window: ~
Function that takes function(picker, entry) and returns a window id.
The window ID will be used to decide what window the chosen file will
be opened in and the cursor placed in upon leaving the picker.
Default: `function() return 0 end`
*telescope.defaults.file_previewer* *telescope.defaults.file_previewer*
file_previewer: ~ file_previewer: ~
Function pointer to the default file_previewer. It is mostly used Function pointer to the default file_previewer. It is mostly used

View File

@@ -130,8 +130,12 @@ action_set.edit = function(prompt_bufnr, command)
local entry_bufnr = entry.bufnr local entry_bufnr = entry.bufnr
local picker = action_state.get_current_picker(prompt_bufnr)
require("telescope.actions").close(prompt_bufnr) require("telescope.actions").close(prompt_bufnr)
local picker = action_state.get_current_picker(prompt_bufnr)
local win_id = picker.get_selection_window(picker, entry)
if win_id ~= 0 and a.nvim_get_current_win() ~= win_id then
vim.api.nvim_set_current_win(win_id)
end
if picker.push_cursor_on_edit then if picker.push_cursor_on_edit then
vim.cmd "normal! m'" vim.cmd "normal! m'"

View File

@@ -787,6 +787,20 @@ append(
Default: nil]] Default: nil]]
) )
append(
"get_selection_window",
function()
return 0
end,
[[
Function that takes function(picker, entry) and returns a window id.
The window ID will be used to decide what window the chosen file will
be opened in and the cursor placed in upon leaving the picker.
Default: `function() return 0 end`
]]
)
append( append(
"file_previewer", "file_previewer",
function(...) function(...)

View File

@@ -94,6 +94,8 @@ function Picker:new(opts)
default_selection_index = opts.default_selection_index, default_selection_index = opts.default_selection_index,
get_selection_window = get_default(opts.get_selection_window, config.values.get_selection_window),
cwd = opts.cwd, cwd = opts.cwd,
_find_id = 0, _find_id = 0,