feature/workspaces: don't autosave/load + refactor session load/save commands
This commit is contained in:
parent
38c3ef744d
commit
e967c573d4
3 changed files with 24 additions and 12 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue