Skip to content

Commit 1faa8a1

Browse files
committed
Sorter uses classic, tidy opts
1 parent ef71841 commit 1faa8a1

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

lua/nvim-tree/explorer/init.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ function Explorer:new(args)
5757
self.open = true
5858
self.opts = config
5959

60-
self.sorters = Sorter(config)
60+
self.sorters = Sorter({ explorer = self })
6161
self.renderer = Renderer({ explorer = self })
6262
self.filters = Filters({ explorer = self })
6363
self.live_filter = LiveFilter({ explorer = self })

lua/nvim-tree/explorer/sorter.lua

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,31 @@ local DirectoryNode = require("nvim-tree.node.directory")
33

44
local C = {}
55

6-
---@class (exact) SorterCfg
6+
---@class (exact) SorterState
77
---@field sorter string|fun(nodes: Node[])
88
---@field folders_first boolean
99
---@field files_first boolean
1010

1111
---@class (exact) Sorter: Class
12-
---@field cfg SorterCfg
12+
---@field state SorterState
1313
---@field user fun(nodes: Node[])?
1414
---@field pre string?
1515
local Sorter = Class:extend()
1616

1717
---@class Sorter
18-
---@overload fun(opts: table): Sorter
18+
---@overload fun(args: SorterArgs): Sorter
1919

20-
---@param opts table user options
21-
function Sorter:new(opts)
22-
self.cfg = vim.deepcopy(opts.sort)
20+
---@class (exact) SorterArgs
21+
---@field explorer Explorer
2322

24-
if type(self.cfg.sorter) == "function" then
25-
self.user = self.cfg.sorter --[[@as fun(nodes: Node[])]]
26-
elseif type(self.cfg.sorter) == "string" then
27-
self.pre = self.cfg.sorter --[[@as string]]
23+
---@param args SorterArgs
24+
function Sorter:new(args)
25+
self.state = vim.deepcopy(args.explorer.opts.sort)
26+
27+
if type(self.state.sorter) == "function" then
28+
self.user = self.state.sorter --[[@as fun(nodes: Node[])]]
29+
elseif type(self.state.sorter) == "string" then
30+
self.pre = self.state.sorter --[[@as string]]
2831
end
2932
end
3033

@@ -33,7 +36,7 @@ end
3336
---@return fun(a: Node, b: Node): boolean
3437
function Sorter:get_comparator(sorter)
3538
return function(a, b)
36-
return (C[sorter] or C.name)(a, b, self.cfg)
39+
return (C[sorter] or C.name)(a, b, self.state)
3740
end
3841
end
3942

@@ -54,7 +57,7 @@ end
5457
---Evaluate `sort.folders_first` and `sort.files_first`
5558
---@param a Node
5659
---@param b Node
57-
---@param cfg SorterCfg
60+
---@param cfg SorterState
5861
---@return boolean|nil
5962
local function folders_or_files_first(a, b, cfg)
6063
if not (cfg.folders_first or cfg.files_first) then
@@ -178,7 +181,7 @@ end
178181
---@param a Node
179182
---@param b Node
180183
---@param ignorecase boolean|nil
181-
---@param cfg SorterCfg
184+
---@param cfg SorterState
182185
---@return boolean
183186
local function node_comparator_name_ignorecase_or_not(a, b, ignorecase, cfg)
184187
if not (a and b) then

0 commit comments

Comments
 (0)