1- local utils = require (" nvim-tree.utils" )
21local notify = require (" nvim-tree.notify" )
32
43local M = {}
54
5+ --- Create empty sub-tables if not present
6+ --- @param tbl table to create empty inside of
7+ --- @param path string dot separated string of sub-tables
8+ --- @return table deepest sub-table
9+ local function create (tbl , path )
10+ local t = tbl
11+ for s in string.gmatch (path , " ([^%.]+)%.*" ) do
12+ if t [s ] == nil then
13+ t [s ] = {}
14+ end
15+ t = t [s ]
16+ end
17+
18+ return t
19+ end
20+
21+ --- Move a value from src to dst if value is nil on dst.
22+ --- Remove value from src
23+ --- @param src table to copy from
24+ --- @param src_path string dot separated string of sub-tables
25+ --- @param src_pos string value pos
26+ --- @param dst table to copy to
27+ --- @param dst_path string dot separated string of sub-tables , created when missing
28+ --- @param dst_pos string value pos
29+ --- @param remove boolean
30+ local function move (src , src_path , src_pos , dst , dst_path , dst_pos , remove )
31+ for pos in string.gmatch (src_path , " ([^%.]+)%.*" ) do
32+ if src [pos ] and type (src [pos ]) == " table" then
33+ src = src [pos ]
34+ else
35+ return
36+ end
37+ end
38+ local src_val = src [src_pos ]
39+ if src_val == nil then
40+ return
41+ end
42+
43+ dst = create (dst , dst_path )
44+ if dst [dst_pos ] == nil then
45+ dst [dst_pos ] = src_val
46+ end
47+
48+ if remove then
49+ src [src_pos ] = nil
50+ end
51+ end
52+
653-- silently move, please add to help nvim-tree-legacy-opts
754local function refactored (opts )
855 -- 2022/06/20
9- utils . move_missing_val (opts , " update_focused_file" , " update_cwd" , opts , " update_focused_file" , " update_root" , true )
10- utils . move_missing_val (opts , " " , " update_cwd" , opts , " " , " sync_root_with_cwd" , true )
56+ move (opts , " update_focused_file" , " update_cwd" , opts , " update_focused_file" , " update_root" , true )
57+ move (opts , " " , " update_cwd" , opts , " " , " sync_root_with_cwd" , true )
1158
1259 -- 2022/11/07
13- utils . move_missing_val (opts , " " , " open_on_tab" , opts , " tab.sync" , " open" , false )
14- utils . move_missing_val (opts , " " , " open_on_tab" , opts , " tab.sync" , " close" , true )
15- utils . move_missing_val (opts , " " , " ignore_buf_on_tab_change" , opts , " tab.sync" , " ignore" , true )
60+ move (opts , " " , " open_on_tab" , opts , " tab.sync" , " open" , false )
61+ move (opts , " " , " open_on_tab" , opts , " tab.sync" , " close" , true )
62+ move (opts , " " , " ignore_buf_on_tab_change" , opts , " tab.sync" , " ignore" , true )
1663
1764 -- 2022/11/22
18- utils . move_missing_val (opts , " renderer" , " root_folder_modifier" , opts , " renderer" , " root_folder_label" , true )
65+ move (opts , " renderer" , " root_folder_modifier" , opts , " renderer" , " root_folder_label" , true )
1966
2067 -- 2023/01/01
21- utils . move_missing_val (opts , " update_focused_file" , " debounce_delay" , opts , " view" , " debounce_delay" , true )
68+ move (opts , " update_focused_file" , " debounce_delay" , opts , " view" , " debounce_delay" , true )
2269
2370 -- 2023/01/08
24- utils . move_missing_val (opts , " trash" , " require_confirm" , opts , " ui.confirm" , " trash" , true )
71+ move (opts , " trash" , " require_confirm" , opts , " ui.confirm" , " trash" , true )
2572
2673 -- 2023/01/15
2774 if type (opts .view ) == " table" and opts .view .adaptive_size ~= nil then
@@ -35,13 +82,13 @@ local function refactored(opts)
3582 end
3683
3784 -- 2023/07/15
38- utils . move_missing_val (opts , " " , " sort_by" , opts , " sort" , " sorter" , true )
85+ move (opts , " " , " sort_by" , opts , " sort" , " sorter" , true )
3986
4087 -- 2023/07/16
41- utils . move_missing_val (opts , " git" , " ignore" , opts , " filters" , " git_ignored" , true )
88+ move (opts , " git" , " ignore" , opts , " filters" , " git_ignored" , true )
4289
4390 -- 2023/08/26
44- utils . move_missing_val (opts , " renderer.icons" , " webdev_colors" , opts , " renderer.icons.web_devicons.file" , " color" , true )
91+ move (opts , " renderer.icons" , " webdev_colors" , opts , " renderer.icons.web_devicons.file" , " color" , true )
4592
4693 -- 2023/10/08
4794 if type (opts .renderer ) == " table" and type (opts .renderer .highlight_diagnostics ) == " boolean" then
@@ -59,7 +106,7 @@ local function refactored(opts)
59106 opts .update_focused_file .update_root = { enable = opts .update_focused_file .update_root }
60107 end
61108 end
62- utils . move_missing_val (opts , " update_focused_file" , " ignore_list" , opts , " update_focused_file.update_root" , " ignore_list" , true )
109+ move (opts , " update_focused_file" , " ignore_list" , opts , " update_focused_file.update_root" , " ignore_list" , true )
63110
64111 -- 2025/04/30
65112 if opts .renderer and opts .renderer .icons and type (opts .renderer .icons .padding ) == " string" then
0 commit comments