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