diff options
Diffstat (limited to 'perspective.el')
| -rw-r--r-- | perspective.el | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/perspective.el b/perspective.el index 962a500..1d4191c 100644 --- a/perspective.el +++ b/perspective.el @@ -404,6 +404,12 @@ Run with the activated perspective active.") (defvar persp--winner-after-load-registered nil "Non-nil when Winner setup has been registered via `eval-after-load'.") +(defvar persp--delete-frame-in-progress nil + "Non-nil while `persp-delete-frame' is cleaning up a frame. +This prevents reentrant calls when killing a perspective causes a +buffer kill, which may trigger another `delete-frame' while the +original frame teardown is still in progress.") + (defvar persp-mode-map (make-sparse-keymap) "Keymap for perspective-mode.") @@ -1551,8 +1557,10 @@ By default, this uses the current frame." "Clean up perspectives in FRAME. By default this uses the current frame." (with-selected-frame frame - (unless persp-started-after-server-mode - (mapcar #'persp-kill (persp-names))))) + (unless (or persp-started-after-server-mode + persp--delete-frame-in-progress) + (let ((persp--delete-frame-in-progress t)) + (mapc #'persp-kill (persp-names)))))) (defun persp-make-variable-persp-local (variable) "Make VARIABLE become perspective-local. |
