diff options
-rw-r--r-- | core/ui.lua | 1 | ||||
-rw-r--r-- | test/test.lua | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/core/ui.lua b/core/ui.lua index 73616719..7c493b15 100644 --- a/core/ui.lua +++ b/core/ui.lua @@ -444,6 +444,7 @@ events.connect( events.BUFFER_BEFORE_SWITCH, function() view._prev_buffer = buffer end) events.connect(events.BUFFER_DELETED, function() if _BUFFERS[view._prev_buffer] and buffer ~= view._prev_buffer then + restore_view_state() -- events.BUFFER_AFTER_SWITCH is not emitted in time view:goto_buffer(view._prev_buffer) end end) diff --git a/test/test.lua b/test/test.lua index e3fb296b..91365563 100644 --- a/test/test.lua +++ b/test/test.lua @@ -3670,6 +3670,24 @@ function test_ui_maximized() end expected_failure(test_ui_maximized) +function test_ui_restore_view_state() + buffer.new() -- 1 + view.view_ws = view.WS_VISIBLEALWAYS + buffer.new() -- 2 + assert(view.view_ws ~= view.WS_VISIBLEALWAYS, 'view whitespace settings not reset') + view:goto_buffer(-1) -- go back to 1 + assert_equal(view.view_ws, view.WS_VISIBLEALWAYS) + view.view_ws = view.WS_INVISIBLE -- reset + buffer.new() -- 3 + view.view_ws = view.WS_VISIBLEALWAYS + buffer:close() -- switches back to 1 (after briefly switching to 2) + assert_equal(view.view_ws, view.WS_INVISIBLE) + view:goto_buffer(1) -- go back to 2 + assert_equal(view.view_ws, view.WS_INVISIBLE) + buffer:close() + buffer:close() +end + function test_reset() local _persist _G.foo = 'bar' |