aboutsummaryrefslogtreecommitdiff
path: root/core/ui.lua
diff options
context:
space:
mode:
authormitchell <70453897+orbitalquark@users.noreply.github.com>2020-09-19 14:53:20 -0400
committermitchell <70453897+orbitalquark@users.noreply.github.com>2020-09-19 14:53:20 -0400
commit14e524cf217250388d374433cf6f3241f66e4e01 (patch)
treebaa0c6f3c45cbd1946403a9762cadcffdb530ef7 /core/ui.lua
parent28a73bcf0fe6fa9cd97e50734fb243c625284a89 (diff)
downloadtextadept-14e524cf217250388d374433cf6f3241f66e4e01.tar.gz
textadept-14e524cf217250388d374433cf6f3241f66e4e01.zip
Added `events.FILE_{BEFORE,AFTER}_RELOAD` and save/restore bookmarks.
Also moved buffer state save/restore into ui module.
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()