Skip to content

Commit b092915

Browse files
committed
typechecked optargs constructors for decorators, WIP
1 parent 4da6f4b commit b092915

File tree

4 files changed

+24
-124
lines changed

4 files changed

+24
-124
lines changed

lua/nvim-tree/renderer/builder.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ local DirectoryNode = require("nvim-tree.node.directory")
77
local DecoratorBookmarks = require("nvim-tree.renderer.decorator.bookmarks")
88
local DecoratorCopied = require("nvim-tree.renderer.decorator.copied")
99
local DecoratorCut = require("nvim-tree.renderer.decorator.cut")
10-
-- local DecoratorDiagnostics = require("nvim-tree.renderer.decorator.diagnostics")
10+
local DecoratorDiagnostics = require("nvim-tree.renderer.decorator.diagnostics")
1111
local DecoratorGit = require("nvim-tree.renderer.decorator.git")
1212
-- local DecoratorModified = require("nvim-tree.renderer.decorator.modified")
1313
-- local DecoratorHidden = require("nvim-tree.renderer.decorator.hidden")
@@ -63,7 +63,7 @@ function Builder:new(opts, explorer)
6363
-- priority order
6464
DecoratorCut({ explorer = explorer }),
6565
DecoratorCopied({ explorer = explorer }),
66-
-- DecoratorDiagnostics({ explorer = explorer }),
66+
DecoratorDiagnostics({ explorer = explorer }),
6767
DecoratorBookmarks({ explorer = explorer }),
6868
-- DecoratorModified({ explorer = explorer }),
6969
-- DecoratorHidden({ explorer = explorer }),

lua/nvim-tree/renderer/components/diagnostics.lua

Lines changed: 0 additions & 95 deletions
This file was deleted.

lua/nvim-tree/renderer/components/init.lua

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
local M = {}
22

3-
M.diagnostics = require("nvim-tree.renderer.components.diagnostics")
43
M.full_name = require("nvim-tree.renderer.components.full-name")
54
M.devicons = require("nvim-tree.renderer.components.devicons")
65
M.padding = require("nvim-tree.renderer.components.padding")
76

87
function M.setup(opts)
9-
M.diagnostics.setup(opts)
108
M.full_name.setup(opts)
119
M.devicons.setup(opts)
1210
M.padding.setup(opts)

lua/nvim-tree/renderer/decorator/diagnostics.lua

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,38 +35,35 @@ local ICON_KEYS = {
3535

3636
---@class (exact) DecoratorDiagnostics: Decorator
3737
---@field icons HighlightedString[]?
38-
local DecoratorDiagnostics = Decorator:new()
39-
40-
---Static factory method
41-
---@param opts table
42-
---@param explorer Explorer
43-
---@return DecoratorDiagnostics
44-
function DecoratorDiagnostics:create(opts, explorer)
45-
---@type DecoratorDiagnostics
46-
local o = {
47-
explorer = explorer,
48-
enabled = opts.diagnostics.enable,
49-
hl_pos = HL_POSITION[opts.renderer.highlight_diagnostics] or HL_POSITION.none,
50-
icon_placement = ICON_PLACEMENT[opts.renderer.icons.diagnostics_placement] or ICON_PLACEMENT.none,
51-
}
52-
o = self:new(o)
53-
54-
if not o.enabled then
55-
return o
38+
local DecoratorDiagnostics = Decorator:extend()
39+
40+
---@class DecoratorDiagnostics
41+
---@overload fun(explorer: DecoratorArgs): DecoratorDiagnostics
42+
43+
---@private
44+
---@param args DecoratorArgs
45+
function DecoratorDiagnostics:new(args)
46+
Decorator.new(self, {
47+
explorer = args.explorer,
48+
enabled = true,
49+
hl_pos = HL_POSITION[args.explorer.opts.renderer.highlight_diagnostics] or HL_POSITION.none,
50+
icon_placement = ICON_PLACEMENT[args.explorer.opts.renderer.icons.diagnostics_placement] or ICON_PLACEMENT.none,
51+
})
52+
53+
if not self.enabled then
54+
return
5655
end
5756

58-
if opts.renderer.icons.show.diagnostics then
59-
o.icons = {}
57+
if self.explorer.opts.renderer.icons.show.diagnostics then
58+
self.icons = {}
6059
for name, sev in pairs(ICON_KEYS) do
61-
o.icons[sev] = {
62-
str = opts.diagnostics.icons[name],
60+
self.icons[sev] = {
61+
str = self.explorer.opts.diagnostics.icons[name],
6362
hl = { HG_ICON[sev] },
6463
}
65-
o:define_sign(o.icons[sev])
64+
self:define_sign(self.icons[sev])
6665
end
6766
end
68-
69-
return o
7067
end
7168

7269
---Diagnostic icon: diagnostics.enable, renderer.icons.show.diagnostics and node has status

0 commit comments

Comments
 (0)