Update modules/feature/workspaces
This commit is contained in:
parent
2f75a81716
commit
43d0247d61
3 changed files with 117 additions and 125 deletions
|
@ -12,18 +12,18 @@
|
|||
|
||||
|
||||
(@def-package persp-mode :demand t
|
||||
:init
|
||||
:config
|
||||
(setq persp-autokill-buffer-on-remove 'kill-weak
|
||||
persp-nil-name "main"
|
||||
persp-auto-save-fname "autosave"
|
||||
persp-save-dir (concat doom-cache-dir "workspaces/")
|
||||
persp-set-last-persp-for-new-frames nil
|
||||
persp-auto-resume-time (if (display-graphic-p) 0.01 -1)
|
||||
persp-auto-save-opt 0
|
||||
persp-auto-resume-time -1
|
||||
persp-switch-to-added-buffer nil)
|
||||
|
||||
:config
|
||||
(@add-hook emacs-startup (persp-mode 1))
|
||||
(add-hook 'after-init-hook 'persp-mode)
|
||||
|
||||
(define-key persp-mode-map [remap delete-window] '+workspace/close-window-or-workspace)
|
||||
|
||||
;; Ensure unreal/popup buffers aren't saved
|
||||
(push (lambda (buf) (doom-popup-p (get-buffer-window buf)))
|
||||
|
@ -33,8 +33,11 @@
|
|||
|
||||
;; Auto-add buffers when opening them. Allows a perspective-specific buffer list.
|
||||
(defun +workspaces*auto-add-buffer (buffer &rest _)
|
||||
(when (and persp-mode (not persp-temporarily-display-buffer))
|
||||
(persp-add-buffer buffer (get-current-persp) nil)))
|
||||
(when (and persp-mode
|
||||
(not persp-temporarily-display-buffer)
|
||||
(doom-real-buffer-p buffer))
|
||||
(persp-add-buffer buffer (get-current-persp) nil)
|
||||
(redisplay)))
|
||||
(advice-add 'switch-to-buffer :after '+workspaces*auto-add-buffer)
|
||||
(advice-add 'display-buffer :after '+workspaces*auto-add-buffer)
|
||||
|
||||
|
@ -46,14 +49,11 @@
|
|||
|
||||
;; TODO Test per-frame perspectives
|
||||
|
||||
;; We use this instead of persp's native autosave. Why? So the "Wrote
|
||||
;; .../_autosave" message appears AFTER the quit confirmation prompt!
|
||||
;;
|
||||
;; ...I need help.
|
||||
(defun +workspace|save-on-quit ()
|
||||
(when persp-mode (@quiet (persp-save-state-to-file))))
|
||||
(add-hook 'kill-emacs-hook '+workspace|save-on-quit)
|
||||
;; Be quiet when saving
|
||||
(defun +workspace*silence (orig-fn &rest args) (@quiet (apply orig-fn args)))
|
||||
(advice-add 'persp-save-state-to-file :around '+workspace*silence)
|
||||
|
||||
;; Add a hook to session loading
|
||||
(defun +workspaces*reinit-popups (&rest _)
|
||||
(run-hook-with-args '+workspaces-load-session-hook (window-list)))
|
||||
(advice-add 'persp-load-state-from-file :after '+workspaces*reinit-popups)
|
||||
|
@ -61,16 +61,16 @@
|
|||
;; Restore popups on load
|
||||
(defun +workspaces|restore-popups (windows)
|
||||
(dolist (window windows)
|
||||
(let ((plist (window-parameter window 'popup)))
|
||||
(when plist (doom-popup--init window plist)))))
|
||||
(when-let (plist (window-parameter window 'popup))
|
||||
(doom-popup--init window plist))))
|
||||
(add-hook '+workspaces-load-session-hook '+workspaces|restore-popups))
|
||||
|
||||
(@after ivy
|
||||
(defun +workspaces|ivy-ignore-non-persp-buffers (b)
|
||||
(when persp-mode
|
||||
(let ((persp (get-current-persp)))
|
||||
(and persp (not (persp-contain-buffer-p b persp))))))
|
||||
(pushnew '+workspaces|ivy-ignore-non-persp-buffers ivy-ignore-buffers)
|
||||
;; (defun +workspaces|ivy-ignore-non-persp-buffers (b)
|
||||
;; (when persp-mode
|
||||
;; (let ((persp (get-current-persp)))
|
||||
;; (and persp (not (persp-contain-buffer-p b persp))))))
|
||||
;; (pushnew '+workspaces|ivy-ignore-non-persp-buffers ivy-ignore-buffers)
|
||||
|
||||
(setq ivy-sort-functions-alist
|
||||
(append ivy-sort-functions-alist
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue