aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgcv <gepardcv@gmail.com>2021-11-21 21:08:05 -0800
committergcv <gepardcv@gmail.com>2021-11-21 21:10:10 -0800
commit248b4e96400b64cbaf8a431c437e6424a7665624 (patch)
tree0d332296815c23add9de4912d747a13aa5654e54
parent672d02dde0c2f8c951e3032e21050e1375a2692e (diff)
Put last-buffer kill check behind a feature flag.
-rw-r--r--perspective.el11
-rw-r--r--test/test-perspective.el3
2 files changed, 12 insertions, 2 deletions
diff --git a/perspective.el b/perspective.el
index bc8d5bc..8bf4572 100644
--- a/perspective.el
+++ b/perspective.el
@@ -113,6 +113,11 @@ save state when exiting Emacs."
:group 'perspective-mode
:type 'file)
+(defcustom persp-feature-flag-prevent-killing-last-buffer-in-perspective nil
+ "Experimental feature flag: prevent killing the last buffer in a perspective."
+ :group 'perspective-mode
+ :type 'boolean)
+
;;; --- implementation
@@ -1009,7 +1014,8 @@ perspective and no others are killed."
(run-hooks 'persp-killed-hook)
(mapc 'persp-remove-buffer (persp-current-buffers))
(setf (persp-killed (persp-curr)) t))
- (add-hook 'kill-buffer-query-functions 'persp-maybe-kill-buffer)
+ (when persp-feature-flag-prevent-killing-last-buffer-in-perspective
+ (add-hook 'kill-buffer-query-functions 'persp-maybe-kill-buffer))
(remhash name (perspectives-hash))
(when (boundp 'persp--xref-marker-ring) (remhash name persp--xref-marker-ring))
(persp-update-modestring)
@@ -1277,7 +1283,8 @@ named collections of buffers and window configurations."
(add-hook 'after-make-frame-functions 'persp-init-frame)
(add-hook 'delete-frame-functions 'persp-delete-frame)
(add-hook 'ido-make-buffer-list-hook 'persp-set-ido-buffers)
- (add-hook 'kill-buffer-query-functions 'persp-maybe-kill-buffer)
+ (when persp-feature-flag-prevent-killing-last-buffer-in-perspective
+ (add-hook 'kill-buffer-query-functions 'persp-maybe-kill-buffer))
(setq read-buffer-function 'persp-read-buffer)
(mapc 'persp-init-frame (frame-list))
(setf (persp-current-buffers) (buffer-list))
diff --git a/test/test-perspective.el b/test/test-perspective.el
index f581a9a..d5a7005 100644
--- a/test/test-perspective.el
+++ b/test/test-perspective.el
@@ -22,6 +22,9 @@
(set-frame-height (selected-frame) 80)
(set-frame-width (selected-frame) 160)
+;; Set feature flag(s):
+(customize-set-variable 'persp-feature-flag-prevent-killing-last-buffer-in-perspective t)
+
(defun persp-test-interesting-buffer? (buf)
"Return t if BUF is a non-temporary buffer (i.e., lacks
tell-tale leading '*' characters)."