add nvim-tree specific menu

This commit is contained in:
Gered 2024-10-07 18:59:50 -04:00
parent 8c7d499270
commit c4547c7dec

View file

@ -85,6 +85,117 @@ function get_default_menu()
return menu
end
function get_nvim_tree_menu()
local nvim_tree = require 'nvim-tree.api'
local current_node = nvim_tree.tree.get_node_under_cursor
return {
{
name = ' New file',
hl = 'ExBlue',
cmd = function()
nvim_tree.fs.create(current_node())
end,
rtxt = 'a',
},
{
name = ' New folder',
hl = 'ExBlue',
cmd = function()
nvim_tree.fs.create(current_node())
end,
rtxt = 'a',
},
{
name = 'separator',
},
{
name = ' Open',
hl = 'ExGreen',
cmd = function()
nvim_tree.node.open.edit(current_node())
end,
rtxt = 'o',
},
{
name = ' Open in vertical split',
cmd = function()
nvim_tree.node.open.vertical(current_node())
end,
rtxt = '<C-v>',
},
{
name = ' Open in horizontal split',
cmd = function()
nvim_tree.node.open.horizontal(current_node())
end,
rtxt = '<C-x>',
},
{
name = 'separator',
},
{
name = ' Cut',
cmd = function()
nvim_tree.fs.cut(current_node())
end,
rtxt = 'x',
},
{
name = ' Copy',
cmd = function()
nvim_tree.fs.copy.node(current_node())
end,
rtxt = 'c',
},
{
name = ' Paste',
cmd = function()
nvim_tree.fs.paste(current_node())
end,
rtxt = 'p',
},
{
name = 'Copy absolute path',
cmd = function()
nvim_tree.fs.copy.absolute_path(current_node())
end,
rtxt = 'gy',
},
{
name = 'Copy relative path',
cmd = function()
nvim_tree.fs.copy.relative_path(current_node())
end,
rtxt = 'Y',
},
{
name = 'Copy filename',
cmd = function()
nvim_tree.fs.copy.filename(current_node())
end,
rtxt = 'y',
},
{
name = 'separator',
},
{
name = '󰑕 Rename',
cmd = function()
nvim_tree.fs.rename(current_node())
end,
rtxt = 'r',
},
{
name = '󰆴 Delete',
hl = 'ExRed',
cmd = function()
nvim_tree.fs.remove(current_node())
end,
rtxt = 'd',
},
}
end
function get_lsp_menu()
return {
{
@ -362,7 +473,13 @@ return {
vim.keymap.set('n', '<RightMouse>', function()
if not helper.contains(ignore_ft, vim.bo.ft) then
vim.cmd.exec '"normal! \\<RightMouse>"'
require('menu').open(get_default_menu 'n', { mouse = true })
local menu
if vim.bo.ft == 'NvimTree' then
menu = get_nvim_tree_menu()
else
menu = get_default_menu()
end
require('menu').open(menu, { mouse = true })
end
end, {})
end,