added 'blines' provider (closes issue #77)

main
bhagwan 3 years ago
parent 1b1de47c57
commit 9fb6a3059f

@ -120,6 +120,7 @@ nnoremap <c-P> <cmd>lua require('fzf-lua').files()<CR>
| Command | List |
| --- | --- |
|`buffers`|open buffers|
|`blines`|current buffer lines|
|`files`|`find` or `fd` on a path|
|`oldfiles`|opened files history|
|`quickfix`|quickfix list|
@ -367,6 +368,7 @@ require'fzf-lua'.setup {
cwd_only = false,
},
buffers = {
-- previewer = false, -- disable the builtin previewer?
prompt = 'Buffers ',
file_icons = true, -- show file icons?
color_icons = true, -- colorize file|git icons
@ -379,6 +381,16 @@ require'fzf-lua'.setup {
["ctrl-x"] = actions.buf_del,
}
},
blines = {
previewer = "builtin", -- set to 'false' to disable
prompt = 'BLines ',
actions = {
["default"] = actions.buf_edit,
["ctrl-s"] = actions.buf_split,
["ctrl-v"] = actions.buf_vsplit,
["ctrl-t"] = actions.buf_tabedit,
}
},
colorschemes = {
prompt = 'Colorschemes ',
live_preview = true, -- apply the colorscheme on preview?

@ -291,6 +291,16 @@ M.globals.buffers = {
["ctrl-x"] = actions.buf_del,
},
}
M.globals.blines = {
previewer = "builtin",
prompt = 'BLines> ',
actions = {
["default"] = actions.buf_edit,
["ctrl-s"] = actions.buf_split,
["ctrl-v"] = actions.buf_vsplit,
["ctrl-t"] = actions.buf_tabedit,
},
}
M.globals.tags = {
previewer = function() return M.globals.default_previewer end,
prompt = 'Tags> ',

@ -67,6 +67,7 @@ M.oldfiles = require'fzf-lua.providers.oldfiles'.oldfiles
M.quickfix = require'fzf-lua.providers.quickfix'.quickfix
M.loclist = require'fzf-lua.providers.quickfix'.loclist
M.buffers = require'fzf-lua.providers.buffers'.buffers
M.blines = require'fzf-lua.providers.buffers'.blines
M.help_tags = require'fzf-lua.providers.helptags'.helptags
M.man_pages = require'fzf-lua.providers.manpages'.manpages
M.colorschemes = require'fzf-lua.providers.colorschemes'.colorschemes

@ -150,4 +150,49 @@ M.buffers = function(opts)
end)()
end
M.blines = function(opts)
opts = config.normalize_opts(opts, config.globals.blines)
local bufnr = vim.api.nvim_get_current_buf()
local bufnrstr = utils.ansi_codes.magenta(tostring(bufnr))
coroutine.wrap(function()
local items = {}
if api.nvim_buf_is_loaded(bufnr) then
local data = api.nvim_buf_get_lines(bufnr, 0, -1, false)
for l, text in ipairs(data) do
table.insert(items, ("[%s]:%s: %s"):format(
bufnrstr,
utils.ansi_codes.green(tostring(l)),
text))
end
end
-- ignore bufnr when searching
-- disable multi-select
opts.nomulti = true
opts._fzf_cli_args = "--delimiter=':' --nth 2,-1"
local selected = core.fzf(opts, items)
if not selected then return end
-- get the line number
local line = tonumber(selected[2]:match(":(%d+):"))
if #selected > 1 then
for i = 2, #selected do
selected[i] = tostring(getbufnumber(selected[i]))
end
end
actions.act(opts.actions, selected)
if line then vim.api.nvim_win_set_cursor(0, {line, 0}) end
end)()
end
return M

Loading…
Cancel
Save