Skip to content

Commit 51b269d

Browse files
committed
refactor(#2826): move global CURSORS to view member
1 parent 82cc80f commit 51b269d

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

lua/nvim-tree/explorer/view.lua

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ local Class = require("nvim-tree.classic")
1818
---@field private width (fun():integer)|integer|string
1919
---@field private max_width integer
2020
---@field private padding integer
21-
---@field private bufnr_by_tabid table<integer, integer> stored per tab until multi-instance is complete
21+
-- TODO multi-instance remove or replace with single member
22+
---@field private bufnr_by_tabid table<integer, integer>
23+
-- TODO multi-instance change to single member
24+
---@field private cursors_by_tabid table<integer, integer[]> as per vim.api.nvim_win_get_cursor
2225
local View = Class:extend()
2326

2427
---@class View
@@ -32,13 +35,14 @@ local View = Class:extend()
3235
function View:new(args)
3336
args.explorer:log_new("View")
3437

35-
self.explorer = args.explorer
36-
self.adaptive_size = false
37-
self.side = (self.explorer.opts.view.side == "right") and "right" or "left"
38-
self.live_filter = { prev_focused_node = nil, }
39-
self.bufnr_by_tabid = {}
38+
self.explorer = args.explorer
39+
self.adaptive_size = false
40+
self.side = (self.explorer.opts.view.side == "right") and "right" or "left"
41+
self.live_filter = { prev_focused_node = nil, }
42+
self.bufnr_by_tabid = {}
43+
self.cursors_by_tabid = {}
4044

41-
self.winopts = {
45+
self.winopts = {
4246
relativenumber = self.explorer.opts.view.relativenumber,
4347
number = self.explorer.opts.view.number,
4448
list = false,
@@ -235,12 +239,12 @@ local function switch_buf_if_last_buf()
235239
end
236240
end
237241

238-
---save_tab_state saves any state that should be preserved across redraws.
242+
---save any state that should be preserved on reopening
239243
---@private
240244
---@param tabid integer
241-
function View:save_tab_state(tabid)
245+
function View:save_state(tabid)
242246
tabid = tabid or vim.api.nvim_get_current_tabpage()
243-
globals.CURSORS[tabid] = vim.api.nvim_win_get_cursor(self:get_winid(tabid, "View:save_tab_state") or 0)
247+
self.cursors_by_tabid[tabid] = vim.api.nvim_win_get_cursor(self:get_winid(tabid, "View:save_tab_state") or 0)
244248
end
245249

246250
---@private
@@ -255,7 +259,7 @@ function View:close_internal(tabid)
255259
if not self:is_visible({ tabpage = tabid }, "View:close_internal") then
256260
return
257261
end
258-
self:save_tab_state(tabid)
262+
self:save_state(tabid)
259263
switch_buf_if_last_buf()
260264
local tree_win = self:get_winid(tabid, "View:close_internal")
261265
local current_win = vim.api.nvim_get_current_win()
@@ -608,9 +612,9 @@ function View:api_winid(opts)
608612
end
609613
end
610614

611-
--- Restores the state of a NvimTree window if it was initialized before.
612-
function View:restore_tab_state()
613-
self:set_cursor(globals.CURSORS[vim.api.nvim_get_current_tabpage()])
615+
---restore any state from last close
616+
function View:restore_state()
617+
self:set_cursor(self.cursors_by_tabid[vim.api.nvim_get_current_tabpage()])
614618
end
615619

616620
--- winid containing the buffer

lua/nvim-tree/lib.lua

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,8 @@ function M.open(opts)
135135
open_view_and_draw()
136136
end
137137

138-
-- TODO multi-instance is this actually necessary?
139138
if explorer then
140-
explorer.view:restore_tab_state()
139+
explorer.view:restore_state()
141140
end
142141
end
143142

0 commit comments

Comments
 (0)