From e967c573d4ae42129ad9840b56bf3332eb632fc6 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 22 Feb 2017 04:28:20 -0500 Subject: [PATCH] feature/workspaces: don't autosave/load + refactor session load/save commands --- modules/feature/workspaces/autoload/evil.el | 16 ++++++++++------ .../feature/workspaces/autoload/workspaces.el | 10 +++++----- modules/feature/workspaces/config.el | 10 +++++++++- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/modules/feature/workspaces/autoload/evil.el b/modules/feature/workspaces/autoload/evil.el index 651ec193a..2b387fd14 100644 --- a/modules/feature/workspaces/autoload/evil.el +++ b/modules/feature/workspaces/autoload/evil.el @@ -1,14 +1,18 @@ ;;; feature/workspaces/autoload/evil.el ;;;###autoload (autoload '+workspace:save-session "feature/workspaces/autoload/evil" nil t) -(evil-define-command +workspace:save-session (&optional name) - "Ex wrapper around `+workspace/save-session'." - (interactive "") (+workspace/save-session name)) +(evil-define-command +workspace:save-session (&optional bang name) + "Ex wrapper around `+workspace/save-session'. If BANG, then autosave +(pointless if autosaving/loading is off). If NAME is nil, default to 'last'." + (interactive "") + (+workspace/save-session (if bang persp-auto-save-fname name))) ;;;###autoload (autoload '+workspace:load-session "feature/workspaces/autoload/evil" nil t) -(evil-define-command +workspace:load-session (&optional name) - "Ex wrapper around `+workspace/load-session'." - (interactive "") (+workspace/load-session name)) +(evil-define-command +workspace:load-session (&optional bang name) + "Ex wrapper around `+workspace/load-session'. If BANG, then load last autosave +(pointless if autosaving/loading is off). If NAME is nil, defaults to 'last'." + (interactive "") + (+workspace/load-session (if bang persp-auto-save-fname name))) ;;;###autoload (autoload '+workspace:save "feature/workspaces/autoload/evil" nil t) (evil-define-command +workspace:save (&optional name) diff --git a/modules/feature/workspaces/autoload/workspaces.el b/modules/feature/workspaces/autoload/workspaces.el index 05f3a893a..73c0df68a 100644 --- a/modules/feature/workspaces/autoload/workspaces.el +++ b/modules/feature/workspaces/autoload/workspaces.el @@ -156,7 +156,7 @@ current workspace (by name) from session files." (+workspace/display))) ;;;###autoload -(defun +workspace/load-session (name) +(defun +workspace/load-session (&optional name) "Load a session and switch to it. If called with C-u, try to load the last session." (interactive @@ -164,9 +164,9 @@ session." (unless current-prefix-arg (completing-read "Session to load: " - (directory-files persp-save-dir nil "^[^_]") + (directory-files persp-save-dir nil "^[^_.]") nil t)))) - (+workspace-load-session name) + (+workspace-load-session (or name "last")) (+workspace/display)) ;;;###autoload @@ -191,9 +191,9 @@ the session as." (when current-prefix-arg (completing-read "Save session as: " - (directory-files persp-save-dir nil "^[^_]"))))) + (directory-files persp-save-dir nil "^[^_.]"))))) (condition-case ex - (let ((name (or name (+workspace-current-name)))) + (let ((name (or name "last"))) (if (+workspace-save-session name) (+workspace-message (format "Saved session as %s" name) 'success) (error "Couldn't save session as %s" name))) diff --git a/modules/feature/workspaces/config.el b/modules/feature/workspaces/config.el index e6abac8a5..7acf10dde 100644 --- a/modules/feature/workspaces/config.el +++ b/modules/feature/workspaces/config.el @@ -5,6 +5,10 @@ ;; abandoned it because of its instability and impact on performance. ;; `persp-mode' has proven faster and more reliable (and it's still maintained). ;; +;; I've disabled auto-load/save. I prefer that session persistence be manual. +;; You can save a session with :ss or `+workspace/save-session', and load the +;; last saved session with :sl or `+workspace/load-session'. +;; ;; Note: persp-mode requires `workgroups' for file persistence in Emacs 24.4. (defvar +workspaces-load-session-hook nil @@ -18,8 +22,12 @@ persp-auto-save-fname "autosave" persp-save-dir (concat doom-cache-dir "workspaces/") persp-set-last-persp-for-new-frames nil + persp-switch-to-added-buffer nil + + ;; Don't auto-load on startup persp-auto-resume-time -1 - persp-switch-to-added-buffer nil) + ;; Don't auto-save + persp-auto-save-opt 0) (add-hook 'after-init-hook 'persp-mode)