feat: current buffer fuzzy find improvements (#694)

If you don't want to have a previewer disable it with `:Telescope current_buffer_fuzzy_find previewer=false`
To ignore empty lines do: `:Telescope current_buffer_fuzzy_find skip_empty_lines=true`
This commit is contained in:
August Masquelier
2021-04-04 05:04:06 -06:00
committed by GitHub
parent 0944c4a88f
commit d0cf646f65
2 changed files with 47 additions and 14 deletions

View File

@@ -329,34 +329,35 @@ files.treesitter = function(opts)
end end
files.current_buffer_fuzzy_find = function(opts) files.current_buffer_fuzzy_find = function(opts)
-- All actions are on the current buffer
local bufnr = vim.api.nvim_get_current_buf()
local filename = vim.fn.expand(vim.api.nvim_buf_get_name(bufnr))
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false) local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
local lines_with_numbers = {} local lines_with_numbers = {}
for k, v in ipairs(lines) do
table.insert(lines_with_numbers, {k, v})
end
local bufnr = vim.api.nvim_get_current_buf() for lnum, line in ipairs(lines) do
table.insert(lines_with_numbers, {
lnum = lnum,
line = line,
bufnr = bufnr,
filename = filename,
})
end
pickers.new(opts, { pickers.new(opts, {
prompt_title = 'Current Buffer Fuzzy', prompt_title = 'Current Buffer Fuzzy',
finder = finders.new_table { finder = finders.new_table {
results = lines_with_numbers, results = lines_with_numbers,
entry_maker = function(enumerated_line) entry_maker = opts.entry_maker or make_entry.gen_from_buffer_lines(opts),
return {
bufnr = bufnr,
display = enumerated_line[2],
ordinal = enumerated_line[2],
lnum = enumerated_line[1],
}
end
}, },
sorter = conf.generic_sorter(opts), sorter = conf.generic_sorter(opts),
previewer = conf.grep_previewer(opts),
attach_mappings = function() attach_mappings = function()
action_set.select:enhance { action_set.select:enhance {
post = function() post = function()
local selection = action_state.get_selected_entry() local selection = action_state.get_selected_entry()
vim.api.nvim_win_set_cursor(0, {selection.lnum, 0}) vim.api.nvim_win_set_cursor(0, { selection.lnum, 0 })
end, end,
} }

View File

@@ -680,6 +680,38 @@ function make_entry.gen_from_highlights()
end end
end end
function make_entry.gen_from_buffer_lines(opts)
local displayer = entry_display.create {
separator = '',
items = {
{ width = 5 },
{ remaining = true },
},
}
local make_display = function(entry)
return displayer {
{ entry.lnum, opts.lnum_highlight_group or 'TelescopeResultsSpecialComment' },
entry.line
}
end
return function(entry)
if opts.skip_empty_lines and string.match(entry.line, '^$') then
return
end
return {
valid = true,
ordinal = entry.line,
display = make_display,
filename = entry.filename,
lnum = entry.lnum,
line = entry.line,
}
end
end
function make_entry.gen_from_vimoptions() function make_entry.gen_from_vimoptions()
local process_one_opt = function(o) local process_one_opt = function(o)
local ok, value_origin local ok, value_origin