From fde057aac8743ec04145f99d2de634fa6e2c37c7 Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Thu, 23 Mar 2006 07:05:33 +0000 Subject: [PATCH] (ibuffer-read-filter-group-name): Use `ibuffer-generate-filter-groups' to make completion list match the filter groups that are really displayed in the Ibuffer buffer. (ibuffer-generate-filter-groups): Add new args noempty, nodefault. --- lisp/ChangeLog | 7 +++++++ lisp/ibuf-ext.el | 36 ++++++++++++++++++++++++------------ 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e0b7bac069..f0964ecb82 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2006-03-23 Romain Francoise + + * ibuf-ext.el (ibuffer-read-filter-group-name): + Use `ibuffer-generate-filter-groups' to make completion list match + the filter groups that are really displayed in the Ibuffer buffer. + (ibuffer-generate-filter-groups): Add new args noempty, nodefault. + 2006-03-23 Kenichi Handa * international/mule-cmds.el (sort-coding-systems): Describe that diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index 183da83816..292e158c09 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -511,9 +511,11 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." buf (cdr filter)))))))))) -(defun ibuffer-generate-filter-groups (bmarklist) - (let ((filter-group-alist (append ibuffer-filter-groups - (list (cons "Default" nil))))) +(defun ibuffer-generate-filter-groups (bmarklist &optional noempty nodefault) + (let ((filter-group-alist (if nodefault + ibuffer-filter-groups + (append ibuffer-filter-groups + (list (cons "Default" nil)))))) ;; (dolist (hidden ibuffer-hidden-filter-groups) ;; (setq filter-group-alist (ibuffer-delete-alist ;; hidden filter-group-alist))) @@ -529,11 +531,13 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." (aset vec i hip-crowd) (incf i) (setq bmarklist lamers)))) - (let ((ret nil)) + (let (ret) (dotimes (j i ret) - (push (cons (car (nth j filter-group-alist)) - (aref vec j)) - ret)))))) + (let ((bufs (aref vec j))) + (unless (and noempty (null bufs)) + (push (cons (car (nth j filter-group-alist)) + bufs) + ret)))))))) ;;;###autoload (defun ibuffer-filters-to-filter-group (name) @@ -575,11 +579,19 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." (defun ibuffer-read-filter-group-name (msg &optional nodefault noerror) (when (and (not noerror) (null ibuffer-filter-groups)) (error "No filter groups active")) - (let ((groups (mapcar #'car ibuffer-filter-groups))) - (completing-read msg (if nodefault - groups - (cons "Default" groups)) - nil t))) + ;; `ibuffer-generate-filter-groups' returns all non-hidden filter + ;; groups, possibly excluding empty groups or Default. + ;; We add `ibuffer-hidden-filter-groups' to the list, excluding + ;; Default if necessary. + (completing-read msg (nconc + (ibuffer-generate-filter-groups + (ibuffer-current-state-list) + (not ibuffer-show-empty-filter-groups) + nodefault) + (if nodefault + (remove "Default" ibuffer-hidden-filter-groups) + ibuffer-hidden-filter-groups)) + nil t)) ;;;###autoload (defun ibuffer-decompose-filter-group (group) -- 2.20.1