This reverts commit eca83f214a.
This commit is contained in:
@@ -14,7 +14,6 @@ local utils = require('telescope.utils')
|
||||
|
||||
local layout_strategies = require('telescope.pickers.layout_strategies')
|
||||
local entry_display = require('telescope.pickers.entry_display')
|
||||
local p_highlights = require('telescope.pickers.highlights')
|
||||
local p_scroller = require('telescope.pickers.scroller')
|
||||
|
||||
local EntryManager = require('telescope.entry_manager')
|
||||
@@ -40,6 +39,8 @@ local extend = function(opts, defaults)
|
||||
return result
|
||||
end
|
||||
|
||||
local ns_telescope_selection = a.nvim_create_namespace('telescope_selection')
|
||||
local ns_telescope_entry = a.nvim_create_namespace('telescope_entry')
|
||||
local ns_telescope_matching = a.nvim_create_namespace('telescope_matching')
|
||||
local ns_telescope_prompt = a.nvim_create_namespace('telescope_prompt')
|
||||
local ns_telescope_prompt_prefix = a.nvim_create_namespace('telescope_prompt_prefix')
|
||||
@@ -129,8 +130,6 @@ function Picker:new(opts)
|
||||
obj.sorting_strategy
|
||||
)
|
||||
|
||||
obj.highlighter = p_highlights.new(obj)
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
@@ -253,7 +252,7 @@ function Picker:highlight_displayed_rows(results_bufnr, prompt)
|
||||
vim.api.nvim_buf_clear_namespace(results_bufnr, ns_telescope_matching, 0, -1)
|
||||
|
||||
local displayed_rows = vim.api.nvim_buf_get_lines(results_bufnr, 0, -1, false)
|
||||
for row_index = 1, math.min(#displayed_rows, self.max_results) do
|
||||
for row_index = 1, #displayed_rows do
|
||||
local display = displayed_rows[row_index]
|
||||
|
||||
self:highlight_one_row(results_bufnr, prompt, display, row_index - 1)
|
||||
@@ -375,7 +374,6 @@ function Picker:find()
|
||||
|
||||
a.nvim_buf_add_highlight(prompt_bufnr, ns_telescope_prompt_prefix, 'TelescopePromptPrefix', 0, 0, #prompt_prefix)
|
||||
end
|
||||
self.prompt_prefix = prompt_prefix
|
||||
|
||||
-- Temporarily disabled: Draw the screen ASAP. This makes things feel speedier.
|
||||
-- vim.cmd [[redraw]]
|
||||
@@ -423,7 +421,10 @@ function Picker:find()
|
||||
return
|
||||
end
|
||||
|
||||
local prompt = self:_get_prompt()
|
||||
local prompt = vim.trim(
|
||||
vim.api.nvim_buf_get_lines(prompt_bufnr, first_line, last_line, false)[1]:sub(#prompt_prefix)
|
||||
)
|
||||
|
||||
if self.sorter then
|
||||
self.sorter:_start(prompt)
|
||||
end
|
||||
@@ -554,8 +555,6 @@ function Picker:find()
|
||||
vim.api.nvim_buf_attach(prompt_bufnr, false, {
|
||||
on_lines = on_lines,
|
||||
on_detach = vim.schedule_wrap(function()
|
||||
self:_reset_highlights()
|
||||
|
||||
on_lines = nil
|
||||
|
||||
-- TODO: Can we add a "cleanup" / "teardown" function that completely removes these.
|
||||
@@ -684,21 +683,19 @@ function Picker:add_selection(row)
|
||||
end
|
||||
|
||||
function Picker:display_multi_select(results_bufnr)
|
||||
if true then return end
|
||||
|
||||
-- for entry, _ in pairs(self.multi_select) do
|
||||
-- local index = self.manager:find_entry(entry)
|
||||
-- if index then
|
||||
-- vim.api.nvim_buf_add_highlight(
|
||||
-- results_bufnr,
|
||||
-- ns_telescope_selection,
|
||||
-- "TelescopeMultiSelection",
|
||||
-- self:get_row(index),
|
||||
-- 0,
|
||||
-- -1
|
||||
-- )
|
||||
-- end
|
||||
-- end
|
||||
for entry, _ in pairs(self.multi_select) do
|
||||
local index = self.manager:find_entry(entry)
|
||||
if index then
|
||||
vim.api.nvim_buf_add_highlight(
|
||||
results_bufnr,
|
||||
ns_telescope_selection,
|
||||
"TelescopeMultiSelection",
|
||||
self:get_row(index),
|
||||
0,
|
||||
-1
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Picker:reset_selection()
|
||||
@@ -743,27 +740,26 @@ function Picker:set_selection(row)
|
||||
return
|
||||
end
|
||||
|
||||
local prompt = self:_get_prompt()
|
||||
local prompt = vim.api.nvim_buf_get_lines(self.prompt_bufnr, 0, 1, false)[1]
|
||||
|
||||
-- Handle adding '> ' to beginning of selections
|
||||
if self._selection_row then
|
||||
local display, display_highlights = entry_display.resolve(self, self._selection_entry)
|
||||
local old_selection = a.nvim_buf_get_lines(results_bufnr, self._selection_row, self._selection_row + 1, false)[1]
|
||||
|
||||
if display then
|
||||
display = ' ' .. display
|
||||
a.nvim_buf_set_lines(results_bufnr, self._selection_row, self._selection_row + 1, false, {display})
|
||||
if old_selection then
|
||||
local old_display = ' ' .. old_selection:sub(3)
|
||||
a.nvim_buf_set_lines(results_bufnr, self._selection_row, self._selection_row + 1, false, {old_display})
|
||||
|
||||
self.highlighter:hi_display(self._selection_row, ' ', display_highlights)
|
||||
self.highlighter:hi_sorter(self._selection_row, prompt, display)
|
||||
if prompt and self.sorter and self.sorter.highlighter then
|
||||
self:highlight_one_row(results_bufnr, prompt, old_display, self._selection_row)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local caret = '>'
|
||||
-- local display = string.format('%s %s', caret,
|
||||
-- (a.nvim_buf_get_lines(results_bufnr, row, row + 1, false)[1] or ''):sub(3)
|
||||
-- )
|
||||
local display, display_highlights = entry_display.resolve(self, entry)
|
||||
display = caret .. ' ' .. display
|
||||
local display = string.format('%s %s', caret,
|
||||
(a.nvim_buf_get_lines(results_bufnr, row, row + 1, false)[1] or ''):sub(3)
|
||||
)
|
||||
|
||||
-- TODO: You should go back and redraw the highlights for this line from the sorter.
|
||||
-- That's the only smart thing to do.
|
||||
@@ -773,12 +769,29 @@ function Picker:set_selection(row)
|
||||
end
|
||||
a.nvim_buf_set_lines(results_bufnr, row, row + 1, false, {display})
|
||||
|
||||
self.highlighter:hi_selection(row, caret)
|
||||
self.highlighter:hi_display(row, ' ', display_highlights)
|
||||
self.highlighter:hi_sorter(row, prompt, display)
|
||||
a.nvim_buf_clear_namespace(results_bufnr, ns_telescope_selection, 0, -1)
|
||||
a.nvim_buf_add_highlight(
|
||||
results_bufnr,
|
||||
ns_telescope_selection,
|
||||
'TelescopeSelectionCaret',
|
||||
row,
|
||||
0,
|
||||
#caret
|
||||
)
|
||||
a.nvim_buf_add_highlight(
|
||||
results_bufnr,
|
||||
ns_telescope_selection,
|
||||
'TelescopeSelection',
|
||||
row,
|
||||
#caret,
|
||||
-1
|
||||
)
|
||||
|
||||
-- TODO: Actually implement this for real TJ, don't leave around half implemented code plz :)
|
||||
-- self:display_multi_select(results_bufnr)
|
||||
self:display_multi_select(results_bufnr)
|
||||
|
||||
if prompt and self.sorter and self.sorter.highlighter then
|
||||
self:highlight_one_row(results_bufnr, prompt, display, row)
|
||||
end
|
||||
end)
|
||||
|
||||
if not set_ok then
|
||||
@@ -837,7 +850,15 @@ function Picker:entry_adder(index, entry, score)
|
||||
|
||||
local set_ok = pcall(vim.api.nvim_buf_set_lines, self.results_bufnr, row, row + 1, false, {display})
|
||||
if set_ok and display_highlights then
|
||||
self.highlighter:hi_display(row, prefix, display_highlights)
|
||||
-- TODO: This should actually be done during the cursor moving stuff annoyingly.... didn't see this bug yesterday.
|
||||
for _, hl_block in ipairs(display_highlights) do
|
||||
a.nvim_buf_add_highlight(self.results_bufnr,
|
||||
ns_telescope_entry,
|
||||
hl_block[2],
|
||||
row,
|
||||
#prefix + hl_block[1][1],
|
||||
#prefix + hl_block[1][2])
|
||||
end
|
||||
end
|
||||
|
||||
-- This pretty much only fails when people leave newlines in their results.
|
||||
@@ -925,16 +946,6 @@ function pickers.on_close_prompt(prompt_bufnr)
|
||||
picker.close_windows(status)
|
||||
end
|
||||
|
||||
function Picker:_get_prompt()
|
||||
return vim.trim(
|
||||
vim.api.nvim_buf_get_lines(self.prompt_bufnr, 0, 1, false)[1]:sub(#self.prompt_prefix)
|
||||
)
|
||||
end
|
||||
|
||||
function Picker:_reset_highlights()
|
||||
self.highlighter:clear_display()
|
||||
end
|
||||
|
||||
pickers._Picker = Picker
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user