GNU bug report logs -
#32731
26.1.50; Ibuffer filter by mode: Handle >1 mode names
Previous Next
Reported by: Tino Calancha <tino.calancha <at> gmail.com>
Date: Thu, 13 Sep 2018 18:20:02 UTC
Severity: wishlist
Found in version 26.1.50
Done: Tino Calancha <tino.calancha <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #8 received at 32731 <at> debbugs.gnu.org (full text, mbox):
On 13 September 2018 at 14:19, Tino Calancha <tino.calancha <at> gmail.com> wrote:
> +;;;###autoload
> +(defun ibuffer-filter-by-used-modes(modes)
> + "Limit current view to buffers with major mode in MODES.
> +MODES is a list of mode names (symbols).
> +When called interactively, accept the mode names separated by commas."
> + (interactive
> + (let* ((buf (ibuffer-current-buffer))
> + (default (if (and buf (buffer-live-p buf))
> + (symbol-name (buffer-local-value
> + 'major-mode buf)))))
> + (list
> + (mapcar #'intern
> + (split-string
> + (completing-read
> + (if default
> + (format "Filter by major mode (default %s): " default)
> + "Filter by major mode: ")
> + (ibuffer-list-buffer-modes)
> + nil nil nil nil default)
> + "\\s-*,\\s-*" t)))))
This will use completion only for the first mode, right? Perhaps
completing-read-multiple would make more sense here.
> + (setq modes (delete-dups modes))
> + (mapc #'ibuffer-filter-by-used-mode modes)
> + (let ((nb_modes (length modes)))
> + (when (>= nb_modes 2)
> + (cl-loop repeat (- nb_modes 2) do (ibuffer-or-filter))
> + (message nil)
What's this `message' call for?
> + (ibuffer-or-filter))))
Maybe it's simpler to construct the filter directly? As in:
(push `(or ,@(mapcar (lambda (m) `(used-mode . ,m)) modes))
ibuffer-filtering-qualifiers)
(ibuffer-update nil t)
This bug report was last modified 6 years and 297 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.