feature/workspaces: save to autosave if name is omitted
This commit is contained in:
parent
a127952f70
commit
6a026fade2
2 changed files with 20 additions and 14 deletions
|
@ -91,8 +91,11 @@ Returns t on success, nil otherwise."
|
|||
(defun +workspace-save-session (&optional name)
|
||||
"Save a whole session as NAME. If NAME is nil, use `persp-auto-save-fname'.
|
||||
Return t on success, nil otherwise."
|
||||
(let ((fname (or name persp-auto-save-fname)))
|
||||
(and (persp-save-state-to-file fname) t)))
|
||||
(when (or (not name)
|
||||
(equal name persp-auto-save-fname))
|
||||
(setq name persp-auto-save-fname
|
||||
persp-auto-save-opt 0))
|
||||
(and (persp-save-state-to-file name) t))
|
||||
|
||||
;;;###autoload
|
||||
(defun +workspace-new (name)
|
||||
|
@ -169,9 +172,11 @@ session."
|
|||
"Session to load: "
|
||||
(directory-files persp-save-dir nil "^[^_.]")
|
||||
nil t))))
|
||||
(let ((name (or name "last")))
|
||||
(+workspace-load-session name)
|
||||
(+workspace-message (format "'%s' workspace loaded" name) 'success)))
|
||||
(condition-case ex
|
||||
(let ((name (or name persp-auto-save-fname)))
|
||||
(+workspace-load-session name)
|
||||
(+workspace-message (format "'%s' workspace loaded" name) 'success))
|
||||
'(error (+workspace-error (cadr ex) t))))
|
||||
|
||||
;;;###autoload
|
||||
(defun +workspace/save (name)
|
||||
|
@ -197,10 +202,10 @@ the session as."
|
|||
"Save session as: "
|
||||
(directory-files persp-save-dir nil "^[^_.]")))))
|
||||
(condition-case ex
|
||||
(let ((name (or name "last")))
|
||||
(let ((name (or name persp-auto-save-fname)))
|
||||
(if (+workspace-save-session name)
|
||||
(+workspace-message (format "Saved session as %s" name) 'success)
|
||||
(error "Couldn't save session as %s" name)))
|
||||
(+workspace-message (format "Saved session as '%s'" name) 'success)
|
||||
(error "Couldn't save session as '%s'" name)))
|
||||
'(error (+workspace-error (cadr ex) t))))
|
||||
|
||||
;;;###autoload
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
;;; feature/workspaces/config.el
|
||||
|
||||
;; `persp-mode' gives me workspaces, a workspace-restricted `buffer-list', and
|
||||
;; file-based session persistence. I had used workgroups2 for this, but
|
||||
;; file-based session persistence. I had used workgroups2 before this, but
|
||||
;; 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'.
|
||||
;; By default, sessions are auto-saved, but not auto-loaded. Use :ss or
|
||||
;; `+workspace/save-session' to save, and :sl or `+workspace/load-session' to
|
||||
;; load the last autosaved session. You can give sessions a custom name so they
|
||||
;; can be loaded much later.
|
||||
;;
|
||||
;; Note: persp-mode requires `workgroups' for file persistence in Emacs 24.4.
|
||||
|
||||
|
@ -28,8 +29,8 @@
|
|||
persp-init-new-frame-behaviour-override 'auto-temp
|
||||
;; Don't auto-load on startup
|
||||
persp-auto-resume-time -1
|
||||
;; Don't auto-save
|
||||
persp-auto-save-opt 0)
|
||||
;; auto-save on kill
|
||||
persp-auto-save-opt 1)
|
||||
|
||||
(add-hook 'after-init-hook 'persp-mode)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue