fix: Rendering sometimes didn't work
This commit is contained in:
@@ -13,9 +13,23 @@ local utils = require('telescope.utils')
|
|||||||
local builtin = {}
|
local builtin = {}
|
||||||
|
|
||||||
builtin.git_files = function(opts)
|
builtin.git_files = function(opts)
|
||||||
|
local make_entry = (
|
||||||
|
opts.shorten_path
|
||||||
|
and function(value)
|
||||||
|
local result = {
|
||||||
|
valid = true,
|
||||||
|
display = utils.path_shorten(value),
|
||||||
|
ordinal = value,
|
||||||
|
value = value
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
end)
|
||||||
|
|
||||||
|
or nil
|
||||||
pickers.new(opts, {
|
pickers.new(opts, {
|
||||||
prompt = 'Git File',
|
prompt = 'Git File',
|
||||||
finder = finders.new_oneshot_job({ "git", "ls-files" }),
|
finder = finders.new_oneshot_job({ "git", "ls-files" }, make_entry),
|
||||||
previewer = previewers.cat,
|
previewer = previewers.cat,
|
||||||
sorter = sorters.get_norcalli_sorter(),
|
sorter = sorters.get_norcalli_sorter(),
|
||||||
}):find()
|
}):find()
|
||||||
|
|||||||
@@ -161,6 +161,8 @@ function Picker:get_window_options(max_columns, max_lines, prompt_title)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Picker:find()
|
function Picker:find()
|
||||||
|
self:reset_selection()
|
||||||
|
|
||||||
local prompt_string = assert(self.prompt, "Prompt is required.")
|
local prompt_string = assert(self.prompt, "Prompt is required.")
|
||||||
local finder = assert(self.finder, "Finder is required to do picking")
|
local finder = assert(self.finder, "Finder is required to do picking")
|
||||||
local sorter = self.sorter
|
local sorter = self.sorter
|
||||||
@@ -408,6 +410,11 @@ function Picker:move_selection(change)
|
|||||||
self:set_selection(self:get_selection_row() + change)
|
self:set_selection(self:get_selection_row() + change)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Picker:reset_selection()
|
||||||
|
self._selection = nil
|
||||||
|
self._selection_row = nil
|
||||||
|
end
|
||||||
|
|
||||||
function Picker:set_selection(row)
|
function Picker:set_selection(row)
|
||||||
if row > self.max_results then
|
if row > self.max_results then
|
||||||
row = self.max_results
|
row = self.max_results
|
||||||
@@ -416,11 +423,6 @@ function Picker:set_selection(row)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local entry = self.manager:get_entry(self.max_results - row + 1)
|
local entry = self.manager:get_entry(self.max_results - row + 1)
|
||||||
if entry == self._selection and row == self._selection_row then
|
|
||||||
log.trace("Same entry as before. Skipping set")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local status = state.get_status(self.prompt_bufnr)
|
local status = state.get_status(self.prompt_bufnr)
|
||||||
local results_bufnr = status.results_bufnr
|
local results_bufnr = status.results_bufnr
|
||||||
|
|
||||||
@@ -451,6 +453,9 @@ function Picker:set_selection(row)
|
|||||||
-- end
|
-- end
|
||||||
|
|
||||||
-- self._match_id = vim.fn.matchaddpos("Conceal", { {row + 1, 1, 2} }, 0, -1, { window = results_win, conceal = ">" })
|
-- self._match_id = vim.fn.matchaddpos("Conceal", { {row + 1, 1, 2} }, 0, -1, { window = results_win, conceal = ">" })
|
||||||
|
if self._selection == entry and self._selection_row == row then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
-- TODO: Don't let you go over / under the buffer limits
|
-- TODO: Don't let you go over / under the buffer limits
|
||||||
-- TODO: Make sure you start exactly at the bottom selected
|
-- TODO: Make sure you start exactly at the bottom selected
|
||||||
|
|||||||
Reference in New Issue
Block a user