diff options
-rw-r--r-- | doc/manual.md | 5 | ||||
-rw-r--r-- | modules/textadept/session.lua | 20 |
2 files changed, 11 insertions, 14 deletions
diff --git a/doc/manual.md b/doc/manual.md index a7d76f9d..1ed5c8da 100644 --- a/doc/manual.md +++ b/doc/manual.md @@ -2244,6 +2244,8 @@ set\_theme |Renamed |[buffer.set\_theme()][] match\_brace |Replaced|N/A _(menu function)_ N/A |Added |[paste()][] N/A |Added |[paste\_reindents][] +**textadept.session** | | +default\_session |Removed | [brace\_match]: api.html#buffer.brace_match [add\_fold\_point()]: api.html#lexer.add_fold_point @@ -2333,7 +2335,7 @@ syntax\_error\_patterns |Removed | **textadept.snippets** | | N/A |Added |[\_paths][] **textadept.session** | | -DEFAULT\_SESSION |Renamed |[default\_session][] +DEFAULT\_SESSION |Renamed |default\_session SAVE\_ON\_QUIT |Renamed |[save\_on\_quit][] MAX\_RECENT\_FILES |Renamed |[max\_recent\_files][] @@ -2366,7 +2368,6 @@ MAX\_RECENT\_FILES |Renamed |[max\_recent\_files][] [build]: api.html#textadept.run.build [error\_patterns]: api.html#textadept.run.error_patterns [\_paths]: api.html#textadept.snippets._paths -[default\_session]: api.html#textadept.session.default_session [save\_on\_quit]: api.html#textadept.session.save_on_quit [max\_recent\_files]: api.html#textadept.session.max_recent_files 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. |