Skip to content

Commit

Permalink
fix: error with close_automatic_events = 'unsupported' (#175)
Browse files Browse the repository at this point in the history
  • Loading branch information
stevearc committed Oct 28, 2022
1 parent 9c179f5 commit 6b1e97e
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 3 deletions.
3 changes: 3 additions & 0 deletions lua/aerial/backends/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ end
---@return boolean
---@return string?
M.is_supported = function(bufnr, name)
if not vim.api.nvim_buf_is_valid(bufnr) then
return false, "Buffer is invalid"
end
local max_lines = config.disable_max_lines
if max_lines and max_lines > 0 and vim.api.nvim_buf_line_count(bufnr) > max_lines then
return false, "File exceeds disable_max_lines size"
Expand Down
4 changes: 4 additions & 0 deletions lua/aerial/render.lua
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ end

-- Update the aerial buffer from cached symbols
M.update_aerial_buffer = function(buf)
buf = buf or 0
if not vim.api.nvim_buf_is_valid(buf) then
return
end
local bufnr, aer_bufnr = util.get_buffers(buf)
if aer_bufnr == -1 or loading.is_loading(aer_bufnr) then
resize_all_wins(aer_bufnr)
Expand Down
67 changes: 65 additions & 2 deletions tests/attach_and_events_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ a.describe("config", function()
lazy_load = false,
attach_mode = "window",
})
vim.cmd("edit README.md")
vim.cmd.edit({ args = { "README.md" } })
aerial.toggle({ focus = false })
local aerial_win = util.get_aerial_win(0)
assert.is_not_nil(aerial_win)
-- Wait for symbols to populate
sleep(1)
assert.falsy(has_no_symbols(vim.api.nvim_win_get_buf(aerial_win)))
vim.cmd("edit LICENSE")
vim.cmd.edit({ args = { "LICENSE" } })
-- Wait for autocmd to run and attached buffer to switch
sleep(10)
local aerial_buf = vim.api.nvim_win_get_buf(aerial_win)
Expand All @@ -44,4 +44,67 @@ a.describe("config", function()
assert.falsy(loading.is_loading(aerial_buf))
assert.truthy(has_no_symbols(vim.api.nvim_win_get_buf(aerial_win)))
end)

a.it(
"close_automatic_events = 'unsupported' closes aerial when entering unsupported buffer",
function()
aerial.setup({
lazy_load = false,
attach_mode = "window",
close_automatic_events = { "unsupported" },
})
vim.cmd.edit({ args = { "README.md" } })
aerial.toggle({ focus = false })
local aerial_win = util.get_aerial_win(0)
assert.is_not_nil(aerial_win)
-- Wait for symbols to populate
sleep(1)
vim.cmd.edit({ args = { "LICENSE" } })
-- Wait for autocmd to run and attached buffer to switch
sleep(50)
assert.falsy(vim.api.nvim_win_is_valid(aerial_win))
end
)

a.it("close_automatic_events = 'unfocus' closes aerial when leaving window", function()
aerial.setup({
lazy_load = false,
attach_mode = "window",
close_automatic_events = { "unfocus" },
})
vim.cmd.edit({ args = { "README.md" } })
local main_win = vim.api.nvim_get_current_win()
aerial.toggle({ focus = true })
local aerial_win = vim.api.nvim_get_current_win()
assert.is_not.equals(main_win, aerial_win)
assert.truthy(vim.api.nvim_win_is_valid(aerial_win))
-- Wait for symbols to populate
sleep(1)
vim.api.nvim_set_current_win(main_win)
sleep(10)
assert.truthy(vim.api.nvim_win_is_valid(aerial_win))
vim.cmd.vsplit()
sleep(10)
assert.falsy(vim.api.nvim_win_is_valid(aerial_win))
end)

a.it(
"close_automatic_events = 'switch_buffer' closes aerial when buffer in window changes",
function()
aerial.setup({
lazy_load = false,
attach_mode = "window",
close_automatic_events = { "switch_buffer" },
})
vim.cmd.edit({ args = { "README.md" } })
aerial.toggle({ focus = false })
local aerial_win = util.get_aerial_win(0)
assert.truthy(vim.api.nvim_win_is_valid(aerial_win))
-- Wait for symbols to populate
sleep(1)
vim.cmd.edit({ args = { "doc/api.md" } })
sleep(10)
assert.falsy(vim.api.nvim_win_is_valid(aerial_win))
end
)
end)
2 changes: 1 addition & 1 deletion tests/test_util.lua
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ end

M.reset_editor = function()
require("aerial").setup({})
vim.cmd.tabonly()
vim.cmd.tabonly({ mods = { silent = true } })
for i, winid in ipairs(vim.api.nvim_tabpage_list_wins(0)) do
if i > 1 then
vim.api.nvim_win_close(winid, true)
Expand Down

0 comments on commit 6b1e97e

Please sign in to comment.