.dotfiles/nvim/lua/plugs/leap.lua

69 lines
1.8 KiB
Lua

local buffers_without_inlay_hints = {}
local function set_inlay_hints_active(buffers, enable)
for _, bufnr in pairs(buffers) do
vim.lsp.inlay_hint.enable(bufnr, enable)
end
end
local function get_open_buffers_with_inlay_hints()
local buffers = {}
for _, win in ipairs(vim.api.nvim_list_wins()) do
local bufnr = vim.api.nvim_win_get_buf(win)
if vim.lsp.inlay_hint.is_enabled(bufnr) then
table.insert(buffers, bufnr)
end
end
return buffers
end
local function add_leap_autocmd(pattern, callback)
vim.api.nvim_create_autocmd("User", {
pattern = pattern,
callback = function()
callback()
end,
})
end
return {
"ggandor/leap.nvim",
dependencies = {
"tpope/vim-repeat",
},
config = function()
local leap = require("leap")
leap.opts.safe_labels = {}
local autocmds = {
{
pattern = "LeapEnter",
cb = function()
local open_buffers = get_open_buffers_with_inlay_hints()
set_inlay_hints_active(open_buffers, false)
buffers_without_inlay_hints = open_buffers
end
},
{
pattern = "LeapLeave",
cb = function()
set_inlay_hints_active(buffers_without_inlay_hints, true)
end
},
}
for _, cmd in ipairs(autocmds) do
add_leap_autocmd(cmd.pattern, cmd.cb)
end
require("utils").add_keymaps({
n = {
["l"] = {
cmd = function()
require("leap").leap({ target_windows = require("leap.user").get_focusable_windows() })
end,
}
}
})
end,
}