fix: Rendering sometimes didn't work

This commit is contained in:
TJ DeVries
2020-08-31 22:23:06 -04:00
parent 2d63bca419
commit 8cf3952f27
2 changed files with 25 additions and 6 deletions

View File

@@ -13,9 +13,23 @@ local utils = require('telescope.utils')
local builtin = {}
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, {
prompt = 'Git File',
finder = finders.new_oneshot_job({ "git", "ls-files" }),
finder = finders.new_oneshot_job({ "git", "ls-files" }, make_entry),
previewer = previewers.cat,
sorter = sorters.get_norcalli_sorter(),
}):find()

View File

@@ -161,6 +161,8 @@ function Picker:get_window_options(max_columns, max_lines, prompt_title)
end
function Picker:find()
self:reset_selection()
local prompt_string = assert(self.prompt, "Prompt is required.")
local finder = assert(self.finder, "Finder is required to do picking")
local sorter = self.sorter
@@ -408,6 +410,11 @@ function Picker:move_selection(change)
self:set_selection(self:get_selection_row() + change)
end
function Picker:reset_selection()
self._selection = nil
self._selection_row = nil
end
function Picker:set_selection(row)
if row > self.max_results then
row = self.max_results
@@ -416,11 +423,6 @@ function Picker:set_selection(row)
end
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 results_bufnr = status.results_bufnr
@@ -451,6 +453,9 @@ function Picker:set_selection(row)
-- end
-- 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: Make sure you start exactly at the bottom selected