summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/telescope/pickers.lua18
1 files changed, 12 insertions, 6 deletions
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index 7dbe8a0..9e5f251 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -370,13 +370,19 @@ function Picker:find()
-- TODO(async): I wonder if this should actually happen _before_ we nvim_buf_attach.
-- This way the buffer would always start with what we think it should when we start the loop.
- if self.default_text then
- self:set_prompt(self.default_text)
- end
-
- if self.initial_mode == "insert" then
+ if self.initial_mode == "insert" or self.initial_mode == "normal" then
+ -- required for set_prompt to work adequately
vim.cmd [[startinsert!]]
- elseif self.initial_mode ~= "normal" then
+ if self.default_text then
+ self:set_prompt(self.default_text)
+ end
+ if self.initial_mode == "normal" then
+ -- otherwise (i) insert mode exitted faster than `picker:set_prompt`; (ii) cursor on wrong pos
+ await_schedule(function()
+ vim.cmd [[stopinsert]]
+ end)
+ end
+ else
error("Invalid setting for initial_mode: " .. self.initial_mode)
end