feat: only cache picker if the prompt is non empty; support last non-empty search instead (#2817)

This commit is contained in:
Kushashwa Ravi Shrimali
2024-02-24 19:35:48 +05:30
committed by GitHub
parent 955e50dfed
commit e9fd72bdb8
3 changed files with 36 additions and 22 deletions

View File

@@ -428,15 +428,19 @@ telescope.setup({opts}) *telescope.setup()*
('cache_picker.limit_entries`) are cached.
Fields:
- num_pickers: The number of pickers to be cached.
Set to -1 to preserve all pickers of your session.
If passed to a picker, the cached pickers with
indices larger than `cache_picker.num_pickers` will
be cleared.
Default: 1
- limit_entries: The amount of entries that will be saved for each
picker.
Default: 1000
- num_pickers: The number of pickers to be cached.
Set to -1 to preserve all pickers of your
session. If passed to a picker, the cached
pickers with indices larger than
`cache_picker.num_pickers` will be cleared.
Default: 1
- limit_entries: The amount of entries that will be saved for
each picker.
Default: 1000
- ignore_empty_prompt: If true, the picker will not be cached if
the prompt is empty (i.e., no text has been
typed at the time of closing the prompt).
Default: false
*telescope.defaults.preview*

View File

@@ -526,6 +526,7 @@ append(
{
num_pickers = 1,
limit_entries = 1000,
ignore_empty_prompt = true,
},
[[
This field handles the configuration for picker caching.
@@ -538,15 +539,19 @@ append(
('cache_picker.limit_entries`) are cached.
Fields:
- num_pickers: The number of pickers to be cached.
Set to -1 to preserve all pickers of your session.
If passed to a picker, the cached pickers with
indices larger than `cache_picker.num_pickers` will
be cleared.
Default: 1
- limit_entries: The amount of entries that will be saved for each
picker.
Default: 1000
- num_pickers: The number of pickers to be cached.
Set to -1 to preserve all pickers of your
session. If passed to a picker, the cached
pickers with indices larger than
`cache_picker.num_pickers` will be cleared.
Default: 1
- limit_entries: The amount of entries that will be saved for
each picker.
Default: 1000
- ignore_empty_prompt: If true, the picker will not be cached if
the prompt is empty (i.e., no text has been
typed at the time of closing the prompt).
Default: false
]]
)

View File

@@ -1582,11 +1582,16 @@ function pickers.on_close_prompt(prompt_bufnr)
picker.manager = EntryManager:new(picker.max_results, picker.entry_adder, picker.stats)
end
end
picker.default_text = picker:_get_prompt()
local curr_prompt = picker:_get_prompt()
picker.default_text = curr_prompt
picker.cache_picker.selection_row = picker._selection_row
picker.cache_picker.cached_prompt = picker:_get_prompt()
picker.cache_picker.is_cached = true
table.insert(cached_pickers, 1, picker)
-- Only cache if prompt is not empty or ignore_empty_prompt is false
if not picker.cache_picker.ignore_empty_prompt or (curr_prompt and curr_prompt ~= "") then
picker.cache_picker.cached_prompt = curr_prompt
table.insert(cached_pickers, 1, picker)
picker.cache_picker.is_cached = true
end
-- release pickers
if picker.cache_picker.num_pickers > 0 then