mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-24 04:09:49 +01:00
417 lines
11 KiB
Nix
417 lines
11 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib;
|
|
with builtins; let
|
|
cfg = config.vim.filetree.nvimTreeLua;
|
|
in {
|
|
options.vim.filetree.nvimTreeLua = {
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Enable nvim-tree-lua";
|
|
};
|
|
|
|
sortBy = mkOption {
|
|
default = "name";
|
|
description = "Sort by name or extension";
|
|
type = types.enum ["name" "extension" "modification_time" "case_sensitive"];
|
|
};
|
|
|
|
treeSide = mkOption {
|
|
default = "left";
|
|
description = "Side the tree will appear on left or right";
|
|
type = types.enum ["left" "right"];
|
|
};
|
|
|
|
treeWidth = mkOption {
|
|
default = 25;
|
|
description = "Width of the tree in charecters";
|
|
type = types.int;
|
|
};
|
|
|
|
hideFiles = mkOption {
|
|
default = [".git" "node_modules" ".cache"];
|
|
description = "Files to hide in the file view by default.";
|
|
type = with types; listOf str;
|
|
};
|
|
|
|
hideIgnoredGitFiles = mkOption {
|
|
default = false;
|
|
description = "Hide files ignored by git";
|
|
type = types.bool;
|
|
};
|
|
|
|
openOnSetup = mkOption {
|
|
default = true;
|
|
description = "Open when vim is started on a directory";
|
|
type = types.bool;
|
|
};
|
|
|
|
closeOnLastWindow = mkOption {
|
|
default = true;
|
|
description = "Close when tree is last window open";
|
|
type = types.bool;
|
|
};
|
|
|
|
ignoreFileTypes = mkOption {
|
|
default = [];
|
|
description = "Ignore file types";
|
|
type = with types; listOf str;
|
|
};
|
|
|
|
followBufferFile = mkOption {
|
|
default = true;
|
|
description = "Follow file that is in current buffer on tree";
|
|
type = types.bool;
|
|
};
|
|
|
|
indentMarkers = mkOption {
|
|
default = true;
|
|
description = "Show indent markers";
|
|
type = types.bool;
|
|
};
|
|
|
|
hideDotFiles = mkOption {
|
|
default = false;
|
|
description = "Hide dotfiles";
|
|
type = types.bool;
|
|
};
|
|
|
|
openTreeOnNewTab = mkOption {
|
|
default = false;
|
|
description = "Opens the tree view when opening a new tab";
|
|
type = types.bool;
|
|
};
|
|
|
|
disableNetRW = mkOption {
|
|
default = false;
|
|
description = "Disables netrw and replaces it with tree";
|
|
type = types.bool;
|
|
};
|
|
|
|
hijackNetRW = mkOption {
|
|
default = true;
|
|
description = "Prevents netrw from automatically opening when opening directories";
|
|
type = types.bool;
|
|
};
|
|
|
|
trailingSlash = mkOption {
|
|
default = true;
|
|
description = "Add a trailing slash to all folders";
|
|
type = types.bool;
|
|
};
|
|
|
|
groupEmptyFolders = mkOption {
|
|
default = true;
|
|
description = "Compact empty folders trees into a single item";
|
|
type = types.bool;
|
|
};
|
|
|
|
lspDiagnostics = mkOption {
|
|
default = true;
|
|
description = "Shows lsp diagnostics in the tree";
|
|
type = types.bool;
|
|
};
|
|
|
|
systemOpenCmd = mkOption {
|
|
default = "${pkgs.xdg-utils}/bin/xdg-open";
|
|
description = "The command used to open a file with the associated default program";
|
|
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 = false;
|
|
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;
|
|
};
|
|
windowPicker = {
|
|
enable = mkEnableOption "Window picker";
|
|
|
|
chars = mkOption {
|
|
default = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
|
|
description = "A string of chars used as identifiers by the window picker";
|
|
type = types.str;
|
|
};
|
|
|
|
/*
|
|
# FIXME: Can't get this to place the list items in a lua table
|
|
exclude = {
|
|
fileType = mkOption {
|
|
default = ["notify" "packer" "qf" "diff" "fugitive" "fugitiveblame"];
|
|
description = "File types to exclude from window picker";
|
|
type = with types; listOf str;
|
|
};
|
|
buftype = mkOption {
|
|
default = ["nofile" "terminal" "help"];
|
|
description = "Buffer types to exclude from window picker";
|
|
type = with types; listOf str;
|
|
};
|
|
};
|
|
*/
|
|
};
|
|
};
|
|
expandAll = {
|
|
exclude = mkOption {
|
|
default = [];
|
|
description = "Exclude files from expand all";
|
|
type = with types; listOf str;
|
|
};
|
|
};
|
|
};
|
|
|
|
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;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|