aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2018-02-16 16:48:36 -0500
committermitchell <70453897+667e-11@users.noreply.github.com>2018-02-16 16:48:36 -0500
commitfc9b59c3b32b8782b5274767ec4fd4d98380d806 (patch)
tree26df7d595e6455eb0d6c491bcb7d7c6d36c56b85 /modules
parent10ec9652736946c6d8a3ebb930529753437f82c9 (diff)
downloadtextadept-fc9b59c3b32b8782b5274767ec4fd4d98380d806.tar.gz
textadept-fc9b59c3b32b8782b5274767ec4fd4d98380d806.zip
Save to the loaded session on quit and removed `default_session` option.
Diffstat (limited to 'modules')
-rw-r--r--modules/textadept/session.lua20
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.