feature/workspaces: create/delete persps when making/deleting frames
This commit is contained in:
parent
d27d19ba51
commit
7ed243a398
1 changed files with 17 additions and 3 deletions
|
@ -23,7 +23,9 @@
|
||||||
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
|
persp-switch-to-added-buffer nil
|
||||||
|
;; Don't restore winconf on new frames
|
||||||
|
persp-init-frame-behaviour t
|
||||||
|
persp-init-new-frame-behaviour-override 'auto-temp
|
||||||
;; Don't auto-load on startup
|
;; Don't auto-load on startup
|
||||||
persp-auto-resume-time -1
|
persp-auto-resume-time -1
|
||||||
;; Don't auto-save
|
;; Don't auto-save
|
||||||
|
@ -33,6 +35,20 @@
|
||||||
|
|
||||||
(define-key persp-mode-map [remap delete-window] '+workspace/close-window-or-workspace)
|
(define-key persp-mode-map [remap delete-window] '+workspace/close-window-or-workspace)
|
||||||
|
|
||||||
|
;; Per-frame perspectives
|
||||||
|
(setq persp-init-new-frame-behaviour-override nil
|
||||||
|
persp-interactive-init-frame-behaviour-override
|
||||||
|
(lambda (frame &optional new-frame-p)
|
||||||
|
(select-frame frame)
|
||||||
|
(+workspace/new)
|
||||||
|
(set-frame-parameter frame 'assoc-persp (+workspace-current-name))))
|
||||||
|
;; Delete workspace associated with current frame IF it has no real buffers.
|
||||||
|
(defun +workspaces*delete-frame-and-persp (frame)
|
||||||
|
(when (and (string= (or (frame-parameter frame 'assoc-persp) "") (+workspace-current-name))
|
||||||
|
(not (delq (doom-fallback-buffer) (doom-real-buffers-list))))
|
||||||
|
(+workspace/delete persp-name)))
|
||||||
|
(add-hook 'delete-frame-functions '+workspaces*delete-frame-and-persp)
|
||||||
|
|
||||||
;; Auto-add buffers when opening them. Allows a perspective-specific buffer list.
|
;; Auto-add buffers when opening them. Allows a perspective-specific buffer list.
|
||||||
(defun +workspaces*auto-add-buffer (buffer &rest _)
|
(defun +workspaces*auto-add-buffer (buffer &rest _)
|
||||||
(when (and persp-mode
|
(when (and persp-mode
|
||||||
|
@ -51,8 +67,6 @@
|
||||||
(+workspace/new project-name))))
|
(+workspace/new project-name))))
|
||||||
(add-hook 'projectile-before-switch-project-hook 'doom|new-workspace-on-project-change)
|
(add-hook 'projectile-before-switch-project-hook 'doom|new-workspace-on-project-change)
|
||||||
|
|
||||||
;; TODO Test per-frame perspectives
|
|
||||||
|
|
||||||
;; Be quiet when saving
|
;; Be quiet when saving
|
||||||
(defun +workspace*silence (orig-fn &rest args) (quiet! (apply orig-fn args)))
|
(defun +workspace*silence (orig-fn &rest args) (quiet! (apply orig-fn args)))
|
||||||
(advice-add 'persp-save-state-to-file :around '+workspace*silence)
|
(advice-add 'persp-save-state-to-file :around '+workspace*silence)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue