aboutsummaryrefslogtreecommitdiffhomepage
path: root/core/file_io.lua
diff options
context:
space:
mode:
authorGravatar mitchell <70453897+orbitalquark@users.noreply.github.com>2020-09-19 14:53:20 -0400
committerGravatar mitchell <70453897+orbitalquark@users.noreply.github.com>2020-09-19 14:53:20 -0400
commit14e524cf217250388d374433cf6f3241f66e4e01 (patch)
treebaa0c6f3c45cbd1946403a9762cadcffdb530ef7 /core/file_io.lua
parent28a73bcf0fe6fa9cd97e50734fb243c625284a89 (diff)
Added `events.FILE_{BEFORE,AFTER}_RELOAD` and save/restore bookmarks.
Also moved buffer state save/restore into ui module.
Diffstat (limited to 'core/file_io.lua')
-rw-r--r--core/file_io.lua15
1 files changed, 10 insertions, 5 deletions
diff --git a/core/file_io.lua b/core/file_io.lua
index d45372ec..71dd5af3 100644
--- a/core/file_io.lua
+++ b/core/file_io.lua
@@ -9,6 +9,12 @@
-- Arguments:
--
-- * _`filename`_: The opened file's filename.
+-- @field _G.events.FILE_BEFORE_RELOAD (string)
+-- Emitted before reloading the current file.
+-- Emitted by [`buffer:reload()`]().
+-- @field _G.events.FILE_AFTER_RELOAD (string)
+-- Emitted after reloading the current file.
+-- Emitted by [`buffer:reload()`]().
-- @field _G.events.FILE_BEFORE_SAVE (string)
-- Emitted right before saving a file to disk.
-- Emitted by [`buffer:save()`]().
@@ -38,6 +44,8 @@ module('io')]]
-- Events.
local events, events_connect = events, events.connect
events.FILE_OPENED = 'file_opened'
+events.FILE_BEFORE_RELOAD = 'file_before_reload'
+events.FILE_AFTER_RELOAD = 'file_after_reload'
events.FILE_BEFORE_SAVE = 'file_before_save'
events.FILE_AFTER_SAVE = 'file_after_save'
events.FILE_CHANGED = 'file_changed'
@@ -153,7 +161,7 @@ end
local function reload(buffer)
if not buffer then buffer = _G.buffer end
if not buffer.filename then return end
- local pos, first_visible_line = buffer.current_pos, view.first_visible_line
+ if buffer == _G.buffer then events.emit(events.FILE_BEFORE_RELOAD) end
local f = assert(io.open(buffer.filename, 'rb'))
local text = f:read('a')
f:close()
@@ -161,10 +169,7 @@ local function reload(buffer)
buffer:set_text(text)
buffer:set_save_point()
buffer.mod_time = lfs.attributes(buffer.filename, 'modification')
- if buffer == _G.buffer then
- buffer:goto_pos(pos)
- view.first_visible_line = first_visible_line
- end
+ if buffer == _G.buffer then events.emit(events.FILE_AFTER_RELOAD) end
end
-- LuaDoc is in core/.buffer.luadoc.