diff options
Diffstat (limited to 'lua/plugins/nvim-tree.lua')
| -rw-r--r-- | lua/plugins/nvim-tree.lua | 279 |
1 files changed, 142 insertions, 137 deletions
diff --git a/lua/plugins/nvim-tree.lua b/lua/plugins/nvim-tree.lua index b9ae3f1..e817c04 100644 --- a/lua/plugins/nvim-tree.lua +++ b/lua/plugins/nvim-tree.lua @@ -5,11 +5,15 @@ --- To see mappings `g?` on nvim-tree --- To see default mappings `:nvim-tree-default-mappings` +-- Nvim-Tree.lua advises to do this at the start. +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + local icons = { webdev_colors = true, - git_placement = 'signcolumn', - modified_placement = 'after', - padding = ' ', + git_placement = "signcolumn", + modified_placement = "after", + padding = " ", show = { file = true, folder = true, @@ -19,27 +23,27 @@ local icons = { }, glyphs = { - default = '', - symlink = '', + default = "", + symlink = "", folder = { - arrow_open = '', - arrow_closed = '', - default = ' ', - open = ' ', - empty = ' ', - empty_open = ' ', - symlink = '', - symlink_open = '', + arrow_open = "", + arrow_closed = "", + default = " ", + open = " ", + empty = " ", + empty_open = " ", + symlink = "", + symlink_open = "", }, git = { - deleted = '', - unmerged = '', - untracked = '', - unstaged = '', - staged = '', - renamed = '➜', - ignored = '◌', + deleted = "", + unmerged = "", + untracked = "", + unstaged = "", + staged = "", + renamed = "➜", + ignored = "◌", }, }, web_devicons = { @@ -54,25 +58,24 @@ local renderer = { group_empty = true, -- default: true. Compact folders that only contain a single folder into one node in the file tree. highlight_git = false, full_name = false, - highlight_opened_files = 'icon', -- "none" (default), "icon", "name" or "all" - highlight_modified = 'icon', -- "none", "name" or "all". Nice and subtle, override the open icon - root_folder_label = ':~:s?$?/..?', + highlight_opened_files = "icon", -- "none" (default), "icon", "name" or "all" + highlight_modified = "icon", -- "none", "name" or "all". Nice and subtle, override the open icon + root_folder_label = ":~:s?$?/..?", indent_width = 2, indent_markers = { enable = true, inline_arrows = true, icons = { - corner = '└', - edge = '│', - item = '│', - bottom = '─', - none = ' ', + corner = "└", + edge = "│", + item = "│", + bottom = "─", + none = " ", }, }, icons = icons, } - -local system_open = { cmd = 'zathura' } +local system_open = { cmd = "zathura" } local HEIGHT_RATIO = 0.8 local WIDTH_RATIO = 0.15 @@ -89,8 +92,8 @@ local float = { local center_x = (screen_w - window_w) / 2 local center_y = ((vim.opt.lines:get() - window_h) / 2) - vim.opt.cmdheight:get() return { - border = 'rounded', - relative = 'editor', + border = "rounded", + relative = "editor", row = center_y, col = center_x, width = window_w_int, @@ -103,89 +106,90 @@ local view = { cursorline = true, float = float, --signcolumn = 'no', - width = function() - return math.floor(vim.opt.columns:get() * WIDTH_RATIO) - end, - side = 'left', + --width = function() + -- return math.floor(vim.opt.columns:get() * WIDTH_RATIO) + --end, + width = { max = 38, min = 38 }, + side = "left", } -local api = require('nvim-tree.api') +local api = require("nvim-tree.api") local function on_attach(bufnr) local function opts(desc) - return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } + return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } end local mappings = { - ['<C-]>'] = { api.tree.change_root_to_node, 'CD' }, - ['<C-e>'] = { api.node.open.replace_tree_buffer, 'Open: In Place' }, - ['<C-k>'] = { api.node.show_info_popup, 'Info' }, - ['<C-r>'] = { api.fs.rename_sub, 'Rename: Omit Filename' }, - ['<C-t>'] = { api.node.open.tab, 'Open: New Tab' }, - ['<C-v>'] = { api.node.open.vertical, 'Open: Vertical Split' }, - ['<C-x>'] = { api.node.open.horizontal, 'Open: Horizontal Split' }, - ['<BS>'] = { api.node.navigate.parent_close, 'Close Directory' }, + ["<C-]>"] = { api.tree.change_root_to_node, "CD" }, + ["<C-e>"] = { api.node.open.replace_tree_buffer, "Open: In Place" }, + ["<C-k>"] = { api.node.show_info_popup, "Info" }, + ["<C-r>"] = { api.fs.rename_sub, "Rename: Omit Filename" }, + ["<C-t>"] = { api.node.open.tab, "Open: New Tab" }, + ["<C-v>"] = { api.node.open.vertical, "Open: Vertical Split" }, + ["<C-x>"] = { api.node.open.horizontal, "Open: Horizontal Split" }, + ["<BS>"] = { api.node.navigate.parent_close, "Close Directory" }, -- ["<CR>"] = { api.node.open.edit, "Open" }, - ['<Tab>'] = { api.node.open.preview, 'Open Preview' }, - ['>'] = { api.node.navigate.sibling.next, 'Next Sibling' }, - ['<'] = { api.node.navigate.sibling.prev, 'Previous Sibling' }, - ['.'] = { api.node.run.cmd, 'Run Command' }, - ['-'] = { api.tree.change_root_to_parent, 'Up' }, - ['a'] = { api.fs.create, 'Create' }, - ['bmv'] = { api.marks.bulk.move, 'Move Bookmarked' }, - ['B'] = { api.tree.toggle_no_buffer_filter, 'Toggle No Buffer' }, - ['c'] = { api.fs.copy.node, 'Copy' }, + ["<Tab>"] = { api.node.open.preview, "Open Preview" }, + [">"] = { api.node.navigate.sibling.next, "Next Sibling" }, + ["<"] = { api.node.navigate.sibling.prev, "Previous Sibling" }, + ["."] = { api.node.run.cmd, "Run Command" }, + ["-"] = { api.tree.change_root_to_parent, "Up" }, + ["a"] = { api.fs.create, "Create" }, + ["bmv"] = { api.marks.bulk.move, "Move Bookmarked" }, + ["B"] = { api.tree.toggle_no_buffer_filter, "Toggle No Buffer" }, + ["c"] = { api.fs.copy.node, "Copy" }, -- ["C"] = { api.tree.toggle_git_clean_filter, "Toggle Git Clean" }, - ['[c'] = { api.node.navigate.git.prev, 'Prev Git' }, - [']c'] = { api.node.navigate.git.next, 'Next Git' }, - ['d'] = { api.fs.remove, 'Delete' }, - ['D'] = { api.fs.trash, 'Trash' }, - ['E'] = { api.tree.expand_all, 'Expand All' }, - ['e'] = { api.fs.rename_basename, 'Rename: Basename' }, - [']e'] = { api.node.navigate.diagnostics.next, 'Next Diagnostic' }, - ['[e'] = { api.node.navigate.diagnostics.prev, 'Prev Diagnostic' }, - ['F'] = { api.live_filter.clear, 'Clean Filter' }, - ['f'] = { api.live_filter.start, 'Filter' }, - ['g?'] = { api.tree.toggle_help, 'Help' }, - ['gy'] = { api.fs.copy.absolute_path, 'Copy Absolute Path' }, - ['H'] = { api.tree.toggle_hidden_filter, 'Toggle Dotfiles' }, - ['I'] = { api.tree.toggle_gitignore_filter, 'Toggle Git Ignore' }, - ['J'] = { api.node.navigate.sibling.last, 'Last Sibling' }, - ['K'] = { api.node.navigate.sibling.first, 'First Sibling' }, - ['m'] = { api.marks.toggle, 'Toggle Bookmark' }, + ["[c"] = { api.node.navigate.git.prev, "Prev Git" }, + ["]c"] = { api.node.navigate.git.next, "Next Git" }, + ["d"] = { api.fs.remove, "Delete" }, + ["D"] = { api.fs.trash, "Trash" }, + ["E"] = { api.tree.expand_all, "Expand All" }, + ["e"] = { api.fs.rename_basename, "Rename: Basename" }, + ["]e"] = { api.node.navigate.diagnostics.next, "Next Diagnostic" }, + ["[e"] = { api.node.navigate.diagnostics.prev, "Prev Diagnostic" }, + ["F"] = { api.live_filter.clear, "Clean Filter" }, + ["f"] = { api.live_filter.start, "Filter" }, + ["g?"] = { api.tree.toggle_help, "Help" }, + ["gy"] = { api.fs.copy.absolute_path, "Copy Absolute Path" }, + ["H"] = { api.tree.toggle_hidden_filter, "Toggle Dotfiles" }, + ["I"] = { api.tree.toggle_gitignore_filter, "Toggle Git Ignore" }, + ["J"] = { api.node.navigate.sibling.last, "Last Sibling" }, + ["K"] = { api.node.navigate.sibling.first, "First Sibling" }, + ["m"] = { api.marks.toggle, "Toggle Bookmark" }, -- ["o"] = { api.node.open.edit, "Open" }, - ['O'] = { api.node.open.no_window_picker, 'Open: No Window Picker' }, - ['p'] = { api.fs.paste, 'Paste' }, - ['P'] = { api.node.navigate.parent, 'Parent Directory' }, - ['q'] = { api.tree.close, 'Close' }, - ['r'] = { api.fs.rename, 'Rename' }, - ['R'] = { api.tree.reload, 'Refresh' }, - ['s'] = { api.node.run.system, 'Run System' }, - ['S'] = { api.tree.search_node, 'Search' }, - ['U'] = { api.tree.toggle_custom_filter, 'Toggle Hidden' }, - ['W'] = { api.tree.collapse_all, 'Collapse' }, - ['x'] = { api.fs.cut, 'Cut' }, - ['y'] = { api.fs.copy.filename, 'Copy Name' }, - ['Y'] = { api.fs.copy.relative_path, 'Copy Relative Path' }, - ['<2-LeftMouse>'] = { api.node.open.edit, 'Open' }, - ['<2-RightMouse>'] = { api.tree.change_root_to_node, 'CD' }, + ["O"] = { api.node.open.no_window_picker, "Open: No Window Picker" }, + ["p"] = { api.fs.paste, "Paste" }, + ["P"] = { api.node.navigate.parent, "Parent Directory" }, + ["q"] = { api.tree.close, "Close" }, + ["r"] = { api.fs.rename, "Rename" }, + ["R"] = { api.tree.reload, "Refresh" }, + ["s"] = { api.node.run.system, "Run System" }, + ["S"] = { api.tree.search_node, "Search" }, + ["U"] = { api.tree.toggle_custom_filter, "Toggle Hidden" }, + ["W"] = { api.tree.collapse_all, "Collapse" }, + ["x"] = { api.fs.cut, "Cut" }, + ["y"] = { api.fs.copy.filename, "Copy Name" }, + ["Y"] = { api.fs.copy.relative_path, "Copy Relative Path" }, + ["<2-LeftMouse>"] = { api.node.open.edit, "Open" }, + ["<2-RightMouse>"] = { api.tree.change_root_to_node, "CD" }, -- Mappings migrated from view.mappings.list - ['l'] = { api.node.open.edit, 'Open' }, - ['<CR>'] = { api.node.open.edit, 'Open' }, - ['o'] = { api.node.open.edit, 'Open' }, - ['h'] = { api.node.navigate.parent_close, 'Close Directory' }, - ['v'] = { api.node.open.vertical, 'Open: Vertical Split' }, - ['C'] = { api.tree.change_root_to_node, 'CD' }, + ["l"] = { api.node.open.edit, "Open" }, + ["<CR>"] = { api.node.open.edit, "Open" }, + ["o"] = { api.node.open.edit, "Open" }, + ["h"] = { api.node.navigate.parent_close, "Close Directory" }, + ["v"] = { api.node.open.vertical, "Open: Vertical Split" }, + ["C"] = { api.tree.change_root_to_node, "CD" }, } for keys, mapping in pairs(mappings) do - vim.keymap.set('n', keys, mapping[1], opts(mapping[2])) + vim.keymap.set("n", keys, mapping[1], opts(mapping[2])) end end --api.events.subscribe(api.events.Event.FileCreated, function(file) -- vim.cmd('edit' .. file.fname) --end) -require('nvim-tree').setup({ +require("nvim-tree").setup({ --auto_reload_on_write = true, --create_in_closed_folder = false, --hijack_cursor = true, @@ -210,7 +214,7 @@ require('nvim-tree').setup({ filesystem_watchers = { enable = true, debounce_delay = 50, - ignore_dirs = { 'node_modules', '.config/nvm' }, + ignore_dirs = { "node_modules", ".config/nvm" }, }, view = view, system_open = system_open, @@ -234,14 +238,14 @@ require('nvim-tree').setup({ enable = true, show_on_dirs = true, icons = { - hint = '⚑', - info = '', - warning = '▲', - error = '', + hint = "⚑", + info = "", + warning = "▲", + error = "", }, }, trash = { - cmd = 'gio trash', + cmd = "gio trash", require_confirm = true, }, modified = { @@ -272,17 +276,17 @@ require('nvim-tree').setup({ resize_window = false, window_picker = { enable = true, - chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', + chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", exclude = { - filetype = { 'notify', 'packer', 'qf', 'diff', 'fugitive', 'fugitiveblame' }, - buftype = { 'nofile', 'terminal', 'help' }, + filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" }, + buftype = { "nofile", "terminal", "help" }, }, }, }, }, }) -local api = require('nvim-tree.api') +local api = require("nvim-tree.api") local event = api.events.Event --api.events.subscribe(event.TreeOpen, function(_) -- vim.cmd([[setlocal statuscolumn=\ ]]) @@ -293,32 +297,32 @@ local event = api.events.Event --end) local function open_nvim_tree(data) - vim.cmd.cd(data.file:match('(.+)/[^/]*$')) + vim.cmd.cd(data.file:match("(.+)/[^/]*$")) local directory = vim.fn.isdirectory(data.file) == 1 if not directory then return end - require('nvim-tree.api').tree.open() + require("nvim-tree.api").tree.open() end -vim.api.nvim_create_autocmd({ 'VimEnter' }, { callback = open_nvim_tree }) +vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) -- Change Root To Global Current Working Directory local function change_root_to_global_cwd() - local api = require('nvim-tree.api') + local api = require("nvim-tree.api") local global_cwd = vim.fn.getcwd(-1, -1) api.tree.change_root(global_cwd) end local function copy_file_to(node) - local file_src = node['absolute_path'] + local file_src = node["absolute_path"] -- The args of input are {prompt}, {default}, {completion} -- Read in the new file path using the existing file's path as the baseline. - local file_out = vim.fn.input('COPY TO: ', file_src, 'file') + local file_out = vim.fn.input("COPY TO: ", file_src, "file") -- Create any parent dirs as required - local dir = vim.fn.fnamemodify(file_out, ':h') - vim.fn.system({ 'mkdir', '-p', dir }) + local dir = vim.fn.fnamemodify(file_out, ":h") + vim.fn.system({ "mkdir", "-p", dir }) -- Copy the file - vim.fn.system({ 'cp', '-R', file_src, file_out }) + vim.fn.system({ "cp", "-R", file_src, file_out }) end local function edit_and_close(node) @@ -333,48 +337,48 @@ end -- group = 'NvimTreeRefresh', --}) -vim.api.nvim_create_autocmd({ 'CursorHold' }, { - pattern = 'NvimTree*', +vim.api.nvim_create_autocmd({ "CursorHold" }, { + pattern = "NvimTree*", callback = function() - local def = vim.api.nvim_get_hl_by_name('Cursor', true) + local def = vim.api.nvim_get_hl_by_name("Cursor", true) vim.api.nvim_set_hl( 0, - 'Cursor', - vim.tbl_extend('force', def, { + "Cursor", + vim.tbl_extend("force", def, { blend = 100, }) ) - vim.opt.guicursor:append('a:Cursor/lCursor') + vim.opt.guicursor:append("a:Cursor/lCursor") end, }) -vim.api.nvim_create_autocmd({ 'BufLeave', 'WinClosed', 'WinLeave' }, { - pattern = 'NvimTree*', +vim.api.nvim_create_autocmd({ "BufLeave", "WinClosed", "WinLeave" }, { + pattern = "NvimTree*", callback = function() - local def = vim.api.nvim_get_hl_by_name('Cursor', true) + local def = vim.api.nvim_get_hl_by_name("Cursor", true) vim.api.nvim_set_hl( 0, - 'Cursor', - vim.tbl_extend('force', def, { + "Cursor", + vim.tbl_extend("force", def, { blend = 0, }) ) - vim.opt.guicursor = 'n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20' + vim.opt.guicursor = "n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20" end, }) -- Highlight Groups -vim.api.nvim_command('highlight NvimTreeNormal guibg=NONE ctermbg=NONE') -vim.api.nvim_command('highlight NvimTreeNormalNC guibg=NONE ctermbg=NONE guifg=NONE') -vim.api.nvim_command('highlight NvimTreeNormalFloat guibg=NONE ctermbg=NONE') -vim.api.nvim_command('highlight NvimTreeEndOfBuffer guibg=NONE ctermbg=NONE') --(NonText) -vim.api.nvim_command('highlight NvimTreeCursorLine guibg=#50fa7b guifg=#000000') -vim.api.nvim_command('highlight NvimTreeSymlinkFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE') -vim.api.nvim_command('highlight NvimTreeFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE') -vim.api.nvim_command('highlight NvimTreeRootFolder guifg=#f8f8f2 guibg=NONE ctermbg=NONE') -vim.api.nvim_command('highlight NvimTreeEmptyFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE') --(Directory) -vim.api.nvim_command('highlight NvimTreeOpenedFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE') --(Directory) -vim.api.nvim_command('highlight NvimTreeOpenedFile guifg=#50fa7b guibg=NONE ctermbg=NONE') +vim.api.nvim_command("highlight NvimTreeNormal guibg=NONE ctermbg=NONE") +vim.api.nvim_command("highlight NvimTreeNormalNC guibg=NONE ctermbg=NONE guifg=NONE") +vim.api.nvim_command("highlight NvimTreeNormalFloat guibg=NONE ctermbg=NONE") +vim.api.nvim_command("highlight NvimTreeEndOfBuffer guibg=NONE ctermbg=NONE") --(NonText) +vim.api.nvim_command("highlight NvimTreeCursorLine guibg=#50fa7b guifg=#000000") +vim.api.nvim_command("highlight NvimTreeSymlinkFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE") +vim.api.nvim_command("highlight NvimTreeFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE") +vim.api.nvim_command("highlight NvimTreeRootFolder guifg=#f8f8f2 guibg=NONE ctermbg=NONE") +vim.api.nvim_command("highlight NvimTreeEmptyFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE") --(Directory) +vim.api.nvim_command("highlight NvimTreeOpenedFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE") --(Directory) +vim.api.nvim_command("highlight NvimTreeOpenedFile guifg=#50fa7b guibg=NONE ctermbg=NONE") --vim.api.nvim_command("highlight NvimTreeSymlink ") --vim.api.nvim_command("highlight NvimTreeSymlinkFolderName ") --(Directory) @@ -387,6 +391,7 @@ vim.api.nvim_command('highlight NvimTreeOpenedFile guifg=#50fa7b guibg=NONE cter --vim.api.nvim_command("highlight NvimTreeEmptyFolderName ") --(Directory) --vim.api.nvim_command("highlight NvimTreeOpenedFolderName ") --(Directory) --vim.api.nvim_command("highlight NvimTreeExecFile ") +vim.api.nvim_command("highlight NvimTreeExecFile guifg=#ff882a guibg=none gui=NONE") --vim.api.nvim_command("highlight NvimTreeOpenedFile ") --vim.api.nvim_command("highlight NvimTreeModifiedFile ") --vim.api.nvim_command("highlight NvimTreeSpecialFile ") |
