mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-21 17:59:48 +01:00
feat: refactor nvimtreelua config
This commit is contained in:
parent
0affcf6d1d
commit
b1df7578d8
1 changed files with 304 additions and 35 deletions
|
@ -57,18 +57,6 @@ in {
|
||||||
type = with types; listOf str;
|
type = with types; listOf str;
|
||||||
};
|
};
|
||||||
|
|
||||||
closeOnFileOpen = mkOption {
|
|
||||||
default = false;
|
|
||||||
description = "Closes the tree when a file is opened.";
|
|
||||||
type = types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
resizeOnFileOpen = mkOption {
|
|
||||||
default = false;
|
|
||||||
description = "Resizes the tree when opening a file.";
|
|
||||||
type = types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
followBufferFile = mkOption {
|
followBufferFile = mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
description = "Follow file that is in current buffer on tree";
|
description = "Follow file that is in current buffer on tree";
|
||||||
|
@ -128,6 +116,266 @@ in {
|
||||||
description = "The command used to open a file with the associated default program";
|
description = "The command used to open a file with the associated default program";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
updateCwd = mkOption {
|
||||||
|
# updateCwd has been deprecated in favor of syncRootWithCwd
|
||||||
|
# this option is kept for backwards compatibility
|
||||||
|
default = true;
|
||||||
|
description = "Updates the tree when changing nvim's directory (DirChanged event).";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
ignore_ft_on_setup = mkOption {
|
||||||
|
default = [];
|
||||||
|
description = "Ignore file types on setup";
|
||||||
|
type = with types; listOf str;
|
||||||
|
};
|
||||||
|
|
||||||
|
hijackCursor = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Hijack the cursor in the tree to put it at the start of the filename";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
hijackUnnamedBufferWhenOpening = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Open nvimtree in place of the unnamed buffer if it's empty.";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
syncRootWithCwd = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Changes the tree root directory on `DirChanged` and refreshes the tree";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
updateFocusedFile = mkOption {
|
||||||
|
default = {
|
||||||
|
enable = true;
|
||||||
|
update_cwd = true;
|
||||||
|
};
|
||||||
|
description = "Updates the tree when changing nvim's directory (DirChanged event).";
|
||||||
|
type = with types; attrsOf (either bool (attrsOf bool));
|
||||||
|
};
|
||||||
|
|
||||||
|
view = {
|
||||||
|
adaptiveSize = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Resize the tree when the window is resized";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
side = mkOption {
|
||||||
|
default = "left";
|
||||||
|
description = "Side the tree will appear on left or right";
|
||||||
|
type = types.enum ["left" "right"];
|
||||||
|
};
|
||||||
|
width = mkOption {
|
||||||
|
default = 35;
|
||||||
|
description = "Width of the tree in charecters";
|
||||||
|
type = types.int;
|
||||||
|
};
|
||||||
|
|
||||||
|
hideRootFolder = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Hide the root folder";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = mkEnableOption "Git integration";
|
||||||
|
ignore = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Ignore files in git";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
filesystemWatchers = {
|
||||||
|
enable = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Enable filesystem watchers";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
actions = {
|
||||||
|
openFile = {
|
||||||
|
resizeWindow = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Resize the tree when opening a file";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
quitOnOpen = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Quit the tree when opening a file";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
renderer = {
|
||||||
|
higlightGit = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Highlight git related files";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
highlightOpenedFiles = mkOption {
|
||||||
|
default = "none";
|
||||||
|
description = "Highlight opened files";
|
||||||
|
type = types.enum ["none" "icon" "name" "all"];
|
||||||
|
};
|
||||||
|
|
||||||
|
indentMarkers = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Show indent markers";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
showHiddenFiles = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Show hidden files";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
trailingSlash = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Add a trailing slash to all folders";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
showParentFolder = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Show parent folder";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
groupEmptyFolders = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Compact empty folders trees into a single item";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
icons = {
|
||||||
|
show = {
|
||||||
|
file = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Show file icons";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
folder = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Show folder icons";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
folderArrow = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Show folder arrow icons";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
git = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Show git icons";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
glyphs = {
|
||||||
|
default = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Default icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
symlink = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Symlink icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
folder = {
|
||||||
|
default = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Default folder icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
open = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Open folder icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
empty = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Empty folder icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
emptyOpen = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Empty open folder icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
symlink = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Symlink folder icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
symlinkOpen = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Symlink open folder icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
arrowOpen = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Open folder arrow icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
arrowClosed = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Closed folder arrow icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
unstaged = mkOption {
|
||||||
|
default = "✗";
|
||||||
|
description = "Unstaged git icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
staged = mkOption {
|
||||||
|
default = "✓";
|
||||||
|
description = "Staged git icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
unmerged = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Unmerged git icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
renamed = mkOption {
|
||||||
|
default = "➜";
|
||||||
|
description = "Renamed git icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
untracked = mkOption {
|
||||||
|
default = "★";
|
||||||
|
description = "Untracked git icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
deleted = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Deleted git icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
ignored = mkOption {
|
||||||
|
default = "◌";
|
||||||
|
description = "Ignored git icon";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -144,36 +392,57 @@ in {
|
||||||
require'nvim-tree'.setup({
|
require'nvim-tree'.setup({
|
||||||
disable_netrw = ${boolToString cfg.disableNetRW},
|
disable_netrw = ${boolToString cfg.disableNetRW},
|
||||||
hijack_netrw = ${boolToString cfg.hijackNetRW},
|
hijack_netrw = ${boolToString cfg.hijackNetRW},
|
||||||
|
hijack_cursor = ${boolToString cfg.hijackCursor},
|
||||||
open_on_tab = ${boolToString cfg.openTreeOnNewTab},
|
open_on_tab = ${boolToString cfg.openTreeOnNewTab},
|
||||||
open_on_setup = ${boolToString cfg.openOnSetup},
|
-- FIXME: Open on startup has been deprecated
|
||||||
open_on_setup_file = ${boolToString cfg.openOnSetup},
|
-- needs an alternative, see https://github.com/nvim-tree/nvim-tree.lua/wiki/Open-At-Startup3
|
||||||
|
-- open_on_setup = ${boolToString cfg.openOnSetup},
|
||||||
|
-- open_on_setup_file = ${boolToString cfg.openOnSetup},
|
||||||
|
sync_root_with_cwd = ${boolToString cfg.syncRootWithCwd},
|
||||||
|
update_focused_file = {
|
||||||
|
enable = ${boolToString cfg.updateFocusedFile.enable},
|
||||||
|
update_cwd = ${boolToString cfg.updateFocusedFile.update_cwd},
|
||||||
|
},
|
||||||
|
|
||||||
|
view = {
|
||||||
|
width = ${toString cfg.view.width},
|
||||||
|
side = ${"'" + cfg.view.side + "'"},
|
||||||
|
adaptive_size = ${boolToString cfg.view.adaptiveSize},
|
||||||
|
hide_root_folder = ${boolToString cfg.view.hideRootFolder},
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
enable = ${boolToString cfg.git.enable},
|
||||||
|
ignore = ${boolToString cfg.git.ignore},
|
||||||
|
},
|
||||||
|
|
||||||
|
filesytem_watchers = {
|
||||||
|
enable = ${boolToString cfg.filesystemWatchers.enable},
|
||||||
|
},
|
||||||
|
|
||||||
|
actions = {
|
||||||
|
open_file = {
|
||||||
|
quit_on_open = ${boolToString cfg.actions.openFile.quitOnOpen},
|
||||||
|
resize_window = ${boolToString cfg.actions.openFile.resizeWindow},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
renderer = {
|
||||||
|
highlight_git = ${boolToString cfg.renderer.higlightGit},
|
||||||
|
highlight_opened_files = ${"'" + cfg.renderer.highlightOpenedFiles + "'"},
|
||||||
|
indent_markers = {
|
||||||
|
enable = ${boolToString cfg.renderer.indentMarkers},
|
||||||
|
},
|
||||||
|
-- TODO: those two
|
||||||
|
add_trailing = ${boolToString cfg.renderer.trailingSlash},
|
||||||
|
group_empty = ${boolToString cfg.renderer.groupEmptyFolders},
|
||||||
|
},
|
||||||
|
|
||||||
system_open = {
|
system_open = {
|
||||||
cmd = ${"'" + cfg.systemOpenCmd + "'"},
|
cmd = ${"'" + cfg.systemOpenCmd + "'"},
|
||||||
},
|
},
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
enable = ${boolToString cfg.lspDiagnostics},
|
enable = ${boolToString cfg.lspDiagnostics},
|
||||||
},
|
},
|
||||||
view = {
|
|
||||||
width = ${toString cfg.treeWidth},
|
|
||||||
side = ${"'" + cfg.treeSide + "'"},
|
|
||||||
},
|
|
||||||
renderer = {
|
|
||||||
indent_markers = {
|
|
||||||
enable = ${boolToString cfg.indentMarkers},
|
|
||||||
},
|
|
||||||
add_trailing = ${boolToString cfg.trailingSlash},
|
|
||||||
group_empty = ${boolToString cfg.groupEmptyFolders},
|
|
||||||
},
|
|
||||||
actions = {
|
|
||||||
open_file = {
|
|
||||||
quit_on_open = ${boolToString cfg.closeOnFileOpen},
|
|
||||||
resize_window = ${boolToString cfg.resizeOnFileOpen},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
git = {
|
|
||||||
enable = true,
|
|
||||||
ignore = ${boolToString cfg.hideIgnoredGitFiles},
|
|
||||||
},
|
|
||||||
filters = {
|
filters = {
|
||||||
dotfiles = ${boolToString cfg.hideDotFiles},
|
dotfiles = ${boolToString cfg.hideDotFiles},
|
||||||
custom = {
|
custom = {
|
||||||
|
|
Loading…
Reference in a new issue