Skip to content

Commit f309ca2

Browse files
committed
refactor(#2826): singleton View class
1 parent f098195 commit f309ca2

File tree

1 file changed

+16
-29
lines changed

1 file changed

+16
-29
lines changed

lua/nvim-tree/view.lua

+16-29
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ local DEFAULT_MIN_WIDTH = 30
1616
local DEFAULT_MAX_WIDTH = -1
1717
local DEFAULT_PADDING = 1
1818

19-
-- TODO #2826 attempt to type the tables, at least the options ones
20-
2119
---@class (exact) View: Class
2220
---@field live_filter table
2321
---@field side string
@@ -26,11 +24,10 @@ local DEFAULT_PADDING = 1
2624
---@field private adaptive_size boolean
2725
---@field private centralize_selection boolean
2826
---@field private tabpages table
29-
---@field private cursors table
27+
---@field private cursors table<integer, integer[]> as per vim.api.nvim_win_get_cursor
3028
---@field private hide_root_folder boolean
3129
---@field private winopts table
3230
---@field private height integer
33-
---@field private tab table
3431
---@field private preserve_window_proportions boolean
3532
---@field private initial_width integer
3633
---@field private width (fun():integer)|integer|string
@@ -50,27 +47,30 @@ local View = Class:extend()
5047
function View:new(args)
5148
self.explorer = args.explorer
5249
self.adaptive_size = false
53-
self.centralize_selection = false
54-
self.tabpages = {}
55-
self.cursors = {}
56-
self.hide_root_folder = false
5750
self.bufnr_per_tab = {}
58-
self.live_filter = {
59-
prev_focused_node = nil,
60-
}
51+
self.centralize_selection = self.explorer.opts.view.centralize_selection
52+
self.cursors = {}
53+
self.float = self.explorer.opts.view.float
54+
self.height = self.explorer.opts.view.height
55+
self.hide_root_folder = self.explorer.opts.renderer.root_folder_label == false
56+
self.preserve_window_proportions = self.explorer.opts.view.preserve_window_proportions
57+
self.side = (self.explorer.opts.view.side == "right") and "right" or "left"
58+
self.tabpages = {}
59+
self.live_filter = { prev_focused_node = nil, }
60+
6161
self.winopts = {
62-
relativenumber = false,
63-
number = false,
62+
relativenumber = self.explorer.opts.view.relativenumber,
63+
number = self.explorer.opts.view.number,
6464
list = false,
6565
foldenable = false,
6666
winfixwidth = true,
6767
winfixheight = true,
6868
spell = false,
69-
signcolumn = "yes",
69+
signcolumn = self.explorer.opts.view.signcolumn,
7070
foldmethod = "manual",
7171
foldcolumn = "0",
7272
cursorcolumn = false,
73-
cursorline = true,
73+
cursorline = self.explorer.opts.view.cursorline,
7474
cursorlineopt = "both",
7575
colorcolumn = "0",
7676
wrap = false,
@@ -90,20 +90,7 @@ function View:new(args)
9090
}, ","),
9191
}
9292

93-
self.centralize_selection = self.explorer.opts.view.centralize_selection
94-
self.side = (self.explorer.opts.view.side == "right") and "right" or "left"
95-
self.height = self.explorer.opts.view.height
96-
self.hide_root_folder = self.explorer.opts.renderer.root_folder_label == false
97-
self.tab = self.explorer.opts.tab
98-
self.preserve_window_proportions = self.explorer.opts.view.preserve_window_proportions
99-
self.winopts.cursorline = self.explorer.opts.view.cursorline
100-
self.winopts.number = self.explorer.opts.view.number
101-
self.winopts.relativenumber = self.explorer.opts.view.relativenumber
102-
self.winopts.signcolumn = self.explorer.opts.view.signcolumn
103-
self.float = self.explorer.opts.view.float
104-
10593
self:configure_width(self.explorer.opts.view.width)
106-
10794
self.initial_width = self:get_width()
10895
end
10996

@@ -330,7 +317,7 @@ end
330317

331318
---@param tabpage integer|nil
332319
function View:close(tabpage)
333-
if self.tab.sync.close then
320+
if self.explorer.opts.tab.sync.close then
334321
self:close_all_tabs()
335322
elseif tabpage then
336323
self:close_internal(tabpage)

0 commit comments

Comments
 (0)