diff options
| author | Tino Calancha | 2017-10-20 22:11:39 +0900 |
|---|---|---|
| committer | Tino Calancha | 2017-10-20 22:11:39 +0900 |
| commit | ee6fe8378a28444cb4913abca4af742f736e9b45 (patch) | |
| tree | 35beb1736dbf4c4791d5795a09f7c71d8be084b1 | |
| parent | 658853aebb0ae2ee243276e04a7672fa7525ec5c (diff) | |
| download | emacs-ee6fe8378a28444cb4913abca4af742f736e9b45.tar.gz emacs-ee6fe8378a28444cb4913abca4af742f736e9b45.zip | |
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.
| -rw-r--r-- | lisp/ibuf-ext.el | 7 | ||||
| -rw-r--r-- | 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 686bc392b60..2c841fa7e0a 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el | |||
| @@ -1033,8 +1033,11 @@ group definitions by setting `ibuffer-filter-groups' to nil." | |||
| 1033 | (ibuffer-jump-to-buffer (buffer-name buf))))) | 1033 | (ibuffer-jump-to-buffer (buffer-name buf))))) |
| 1034 | 1034 | ||
| 1035 | (defun ibuffer-push-filter (filter-specification) | 1035 | (defun ibuffer-push-filter (filter-specification) |
| 1036 | "Add FILTER-SPECIFICATION to `ibuffer-filtering-qualifiers'." | 1036 | "Add FILTER-SPECIFICATION to `ibuffer-filtering-qualifiers'. |
| 1037 | (push filter-specification ibuffer-filtering-qualifiers)) | 1037 | If FILTER-SPECIFICATION is already in the list then return nil. Otherwise, |
| 1038 | return the updated list." | ||
| 1039 | (unless (member filter-specification ibuffer-filtering-qualifiers) | ||
| 1040 | (push filter-specification ibuffer-filtering-qualifiers))) | ||
| 1038 | 1041 | ||
| 1039 | ;;;###autoload | 1042 | ;;;###autoload |
| 1040 | (defun ibuffer-decompose-filter () | 1043 | (defun ibuffer-decompose-filter () |
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. | |||
| 301 | (defun ,fn-name (qualifier) | 301 | (defun ,fn-name (qualifier) |
| 302 | ,(or documentation "This filter is not documented.") | 302 | ,(or documentation "This filter is not documented.") |
| 303 | (interactive (list ,reader)) | 303 | (interactive (list ,reader)) |
| 304 | (ibuffer-push-filter (cons ',name qualifier)) | 304 | (if (null (ibuffer-push-filter (cons ',name qualifier))) |
| 305 | (message "%s" | 305 | (message "%s" |
| 306 | (format ,(concat (format "Filter by %s added: " description) | 306 | (format ,(concat (format "Filter by %s already applied: " description) |
| 307 | " %s") | 307 | " %s") |
| 308 | qualifier)) | 308 | qualifier)) |
| 309 | (ibuffer-update nil t)) | 309 | (message "%s" |
| 310 | (format ,(concat (format "Filter by %s added: " description) | ||
| 311 | " %s") | ||
| 312 | qualifier)) | ||
| 313 | (ibuffer-update nil t))) | ||
| 310 | (push (list ',name ,description | 314 | (push (list ',name ,description |
| 311 | (lambda (buf qualifier) | 315 | (lambda (buf qualifier) |
| 312 | (condition-case nil | 316 | (condition-case nil |