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,10 +32,9 @@ in {
defaults defaults
"Mapping options"; "Mapping options";
mkWindowMappingsOption = defaults: mkWindowMappingsOption = defaults: {
helpers.mkCompositeOption "Window options" { mappings = mkMappingsOption defaults;
mappings = mkMappingsOption defaults; };
};
mkFollowCurrentFileOption = default: { mkFollowCurrentFileOption = default: {
enabled = helpers.defaultNullOpts.mkBool default '' enabled = helpers.defaultNullOpts.mkBool default ''
@ -96,25 +95,23 @@ in {
gitStatusAsync = helpers.defaultNullOpts.mkBool true ""; gitStatusAsync = helpers.defaultNullOpts.mkBool true "";
gitStatusAsyncOptions = gitStatusAsyncOptions = {
helpers.mkCompositeOption batchSize =
"These options are for people with VERY large git repos" { helpers.defaultNullOpts.mkInt 1000
batchSize = "How many lines of git status results to process at a time";
helpers.defaultNullOpts.mkInt 1000
"How many lines of git status results to process at a time";
batchDelay = batchDelay =
helpers.defaultNullOpts.mkInt 10 helpers.defaultNullOpts.mkInt 10
"delay in ms between batches. Spreads out the workload to let other processes run."; "delay in ms between batches. Spreads out the workload to let other processes run.";
maxLines = maxLines =
helpers.defaultNullOpts.mkInt 10000 helpers.defaultNullOpts.mkInt 10000
'' ''
How many lines of git status results to process. Anything after this will be dropped. How many lines of git status results to process. Anything after this will be dropped.
Anything before this will be used. Anything before this will be used.
The last items to be processed are the untracked files. The last items to be processed are the untracked files.
''; '';
}; };
hideRootNode = helpers.defaultNullOpts.mkBool false "Hide the root node."; hideRootNode = helpers.defaultNullOpts.mkBool false "Hide the root node.";
@ -308,7 +305,7 @@ in {
}; };
eventHandlers = eventHandlers =
helpers.mkNullOrOption helpers.mkNullOrOption
(types.attrsOf types.str) (with types; attrsOf str)
'' ''
Configuration of event handlers. Configuration of event handlers.
Attrs: Attrs:
@ -334,8 +331,8 @@ in {
``` ```
''; '';
defaultComponentConfigs = helpers.mkCompositeOption "Configuration for default components." { defaultComponentConfigs = {
container = helpers.mkCompositeOption "Container options" { container = {
enableCharacterFade = helpers.defaultNullOpts.mkBool true ""; enableCharacterFade = helpers.defaultNullOpts.mkBool true "";
width = helpers.defaultNullOpts.mkStr "100%" ""; width = helpers.defaultNullOpts.mkStr "100%" "";
@ -343,8 +340,8 @@ in {
rightPadding = helpers.defaultNullOpts.mkInt 0 ""; rightPadding = helpers.defaultNullOpts.mkInt 0 "";
}; };
diagnostics = helpers.mkCompositeOption "diagnostics" { diagnostics = {
symbols = helpers.mkCompositeOption "symbols" { symbols = {
hint = helpers.defaultNullOpts.mkStr "H" ""; hint = helpers.defaultNullOpts.mkStr "H" "";
info = helpers.defaultNullOpts.mkStr "I" ""; info = helpers.defaultNullOpts.mkStr "I" "";
@ -354,7 +351,7 @@ in {
error = helpers.defaultNullOpts.mkStr "X" ""; error = helpers.defaultNullOpts.mkStr "X" "";
}; };
highlights = helpers.mkCompositeOption "highlights" { highlights = {
hint = helpers.defaultNullOpts.mkStr "DiagnosticSignHint" ""; hint = helpers.defaultNullOpts.mkStr "DiagnosticSignHint" "";
info = helpers.defaultNullOpts.mkStr "DiagnosticSignInfo" ""; info = helpers.defaultNullOpts.mkStr "DiagnosticSignInfo" "";
@ -365,7 +362,7 @@ in {
}; };
}; };
indent = helpers.mkCompositeOption "indent" { indent = {
indentSize = helpers.defaultNullOpts.mkInt 2 ""; indentSize = helpers.defaultNullOpts.mkInt 2 "";
padding = helpers.defaultNullOpts.mkInt 1 ""; padding = helpers.defaultNullOpts.mkInt 1 "";
@ -409,13 +406,13 @@ in {
''; '';
}; };
modified = helpers.mkCompositeOption "modified" { modified = {
symbol = helpers.defaultNullOpts.mkStr "[+] " ""; symbol = helpers.defaultNullOpts.mkStr "[+] " "";
highlight = helpers.defaultNullOpts.mkStr "NeoTreeModified" ""; highlight = helpers.defaultNullOpts.mkStr "NeoTreeModified" "";
}; };
name = helpers.mkCompositeOption "name" { name = {
trailingSlash = helpers.defaultNullOpts.mkBool false ""; trailingSlash = helpers.defaultNullOpts.mkBool false "";
useGitStatusColors = helpers.defaultNullOpts.mkBool true ""; useGitStatusColors = helpers.defaultNullOpts.mkBool true "";
@ -423,37 +420,30 @@ in {
highlight = helpers.defaultNullOpts.mkStr "NeoTreeFileName" ""; highlight = helpers.defaultNullOpts.mkStr "NeoTreeFileName" "";
}; };
gitStatus = helpers.mkCompositeOption "git status" { gitStatus = {
symbols = symbols =
helpers.mkCompositeOption mapAttrs
''
Symbol characters for git status.
Set to empty string to not show them.
''
( (
mapAttrs optionName: default:
( helpers.defaultNullOpts.mkStr default optionName
optionName: default: )
helpers.defaultNullOpts.mkStr default optionName {
) added = "";
{ deleted = "";
added = ""; modified = "";
deleted = ""; renamed = "";
modified = ""; untracked = "";
renamed = ""; ignored = "";
untracked = ""; unstaged = "";
ignored = ""; staged = "";
unstaged = ""; conflict = "";
staged = ""; };
conflict = "";
}
);
align = helpers.defaultNullOpts.mkStr "right" "icon alignment"; align = helpers.defaultNullOpts.mkStr "right" "icon alignment";
}; };
}; };
renderers = helpers.mkCompositeOption "Renderers configuration" { renderers = {
directory = directory =
mkRendererComponentListOption mkRendererComponentListOption
'' ''
@ -566,117 +556,110 @@ in {
helpers.defaultNullOpts.mkNullable (types.attrsOf types.str) "{}" helpers.defaultNullOpts.mkNullable (types.attrsOf types.str) "{}"
"nesting rules"; "nesting rules";
window = window = {
helpers.mkCompositeOption position =
'' helpers.defaultNullOpts.mkEnum
Window options. ["left" "right" "top" "bottom" "float" "current"] "left" "position";
See https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/popup for possible options.
These can also be functions that return these options.
''
{
position =
helpers.defaultNullOpts.mkEnum
["left" "right" "top" "bottom" "float" "current"] "left" "position";
width = helpers.defaultNullOpts.mkInt 40 "Applies to left and right positions"; width = helpers.defaultNullOpts.mkInt 40 "Applies to left and right positions";
height = helpers.defaultNullOpts.mkInt 15 "Applies to top and bottom positions"; height = helpers.defaultNullOpts.mkInt 15 "Applies to top and bottom positions";
autoExpandWidth = autoExpandWidth =
helpers.defaultNullOpts.mkBool false helpers.defaultNullOpts.mkBool false
'' ''
Expand the window when file exceeds the window width. does not work with Expand the window when file exceeds the window width. does not work with
position = "float" position = "float"
'';
popup = helpers.mkCompositeOption "Settings that apply to float position only" {
size = helpers.mkCompositeOption "size" {
height = helpers.defaultNullOpts.mkStr "80%" "height";
width = helpers.defaultNullOpts.mkStr "50%" "height";
};
position = helpers.defaultNullOpts.mkStr "80%" ''
50% means center it.
You can also specify border here, if you want a different setting from the global
`popupBorderStyle`.
'';
};
sameLevel = helpers.defaultNullOpts.mkBool false ''
Create and paste/move files/directories on the same level as the directory under cursor
(as opposed to within the directory under cursor).
''; '';
insertAs = helpers.defaultNullOpts.mkEnumFirstDefault ["child" "sibling"] '' popup = {
Affects how nodes get inserted into the tree during creation/pasting/moving of files if size = {
the node under the cursor is a directory: height = helpers.defaultNullOpts.mkStr "80%" "height";
- "child": Insert nodes as children of the directory under cursor. width = helpers.defaultNullOpts.mkStr "50%" "height";
- "sibling": Insert nodes as siblings of the directory under cursor.
'';
mappingOptions = helpers.mkCompositeOption "Mapping options" {
noremap = helpers.defaultNullOpts.mkBool true "noremap";
nowait = helpers.defaultNullOpts.mkBool true "nowait";
}; };
mappings = position = helpers.defaultNullOpts.mkStr "80%" ''
mkMappingsOption 50% means center it.
'' You can also specify border here, if you want a different setting from the global
```nix `popupBorderStyle`.
{ '';
"<space>" = {
command = "toggle_node";
# disable `nowait` if you have existing combos starting with this char that you want to use
nowait = false;
};
"<2-LeftMouse>" = "open";
"<cr>" = "open";
"<esc>" = "revert_preview";
P = {
command = "toggle_preview";
config = { use_float = true; };
};
l = "focus_preview";
S = "open_split";
# S = "split_with_window_picker";
s = "open_vsplit";
# s = "vsplit_with_window_picker";
t = "open_tabnew";
# "<cr>" = "open_drop";
# t = "open_tab_drop";
w = "open_with_window_picker";
C = "close_node";
z = "close_all_nodes";
# Z = "expand_all_nodes";
R = "refresh";
a = {
command = "add";
# 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 config.show_path and config.insert_as options.
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 config.show_path and config.insert_as options
m = "move"; # takes text input for destination, also accepts the config.show_path and config.insert_as options
e = "toggle_auto_expand_width";
q = "close_window";
"?" = "show_help";
"<" = "prev_source";
">" = "next_source";
}
```
'';
}; };
filesystem = helpers.mkCompositeOption "Filesystem options" {
sameLevel = helpers.defaultNullOpts.mkBool false ''
Create and paste/move files/directories on the same level as the directory under cursor
(as opposed to within the directory under cursor).
'';
insertAs = helpers.defaultNullOpts.mkEnumFirstDefault ["child" "sibling"] ''
Affects how nodes get inserted into the tree during creation/pasting/moving of files if
the node under the cursor is a directory:
- "child": Insert nodes as children of the directory under cursor.
- "sibling": Insert nodes as siblings of the directory under cursor.
'';
mappingOptions = {
noremap = helpers.defaultNullOpts.mkBool true "noremap";
nowait = helpers.defaultNullOpts.mkBool true "nowait";
};
mappings =
mkMappingsOption
''
```nix
{
"<space>" = {
command = "toggle_node";
# disable `nowait` if you have existing combos starting with this char that you want to use
nowait = false;
};
"<2-LeftMouse>" = "open";
"<cr>" = "open";
"<esc>" = "revert_preview";
P = {
command = "toggle_preview";
config = { use_float = true; };
};
l = "focus_preview";
S = "open_split";
# S = "split_with_window_picker";
s = "open_vsplit";
# s = "vsplit_with_window_picker";
t = "open_tabnew";
# "<cr>" = "open_drop";
# t = "open_tab_drop";
w = "open_with_window_picker";
C = "close_node";
z = "close_all_nodes";
# Z = "expand_all_nodes";
R = "refresh";
a = {
command = "add";
# 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 config.show_path and config.insert_as options.
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 config.show_path and config.insert_as options
m = "move"; # takes text input for destination, also accepts the config.show_path and config.insert_as options
e = "toggle_auto_expand_width";
q = "close_window";
"?" = "show_help";
"<" = "prev_source";
">" = "next_source";
}
```
'';
};
filesystem = {
window = mkWindowMappingsOption (lib.mdDoc '' window = mkWindowMappingsOption (lib.mdDoc ''
```nix ```nix
{ {
@ -711,12 +694,12 @@ in {
helpers.defaultNullOpts.mkBool true helpers.defaultNullOpts.mkBool true
"true creates a 2-way binding between vim's cwd and neo-tree's root."; "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"; sidebar = helpers.defaultNullOpts.mkStr "tab" "sidebar is when position = left or right";
current = helpers.defaultNullOpts.mkStr "window" "current is when position = current"; current = helpers.defaultNullOpts.mkStr "window" "current is when position = current";
}; };
filteredItems = helpers.mkCompositeOption "filtered items" { filteredItems = {
visible = visible =
helpers.defaultNullOpts.mkBool false helpers.defaultNullOpts.mkBool false
"when true, they will just be displayed differently than normal items"; "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."; bindToCwd = helpers.defaultNullOpts.mkBool true "Bind to current working directory.";
followCurrentFile = mkFollowCurrentFileOption true; followCurrentFile = mkFollowCurrentFileOption true;
@ -890,7 +873,7 @@ in {
''; '';
}; };
gitStatus = helpers.mkCompositeOption "git status options" { gitStatus = {
window = mkWindowMappingsOption '' window = mkWindowMappingsOption ''
{ {
A = "git_add_all"; A = "git_add_all";
@ -904,8 +887,8 @@ in {
''; '';
}; };
example = helpers.mkCompositeOption "example options" { example = {
renderers = helpers.mkCompositeOption "renderers" { renderers = {
custom = custom =
mkRendererComponentListOption mkRendererComponentListOption
'' ''
@ -1021,52 +1004,51 @@ in {
ifNonNull' mappings ifNonNull' mappings
(mapAttrs processMapping mappings); (mapAttrs processMapping mappings);
processWindowMappings = window: processWindowMappings = window: {
ifNonNull' window { mappings = processMappings window.mappings;
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 # Concatenate sources and extraSources, setting sources to it's default value if it is null
# and extraSources is not null # and extraSources is not null
sources = sources =
if (cfg.extraSources != null) if (extraSources != null)
then then
if (cfg.sources == null) if (sources == null)
then ["filesystem" "git_status" "buffers"] ++ cfg.extraSources then ["filesystem" "git_status" "buffers"] ++ extraSources
else cfg.sources ++ cfg.extraSources else sources ++ extraSources
else cfg.sources; else sources;
add_blank_line_at_top = cfg.addBlankLineAtTop; add_blank_line_at_top = addBlankLineAtTop;
auto_clean_after_session_restore = cfg.autoCleanAfterSessionRestore; auto_clean_after_session_restore = autoCleanAfterSessionRestore;
close_if_last_window = cfg.closeIfLastWindow; close_if_last_window = closeIfLastWindow;
default_source = cfg.defaultSource; default_source = defaultSource;
enable_diagnostics = cfg.enableDiagnostics; enable_diagnostics = enableDiagnostics;
enable_git_status = cfg.enableGitStatus; enable_git_status = enableGitStatus;
enable_modified_markers = cfg.enableModifiedMarkers; enable_modified_markers = enableModifiedMarkers;
enable_refresh_on_write = cfg.enableRefreshOnWrite; enable_refresh_on_write = enableRefreshOnWrite;
git_status_async = cfg.gitStatusAsync; git_status_async = gitStatusAsync;
git_status_async_options = ifNonNull' cfg.gitStatusAsyncOptions { git_status_async_options = with gitStatusAsyncOptions; {
batch_size = cfg.gitStatusAsyncOptions.batchSize; batch_size = batchSize;
batch_delay = cfg.gitStatusAsyncOptions.batchDelay; batch_delay = batchDelay;
max_lines = cfg.gitStatusAsyncOptions.maxLines; max_lines = maxLines;
}; };
hide_root_node = cfg.hideRootNode; hide_root_node = hideRootNode;
retain_hidden_root_indent = cfg.retainHiddenRootIndent; retain_hidden_root_indent = retainHiddenRootIndent;
log_level = cfg.logLevel; log_level = logLevel;
log_to_file = cfg.logToFile; log_to_file = logToFile;
open_files_in_last_window = cfg.openFilesInLastWindow; open_files_in_last_window = openFilesInLastWindow;
popup_border_style = cfg.popupBorderStyle; popup_border_style = popupBorderStyle;
resize_timer_interval = cfg.resizeTimerInterval; resize_timer_interval = resizeTimerInterval;
sort_case_insensitive = cfg.sortCaseInsensitive; sort_case_insensitive = sortCaseInsensitive;
sort_function = mkRaw cfg.sortFunction; sort_function = mkRaw sortFunction;
use_popups_for_input = cfg.usePopupsForInput; use_popups_for_input = usePopupsForInput;
use_default_mappings = cfg.useDefaultMappings; use_default_mappings = useDefaultMappings;
source_selector = with cfg.sourceSelector; { source_selector = with sourceSelector; {
inherit winbar statusline; inherit winbar statusline;
show_scrolled_off_parent_node = showScrolledOffParentNode; show_scrolled_off_parent_node = showScrolledOffParentNode;
sources = sources =
ifNonNull' cfg.sourceSelector.sources ifNonNull' sources
( (
map map
( (
@ -1075,7 +1057,7 @@ in {
display_name = source.displayName; display_name = source.displayName;
} }
) )
cfg.sourceSelector.sources sources
); );
content_layout = contentLayout; content_layout = contentLayout;
tabs_layout = tabsLayout; tabs_layout = tabsLayout;
@ -1092,129 +1074,123 @@ in {
highlight_separator_active = highlightSeparatorActive; highlight_separator_active = highlightSeparatorActive;
}; };
event_handlers = event_handlers =
ifNonNull' cfg.eventHandlers ifNonNull' eventHandlers
( (
mapAttrsToList mapAttrsToList
(event: handler: { (event: handler: {
inherit event; inherit event;
handler = helpers.mkRaw handler; handler = helpers.mkRaw handler;
}) })
cfg.eventHandlers eventHandlers
); );
default_component_configs = with cfg.defaultComponentConfigs; default_component_configs = with defaultComponentConfigs; {
ifNonNull' cfg.defaultComponentConfigs { container = with container; {
container = ifNonNull' cfg.defaultComponentConfigs.container { enable_character_fade = enableCharacterFade;
enable_character_fade = container.enableCharacterFade; inherit width;
inherit (container) width; right_padding = rightPadding;
right_padding = container.rightPadding;
};
inherit diagnostics;
indent = with indent;
ifNonNull' cfg.defaultComponentConfigs.indent {
indent_size = indentSize;
inherit padding;
with_markers = withMarkers;
indent_markers = indentMarker;
last_indent_marker = lastIndentMarker;
inherit highlight;
with_expanders = withExpanders;
expander_collapsed = expanderCollapsed;
expander_expanded = expanderExpanded;
expander_highlight = expanderHighlight;
};
icon = with icon;
ifNonNull' cfg.defaultComponentConfigs.icon {
folder_closed = folderClosed;
folder_open = folderOpen;
folder_empty = folderEmpty;
folder_empty_open = folderEmptyOpen;
inherit default highlight;
};
inherit modified;
name = with name;
ifNonNull' cfg.defaultComponentConfigs.name {
trailing_slash = trailingSlash;
use_git_status_colors = useGitStatusColors;
inherit highlight;
};
git_status = gitStatus;
}; };
inherit diagnostics;
indent = with indent; {
indent_size = indentSize;
inherit padding;
with_markers = withMarkers;
indent_markers = indentMarker;
last_indent_marker = lastIndentMarker;
inherit highlight;
with_expanders = withExpanders;
expander_collapsed = expanderCollapsed;
expander_expanded = expanderExpanded;
expander_highlight = expanderHighlight;
};
icon = with icon; {
folder_closed = folderClosed;
folder_open = folderOpen;
folder_empty = folderEmpty;
folder_empty_open = folderEmptyOpen;
inherit
default
highlight
;
};
inherit modified;
name = with name; {
trailing_slash = trailingSlash;
use_git_status_colors = useGitStatusColors;
inherit highlight;
};
git_status = gitStatus;
};
renderers = ifNonNull' cfg.renderers ( renderers = ifNonNull' cfg.renderers (
mapAttrs (name: processRendererComponentList) cfg.renderers mapAttrs (name: processRendererComponentList) cfg.renderers
); );
nesting_rules = cfg.nestingRules; nesting_rules = cfg.nestingRules;
window = with window; window = with window; {
ifNonNull' cfg.window { inherit position width height;
inherit position width height; auto_expand_width = autoExpandWidth;
auto_expand_width = autoExpandWidth; inherit popup;
inherit popup; same_level = sameLevel;
same_level = sameLevel; insert_as = insertAs;
insert_as = insertAs; mapping_options = mappingOptions;
mapping_options = mappingOptions; mappings = processMappings mappings;
mappings = processMappings mappings; };
filesystem = with filesystem; {
window = processWindowMappings window;
async_directory_scan = asyncDirectoryScan;
scan_mode = scanMode;
bind_to_cwd = bindToCwd;
cwd_target = cwdTarget;
filtered_items = with filteredItems; {
inherit visible;
force_visible_in_empty_folder = forceVisibleInEmptyFolder;
show_hidden_count = showHiddenCount;
hide_dotfiles = hideDotfiles;
hide_gitignored = hideGitignored;
hide_hidden = hideHidden;
hide_by_name = hideByName;
hide_by_pattern = hideByPattern;
always_show = alwaysShow;
never_show = neverShow;
never_show_by_pattern = neverShowByPattern;
}; };
filesystem = with filesystem; find_by_full_path_words = findByFullPathWords;
ifNonNull' cfg.filesystem { find_command = findCommand;
window = processWindowMappings window; find_args =
async_directory_scan = asyncDirectoryScan; if isString findArgs
scan_mode = scanMode; then mkRaw findArgs
bind_to_cwd = bindToCwd; else findArgs;
cwd_target = cwdTarget; group_empty_dirs = groupEmptyDirs;
filtered_items = with filteredItems; search_limit = searchLimit;
ifNonNull' cfg.filesystem.filteredItems { follow_current_file = followCurrentFile;
inherit visible; hijack_netrw_behavior = hijackNetrwBehavior;
force_visible_in_empty_folder = forceVisibleInEmptyFolder; use_libuv_file_watcher = useLibuvFileWatcher;
show_hidden_count = showHiddenCount; };
hide_dotfiles = hideDotfiles; buffers = with buffers; {
hide_gitignored = hideGitignored; bind_to_cwd = bindToCwd;
hide_hidden = hideHidden; follow_current_file = followCurrentFile;
hide_by_name = hideByName; group_empty_dirs = groupEmptyDirs;
hide_by_pattern = hideByPattern; window = processWindowMappings window;
always_show = alwaysShow; };
never_show = neverShow; git_status = {
never_show_by_pattern = neverShowByPattern;
};
find_by_full_path_words = findByFullPathWords;
find_command = findCommand;
find_args =
if isString findArgs
then mkRaw findArgs
else findArgs;
group_empty_dirs = groupEmptyDirs;
search_limit = searchLimit;
follow_current_file = followCurrentFile;
hijack_netrw_behavior = hijackNetrwBehavior;
use_libuv_file_watcher = useLibuvFileWatcher;
};
buffers = with buffers;
ifNonNull' cfg.buffers {
bind_to_cwd = bindToCwd;
follow_current_file = followCurrentFile;
group_empty_dirs = groupEmptyDirs;
window = processWindowMappings window;
};
git_status = ifNonNull' cfg.gitStatus {
window = processWindowMappings cfg.gitStatus.window; window = processWindowMappings cfg.gitStatus.window;
}; };
example = with example; example = with example; {
ifNonNull' cfg.example { renderers = with renderers; {
renderers = ifNonNull' cfg.example.renderers { custom = processRendererComponentList custom;
custom = processRendererComponentList renderers.custom;
};
}; };
document_symbols = { };
follow_cursor = cfg.documentSymbols.followCursor; document_symbols = with documentSymbols; {
inherit (cfg.documentSymbols) kinds; follow_cursor = followCursor;
inherit kinds;
custom_kinds.__raw = custom_kinds.__raw =
"{" "{"
+ (concatStringsSep "," + (concatStringsSep ","
( (
mapAttrsToList mapAttrsToList
(id: name: ''[${id}] = "${name}"'') (id: name: ''[${id}] = "${name}"'')
cfg.documentSymbols.customKinds customKinds
)) ))
+ "}"; + "}";
window = processWindowMappings cfg.documentSymbols.window; window = processWindowMappings window;
}; };
} }
// cfg.extraOptions; // cfg.extraOptions;
@ -1226,7 +1202,7 @@ in {
]; ];
extraConfigLua = '' extraConfigLua = ''
require('neo-tree').setup(${helpers.toLuaObject options}) require('neo-tree').setup(${helpers.toLuaObject setupOptions})
''; '';
extraPackages = [pkgs.git]; extraPackages = [pkgs.git];
}; };