feature/workspaces: don't autosave/load + refactor session load/save commands

This commit is contained in:
Henrik Lissner 2017-02-22 04:28:20 -05:00
parent 38c3ef744d
commit e967c573d4
3 changed files with 24 additions and 12 deletions

View file

@ -1,14 +1,18 @@
;;; feature/workspaces/autoload/evil.el ;;; feature/workspaces/autoload/evil.el
;;;###autoload (autoload '+workspace:save-session "feature/workspaces/autoload/evil" nil t) ;;;###autoload (autoload '+workspace:save-session "feature/workspaces/autoload/evil" nil t)
(evil-define-command +workspace:save-session (&optional name) (evil-define-command +workspace:save-session (&optional bang name)
"Ex wrapper around `+workspace/save-session'." "Ex wrapper around `+workspace/save-session'. If BANG, then autosave
(interactive "<a>") (+workspace/save-session name)) (pointless if autosaving/loading is off). If NAME is nil, default to 'last'."
(interactive "<!><a>")
(+workspace/save-session (if bang persp-auto-save-fname name)))
;;;###autoload (autoload '+workspace:load-session "feature/workspaces/autoload/evil" nil t) ;;;###autoload (autoload '+workspace:load-session "feature/workspaces/autoload/evil" nil t)
(evil-define-command +workspace:load-session (&optional name) (evil-define-command +workspace:load-session (&optional bang name)
"Ex wrapper around `+workspace/load-session'." "Ex wrapper around `+workspace/load-session'. If BANG, then load last autosave
(interactive "<a>") (+workspace/load-session name)) (pointless if autosaving/loading is off). If NAME is nil, defaults to 'last'."
(interactive "<!><a>")
(+workspace/load-session (if bang persp-auto-save-fname name)))
;;;###autoload (autoload '+workspace:save "feature/workspaces/autoload/evil" nil t) ;;;###autoload (autoload '+workspace:save "feature/workspaces/autoload/evil" nil t)
(evil-define-command +workspace:save (&optional name) (evil-define-command +workspace:save (&optional name)

View file

@ -156,7 +156,7 @@ current workspace (by name) from session files."
(+workspace/display))) (+workspace/display)))
;;;###autoload ;;;###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 "Load a session and switch to it. If called with C-u, try to load the last
session." session."
(interactive (interactive
@ -164,9 +164,9 @@ session."
(unless current-prefix-arg (unless current-prefix-arg
(completing-read (completing-read
"Session to load: " "Session to load: "
(directory-files persp-save-dir nil "^[^_]") (directory-files persp-save-dir nil "^[^_.]")
nil t)))) nil t))))
(+workspace-load-session name) (+workspace-load-session (or name "last"))
(+workspace/display)) (+workspace/display))
;;;###autoload ;;;###autoload
@ -191,9 +191,9 @@ the session as."
(when current-prefix-arg (when current-prefix-arg
(completing-read (completing-read
"Save session as: " "Save session as: "
(directory-files persp-save-dir nil "^[^_]"))))) (directory-files persp-save-dir nil "^[^_.]")))))
(condition-case ex (condition-case ex
(let ((name (or name (+workspace-current-name)))) (let ((name (or name "last")))
(if (+workspace-save-session name) (if (+workspace-save-session name)
(+workspace-message (format "Saved session as %s" name) 'success) (+workspace-message (format "Saved session as %s" name) 'success)
(error "Couldn't save session as %s" name))) (error "Couldn't save session as %s" name)))

View file

@ -5,6 +5,10 @@
;; abandoned it because of its instability and impact on performance. ;; abandoned it because of its instability and impact on performance.
;; `persp-mode' has proven faster and more reliable (and it's still maintained). ;; `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. ;; Note: persp-mode requires `workgroups' for file persistence in Emacs 24.4.
(defvar +workspaces-load-session-hook nil (defvar +workspaces-load-session-hook nil
@ -18,8 +22,12 @@
persp-auto-save-fname "autosave" persp-auto-save-fname "autosave"
persp-save-dir (concat doom-cache-dir "workspaces/") persp-save-dir (concat doom-cache-dir "workspaces/")
persp-set-last-persp-for-new-frames nil 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-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) (add-hook 'after-init-hook 'persp-mode)