From 14e524cf217250388d374433cf6f3241f66e4e01 Mon Sep 17 00:00:00 2001 From: mitchell <70453897+orbitalquark@users.noreply.github.com> Date: Sat, 19 Sep 2020 14:53:20 -0400 Subject: Added `events.FILE_{BEFORE,AFTER}_RELOAD` and save/restore bookmarks. Also moved buffer state save/restore into ui module. --- core/file_io.lua | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'core/file_io.lua') 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. -- cgit v1.2.3