plugins/neo-tree: cleaning

This commit is contained in:
Gaetan Lepage 2023-11-23 16:25:30 +01:00 committed by Gaétan Lepage
parent 578b1acc71
commit 3da7758bc0

View file

@ -32,8 +32,7 @@ in {
defaults
"Mapping options";
mkWindowMappingsOption = defaults:
helpers.mkCompositeOption "Window options" {
mkWindowMappingsOption = defaults: {
mappings = mkMappingsOption defaults;
};
@ -96,9 +95,7 @@ in {
gitStatusAsync = helpers.defaultNullOpts.mkBool true "";
gitStatusAsyncOptions =
helpers.mkCompositeOption
"These options are for people with VERY large git repos" {
gitStatusAsyncOptions = {
batchSize =
helpers.defaultNullOpts.mkInt 1000
"How many lines of git status results to process at a time";
@ -308,7 +305,7 @@ in {
};
eventHandlers =
helpers.mkNullOrOption
(types.attrsOf types.str)
(with types; attrsOf str)
''
Configuration of event handlers.
Attrs:
@ -334,8 +331,8 @@ in {
```
'';
defaultComponentConfigs = helpers.mkCompositeOption "Configuration for default components." {
container = helpers.mkCompositeOption "Container options" {
defaultComponentConfigs = {
container = {
enableCharacterFade = helpers.defaultNullOpts.mkBool true "";
width = helpers.defaultNullOpts.mkStr "100%" "";
@ -343,8 +340,8 @@ in {
rightPadding = helpers.defaultNullOpts.mkInt 0 "";
};
diagnostics = helpers.mkCompositeOption "diagnostics" {
symbols = helpers.mkCompositeOption "symbols" {
diagnostics = {
symbols = {
hint = helpers.defaultNullOpts.mkStr "H" "";
info = helpers.defaultNullOpts.mkStr "I" "";
@ -354,7 +351,7 @@ in {
error = helpers.defaultNullOpts.mkStr "X" "";
};
highlights = helpers.mkCompositeOption "highlights" {
highlights = {
hint = helpers.defaultNullOpts.mkStr "DiagnosticSignHint" "";
info = helpers.defaultNullOpts.mkStr "DiagnosticSignInfo" "";
@ -365,7 +362,7 @@ in {
};
};
indent = helpers.mkCompositeOption "indent" {
indent = {
indentSize = helpers.defaultNullOpts.mkInt 2 "";
padding = helpers.defaultNullOpts.mkInt 1 "";
@ -409,13 +406,13 @@ in {
'';
};
modified = helpers.mkCompositeOption "modified" {
modified = {
symbol = helpers.defaultNullOpts.mkStr "[+] " "";
highlight = helpers.defaultNullOpts.mkStr "NeoTreeModified" "";
};
name = helpers.mkCompositeOption "name" {
name = {
trailingSlash = helpers.defaultNullOpts.mkBool false "";
useGitStatusColors = helpers.defaultNullOpts.mkBool true "";
@ -423,14 +420,8 @@ in {
highlight = helpers.defaultNullOpts.mkStr "NeoTreeFileName" "";
};
gitStatus = helpers.mkCompositeOption "git status" {
gitStatus = {
symbols =
helpers.mkCompositeOption
''
Symbol characters for git status.
Set to empty string to not show them.
''
(
mapAttrs
(
optionName: default:
@ -446,14 +437,13 @@ in {
unstaged = "";
staged = "";
conflict = "";
}
);
};
align = helpers.defaultNullOpts.mkStr "right" "icon alignment";
};
};
renderers = helpers.mkCompositeOption "Renderers configuration" {
renderers = {
directory =
mkRendererComponentListOption
''
@ -566,14 +556,7 @@ in {
helpers.defaultNullOpts.mkNullable (types.attrsOf types.str) "{}"
"nesting rules";
window =
helpers.mkCompositeOption
''
Window options.
See https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/popup for possible options.
These can also be functions that return these options.
''
{
window = {
position =
helpers.defaultNullOpts.mkEnum
["left" "right" "top" "bottom" "float" "current"] "left" "position";
@ -589,8 +572,8 @@ in {
position = "float"
'';
popup = helpers.mkCompositeOption "Settings that apply to float position only" {
size = helpers.mkCompositeOption "size" {
popup = {
size = {
height = helpers.defaultNullOpts.mkStr "80%" "height";
width = helpers.defaultNullOpts.mkStr "50%" "height";
@ -616,7 +599,7 @@ in {
- "sibling": Insert nodes as siblings of the directory under cursor.
'';
mappingOptions = helpers.mkCompositeOption "Mapping options" {
mappingOptions = {
noremap = helpers.defaultNullOpts.mkBool true "noremap";
nowait = helpers.defaultNullOpts.mkBool true "nowait";
@ -676,7 +659,7 @@ in {
```
'';
};
filesystem = helpers.mkCompositeOption "Filesystem options" {
filesystem = {
window = mkWindowMappingsOption (lib.mdDoc ''
```nix
{
@ -711,12 +694,12 @@ in {
helpers.defaultNullOpts.mkBool true
"true creates a 2-way binding between vim's cwd and neo-tree's root.";
cwdTarget = helpers.mkCompositeOption "cwd target" {
cwdTarget = {
sidebar = helpers.defaultNullOpts.mkStr "tab" "sidebar is when position = left or right";
current = helpers.defaultNullOpts.mkStr "window" "current is when position = current";
};
filteredItems = helpers.mkCompositeOption "filtered items" {
filteredItems = {
visible =
helpers.defaultNullOpts.mkBool false
"when true, they will just be displayed differently than normal items";
@ -872,7 +855,7 @@ in {
'';
};
buffers = helpers.mkCompositeOption "Buffers options" {
buffers = {
bindToCwd = helpers.defaultNullOpts.mkBool true "Bind to current working directory.";
followCurrentFile = mkFollowCurrentFileOption true;
@ -890,7 +873,7 @@ in {
'';
};
gitStatus = helpers.mkCompositeOption "git status options" {
gitStatus = {
window = mkWindowMappingsOption ''
{
A = "git_add_all";
@ -904,8 +887,8 @@ in {
'';
};
example = helpers.mkCompositeOption "example options" {
renderers = helpers.mkCompositeOption "renderers" {
example = {
renderers = {
custom =
mkRendererComponentListOption
''
@ -1021,52 +1004,51 @@ in {
ifNonNull' mappings
(mapAttrs processMapping mappings);
processWindowMappings = window:
ifNonNull' window {
processWindowMappings = window: {
mappings = processMappings window.mappings;
};
options = with cfg;
setupOptions = with cfg;
{
# Concatenate sources and extraSources, setting sources to it's default value if it is null
# and extraSources is not null
sources =
if (cfg.extraSources != null)
if (extraSources != null)
then
if (cfg.sources == null)
then ["filesystem" "git_status" "buffers"] ++ cfg.extraSources
else cfg.sources ++ cfg.extraSources
else cfg.sources;
add_blank_line_at_top = cfg.addBlankLineAtTop;
auto_clean_after_session_restore = cfg.autoCleanAfterSessionRestore;
close_if_last_window = cfg.closeIfLastWindow;
default_source = cfg.defaultSource;
enable_diagnostics = cfg.enableDiagnostics;
enable_git_status = cfg.enableGitStatus;
enable_modified_markers = cfg.enableModifiedMarkers;
enable_refresh_on_write = cfg.enableRefreshOnWrite;
git_status_async = cfg.gitStatusAsync;
git_status_async_options = ifNonNull' cfg.gitStatusAsyncOptions {
batch_size = cfg.gitStatusAsyncOptions.batchSize;
batch_delay = cfg.gitStatusAsyncOptions.batchDelay;
max_lines = cfg.gitStatusAsyncOptions.maxLines;
if (sources == null)
then ["filesystem" "git_status" "buffers"] ++ extraSources
else sources ++ extraSources
else sources;
add_blank_line_at_top = addBlankLineAtTop;
auto_clean_after_session_restore = autoCleanAfterSessionRestore;
close_if_last_window = closeIfLastWindow;
default_source = defaultSource;
enable_diagnostics = enableDiagnostics;
enable_git_status = enableGitStatus;
enable_modified_markers = enableModifiedMarkers;
enable_refresh_on_write = enableRefreshOnWrite;
git_status_async = gitStatusAsync;
git_status_async_options = with gitStatusAsyncOptions; {
batch_size = batchSize;
batch_delay = batchDelay;
max_lines = maxLines;
};
hide_root_node = cfg.hideRootNode;
retain_hidden_root_indent = cfg.retainHiddenRootIndent;
log_level = cfg.logLevel;
log_to_file = cfg.logToFile;
open_files_in_last_window = cfg.openFilesInLastWindow;
popup_border_style = cfg.popupBorderStyle;
resize_timer_interval = cfg.resizeTimerInterval;
sort_case_insensitive = cfg.sortCaseInsensitive;
sort_function = mkRaw cfg.sortFunction;
use_popups_for_input = cfg.usePopupsForInput;
use_default_mappings = cfg.useDefaultMappings;
source_selector = with cfg.sourceSelector; {
hide_root_node = hideRootNode;
retain_hidden_root_indent = retainHiddenRootIndent;
log_level = logLevel;
log_to_file = logToFile;
open_files_in_last_window = openFilesInLastWindow;
popup_border_style = popupBorderStyle;
resize_timer_interval = resizeTimerInterval;
sort_case_insensitive = sortCaseInsensitive;
sort_function = mkRaw sortFunction;
use_popups_for_input = usePopupsForInput;
use_default_mappings = useDefaultMappings;
source_selector = with sourceSelector; {
inherit winbar statusline;
show_scrolled_off_parent_node = showScrolledOffParentNode;
sources =
ifNonNull' cfg.sourceSelector.sources
ifNonNull' sources
(
map
(
@ -1075,7 +1057,7 @@ in {
display_name = source.displayName;
}
)
cfg.sourceSelector.sources
sources
);
content_layout = contentLayout;
tabs_layout = tabsLayout;
@ -1092,25 +1074,23 @@ in {
highlight_separator_active = highlightSeparatorActive;
};
event_handlers =
ifNonNull' cfg.eventHandlers
ifNonNull' eventHandlers
(
mapAttrsToList
(event: handler: {
inherit event;
handler = helpers.mkRaw handler;
})
cfg.eventHandlers
eventHandlers
);
default_component_configs = with cfg.defaultComponentConfigs;
ifNonNull' cfg.defaultComponentConfigs {
container = ifNonNull' cfg.defaultComponentConfigs.container {
enable_character_fade = container.enableCharacterFade;
inherit (container) width;
right_padding = container.rightPadding;
default_component_configs = with defaultComponentConfigs; {
container = with container; {
enable_character_fade = enableCharacterFade;
inherit width;
right_padding = rightPadding;
};
inherit diagnostics;
indent = with indent;
ifNonNull' cfg.defaultComponentConfigs.indent {
indent = with indent; {
indent_size = indentSize;
inherit padding;
with_markers = withMarkers;
@ -1122,17 +1102,18 @@ in {
expander_expanded = expanderExpanded;
expander_highlight = expanderHighlight;
};
icon = with icon;
ifNonNull' cfg.defaultComponentConfigs.icon {
icon = with icon; {
folder_closed = folderClosed;
folder_open = folderOpen;
folder_empty = folderEmpty;
folder_empty_open = folderEmptyOpen;
inherit default highlight;
inherit
default
highlight
;
};
inherit modified;
name = with name;
ifNonNull' cfg.defaultComponentConfigs.name {
name = with name; {
trailing_slash = trailingSlash;
use_git_status_colors = useGitStatusColors;
inherit highlight;
@ -1143,8 +1124,7 @@ in {
mapAttrs (name: processRendererComponentList) cfg.renderers
);
nesting_rules = cfg.nestingRules;
window = with window;
ifNonNull' cfg.window {
window = with window; {
inherit position width height;
auto_expand_width = autoExpandWidth;
inherit popup;
@ -1153,15 +1133,13 @@ in {
mapping_options = mappingOptions;
mappings = processMappings mappings;
};
filesystem = with filesystem;
ifNonNull' cfg.filesystem {
filesystem = with filesystem; {
window = processWindowMappings window;
async_directory_scan = asyncDirectoryScan;
scan_mode = scanMode;
bind_to_cwd = bindToCwd;
cwd_target = cwdTarget;
filtered_items = with filteredItems;
ifNonNull' cfg.filesystem.filteredItems {
filtered_items = with filteredItems; {
inherit visible;
force_visible_in_empty_folder = forceVisibleInEmptyFolder;
show_hidden_count = showHiddenCount;
@ -1186,35 +1164,33 @@ in {
hijack_netrw_behavior = hijackNetrwBehavior;
use_libuv_file_watcher = useLibuvFileWatcher;
};
buffers = with buffers;
ifNonNull' cfg.buffers {
buffers = with buffers; {
bind_to_cwd = bindToCwd;
follow_current_file = followCurrentFile;
group_empty_dirs = groupEmptyDirs;
window = processWindowMappings window;
};
git_status = ifNonNull' cfg.gitStatus {
git_status = {
window = processWindowMappings cfg.gitStatus.window;
};
example = with example;
ifNonNull' cfg.example {
renderers = ifNonNull' cfg.example.renderers {
custom = processRendererComponentList renderers.custom;
example = with example; {
renderers = with renderers; {
custom = processRendererComponentList custom;
};
};
document_symbols = {
follow_cursor = cfg.documentSymbols.followCursor;
inherit (cfg.documentSymbols) kinds;
document_symbols = with documentSymbols; {
follow_cursor = followCursor;
inherit kinds;
custom_kinds.__raw =
"{"
+ (concatStringsSep ","
(
mapAttrsToList
(id: name: ''[${id}] = "${name}"'')
cfg.documentSymbols.customKinds
customKinds
))
+ "}";
window = processWindowMappings cfg.documentSymbols.window;
window = processWindowMappings window;
};
}
// cfg.extraOptions;
@ -1226,7 +1202,7 @@ in {
];
extraConfigLua = ''
require('neo-tree').setup(${helpers.toLuaObject options})
require('neo-tree').setup(${helpers.toLuaObject setupOptions})
'';
extraPackages = [pkgs.git];
};