1
- local utils = require (" nvim-tree.utils" )
2
1
local notify = require (" nvim-tree.notify" )
3
2
4
3
local M = {}
5
4
5
+ --- Move a value from src to dst if value is nil on dst.
6
+ --- Remove value from src
7
+ --- @param src table to copy from
8
+ --- @param src_path string dot separated string of sub-tables
9
+ --- @param src_pos string value pos
10
+ --- @param dst table to copy to
11
+ --- @param dst_path string dot separated string of sub-tables , created when missing
12
+ --- @param dst_pos string value pos
13
+ --- @param remove boolean
14
+ local function move (src , src_path , src_pos , dst , dst_path , dst_pos , remove )
15
+ for pos in string.gmatch (src_path , " ([^%.]+)%.*" ) do
16
+ if src [pos ] and type (src [pos ]) == " table" then
17
+ src = src [pos ]
18
+ else
19
+ return
20
+ end
21
+ end
22
+ local src_val = src [src_pos ]
23
+ if src_val == nil then
24
+ return
25
+ end
26
+
27
+ dst = M .table_create_missing (dst , dst_path )
28
+ if dst [dst_pos ] == nil then
29
+ dst [dst_pos ] = src_val
30
+ end
31
+
32
+ if remove then
33
+ src [src_pos ] = nil
34
+ end
35
+ end
36
+
6
37
-- silently move, please add to help nvim-tree-legacy-opts
7
38
local function refactored (opts )
8
39
-- 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 )
40
+ move (opts , " update_focused_file" , " update_cwd" , opts , " update_focused_file" , " update_root" , true )
41
+ move (opts , " " , " update_cwd" , opts , " " , " sync_root_with_cwd" , true )
11
42
12
43
-- 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 )
44
+ move (opts , " " , " open_on_tab" , opts , " tab.sync" , " open" , false )
45
+ move (opts , " " , " open_on_tab" , opts , " tab.sync" , " close" , true )
46
+ move (opts , " " , " ignore_buf_on_tab_change" , opts , " tab.sync" , " ignore" , true )
16
47
17
48
-- 2022/11/22
18
- utils . move_missing_val (opts , " renderer" , " root_folder_modifier" , opts , " renderer" , " root_folder_label" , true )
49
+ move (opts , " renderer" , " root_folder_modifier" , opts , " renderer" , " root_folder_label" , true )
19
50
20
51
-- 2023/01/01
21
- utils . move_missing_val (opts , " update_focused_file" , " debounce_delay" , opts , " view" , " debounce_delay" , true )
52
+ move (opts , " update_focused_file" , " debounce_delay" , opts , " view" , " debounce_delay" , true )
22
53
23
54
-- 2023/01/08
24
- utils . move_missing_val (opts , " trash" , " require_confirm" , opts , " ui.confirm" , " trash" , true )
55
+ move (opts , " trash" , " require_confirm" , opts , " ui.confirm" , " trash" , true )
25
56
26
57
-- 2023/01/15
27
58
if type (opts .view ) == " table" and opts .view .adaptive_size ~= nil then
@@ -35,13 +66,13 @@ local function refactored(opts)
35
66
end
36
67
37
68
-- 2023/07/15
38
- utils . move_missing_val (opts , " " , " sort_by" , opts , " sort" , " sorter" , true )
69
+ move (opts , " " , " sort_by" , opts , " sort" , " sorter" , true )
39
70
40
71
-- 2023/07/16
41
- utils . move_missing_val (opts , " git" , " ignore" , opts , " filters" , " git_ignored" , true )
72
+ move (opts , " git" , " ignore" , opts , " filters" , " git_ignored" , true )
42
73
43
74
-- 2023/08/26
44
- utils . move_missing_val (opts , " renderer.icons" , " webdev_colors" , opts , " renderer.icons.web_devicons.file" , " color" , true )
75
+ move (opts , " renderer.icons" , " webdev_colors" , opts , " renderer.icons.web_devicons.file" , " color" , true )
45
76
46
77
-- 2023/10/08
47
78
if type (opts .renderer ) == " table" and type (opts .renderer .highlight_diagnostics ) == " boolean" then
@@ -59,7 +90,7 @@ local function refactored(opts)
59
90
opts .update_focused_file .update_root = { enable = opts .update_focused_file .update_root }
60
91
end
61
92
end
62
- utils . move_missing_val (opts , " update_focused_file" , " ignore_list" , opts , " update_focused_file.update_root" , " ignore_list" , true )
93
+ move (opts , " update_focused_file" , " ignore_list" , opts , " update_focused_file.update_root" , " ignore_list" , true )
63
94
64
95
-- 2025/04/30
65
96
if opts .renderer and opts .renderer .icons and type (opts .renderer .icons .padding ) == " string" then
0 commit comments