1
0
Fork 0
mirror of https://github.com/nix-community/nixvim.git synced 2025-11-17 16:02:48 +01:00

plugins/neo-tree: migrate to mkNeovimPlugin

This commit is contained in:
Gaetan Lepage 2025-10-09 10:28:12 +02:00 committed by Gaétan Lepage
parent 57eb2a0d15
commit 2ad8d87e42
4 changed files with 639 additions and 1527 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,173 @@
lib: {
deprecateExtraOptions = true;
imports =
let
mkRemovedOption =
oldSubPath: newSubPath:
let
oldPath = [
"plugins"
"neo-tree"
]
++ (lib.splitString "." oldSubPath);
message = ''
Use `plugins.neo-tree.settings.${newSubPath}`.
WARNINGS:
- sub-option names are the upstream ones, and use snake_case:
`displayName` -> `display_name`
- Lua string are not automatically converted to lua:
`foo = "vim.fn.stdpath('data')"` -> `foo.__raw = "vim.fn.stdpath('data')"`
'';
in
lib.mkRemovedOptionModule oldPath message;
in
lib.mapAttrsToList mkRemovedOption {
"sourceSelector.sources" = "source_selector.sources";
"eventHandlers" = "event_handlers";
"window.mappings" = "window.mappings";
"renderers" = "renderers";
"filesystem.window.mappings" = "filesystem.window.mappings";
"filesystem.findArgs" = "filesystem.find_args";
"buffers.window.mappings" = "buffers.window.mappings";
"gitStatus.window.mappings" = "git_status.window.mappings";
"example.renderers.custom" = "example.renderers.custom";
"example.window.mappings" = "example.window.mappings";
"documentSymbols.customKinds" = "document_symbols.custom_kinds";
"documentSymbols.window.mappings" = "document_symbols.window.mappings";
};
optionsRenamedToSettings = [
{
old = "extraSources";
new = "sources";
}
]
++ (map (lib.splitString ".") [
"sources"
"addBlankLineAtTop"
"autoCleanAfterSessionRestore"
"closeIfLastWindow"
"defaultSource"
"enableDiagnostics"
"enableGitStatus"
"enableModifiedMarkers"
"enableRefreshOnWrite"
"gitStatusAsync"
"gitStatusAsyncOptions.batchSize"
"gitStatusAsyncOptions.batchDelay"
"gitStatusAsyncOptions.maxLines"
"hideRootNode"
"retainHiddenRootIndent"
"logLevel"
"logToFile"
"openFilesInLastWindow"
"popupBorderStyle"
"resizeTimerInterval"
"sortCaseInsensitive"
"sortFunction"
"usePopupsForInput"
"useDefaultMappings"
"sourceSelector.winbar"
"sourceSelector.statusline"
"sourceSelector.showScrolledOffParentNode"
"sourceSelector.contentLayout"
"sourceSelector.tabsLayout"
"sourceSelector.truncationCharacter"
"sourceSelector.tabsMinWidth"
"sourceSelector.tabsMaxWidth"
"sourceSelector.padding"
"sourceSelector.separator"
"sourceSelector.separatorActive"
"sourceSelector.showSeparatorOnEdge"
"sourceSelector.highlightTab"
"sourceSelector.highlightTabActive"
"sourceSelector.highlightBackground"
"sourceSelector.highlightSeparator"
"sourceSelector.highlightSeparatorActive"
"defaultComponentConfigs.container.enableCharacterFade"
"defaultComponentConfigs.container.width"
"defaultComponentConfigs.container.rightPadding"
"defaultComponentConfigs.diagnostics"
"defaultComponentConfigs.indent.indentSize"
"defaultComponentConfigs.indent.padding"
"defaultComponentConfigs.indent.withMarkers"
"defaultComponentConfigs.indent.indentMarker"
"defaultComponentConfigs.indent.lastIndentMarker"
"defaultComponentConfigs.indent.highlight"
"defaultComponentConfigs.indent.withExpanders"
"defaultComponentConfigs.indent.expanderCollapsed"
"defaultComponentConfigs.indent.expanderExpanded"
"defaultComponentConfigs.indent.expanderHighlight"
"defaultComponentConfigs.icon.folderClosed"
"defaultComponentConfigs.icon.folderOpen"
"defaultComponentConfigs.icon.folderEmpty"
"defaultComponentConfigs.icon.folderEmptyOpen"
"defaultComponentConfigs.icon.default"
"defaultComponentConfigs.icon.highlight"
"defaultComponentConfigs.modified"
"defaultComponentConfigs.name.trailingSlash"
"defaultComponentConfigs.name.useGitStatusColors"
"defaultComponentConfigs.name.highlight"
"defaultComponentConfigs.gitStatus.symbols.added"
"defaultComponentConfigs.gitStatus.symbols.deleted"
"defaultComponentConfigs.gitStatus.symbols.modified"
"defaultComponentConfigs.gitStatus.symbols.renamed"
"defaultComponentConfigs.gitStatus.symbols.untracked"
"defaultComponentConfigs.gitStatus.symbols.ignored"
"defaultComponentConfigs.gitStatus.symbols.unstaged"
"defaultComponentConfigs.gitStatus.symbols.staged"
"defaultComponentConfigs.gitStatus.symbols.conflict"
"defaultComponentConfigs.gitStatus.align"
"nestingRules"
"window.position"
"window.width"
"window.height"
"window.autoExpandWidth"
"window.popup.size.height"
"window.popup.size.width"
"window.popup.position"
"window.sameLevel"
"window.insertAs"
"window.mappingOptions.noremap"
"window.mappingOptions.wait"
"filesystem.asyncDirectoryScan"
"filesystem.scanMode"
"filesystem.bindToCwd"
"filesystem.cwdTarget.sidebar"
"filesystem.cwdTarget.current"
"filesystem.filteredItems.visible"
"filesystem.filteredItems.forceVisibleInEmptyFolder"
"filesystem.filteredItems.showHiddenCount"
"filesystem.filteredItems.hideDotfiles"
"filesystem.filteredItems.hideGitignored"
"filesystem.filteredItems.hideHidden"
"filesystem.filteredItems.hideByName"
"filesystem.filteredItems.hideByPattern"
"filesystem.filteredItems.alwaysShow"
"filesystem.filteredItems.neverShow"
"filesystem.filteredItems.neverShowByPattern"
"filesystem.findByFullPathWords"
"filesystem.findCommand"
"filesystem.groupEmptyDirs"
"filesystem.searchLimit"
"filesystem.followCurrentFile.enabled"
"filesystem.followCurrentFile.leaveDirsOpen"
"filesystem.hijackNetrwBehavior"
"filesystem.useLibuvFileWatcher"
"buffers.bindToCwd"
"buffers.followCurrentFile.enabled"
"buffers.followCurrentFile.leaveDirsOpen"
"buffers.groupEmptyDirs"
"documentSymbols.followCursor"
"documentSymbols.kinds"
]);
}

View file

@ -21,6 +21,6 @@ lib.nixvim.plugins.mkNeovimPlugin {
require("netman")
'';
plugins.neo-tree.extraSources = lib.mkIf cfg.neoTreeIntegration [ "netman.ui.neo-tree" ];
plugins.neo-tree.settings.sources = lib.mkIf cfg.neoTreeIntegration [ "netman.ui.neo-tree" ];
};
}

View file

@ -1,3 +1,4 @@
{ lib, ... }:
{
empty = {
plugins.web-devicons.enable = true;
@ -7,7 +8,27 @@
# Otherwise fail at opening the log file
# ERROR: [Neo-tree WARN] Could not open log file: /build/.local/share/nvim/neo-tree.nvim.log
# /build/.local/share/nvim/neo-tree.nvim.log: No such file or directory
logToFile = false;
settings.log_to_file = false;
};
};
example = {
plugins.web-devicons.enable = true;
plugins.neo-tree = {
enable = true;
settings = {
close_if_last_window = true;
filesystem.follow_current_file = {
enabled = true;
leave_dirs_open = true;
};
# Otherwise fail at opening the log file
# ERROR: [Neo-tree WARN] Could not open log file: /build/.local/share/nvim/neo-tree.nvim.log
# /build/.local/share/nvim/neo-tree.nvim.log: No such file or directory
log_to_file = false;
};
};
};
@ -16,96 +37,101 @@
plugins.neo-tree = {
enable = true;
settings = {
sources = [
"filesystem"
"buffers"
"git_status"
];
addBlankLineAtTop = false;
autoCleanAfterSessionRestore = false;
closeIfLastWindow = false;
defaultSource = "filesystem";
enableDiagnostics = true;
enableGitStatus = true;
enableModifiedMarkers = true;
enableRefreshOnWrite = true;
gitStatusAsync = true;
gitStatusAsyncOptions = {
batchSize = 1000;
batchDelay = 10;
maxLines = 10000;
add_blank_lLine_at_top = false;
auto_clean_after_session_sestore = false;
close_if_last_window = false;
default_source = "filesystem";
enable_diagnostics = true;
enable_git_status = true;
enable_modified_markers = true;
enable_refresh_on_write = true;
git_status_async = true;
git_status_async_options = {
batch_size = 1000;
batch_delay = 10;
max_lines = 10000;
};
hideRootNode = false;
retainHiddenRootIndent = false;
logLevel = "info";
logToFile = false;
openFilesInLastWindow = true;
popupBorderStyle = "NC";
resizeTimerInterval = 500;
sortCaseInsensitive = false;
sortFunction = "nil";
usePopupsForInput = true;
useDefaultMappings = true;
sourceSelector = {
hide_root_node = false;
retain_hidden_root_indent = false;
log_level = "info";
log_to_file = false;
open_files_in_last_window = true;
popup_border_style = "NC";
resize_timer_interval = 500;
sort_case_insensitive = false;
sort_function = "nil";
use_popups_for_input = true;
use_default_mappings = true;
source_selector = {
winbar = false;
statusline = false;
showScrolledOffParentNode = false;
show_scrolled_off_parent_node = false;
sources = [
{
source = "filesystem";
displayName = " Files ";
display_name = " Files ";
}
{
source = "buffers";
displayName = " Buffers ";
display_name = " Buffers ";
}
{
source = "gitStatus";
displayName = " Git ";
display_name = " Git ";
}
{
source = "diagnostics";
displayName = " Diagnostics ";
display_name = " Diagnostics ";
}
];
contentLayout = "start";
tabsLayout = "equal";
truncationCharacter = "";
tabsMinWidth = null;
tabsMaxWidth = null;
content_layout = "start";
tabs_layout = "equal";
truncation_character = "";
tabs_min_width = null;
tabs_max_width = null;
padding = 0;
separator = {
left = "";
right = "";
};
separatorActive = null;
showSeparatorOnEdge = false;
highlightTab = "NeoTreeTabInactive";
highlightTabActive = "NeoTreeTabActive";
highlightBackground = "NeoTreeTabInactive";
highlightSeparator = "NeoTreeTabSeparatorInactive";
highlightSeparatorActive = "NeoTreeTabSeparatorActive";
separator_active = null;
show_separator_on_edge = false;
highlight_tab = "NeoTreeTabInactive";
highlight_tab_active = "NeoTreeTabActive";
highlight_background = "NeoTreeTabInactive";
highlight_separator = "NeoTreeTabSeparatorInactive";
highlight_separator_active = "NeoTreeTabSeparatorActive";
};
eventHandlers = {
before_render = ''
event_handlers = [
{
event = "before_render";
handler = lib.nixvim.mkRaw ''
function (state)
-- add something to the state that can be used by custom components
end
'';
file_opened = ''
}
{
event = "file_opened";
handler = lib.nixvim.mkRaw ''
function(file_path)
--auto close
require("neo-tree").close_all()
end
'';
};
defaultComponentConfigs = {
}
];
default_component_configs = {
container = {
enableCharacterFade = true;
enable_character_fade = true;
width = "100%";
rightPadding = 0;
right_padding = 0;
};
diagnostics = {
symbols = {
@ -122,22 +148,22 @@
};
};
indent = {
indentSize = 2;
indent_size = 2;
padding = 1;
withMarkers = true;
indentMarker = "";
lastIndentMarker = "";
with_markers = true;
indent_marker = "";
last_indent_marker = "";
highlight = "NeoTreeIndentMarker";
withExpanders = null;
expanderCollapsed = "";
expanderExpanded = "";
expanderHighlight = "NeoTreeExpander";
with_expanders = null;
expander_collapsed = "";
expander_expanded = "";
expander_highlight = "NeoTreeExpander";
};
icon = {
folderClosed = "";
folderOpen = "";
folderEmpty = "";
folderEmptyOpen = "";
folder_closed = "";
folder_open = "";
folder_empty = "";
folder_empty_open = "";
default = "*";
highlight = "NeoTreeFileIcon";
};
@ -146,8 +172,8 @@
highlight = "NeoTreeModified";
};
name = {
trailingSlash = false;
useGitStatusColors = true;
trailing_slash = false;
use_git_status_colors = true;
highlight = "NeoTreeFileName";
};
gitStatus = {
@ -162,7 +188,6 @@
staged = "";
conflict = "";
};
align = "right";
};
};
@ -172,25 +197,25 @@
"icon"
"current_filter"
{
name = "container";
__unkeyed = "container";
content = [
{
name = "name";
__unkeyed = "name";
zindex = 10;
}
{
name = "clipboard";
__unkeyed = "clipboard";
zindex = 10;
}
{
name = "diagnostics";
__unkeyed = "diagnostics";
errors_only = true;
zindex = 20;
align = "right";
hide_when_expanded = true;
}
{
name = "git_status";
__unkeyed = "git_status";
zindex = 20;
align = "right";
hide_when_expanded = true;
@ -205,29 +230,29 @@
name = "container";
content = [
{
name = "name";
__unkeyed = "name";
zindex = 10;
}
{
name = "clipboard";
__unkeyed = "clipboard";
zindex = 10;
}
{
name = "bufnr";
__unkeyed = "bufnr";
zindex = 10;
}
{
name = "modified";
__unkeyed = "modified";
zindex = 20;
align = "right";
}
{
name = "diagnostics";
__unkeyed = "diagnostics";
zindex = 20;
align = "right";
}
{
name = "git_status";
__unkeyed = "git_status";
zindex = 20;
align = "right";
}
@ -236,11 +261,11 @@
];
message = [
{
name = "indent";
__unkeyed = "indent";
with_markers = false;
}
{
name = "name";
__unkeyed = "name";
highlight = "NeoTreeMessage";
}
];
@ -251,12 +276,12 @@
"bufnr"
];
};
nestingRules = { };
nesting_rules = { };
window = {
position = "left";
width = 40;
height = 15;
autoExpandWidth = false;
auto_expand_width = false;
popup = {
size = {
height = "80%";
@ -264,9 +289,9 @@
};
position = "80%";
};
sameLevel = false;
insertAs = "child";
mappingOptions = {
same_level = false;
insert_as = "child";
mapping_options = {
noremap = true;
nowait = true;
};
@ -299,7 +324,7 @@
# Z = "expand_all_nodes";
R = "refresh";
a = {
command = "add";
__unkeyed = "add";
# some commands may take optional config options, see `:h neo-tree-mappings` for details
config = {
show_path = "none"; # "none", "relative", "absolute"
@ -337,32 +362,32 @@
"]g" = "next_git_modified";
};
};
asyncDirectoryScan = "auto";
scanMode = "shallow";
bindToCwd = true;
cwdTarget = {
async_directory_scan = "auto";
scan_mode = "shallow";
bind_to_cwd = true;
cwd_target = {
sidebar = "tab";
current = "window";
};
filteredItems = {
visible = false;
forceVisibleInEmptyFolder = false;
showHiddenCount = true;
hideDotfiles = true;
hideGitignored = true;
hideHidden = true;
hideByName = [
force_visible_in_empty_folder = false;
showhidden_count = true;
hide_dotfiles = true;
hide_gitignored = true;
hide_hidden = true;
hide_by_name = [
".DS_Store"
"thumbs.db"
];
hideByPattern = [ ];
alwaysShow = [ ];
neverShow = [ ];
neverShowByPattern = [ ];
hide_by_pattern = [ ];
always_show = [ ];
never_show = [ ];
never_show_by_pattern = [ ];
};
findByFullPathWords = false;
findCommand = "fd";
findArgs = {
find_by_full_path_words = false;
find_command = "fd";
find_args = {
fd = [
"--exclude"
".git"
@ -370,22 +395,22 @@
"node_modules"
];
};
groupEmptyDirs = false;
searchLimit = 50;
followCurrentFile = {
group_empty_dirs = false;
search_limit = 50;
follow_current_file = {
enabled = false;
leaveDirsOpen = false;
leave_dirs_open = false;
};
hijackNetrwBehavior = "open_default";
useLibuvFileWatcher = false;
hijack_netrw_behavior = "open_default";
use_libuv_file_watcher = false;
};
buffers = {
bindToCwd = true;
followCurrentFile = {
bind_to_cwd = true;
follow_current_file = {
enabled = true;
leaveDirsOpen = false;
leave_dirs_open = false;
};
groupEmptyDirs = true;
group_empty_dirs = true;
window = {
mappings = {
"<bs>" = "navigate_up";
@ -394,7 +419,7 @@
};
};
};
gitStatus = {
git_status = {
window = {
mappings = {
A = "git_add_all";
@ -410,9 +435,9 @@
example = {
renderers = {
custom = [
"indent"
[ "indent" ]
{
name = "icon";
__unkeyed = "icon";
default = "C";
}
"custom"
@ -427,8 +452,8 @@
};
};
};
documentSymbols = {
followCursor = false;
document_symbols = {
follow_cursor = false;
kinds = {
File = {
icon = "󰈙";
@ -439,13 +464,14 @@
hl = "Include";
};
};
customKinds = {
custom_kinds = {
"12" = "foo";
"15" = "bar";
};
};
};
};
};
no-packages = {
plugins = {
@ -456,7 +482,7 @@
# Otherwise fail at opening the log file
# ERROR: [Neo-tree WARN] Could not open log file: /build/.local/share/nvim/neo-tree.nvim.log
# /build/.local/share/nvim/neo-tree.nvim.log: No such file or directory
logToFile = false;
settings.log_to_file = false;
};
};
@ -472,7 +498,7 @@
# Otherwise fail at opening the log file
# ERROR: [Neo-tree WARN] Could not open log file: /build/.local/share/nvim/neo-tree.nvim.log
# /build/.local/share/nvim/neo-tree.nvim.log: No such file or directory
logToFile = false;
settings.log_to_file = false;
};
};
};