feature/workspaces: fix buffer-bleedover from other workspaces
The frame buffer-predicate wasn't discriminating against buffers that were in other perspectives, allowing you to `next-buffer` into them. UNACCEPTABLE.
This commit is contained in:
parent
2d641bb059
commit
d9a80a9520
2 changed files with 9 additions and 9 deletions
|
@ -48,12 +48,6 @@
|
||||||
"Return non-nil if buffer is in workspace (defaults to current workspace)."
|
"Return non-nil if buffer is in workspace (defaults to current workspace)."
|
||||||
(persp-contain-buffer-p buffer (or workspace (+workspace-current)) nil))
|
(persp-contain-buffer-p buffer (or workspace (+workspace-current)) nil))
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun +workspace-alien-buffer-p (buffer)
|
|
||||||
"Return non-nil if BUFFER isn't a member of the current workspace."
|
|
||||||
(and (get-buffer-window buffer)
|
|
||||||
(not (+workspace-contains-buffer-p buffer))))
|
|
||||||
|
|
||||||
|
|
||||||
;; --- Getters ----------------------------
|
;; --- Getters ----------------------------
|
||||||
|
|
||||||
|
@ -274,6 +268,8 @@ workspace to delete."
|
||||||
(if (+workspace-exists-p +workspace--last)
|
(if (+workspace-exists-p +workspace--last)
|
||||||
+workspace--last
|
+workspace--last
|
||||||
(car (+workspace-list-names))))
|
(car (+workspace-list-names))))
|
||||||
|
(unless (doom-buffer-frame-predicate (current-buffer))
|
||||||
|
(switch-to-buffer (doom-fallback-buffer)))
|
||||||
(format "Deleted '%s' workspace" name))
|
(format "Deleted '%s' workspace" name))
|
||||||
((= workspaces 1)
|
((= workspaces 1)
|
||||||
(format "Can't delete the last workspace!"))
|
(format "Can't delete the last workspace!"))
|
||||||
|
|
|
@ -24,7 +24,14 @@ renamed.")
|
||||||
(def-package! persp-mode
|
(def-package! persp-mode
|
||||||
:defer t
|
:defer t
|
||||||
:init
|
:init
|
||||||
|
(defun +workspaces-buffer-predicate (buf)
|
||||||
|
(funcall (if persp-mode
|
||||||
|
(frame-parameter nil 'persp-buffer-predicate-generated)
|
||||||
|
#'doom-buffer-frame-predicate)
|
||||||
|
buf))
|
||||||
|
|
||||||
(defun +workspaces|init ()
|
(defun +workspaces|init ()
|
||||||
|
(map-put default-frame-alist 'buffer-predicate #'+workspaces-buffer-predicate)
|
||||||
(add-hook 'after-make-frame-functions #'+workspaces|init-frame)
|
(add-hook 'after-make-frame-functions #'+workspaces|init-frame)
|
||||||
(require 'persp-mode)
|
(require 'persp-mode)
|
||||||
(unless (daemonp)
|
(unless (daemonp)
|
||||||
|
@ -70,7 +77,6 @@ Uses `+workspaces-main' to determine the name of the main workspace."
|
||||||
persp-set-last-persp-for-new-frames t
|
persp-set-last-persp-for-new-frames t
|
||||||
persp-switch-to-added-buffer nil
|
persp-switch-to-added-buffer nil
|
||||||
persp-remove-buffers-from-nil-persp-behaviour nil
|
persp-remove-buffers-from-nil-persp-behaviour nil
|
||||||
persp-set-frame-buffer-predicate #'doom-buffer-frame-predicate
|
|
||||||
persp-auto-resume-time -1 ; Don't auto-load on startup
|
persp-auto-resume-time -1 ; Don't auto-load on startup
|
||||||
persp-auto-save-opt (if noninteractive 0 1)) ; auto-save on kill
|
persp-auto-save-opt (if noninteractive 0 1)) ; auto-save on kill
|
||||||
|
|
||||||
|
@ -99,7 +105,6 @@ Uses `+workspaces-main' to determine the name of the main workspace."
|
||||||
;;
|
;;
|
||||||
(defun +workspaces|init-persp-mode ()
|
(defun +workspaces|init-persp-mode ()
|
||||||
(cond (persp-mode
|
(cond (persp-mode
|
||||||
(add-hook 'doom-unreal-buffer-functions #'+workspace-alien-buffer-p)
|
|
||||||
;; Ensure `persp-kill-buffer-query-function' is last in
|
;; Ensure `persp-kill-buffer-query-function' is last in
|
||||||
;; 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)
|
||||||
|
@ -111,7 +116,6 @@ Uses `+workspaces-main' to determine the name of the main workspace."
|
||||||
(advice-add #'display-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-unreal-buffer-functions #'+workspace-alien-buffer-p)
|
|
||||||
(advice-remove #'switch-to-buffer #'+workspaces*auto-add-buffer)
|
(advice-remove #'switch-to-buffer #'+workspaces*auto-add-buffer)
|
||||||
(advice-remove #'display-buffer #'+workspaces*auto-add-buffer)
|
(advice-remove #'display-buffer #'+workspaces*auto-add-buffer)
|
||||||
(advice-remove #'doom-buffer-list #'+workspace-buffer-list))))
|
(advice-remove #'doom-buffer-list #'+workspace-buffer-list))))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue