Skip to content

Commit

Permalink
fix buffer management when tab creation with :tab sbuffer command
Browse files Browse the repository at this point in the history
  • Loading branch information
backdround committed Mar 12, 2023
1 parent b05f332 commit 467e254
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 7 deletions.
2 changes: 1 addition & 1 deletion lua/tabscope/buffer-manager.lua
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ local function new()

m.ignore_events = false

u.set_autocmd("BufEnter", function()
u.set_improved_bufenter_autocmd(function()
if not m.ignore_events then
m._try_to_track_current_buffer()
end
Expand Down
4 changes: 3 additions & 1 deletion lua/tabscope/tab-manager.lua
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ local function new(buffer_manager)
return
end

require("utilities").notify("changed")

local previous_buffers = m.buffer_manager.tab_get_buffers(previous_tab)
local current_buffers = m.buffer_manager.tab_get_buffers(0)

Expand All @@ -28,7 +30,7 @@ local function new(buffer_manager)
m.buffer_manager.ignore_events = false
end

u.set_autocmd("BufEnter", m.try_to_switch_tab)
u.set_improved_bufenter_autocmd(m.try_to_switch_tab)
u.set_autocmd("TabLeave", function()
m.previous_tab = vim.api.nvim_get_current_tabpage()
end)
Expand Down
42 changes: 37 additions & 5 deletions lua/tabscope/utils.lua
Original file line number Diff line number Diff line change
@@ -1,15 +1,47 @@
local M = {}

-- Creates auto command
M.set_autocmd = function(event, callback)
if not M._group then
M._group = vim.api.nvim_create_augroup("TabScopeNvim", {})
M._get_augroup = function()
if not M._augroup then
M._augroup = vim.api.nvim_create_augroup("TabScopeNvim", {})
end
return M._augroup
end

-- Creates auto command
M.set_autocmd = function(event, callback)
vim.api.nvim_create_autocmd(event, {
group = M._group,
group = M._get_augroup(),
callback = callback,
})
end

-- Creates auto command that triggered like bufEnter, but it triggers
-- if buffer changes to the same buffer (like :sbuffer / :tab sbuffer)
M.set_improved_bufenter_autocmd = function(callback)
local triggered = false

vim.api.nvim_create_autocmd("BufEnter", {
group = M._get_augroup(),
callback = function()
triggered = true
callback()
end,
})

vim.api.nvim_create_autocmd("WinEnter", {
group = M._get_augroup(),
callback = function()
triggered = false
vim.schedule(function()
if triggered then
return
end
triggered = true
callback()
end)
end,
})

end

return M

0 comments on commit 467e254

Please sign in to comment.