feature/workspaces: use new switch-buffer hooks

This commit is contained in:
Henrik Lissner 2018-03-14 18:31:48 -04:00
parent 4edb7999e9
commit d84222b6d0
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 16 additions and 15 deletions

View file

@ -453,6 +453,17 @@ the next."
;; Hooks ;; Hooks
;; ;;
;;;###autoload
(defun +workspaces|auto-add-buffer ()
"Auto-associate buffers with perspectives upon opening them.
Allows a perspective-specific buffer list via `+workspaces-buffer-list'."
(when (and persp-mode
(not persp-temporarily-display-buffer)
(doom-real-buffer-p))
(persp-add-buffer (current-buffer) (get-current-persp) nil)
(force-mode-line-update t)))
;;;###autoload ;;;###autoload
(defun +workspaces|protect-buffers-in-other-persps () (defun +workspaces|protect-buffers-in-other-persps ()
"Return nil if this buffer is present in other perspectives/workspaces (bury "Return nil if this buffer is present in other perspectives/workspaces (bury

View file

@ -114,26 +114,16 @@ Uses `+workspaces-main' to determine the name of the main workspace."
;; kill-buffer-query-functions ;; kill-buffer-query-functions
(remove-hook 'kill-buffer-query-functions 'persp-kill-buffer-query-function) (remove-hook 'kill-buffer-query-functions 'persp-kill-buffer-query-function)
(add-hook 'kill-buffer-query-functions 'persp-kill-buffer-query-function t) (add-hook 'kill-buffer-query-functions 'persp-kill-buffer-query-function t)
;;
(add-hook 'kill-buffer-query-functions #'+workspaces|protect-buffers-in-other-persps) (add-hook 'kill-buffer-query-functions #'+workspaces|protect-buffers-in-other-persps)
(add-hook 'doom-after-switch-buffer-hook #'+workspaces|auto-add-buffer)
;; Remap `buffer-list' to current workspace's buffers in ;; Remap `buffer-list' to current workspace's buffers in
;; `doom-buffer-list' ;; `doom-buffer-list'
(advice-add #'switch-to-buffer :after #'+workspaces*auto-add-buffer)
(advice-add #'display-buffer :after #'+workspaces*auto-add-buffer)
(advice-add #'doom-buffer-list :override #'+workspace-buffer-list)) (advice-add #'doom-buffer-list :override #'+workspace-buffer-list))
(t (t
(remove-hook 'doom-after-switch-buffer-hook #'+workspaces|auto-add-buffer)
(remove-hook 'kill-buffer-query-functions #'+workspaces|protect-buffers-in-other-persps) (remove-hook 'kill-buffer-query-functions #'+workspaces|protect-buffers-in-other-persps)
(advice-remove #'switch-to-buffer #'+workspaces*auto-add-buffer) (advice-remove #'doom-buffer-list #'+workspace-buffer-list)))))
(advice-remove #'display-buffer #'+workspaces*auto-add-buffer)
(advice-remove #'doom-buffer-list #'+workspace-buffer-list))))
(defun +workspaces*auto-add-buffer (buffer &rest _)
"Auto-associate buffers with perspectives upon opening them.
Allows a perspective-specific buffer list via `+workspaces-buffer-list'."
(when (and persp-mode
(not persp-temporarily-display-buffer)
(doom-real-buffer-p buffer))
(persp-add-buffer buffer (get-current-persp) nil)
(force-mode-line-update t))))