diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua index 50bbefe..bbafd07 100644 --- a/lua/telescope/pickers.lua +++ b/lua/telescope/pickers.lua @@ -250,6 +250,7 @@ function Picker:can_select_row(row) end function Picker:find() + self:close_existing_pickers() self:reset_selection() local prompt_string = assert(self.prompt, "Prompt is required.") @@ -649,6 +650,13 @@ function Picker:set_selection(row) end end +function Picker:close_existing_pickers() + for _, prompt_bufnr in ipairs(state.get_existing_prompts()) do + actions.close(prompt_bufnr) + end +end + + pickers.new = function(opts, defaults) opts = extend(opts, defaults) return Picker:new(opts) diff --git a/lua/telescope/state.lua b/lua/telescope/state.lua index 8399c05..a014a0d 100644 --- a/lua/telescope/state.lua +++ b/lua/telescope/state.lua @@ -15,4 +15,8 @@ function state.clear_status(prompt_bufnr) state.set_status(prompt_bufnr, nil) end +function state.get_existing_prompts() + return vim.tbl_keys(TelescopeGlobalState) +end + return state