From 3f1b57908b312e7f3bfd919c52c61524a673e622 Mon Sep 17 00:00:00 2001
From: cristiansofronie <53446505+cristiansofronie@users.noreply.github.com>
Date: Wed, 24 May 2023 15:04:27 +0300
Subject: [PATCH] fix: correctly restore cursor position in original window
(#2336)
---
lua/telescope/actions/init.lua | 9 ---------
lua/telescope/pickers.lua | 7 ++++++-
2 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/lua/telescope/actions/init.lua b/lua/telescope/actions/init.lua
index d312fbe..2b864a3 100644
--- a/lua/telescope/actions/init.lua
+++ b/lua/telescope/actions/init.lua
@@ -371,17 +371,8 @@ end
--- Close the Telescope window, usually used within an action
---@param prompt_bufnr number: The prompt bufnr
actions.close = function(prompt_bufnr)
- local picker = action_state.get_current_picker(prompt_bufnr)
- local original_win_id = picker.original_win_id
- local cursor_valid, original_cursor = pcall(a.nvim_win_get_cursor, original_win_id)
-
actions.close_pum(prompt_bufnr)
-
require("telescope.pickers").on_close_prompt(prompt_bufnr)
- pcall(a.nvim_set_current_win, original_win_id)
- if cursor_valid and a.nvim_get_mode().mode == "i" and picker._original_mode ~= "i" then
- pcall(a.nvim_win_set_cursor, original_win_id, { original_cursor[1], original_cursor[2] + 1 })
- end
end
--- Close the Telescope window, usually used within an action
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index 9915416..e049b89 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -1495,7 +1495,12 @@ function pickers.on_close_prompt(prompt_bufnr)
event = "BufLeave",
buffer = prompt_bufnr,
}
- picker.close_windows(status)
+
+ vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, true, true), "n", true)
+ vim.defer_fn(function()
+ picker.close_windows(status)
+ end, 0)
+
mappings.clear(prompt_bufnr)
end