From dce3d0ddc6d458b51e5ee525196ef2f3b8786707 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 May 2019 21:27:23 -0400 Subject: [PATCH] Fix evil-alternate-buffer + persp-mode Fixes an issue where evil-switch-to-windows-last-buffer would switch to buffers outside the current workspace. --- modules/ui/workspaces/config.el | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/ui/workspaces/config.el b/modules/ui/workspaces/config.el index 2c8aaa79b..4475e7d2f 100644 --- a/modules/ui/workspaces/config.el +++ b/modules/ui/workspaces/config.el @@ -115,6 +115,16 @@ Uses `+workspaces-main' to determine the name of the main workspace." 'auto-create))) (add-hook 'persp-after-load-state-functions #'+workspaces|leave-nil-perspective) + (defun +workspaces*evil-alternate-buffer (&optional window) + "Make `evil-alternate-buffer' ignore buffers outside the current workspace." + (let* ((prev-buffers (cl-remove-if-not #'persp-contain-buffer-p (window-prev-buffers) + :key #'car)) + (head (car prev-buffers))) + (if (eq (car head) (window-buffer window)) + (cadr prev-buffers) + head))) + (advice-add #'evil-alternate-buffer :override #'+workspaces*evil-alternate-buffer) + ;; Delete the current workspace if closing the last open window (define-key! persp-mode-map [remap delete-window] #'+workspace/close-window-or-workspace