aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/ui.lua40
1 files changed, 27 insertions, 13 deletions
diff --git a/core/ui.lua b/core/ui.lua
index dec028bd..de8bb10b 100644
--- a/core/ui.lua
+++ b/core/ui.lua
@@ -343,13 +343,6 @@ events_connect(events.BUFFER_BEFORE_SWITCH, function()
-- Save view state.
buffer._anchor, buffer._current_pos = buffer.anchor, buffer.current_pos
buffer._top_line = buffer:doc_line_from_visible(buffer.first_visible_line)
- buffer._view_eol, buffer._view_ws = buffer.view_eol, buffer.view_ws
- buffer._wrap_mode = buffer.wrap_mode
- buffer._margin_type_n, buffer._margin_width_n = {}, {}
- for i = 0, 4 do
- buffer._margin_type_n[i] = buffer.margin_type_n[i]
- buffer._margin_width_n[i] = buffer.margin_width_n[i]
- end
-- Save fold state.
buffer._folds = {}
local folds, i = buffer._folds, buffer:contracted_fold_next(0)
@@ -368,12 +361,6 @@ events_connect(events.BUFFER_AFTER_SWITCH, function()
buffer:set_sel(buffer._anchor, buffer._current_pos)
buffer:line_scroll(0, buffer:visible_from_doc_line(buffer._top_line) -
buffer.first_visible_line)
- buffer.view_eol, buffer.view_ws = buffer._view_eol, buffer._view_ws
- buffer.wrap_mode = buffer._wrap_mode
- for i = 0, 4 do
- buffer.margin_type_n[i] = buffer._margin_type_n[i]
- buffer.margin_width_n[i] = buffer._margin_width_n[i]
- end
end)
-- Updates titlebar and statusbar.
@@ -385,6 +372,33 @@ end
events_connect(events.BUFFER_AFTER_SWITCH, update_bars)
events_connect(events.VIEW_AFTER_SWITCH, update_bars)
+-- Save view state.
+local function save_view_state()
+ local buffer = buffer
+ buffer._view_eol, buffer._view_ws = buffer.view_eol, buffer.view_ws
+ buffer._wrap_mode = buffer.wrap_mode
+ buffer._margin_type_n, buffer._margin_width_n = {}, {}
+ for i = 0, 4 do
+ buffer._margin_type_n[i] = buffer.margin_type_n[i]
+ buffer._margin_width_n[i] = buffer.margin_width_n[i]
+ end
+end
+events_connect(events.BUFFER_BEFORE_SWITCH, save_view_state)
+events_connect(events.VIEW_BEFORE_SWITCH, save_view_state)
+
+-- Restore view state.
+local function restore_view_state()
+ local buffer = buffer
+ buffer.view_eol, buffer.view_ws = buffer._view_eol, buffer._view_ws
+ buffer.wrap_mode = buffer._wrap_mode
+ for i = 0, 4 do
+ buffer.margin_type_n[i] = buffer._margin_type_n[i]
+ buffer.margin_width_n[i] = buffer._margin_width_n[i]
+ end
+end
+events_connect(events.BUFFER_AFTER_SWITCH, restore_view_state)
+events_connect(events.VIEW_AFTER_SWITCH, restore_view_state)
+
events_connect(events.RESET_AFTER,
function() ui.statusbar_text = 'Lua reset' end)