aboutsummaryrefslogtreecommitdiff
path: root/core/ui.lua
diff options
context:
space:
mode:
Diffstat (limited to 'core/ui.lua')
-rw-r--r--core/ui.lua12
1 files changed, 8 insertions, 4 deletions
diff --git a/core/ui.lua b/core/ui.lua
index 66828bc2..ef6e6ac9 100644
--- a/core/ui.lua
+++ b/core/ui.lua
@@ -347,7 +347,7 @@ events_connect(events.UPDATE_UI, function(updated)
end)
-- Save buffer properties.
-events_connect(events.BUFFER_BEFORE_SWITCH, function()
+local function save_buffer_state()
-- Save view state.
buffer._anchor, buffer._current_pos = buffer.anchor, buffer.current_pos
local n = buffer.main_selection
@@ -361,10 +361,12 @@ events_connect(events.BUFFER_BEFORE_SWITCH, function()
folds[#folds + 1], i = i, view:contracted_fold_next(i + 1)
end
buffer._folds = folds
-end)
+end
+events_connect(events.BUFFER_BEFORE_SWITCH, save_buffer_state)
+events_connect(events.FILE_BEFORE_RELOAD, save_buffer_state)
-- Restore buffer properties.
-events_connect(events.BUFFER_AFTER_SWITCH, function()
+local function restore_buffer_state()
if not buffer._folds then return end
-- Restore fold state.
for i = 1, #buffer._folds do view:toggle_fold(buffer._folds[i]) end
@@ -376,7 +378,9 @@ events_connect(events.BUFFER_AFTER_SWITCH, function()
local _top_line, top_line = buffer._top_line, view.first_visible_line
view:line_scroll(0, view:visible_from_doc_line(_top_line) - top_line)
view.x_offset = buffer._x_offset or 0
-end)
+end
+events_connect(events.BUFFER_AFTER_SWITCH, restore_buffer_state)
+events_connect(events.FILE_AFTER_RELOAD, restore_buffer_state)
-- Updates titlebar and statusbar.
local function update_bars()