From c4547c7deca21273efac4a13461b8019a6118134 Mon Sep 17 00:00:00 2001 From: gered Date: Mon, 7 Oct 2024 18:59:50 -0400 Subject: [PATCH] add nvim-tree specific menu --- nvim/lua/plugins/menu.lua | 119 +++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/nvim/lua/plugins/menu.lua b/nvim/lua/plugins/menu.lua index f353276..91391f8 100644 --- a/nvim/lua/plugins/menu.lua +++ b/nvim/lua/plugins/menu.lua @@ -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 = '', + }, + { + name = ' Open in horizontal split', + cmd = function() + nvim_tree.node.open.horizontal(current_node()) + end, + rtxt = '', + }, + { + 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', '', function() if not helper.contains(ignore_ft, vim.bo.ft) then vim.cmd.exec '"normal! \\"' - 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,