summaryrefslogtreecommitdiff
path: root/lisp/ibuf-macs.el
diff options
context:
space:
mode:
authorTino Calancha <tino.calancha@gmail.com>2017-10-20 22:11:39 +0900
committerTino Calancha <tino.calancha@gmail.com>2017-10-20 22:11:39 +0900
commitee6fe8378a28444cb4913abca4af742f736e9b45 (patch)
tree35beb1736dbf4c4791d5795a09f7c71d8be084b1 /lisp/ibuf-macs.el
parent658853aebb0ae2ee243276e04a7672fa7525ec5c (diff)
downloademacs-ee6fe8378a28444cb4913abca4af742f736e9b45.tar.gz
Make ibuffer filters idempotent
* lisp/ibuf-ext.el (ibuffer-push-filter): Check if the filter is already in effect (Bug#28826). * lisp/ibuf-macs.el (define-ibuffer-filter): Report to user if the filter was already enabled.
Diffstat (limited to 'lisp/ibuf-macs.el')
-rw-r--r--lisp/ibuf-macs.el16
1 files changed, 10 insertions, 6 deletions
diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el
index e0c91e20edd..c30067f2f58 100644
--- a/lisp/ibuf-macs.el
+++ b/lisp/ibuf-macs.el
@@ -301,12 +301,16 @@ bound to the current value of the filter.
(defun ,fn-name (qualifier)
,(or documentation "This filter is not documented.")
(interactive (list ,reader))
- (ibuffer-push-filter (cons ',name qualifier))
- (message "%s"
- (format ,(concat (format "Filter by %s added: " description)
- " %s")
- qualifier))
- (ibuffer-update nil t))
+ (if (null (ibuffer-push-filter (cons ',name qualifier)))
+ (message "%s"
+ (format ,(concat (format "Filter by %s already applied: " description)
+ " %s")
+ qualifier))
+ (message "%s"
+ (format ,(concat (format "Filter by %s added: " description)
+ " %s")
+ qualifier))
+ (ibuffer-update nil t)))
(push (list ',name ,description
(lambda (buf qualifier)
(condition-case nil