emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master ee6fe83: Make ibuffer filters idempotent


From: Tino Calancha
Subject: [Emacs-diffs] master ee6fe83: Make ibuffer filters idempotent
Date: Fri, 20 Oct 2017 09:13:34 -0400 (EDT)

branch: master
commit ee6fe8378a28444cb4913abca4af742f736e9b45
Author: Tino Calancha <address@hidden>
Commit: Tino Calancha <address@hidden>

    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.
---
 lisp/ibuf-ext.el  |  7 +++++--
 lisp/ibuf-macs.el | 16 ++++++++++------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 686bc39..2c841fa 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -1033,8 +1033,11 @@ group definitions by setting `ibuffer-filter-groups' to 
nil."
       (ibuffer-jump-to-buffer (buffer-name buf)))))
 
 (defun ibuffer-push-filter (filter-specification)
-  "Add FILTER-SPECIFICATION to `ibuffer-filtering-qualifiers'."
-  (push filter-specification ibuffer-filtering-qualifiers))
+  "Add FILTER-SPECIFICATION to `ibuffer-filtering-qualifiers'.
+If FILTER-SPECIFICATION is already in the list then return nil.  Otherwise,
+return the updated list."
+  (unless (member filter-specification ibuffer-filtering-qualifiers)
+    (push filter-specification ibuffer-filtering-qualifiers)))
 
 ;;;###autoload
 (defun ibuffer-decompose-filter ()
diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el
index e0c91e2..c30067f 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]