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:
Simon Hauser
2021-02-27 16:26:25 +01:00
committed by GitHub
parent 84732d1d78
commit ca92ec1a83
12 changed files with 209 additions and 112 deletions

View File

@@ -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