diff options
Diffstat (limited to 'modules/textadept')
-rw-r--r-- | modules/textadept/session.lua | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/modules/textadept/session.lua b/modules/textadept/session.lua index eed2c399..c4bc4f3d 100644 --- a/modules/textadept/session.lua +++ b/modules/textadept/session.lua @@ -5,13 +5,8 @@ local M = {} --[[ This comment is for LuaDoc. --- -- Session support for Textadept. --- @field default_session (string) --- The path to the default session file, *`_USERHOME`/session*, or --- *`_USERHOME`/session_term* if [`CURSES`]() is `true`. -- @field save_on_quit (bool) -- Save the session when quitting. --- The session file saved is always `textadept.session.default_session`, even --- if a different session was loaded with [`textadept.session.load()`](). -- The default value is `true` unless the user passed the command line switch -- `-n` or `--nosession` to Textadept. -- @field max_recent_files (number) @@ -20,10 +15,11 @@ local M = {} -- The default value is `10`. module('textadept.session')]] -M.default_session = _USERHOME..(not CURSES and '/session' or '/session_term') M.save_on_quit = true M.max_recent_files = 10 +local session_file = _USERHOME..(not CURSES and '/session' or '/session_term') + --- -- Loads session file *filename* or the user-selected session, returning `true` -- if a session file was opened and read. @@ -33,10 +29,9 @@ M.max_recent_files = 10 -- the user is prompted for one. -- @return `true` if the session file was opened and read; `false` otherwise. -- @usage textadept.session.load(filename) --- @see default_session -- @name load function M.load(filename) - local dir, name = M.default_session:match('^(.-[/\\]?)([^/\\]+)$') + local dir, name = session_file:match('^(.-[/\\]?)([^/\\]+)$') filename = filename or ui.dialogs.fileselect{ title = _L['Load Session'], with_directory = dir, with_file = name } @@ -106,11 +101,12 @@ function M.load(filename) icon = 'gtk-dialog-warning' } end + session_file = filename return true end -- Load session when no args are present. local function load_default_session() - if M.save_on_quit then M.load(M.default_session) end + if M.save_on_quit then M.load(session_file) end end events.connect(events.ARG_NONE, load_default_session) @@ -121,10 +117,9 @@ events.connect(events.ARG_NONE, load_default_session) -- @param filename Optional absolute path to the session file to save. If `nil`, -- the user is prompted for one. -- @usage textadept.session.save(filename) --- @see default_session -- @name save function M.save(filename) - local dir, name = M.default_session:match('^(.-[/\\]?)([^/\\]+)$') + local dir, name = session_file:match('^(.-[/\\]?)([^/\\]+)$') filename = filename or ui.dialogs.filesave{ title = _L['Save Session'], with_directory = dir, with_file = name:iconv('UTF-8', _CHARSET) @@ -196,10 +191,11 @@ function M.save(filename) -- Write the session. local f = io.open(filename, 'wb') if f then f:write(table.concat(session, '\n')):close() end + session_file = filename end -- Saves session on quit. events.connect(events.QUIT, function() - if M.save_on_quit then M.save(M.default_session) end + if M.save_on_quit then M.save(session_file) end end, 1) -- Does not save session on quit. |