[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/activities a7abc9ee9e 5/6: Add: (activities-anti-kill-p
From: |
ELPA Syncer |
Subject: |
[elpa] externals/activities a7abc9ee9e 5/6: Add: (activities-anti-kill-predicates) etc. |
Date: |
Sun, 18 Feb 2024 21:57:18 -0500 (EST) |
branch: externals/activities
commit a7abc9ee9eca26d2633abae18d23a0f70c783f14
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>
Add: (activities-anti-kill-predicates) etc.
---
activities-tabs.el | 1 -
activities.el | 35 +++++++++++++++++++++++++++++------
2 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/activities-tabs.el b/activities-tabs.el
index 3bddf92b22..78c51c5a8e 100644
--- a/activities-tabs.el
+++ b/activities-tabs.el
@@ -113,7 +113,6 @@ closed."
(alist-get 'activities-buffer-list (cdr
tab)))))))
(defun activities-tabs--kill-buffers ()
- ;; TODO: Exclude e.g. special buffers from being killed.
;; TODO: Frame parameter name should be prefixed with `activities'.
"Kill buffers that are only in the current tab's buffer list.
Only does so when `activities-kill-buffers' is non-nil."
diff --git a/activities.el b/activities.el
index 48bcfa634a..31bac0f93e 100644
--- a/activities.el
+++ b/activities.el
@@ -284,6 +284,17 @@ prefixes will be added automatically."
Only applies when `activities-tabs-mode' is disabled."
:type 'boolean)
+(defcustom activities-anti-kill-predicates
+ '(activities-buffer-hidden-p activities-buffer-special-p)
+ "Predicates which prevent a buffer from being killed.
+Used when suspending an activity and `activities-kill-buffers' is
+enabled. Each predicate is called with the buffer as its
+argument. If any predicate returns non-nil, the buffer is not
+killed."
+ :type '(set (function-item activities-buffer-special-p)
+ (function-item activities-buffer-hidden-p)
+ (function :tag "Other predicate")))
+
(defcustom activities-anti-save-predicates
'(active-minibuffer-window activities--backtrace-visible-p)
"Predicates which prevent an activity's state from being saved.
@@ -800,18 +811,30 @@ Adds `activities-name-prefix'."
(throw :found t)))))))
(defun activities--kill-buffers ()
- ;; TODO: Exclude e.g. special buffers from being killed.
;; TODO: Frame parameter name should be prefixed with `activities'.
"Kill buffers that are only in the current frame's/tab's buffer list.
Only does so when `activities-kill-buffers' is non-nil."
(when activities-kill-buffers
- (let ((target-buffers
- (cl-reduce (lambda (acc frame)
- (seq-difference acc (frame-parameter frame
'buffer-list)))
- (remove (selected-frame) (frame-list))
- :initial-value (frame-parameter nil 'buffer-list))))
+ (let* ((frame-buffers (cl-reduce (lambda (acc frame)
+ (seq-difference acc (frame-parameter
frame 'buffer-list)))
+ (remove (selected-frame) (frame-list))
+ :initial-value (frame-parameter nil
'buffer-list)))
+ (target-buffers (cl-remove-if (lambda (buffer)
+ (run-hook-with-args-until-success
+ 'activities-anti-kill-predicates
buffer))
+ frame-buffers)))
(mapc #'kill-buffer target-buffers))))
+(defun activities-buffer-special-p (buffer)
+ "Return non-nil if BUFFER is special.
+That is, if its name starts with an asterisk."
+ (string-prefix-p "*" (buffer-name buffer)))
+
+(defun activities-buffer-hidden-p (buffer)
+ "Return non-nil if BUFFER is hidden.
+That is, if its name starts with a space."
+ (string-prefix-p " " (buffer-name buffer)))
+
;;;; Project support
(declare-function project-name "project")
- [elpa] externals/activities updated (eebe3c2037 -> 83db6b5547), ELPA Syncer, 2024/02/18
- [elpa] externals/activities dba96cd592 3/6: Merge: (activities-set-frame-name), ELPA Syncer, 2024/02/18
- [elpa] externals/activities a7abc9ee9e 5/6: Add: (activities-anti-kill-predicates) etc.,
ELPA Syncer <=
- [elpa] externals/activities 83db6b5547 6/6: Merge: (activities-kill-buffers) etc., ELPA Syncer, 2024/02/18
- [elpa] externals/activities 52cba82926 1/6: Add: (activities-inhibit-frame-name) Inhibits setting frame name, ELPA Syncer, 2024/02/18
- [elpa] externals/activities 1d6ac71725 2/6: Change: option inibit-frame-name -> set-frame-name, ELPA Syncer, 2024/02/18
- [elpa] externals/activities 93794ade08 4/6: Add: (activities-kill-buffers) etc., ELPA Syncer, 2024/02/18