Skip to content

Commit 0d975b4

Browse files
committed
refactor(#2826): add View.tab_line for debugging
1 parent c7779d9 commit 0d975b4

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

lua/nvim-tree/view.lua

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,102 @@ local BUFNR_PER_TAB = {}
66
local CURSORS = {}
77
local TABPAGES = {}
88

9+
--- Debugging only.
10+
--- Tabs show TABPAGES winnr and BUFNR_PER_TAB bufnr for the tab.
11+
--- Orphans for inexistent tab_ids are shown at the right.
12+
--- Enable with:
13+
--- vim.opt.tabline = "%!v:lua.require('nvim-tree.view').tab_line()"
14+
--- vim.opt.showtabline = 2
15+
function M.tab_line()
16+
local tab_ids = vim.api.nvim_list_tabpages()
17+
local cur_tab_id = vim.api.nvim_get_current_tabpage()
18+
19+
local bufnr_per_tab = vim.deepcopy(BUFNR_PER_TAB)
20+
local tabpages = vim.deepcopy(TABPAGES)
21+
22+
local tl = "%#TabLine#"
23+
24+
for i, tab_id in ipairs(tab_ids) do
25+
-- click to select
26+
tl = tl .. "%" .. i .. "T"
27+
28+
-- style
29+
if tab_id == cur_tab_id then
30+
tl = tl .. "%#StatusLine#|"
31+
else
32+
tl = tl .. "|%#TabLine#"
33+
end
34+
35+
-- tab_id itself
36+
tl = tl .. " t" .. tab_id
37+
38+
-- winnr, if present
39+
local tp = TABPAGES[tab_id]
40+
if tp then
41+
tl = tl .. " w" .. tp.winnr
42+
else
43+
tl = tl .. " "
44+
end
45+
46+
-- bufnr, if present
47+
local bpt = BUFNR_PER_TAB[tab_id]
48+
if bpt then
49+
tl = tl .. " b" .. bpt
50+
else
51+
tl = tl .. " "
52+
end
53+
54+
tl = tl .. " "
55+
56+
-- remove actively mapped
57+
bufnr_per_tab[tab_id] = nil
58+
tabpages[tab_id] = nil
59+
end
60+
61+
-- close last and reset
62+
tl = tl .. "|%#CursorLine#%T"
63+
64+
-- collect orphans
65+
local orphans = {}
66+
for tab_id, bufnr in pairs(bufnr_per_tab) do
67+
orphans[tab_id] = orphans[tab_id] or {}
68+
orphans[tab_id].bufnr = bufnr
69+
end
70+
for tab_id, tp in pairs(tabpages) do
71+
orphans[tab_id] = orphans[tab_id] or {}
72+
orphans[tab_id].winnr = tp.winnr
73+
end
74+
75+
-- right-align
76+
tl = tl .. "%=%#TabLine#"
77+
78+
-- print orphans
79+
for tab_id, orphan in pairs(orphans) do
80+
-- inexistent tab
81+
tl = tl .. "%#error#| t" .. tab_id
82+
83+
-- maybe winnr
84+
if orphan.winnr then
85+
tl = tl .. " w" .. orphan.winnr
86+
else
87+
tl = tl .. " "
88+
end
89+
90+
-- maybe bufnr
91+
if orphan.bufnr then
92+
tl = tl .. " b" .. orphan.bufnr
93+
else
94+
tl = tl .. " "
95+
end
96+
tl = tl .. " "
97+
end
98+
99+
-- close button
100+
tl = tl .. "|%#TabLine#%999X X |"
101+
102+
return tl
103+
end
104+
9105
-- The initial state of a tab
10106
local tabinitial = {
11107
-- The position of the cursor { line, column }

0 commit comments

Comments
 (0)