Skip to content

Commit 33d6e3a

Browse files
authored
Merge pull request #36 from jamescherti/develop
Allow excluding current session when switching sessions
2 parents 4ca5cf0 + 8eae80e commit 33d6e3a

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

easysession.el

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@ activated when `easysession-save-mode' is enabled."
177177
`(easysession-mode-line-misc-info
178178
easysession-mode-line-misc-info-format))))
179179

180+
(defcustom easysession-switch-to-exclude-current nil
181+
"If non-nil, don't suggest current session when switching sessions."
182+
:type 'boolean
183+
:group 'easysession)
184+
180185
;; Lighter
181186
(defvar easysession-save-mode-lighter " EasySeSave"
182187
"Default lighter string for `easysession-save-mode'.")
@@ -558,18 +563,27 @@ OVERWRITE-ALIST is an alist similar to
558563
(cdr pair)))
559564
result))
560565

561-
(defun easysession--get-all-names ()
562-
"Return a list of all session names."
566+
(defun easysession--get-all-names (&optional exclude-current)
567+
"Return a list of all session names.
568+
If EXCLUDE-CURRENT is non-nil, exclude the current session name from the list."
563569
(if (file-directory-p easysession-directory)
564-
(remove "." (remove ".." (directory-files easysession-directory nil
565-
nil t)))
570+
(seq-filter (lambda (session-name)
571+
(not (or (string-equal session-name ".")
572+
(string-equal session-name "..")
573+
(and exclude-current
574+
(string-equal session-name
575+
(easysession-get-session-name))))))
576+
(directory-files easysession-directory nil nil t))
566577
'()))
567578

568-
(defun easysession--prompt-session-name (prompt &optional session-name)
579+
(defun easysession--prompt-session-name (prompt &optional session-name exclude-current)
569580
"Prompt for a session name with PROMPT.
570-
Use SESSION-NAME as the default value."
581+
Use SESSION-NAME as the default value.
582+
If EXCLUDE-CURRENT is non-nil, exclude the current session from
583+
completion candidates."
571584
(completing-read (concat "[easysession] " prompt)
572-
(easysession--get-all-names) nil nil nil nil session-name))
585+
(easysession--get-all-names exclude-current)
586+
nil nil nil nil session-name))
573587

574588
(defun easysession--get-base-buffer-info (buffer)
575589
"Get the name and path of the buffer BUFFER.
@@ -1157,7 +1171,9 @@ initialized."
11571171
(or session-name
11581172
(easysession--prompt-session-name
11591173
"Load and switch to session: "
1160-
(easysession-get-session-name))))
1174+
(unless easysession-switch-to-exclude-current
1175+
(easysession-get-session-name))
1176+
easysession-switch-to-exclude-current)))
11611177
(t (easysession-get-session-name))))
11621178
(session-file (easysession-get-session-file-path session-name))
11631179
(session-reloaded (string= session-name

0 commit comments

Comments
 (0)