fix: handle new tabs properly (#313)

This commit is contained in:
Kiyan
2021-04-18 11:11:56 +02:00
committed by GitHub
parent 79a8188ecf
commit 783870cda9
4 changed files with 24 additions and 24 deletions

View File

@@ -8,7 +8,7 @@ end
M.View = {
bufnr = nil,
winnr = nil,
tabpages = {},
width = 30,
side = 'left',
winopts = {
@@ -136,7 +136,7 @@ function M._prevent_buffer_override()
vim.schedule(function()
local curwin = a.nvim_get_current_win()
local curbuf = a.nvim_win_get_buf(curwin)
if curwin ~= M.View.winnr or curbuf == M.View.bufnr then return end
if curwin ~= M.get_winnr() or curbuf == M.View.bufnr then return end
vim.cmd("buffer "..M.View.bufnr)
@@ -150,22 +150,22 @@ function M._prevent_buffer_override()
end
function M.win_open()
return M.View.winnr ~= nil and a.nvim_win_is_valid(M.View.winnr)
return M.get_winnr() ~= nil and a.nvim_win_is_valid(M.get_winnr())
end
function M.set_cursor(opts)
if M.win_open() then
pcall(a.nvim_win_set_cursor, M.View.winnr, opts)
pcall(a.nvim_win_set_cursor, M.get_winnr(), opts)
end
end
function M.focus(winnr, open_if_closed)
local wnr = winnr or M.View.winnr
local wnr = winnr or M.get_winnr()
if a.nvim_win_get_tabpage(wnr) ~= a.nvim_win_get_tabpage(0) then
M.close()
M.open()
wnr = M.View.winnr
wnr = M.get_winnr()
elseif open_if_closed and not M.win_open() then
M.open()
end
@@ -174,11 +174,11 @@ function M.focus(winnr, open_if_closed)
end
function M.resize()
if not a.nvim_win_is_valid(M.View.winnr) then
if not a.nvim_win_is_valid(M.get_winnr()) then
return
end
a.nvim_win_set_width(M.View.winnr, M.View.width)
a.nvim_win_set_width(M.get_winnr(), M.View.width)
end
local move_tbl = {
@@ -197,9 +197,10 @@ function M.open()
local move_to = move_tbl[M.View.side]
a.nvim_command("wincmd "..move_to)
a.nvim_command("vertical resize "..M.View.width)
M.View.winnr = a.nvim_get_current_win()
local winnr = a.nvim_get_current_win()
M.View.tabpages[a.nvim_get_current_tabpage()] = winnr
for k, v in pairs(M.View.winopts) do
a.nvim_win_set_option(M.View.winnr, k, v)
a.nvim_win_set_option(winnr, k, v)
end
vim.cmd("buffer "..M.View.bufnr)
@@ -217,7 +218,11 @@ function M.close()
end
return
end
a.nvim_win_hide(M.View.winnr)
a.nvim_win_hide(M.get_winnr())
end
function M.get_winnr()
return M.View.tabpages[a.nvim_get_current_tabpage()]
end
return M