mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-13 22:02:34 +00:00
163 lines
7.6 KiB
Lua
163 lines
7.6 KiB
Lua
local g = vim.g
|
|
|
|
g.nvim_tree_indent_markers = 1 -- 0 by default, this option shows indent markers when folders are open
|
|
g.nvim_tree_git_hl = 1 -- 0 by default, will enable file highlight for git attributes (can be used without the icons).
|
|
g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories.
|
|
g.nvim_tree_root_folder_modifier = ":~" -- This is the default. See :help filename-modifiers for more options
|
|
g.nvim_tree_add_trailing = 1 -- 0 by default, append a trailing slash to folder names
|
|
g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree
|
|
g.nvim_tree_disable_window_picker = 1 -- 0 by default, will disable the window picker.
|
|
g.nvim_tree_icon_padding = " " -- one space by default, used for rendering the space between the icon and the filename. Use with caution, it could break rendering if you set an empty string depending on your font.
|
|
g.nvim_tree_symlink_arrow = " >> " -- defaults to ' ➛ '. used as a separator between symlinks' source and target.
|
|
g.nvim_tree_respect_buf_cwd = 1 -- 0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree.
|
|
|
|
g.nvim_tree_show_icons = {git = 1, folders = 1, files = 1, folder_arrows = 1}
|
|
g.nvim_tree_icons = {
|
|
default = "",
|
|
symlink = "",
|
|
git = {
|
|
unstaged = "",
|
|
staged = "S",
|
|
unmerged = "",
|
|
renamed = "➜",
|
|
deleted = "",
|
|
untracked = "U",
|
|
ignored = "◌"
|
|
},
|
|
folder = {
|
|
default = "",
|
|
open = "",
|
|
empty = "",
|
|
empty_open = "",
|
|
symlink = ""
|
|
}
|
|
}
|
|
g.loaded_netrw = 1
|
|
g.loaded_netrwPlugin = 1
|
|
local tree_cb = require("nvim-tree.config").nvim_tree_callback
|
|
|
|
-- This function has been generated from your
|
|
-- view.mappings.list
|
|
-- view.mappings.custom_only
|
|
-- remove_keymaps
|
|
--
|
|
-- You should add this function to your configuration and set on_attach = on_attach in the nvim-tree setup call.
|
|
--
|
|
-- Although care was taken to ensure correctness and completeness, your review is required.
|
|
--
|
|
-- Please check for the following issues in auto generated content:
|
|
-- "Mappings removed" is as you expect
|
|
-- "Mappings migrated" are correct
|
|
--
|
|
-- Please see https://github.com/nvim-tree/nvim-tree.lua/wiki/Migrating-To-on_attach for assistance in migrating.
|
|
--
|
|
|
|
local function on_attach(bufnr)
|
|
local api = require('nvim-tree.api')
|
|
|
|
local function opts(desc)
|
|
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
|
|
end
|
|
|
|
|
|
-- Default mappings not inserted as:
|
|
-- remove_keymaps = true
|
|
-- OR
|
|
-- view.mappings.custom_only = true
|
|
|
|
|
|
-- Mappings migrated from view.mappings.list
|
|
--
|
|
-- You will need to insert "your code goes here" for any mappings with a custom action_cb
|
|
vim.keymap.set('n', '<CR>', api.node.open.edit, opts('Open'))
|
|
vim.keymap.set('n', 'o', api.node.open.edit, opts('Open'))
|
|
vim.keymap.set('n', '<2-LeftMouse>', api.node.open.edit, opts('Open'))
|
|
vim.keymap.set('n', '<2-RightMouse>', api.tree.change_root_to_node, opts('CD'))
|
|
vim.keymap.set('n', '<C-]>', api.tree.change_root_to_node, opts('CD'))
|
|
vim.keymap.set('n', '<C-v>', api.node.open.vertical, opts('Open: Vertical Split'))
|
|
vim.keymap.set('n', '<C-s>', api.node.open.horizontal, opts('Open: Horizontal Split'))
|
|
vim.keymap.set('n', '<C-t>', api.node.open.tab, opts('Open: New Tab'))
|
|
vim.keymap.set('n', '<', api.node.navigate.sibling.prev, opts('Previous Sibling'))
|
|
vim.keymap.set('n', '>', api.node.navigate.sibling.next, opts('Next Sibling'))
|
|
vim.keymap.set('n', 'P', api.node.navigate.parent, opts('Parent Directory'))
|
|
vim.keymap.set('n', '<BS>', api.node.navigate.parent_close, opts('Close Directory'))
|
|
vim.keymap.set('n', '<S-CR>', api.node.navigate.parent_close, opts('Close Directory'))
|
|
vim.keymap.set('n', '<Tab>', api.node.open.preview, opts('Open Preview'))
|
|
vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts('First Sibling'))
|
|
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))
|
|
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Dotfiles'))
|
|
vim.keymap.set('n', 'R', api.tree.reload, opts('Refresh'))
|
|
vim.keymap.set('n', 'a', api.fs.create, opts('Create'))
|
|
vim.keymap.set('n', 'd', api.fs.remove, opts('Delete'))
|
|
vim.keymap.set('n', 'r', api.fs.rename, opts('Rename'))
|
|
vim.keymap.set('n', '<C-r>', api.fs.rename_sub, opts('Rename: Omit Filename'))
|
|
vim.keymap.set('n', 'x', api.fs.cut, opts('Cut'))
|
|
vim.keymap.set('n', 'c', api.fs.copy.node, opts('Copy'))
|
|
vim.keymap.set('n', 'p', api.fs.paste, opts('Paste'))
|
|
vim.keymap.set('n', 'y', api.fs.copy.filename, opts('Copy Name'))
|
|
vim.keymap.set('n', 'Y', api.fs.copy.relative_path, opts('Copy Relative Path'))
|
|
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path'))
|
|
vim.keymap.set('n', '[c', api.node.navigate.git.prev, opts('Prev Git'))
|
|
vim.keymap.set('n', ']c', api.node.navigate.git.next, opts('Next Git'))
|
|
vim.keymap.set('n', '-', api.tree.change_root_to_parent, opts('Up'))
|
|
vim.keymap.set('n', 's', api.node.run.system, opts('Run System'))
|
|
vim.keymap.set('n', 'q', api.tree.close, opts('Close'))
|
|
vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help'))
|
|
end
|
|
|
|
require("nvim-tree").setup {
|
|
-- disables netrw completely
|
|
disable_netrw = true,
|
|
-- hijack netrw window on startup
|
|
hijack_netrw = true,
|
|
-- closes neovim automatically when the tree is the last **WINDOW** in the view
|
|
--auto_close = true,
|
|
-- opens the tree when changing/opening a new tab if the tree wasn't previously opened
|
|
open_on_tab = true,
|
|
-- hijack the cursor in the tree to put it at the start of the filename
|
|
hijack_cursor = true,
|
|
-- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually)
|
|
update_cwd = true,
|
|
-- this option hides files and folders starting with a dot `.`
|
|
--hide_dotfiles = true,
|
|
-- show lsp diagnostics in the signcolumn
|
|
diagnostics = {
|
|
enable = true,
|
|
icons = {hint = "", info = "", warning = "", error = ""}
|
|
},
|
|
git = {ignore = true},
|
|
-- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file
|
|
update_focused_file = {
|
|
-- enables the feature
|
|
enable = true,
|
|
-- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory
|
|
-- only relevant when `update_focused_file.enable` is true
|
|
update_cwd = true,
|
|
-- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory
|
|
-- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true
|
|
ignore_list = {".git", "node_modules", ".cache"}
|
|
},
|
|
-- configuration options for the system open command (`s` in the tree by default)
|
|
system_open = {
|
|
-- the command to run this, leaving nil should work in most cases
|
|
cmd = nil,
|
|
-- the command arguments as a list
|
|
args = {}
|
|
},
|
|
|
|
trash = {cmd = "trash-put"},
|
|
|
|
view = {
|
|
-- show line numbers in tree disabled
|
|
number = false,
|
|
relativenumber = false,
|
|
-- width of the window, can be either a number (columns) or a string in `%`
|
|
width = 30,
|
|
-- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom'
|
|
side = "left",
|
|
-- if true the tree will resize itself after opening a file
|
|
--auto_resize = true,
|
|
},
|
|
on_attach = on_attach
|
|
}
|