Created
March 12, 2023 17:42
-
-
Save tomasflopes/5effa9edf5acb28eb05242b2071ab5b4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
return { | |
"nvim-neo-tree/neo-tree.nvim", | |
version = "*", | |
dependencies = { | |
"nvim-lua/plenary.nvim", | |
"nvim-tree/nvim-web-devicons", -- not strictly required, but recommended | |
"MunifTanjim/nui.nvim", | |
}, | |
config = function () | |
-- Unless you are still migrating, remove the deprecated commands from v1.x | |
vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]]) | |
-- If you want icons for diagnostic errors, you'll need to define them somewhere: | |
vim.fn.sign_define("DiagnosticSignError", | |
{text = " ", texthl = "DiagnosticSignError"}) | |
vim.fn.sign_define("DiagnosticSignWarn", | |
{text = " ", texthl = "DiagnosticSignWarn"}) | |
vim.fn.sign_define("DiagnosticSignInfo", | |
{text = " ", texthl = "DiagnosticSignInfo"}) | |
vim.fn.sign_define("DiagnosticSignHint", | |
{text = "", texthl = "DiagnosticSignHint"}) | |
-- NOTE: this is changed from v1.x, which used the old style of highlight groups | |
-- in the form "LspDiagnosticsSignWarning" | |
require("neo-tree").setup({ | |
close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab | |
popup_border_style = "rounded", | |
enable_git_status = true, | |
enable_diagnostics = true, | |
sort_case_insensitive = false, -- used when sorting files and directories in the tree | |
sort_function = nil , -- use a custom function for sorting files and directories in the tree | |
-- sort_function = function (a,b) | |
-- if a.type == b.type then | |
-- return a.path > b.path | |
-- else | |
-- return a.type > b.type | |
-- end | |
-- end , -- this sorts files and directories descendantly | |
default_component_configs = { | |
container = { | |
enable_character_fade = true | |
}, | |
indent = { | |
indent_size = 2, | |
padding = 1, -- extra padding on left hand side | |
-- indent guides | |
with_markers = true, | |
indent_marker = "│", | |
last_indent_marker = "└", | |
highlight = "NeoTreeIndentMarker", | |
-- expander config, needed for nesting files | |
with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders | |
expander_collapsed = "", | |
expander_expanded = "", | |
expander_highlight = "NeoTreeExpander", | |
}, | |
icon = { | |
folder_closed = "", | |
folder_open = "", | |
folder_empty = "ﰊ", | |
-- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there | |
-- then these will never be used. | |
default = "*", | |
highlight = "NeoTreeFileIcon" | |
}, | |
modified = { | |
symbol = "[+]", | |
highlight = "NeoTreeModified", | |
}, | |
name = { | |
trailing_slash = false, | |
use_git_status_colors = true, | |
highlight = "NeoTreeFileName", | |
}, | |
git_status = { | |
symbols = { | |
-- Change type | |
added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name | |
modified = "", -- or "", but this is redundant info if you use git_status_colors on the name | |
deleted = "✖",-- this can only be used in the git_status source | |
renamed = "",-- this can only be used in the git_status source | |
-- Status type | |
untracked = "", | |
ignored = "", | |
unstaged = "", | |
staged = "", | |
conflict = "", | |
} | |
}, | |
}, | |
window = { | |
position = "left", | |
width = 30, | |
mapping_options = { | |
noremap = true, | |
nowait = true, | |
}, | |
mappings = { | |
["<space>"] = { | |
"toggle_node", | |
nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use | |
}, | |
["<2-LeftMouse>"] = "open", | |
["<cr>"] = "open", | |
["<esc>"] = "revert_preview", | |
["P"] = { "toggle_preview", config = { use_float = true } }, | |
["l"] = "focus_preview", | |
["S"] = "open_split", | |
["s"] = "open_vsplit", | |
-- ["S"] = "split_with_window_picker", | |
-- ["s"] = "vsplit_with_window_picker", | |
["t"] = "open_tabnew", | |
-- ["<cr>"] = "open_drop", | |
-- ["t"] = "open_tab_drop", | |
["w"] = "open_with_window_picker", | |
--["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing | |
["C"] = "close_node", | |
-- ['C'] = 'close_all_subnodes', | |
["z"] = "close_all_nodes", | |
--["Z"] = "expand_all_nodes", | |
["a"] = { | |
"add", | |
-- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details | |
-- some commands may take optional config options, see `:h neo-tree-mappings` for details | |
config = { | |
show_path = "none" -- "none", "relative", "absolute" | |
} | |
}, | |
["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion. | |
["d"] = "delete", | |
["r"] = "rename", | |
["y"] = "copy_to_clipboard", | |
["x"] = "cut_to_clipboard", | |
["p"] = "paste_from_clipboard", | |
["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add": | |
-- ["c"] = { | |
-- "copy", | |
-- config = { | |
-- show_path = "none" -- "none", "relative", "absolute" | |
-- } | |
--} | |
["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add". | |
["q"] = "close_window", | |
["R"] = "refresh", | |
["?"] = "show_help", | |
["<"] = "prev_source", | |
[">"] = "next_source", | |
} | |
}, | |
nesting_rules = {}, | |
filesystem = { | |
filtered_items = { | |
visible = false, -- when true, they will just be displayed differently than normal items | |
hide_dotfiles = true, | |
hide_gitignored = true, | |
hide_hidden = true, -- only works on Windows for hidden files/directories | |
hide_by_name = { | |
--"node_modules" | |
}, | |
hide_by_pattern = { -- uses glob style patterns | |
--"*.meta", | |
--"*/src/*/tsconfig.json", | |
}, | |
always_show = { -- remains visible even if other settings would normally hide it | |
--".gitignored", | |
}, | |
never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show | |
--".DS_Store", | |
--"thumbs.db" | |
}, | |
never_show_by_pattern = { -- uses glob style patterns | |
--".null-ls_*", | |
}, | |
}, | |
follow_current_file = false, -- This will find and focus the file in the active buffer every | |
-- time the current file is changed while the tree is open. | |
group_empty_dirs = false, -- when true, empty folders will be grouped together | |
hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree | |
-- in whatever position is specified in window.position | |
-- "open_current", -- netrw disabled, opening a directory opens within the | |
-- window like netrw would, regardless of window.position | |
-- "disabled", -- netrw left alone, neo-tree does not handle opening dirs | |
use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes | |
-- instead of relying on nvim autocmd events. | |
window = { | |
mappings = { | |
["<bs>"] = "navigate_up", | |
["."] = "set_root", | |
["H"] = "toggle_hidden", | |
["/"] = "fuzzy_finder", | |
["D"] = "fuzzy_finder_directory", | |
["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm | |
-- ["D"] = "fuzzy_sorter_directory", | |
["f"] = "filter_on_submit", | |
["<c-x>"] = "clear_filter", | |
["[g"] = "prev_git_modified", | |
["]g"] = "next_git_modified", | |
} | |
} | |
}, | |
buffers = { | |
follow_current_file = true, -- This will find and focus the file in the active buffer every | |
-- time the current file is changed while the tree is open. | |
group_empty_dirs = true, -- when true, empty folders will be grouped together | |
show_unloaded = true, | |
window = { | |
mappings = { | |
["bd"] = "buffer_delete", | |
["<bs>"] = "navigate_up", | |
["."] = "set_root", | |
} | |
}, | |
}, | |
git_status = { | |
window = { | |
position = "float", | |
mappings = { | |
["A"] = "git_add_all", | |
["gu"] = "git_unstage_file", | |
["ga"] = "git_add_file", | |
["gr"] = "git_revert_file", | |
["gc"] = "git_commit", | |
["gp"] = "git_push", | |
["gg"] = "git_commit_and_push", | |
} | |
} | |
} | |
}) | |
vim.cmd([[nnoremap <C-T> :Neotree toggle<cr>]]) | |
end, | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment