Compare commits

...

3 Commits

Author SHA1 Message Date
spike 53c4361575 fix broken UI for keyamps with empty desc 2 years ago
spike c4de28730c nicer UI for keymaps inspired from telescope 2 years ago
Akianonymus c56c492218 feat(win): Automatically resize windows if screen change is detected
add a buffer local autocmd which will trigger the redraw() function
2 years ago

@ -268,21 +268,27 @@ M.keymaps = function(opts)
opts = config.normalize_opts(opts, config.globals.nvim.keymaps)
if not opts then return end
local modes = { "n", "i", "c" }
local modes = {
n = "blue",
i = "red",
c = "yellow"
}
local keymaps = {}
local add_keymap = function(keymap)
-- hijack fields
keymap.str = string.format("[%s:%s:%s]",
utils.ansi_codes.yellow(tostring(keymap.buffer)),
utils.ansi_codes.green(keymap.mode),
utils.ansi_codes.magenta(keymap.lhs:gsub("%s", "<Space>")))
local keymap_desc = keymap.desc == nil and keymap.rhs or keymap.desc
keymap.str = string.format("%s │ %-40s │ %s",
utils.ansi_codes[modes[keymap.mode] or "blue"](keymap.mode),
keymap.lhs:gsub("%s", "<Space>"),
keymap_desc .. ' ')
local k = string.format("[%s:%s:%s]",
keymap.buffer, keymap.mode, keymap.lhs)
keymaps[k] = keymap
end
for _, mode in pairs(modes) do
for mode, _ in pairs(modes) do
local global = vim.api.nvim_get_keymap(mode)
for _, keymap in pairs(global) do
add_keymap(keymap)
@ -293,25 +299,12 @@ M.keymaps = function(opts)
end
end
local prev_act = shell.action(function (args)
local k = args[1]:match("(%[.*%]) ")
local v = keymaps[k]
if v then
-- clear hijacked field
v.str = nil
k = vim.inspect(v)
end
return k
end, nil, opts.debug)
local entries = {}
for _, v in pairs(keymaps) do
table.insert(entries, string.format("%-50s %s",
v.str, v.rhs))
table.insert(entries, v.str)
end
opts.fzf_opts['--no-multi'] = ''
opts.fzf_opts['--preview'] = prev_act
core.fzf_exec(entries, opts)
end

@ -694,6 +694,12 @@ function FzfWin:redraw_main()
end
end
function FzfWin:set_redraw_autocmd()
vim.cmd("augroup FzfLua")
vim.cmd('au VimResized <buffer> lua require("fzf-lua").redraw()')
vim.cmd("augroup END")
end
function FzfWin:set_winleave_autocmd()
vim.cmd("augroup FzfLua")
vim.cmd("au!")
@ -707,6 +713,8 @@ function FzfWin:set_tmp_buffer()
local tmp_buf = api.nvim_create_buf(false, true)
vim.api.nvim_win_set_buf(self.fzf_winid, tmp_buf)
self:set_winleave_autocmd()
-- automatically resize fzf window
self:set_redraw_autocmd()
-- closing the buffer here causes the win to close
-- shouldn't happen since the win is already associated
-- with tmp_buf... use this table instead
@ -776,6 +784,8 @@ function FzfWin:create()
-- should also close issue #105
-- https://github.com/ibhagwan/fzf-lua/issues/105
self:set_winleave_autocmd()
-- automatically resize fzf window
self:set_redraw_autocmd()
self:reset_win_highlights(self.fzf_winid)

Loading…
Cancel
Save