fix: a lot of small things and adds more customization for caret (#554)
Attention: prompt_prefix will no longer add a space at the end. So if you still want a space at the end make sure your configuration has one. The default should not be changed. So if you haven't copied prompt_prefix in your config this doesn't affect you. Feat: - prompt prefix does no longer always end with space - selection_caret configurable. Default: `> ` - result_prefix configurable. Default: ` ` - more actions for git_branches - <c-t> does track the branch - <c-r> does rebase branch - also added delete branch action but not configured. See readme on how to do that Fixes: - fix docgen ci - Better error for lsp_workspace_symbols - better formatting for CONTRIBUTING.md - move from systemlist to plenary.job - git branch now supports checkout on remote branches
This commit is contained in:
@@ -57,6 +57,8 @@ function Picker:new(opts)
|
||||
preview_title = get_default(opts.preview_title, "Preview"),
|
||||
|
||||
prompt_prefix = get_default(opts.prompt_prefix, config.values.prompt_prefix),
|
||||
selection_caret = get_default(opts.selection_caret, config.values.selection_caret),
|
||||
entry_prefix = get_default(opts.entry_prefix, config.values.entry_prefix),
|
||||
initial_mode = get_default(opts.initial_mode, config.values.initial_mode),
|
||||
|
||||
default_text = opts.default_text,
|
||||
@@ -112,7 +114,6 @@ function Picker:new(opts)
|
||||
preview_cutoff = get_default(opts.preview_cutoff, config.values.preview_cutoff),
|
||||
}, self)
|
||||
|
||||
|
||||
obj.scroller = p_scroller.create(
|
||||
get_default(opts.scroll_strategy, config.values.scroll_strategy),
|
||||
obj.sorting_strategy
|
||||
@@ -375,10 +376,6 @@ function Picker:find()
|
||||
local prompt_prefix = self.prompt_prefix
|
||||
if prompt_prefix ~= '' then
|
||||
a.nvim_buf_set_option(prompt_bufnr, 'buftype', 'prompt')
|
||||
|
||||
if not vim.endswith(prompt_prefix, " ") then
|
||||
prompt_prefix = prompt_prefix .. " "
|
||||
end
|
||||
vim.fn.prompt_setprompt(prompt_bufnr, prompt_prefix)
|
||||
end
|
||||
self.prompt_prefix = prompt_prefix
|
||||
@@ -655,9 +652,6 @@ function Picker:change_prompt_prefix(new_prefix, hl_group)
|
||||
if not new_prefix then return end
|
||||
|
||||
if new_prefix ~= '' then
|
||||
if not vim.endswith(new_prefix, " ") then
|
||||
new_prefix = new_prefix .. " "
|
||||
end
|
||||
vim.fn.prompt_setprompt(self.prompt_bufnr, new_prefix)
|
||||
else
|
||||
vim.api.nvim_buf_set_text(self.prompt_bufnr, 0, 0, 0, #self.prompt_prefix, {})
|
||||
@@ -733,21 +727,21 @@ function Picker:set_selection(row)
|
||||
local display, display_highlights = entry_display.resolve(self, self._selection_entry)
|
||||
|
||||
if display then
|
||||
display = ' ' .. display
|
||||
display = self.entry_prefix .. display
|
||||
a.nvim_buf_set_lines(results_bufnr, self._selection_row, self._selection_row + 1, false, {display})
|
||||
|
||||
self.highlighter:hi_display(self._selection_row, ' ', display_highlights)
|
||||
self.highlighter:hi_display(self._selection_row, self.entry_prefix, display_highlights)
|
||||
self.highlighter:hi_sorter(self._selection_row, prompt, display)
|
||||
self.highlighter:hi_multiselect(self._selection_row, self._selection_entry)
|
||||
end
|
||||
end
|
||||
|
||||
local caret = '>'
|
||||
local caret = self.selection_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
|
||||
display = caret .. display
|
||||
|
||||
-- TODO: You should go back and redraw the highlights for this line from the sorter.
|
||||
-- That's the only smart thing to do.
|
||||
@@ -757,8 +751,9 @@ 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)
|
||||
-- don't highlight the ' ' at the end of caret
|
||||
self.highlighter:hi_selection(row, caret:sub(1, -2))
|
||||
self.highlighter:hi_display(row, caret, display_highlights)
|
||||
self.highlighter:hi_sorter(row, prompt, display)
|
||||
self.highlighter:hi_multiselect(row, entry)
|
||||
end)
|
||||
@@ -809,7 +804,7 @@ function Picker:entry_adder(index, entry, _, insert)
|
||||
-- This is the two spaces to manage the '> ' stuff.
|
||||
-- Maybe someday we can use extmarks or floaty text or something to draw this and not insert here.
|
||||
-- until then, insert two spaces
|
||||
local prefix = ' '
|
||||
local prefix = self.entry_prefix
|
||||
display = prefix .. display
|
||||
|
||||
self:_increment("displayed")
|
||||
@@ -1109,7 +1104,7 @@ 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)
|
||||
vim.api.nvim_buf_get_lines(self.prompt_bufnr, 0, 1, false)[1]:sub(#self.prompt_prefix + 1)
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user