From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Tino Calancha Newsgroups: gmane.emacs.bugs Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Date: Fri, 14 Sep 2018 05:04:33 +0900 (JST) Message-ID: References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Trace: blaine.gmane.org 1536869005 13487 195.159.176.226 (13 Sep 2018 20:03:25 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 13 Sep 2018 20:03:25 +0000 (UTC) User-Agent: Alpine 2.20 (DEB 67 2015-01-07) Cc: 32731@debbugs.gnu.org, Tino Calancha To: Noam Postavsky Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Sep 13 22:03:20 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0Xpg-0003PJ-Eu for geb-bug-gnu-emacs@m.gmane.org; Thu, 13 Sep 2018 22:03:20 +0200 Original-Received: from localhost ([::1]:44133 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g0Xrn-0003e6-1K for geb-bug-gnu-emacs@m.gmane.org; Thu, 13 Sep 2018 16:05:31 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:53521) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g0Xrd-0003dq-Lb for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 16:05:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g0XrO-0000Hs-UM for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 16:05:13 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:35367) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g0XrK-00008S-Bp for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 16:05:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1g0XrJ-0003Pt-W2 for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 16:05:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 13 Sep 2018 20:05:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32731 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153686908513101 (code B ref 32731); Thu, 13 Sep 2018 20:05:01 +0000 Original-Received: (at 32731) by debbugs.gnu.org; 13 Sep 2018 20:04:45 +0000 Original-Received: from localhost ([127.0.0.1]:39625 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0Xr3-0003PF-0H for submit@debbugs.gnu.org; Thu, 13 Sep 2018 16:04:45 -0400 Original-Received: from mail-wr1-f47.google.com ([209.85.221.47]:39933) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0Xr1-0003P1-G5 for 32731@debbugs.gnu.org; Thu, 13 Sep 2018 16:04:43 -0400 Original-Received: by mail-wr1-f47.google.com with SMTP id s14-v6so7873477wrw.6 for <32731@debbugs.gnu.org>; Thu, 13 Sep 2018 13:04:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=Axgpn9dQdR+VKZPh4p6tJvTqzX6kx/0tt2RvwOca+wA=; b=RJREaCHcidC7z6bwWTOgbVD2aQkPltxovQIc0lSHdD7W2bfxc6+rsoxpIRJpoWLLuJ 0STI74Mi5o633Kb3bTzx4WLR74XKYynk+hG8rPXpQ9N3j26BVV8or8ws9oy9W/Kge1Fm Prj6XKE/x5oHJgdt6LCWBci42IzWUiIRqPtLJWalS6ASBeFV1gB6/XwfVNUHeW+u/LFr JomZQ3An8p7FvAhkwzNCsrTubn37B0jLK3H6TLacpNeSj2ex/7g4fLKl4LYgJiMGNAhX h55iE6TadlnQE1hNuvmj5hyfqaWbPyaVq/k+7QJN1UoDZH0VL+5nZShBUVwpEu+IdbcJ gRPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=Axgpn9dQdR+VKZPh4p6tJvTqzX6kx/0tt2RvwOca+wA=; b=oYzaA6TS9dfDOYT/Kc0Od8BAj2rgO54uUgCOnAPzem+gqv9AedYi3WjnPDG/EHYVaB RUcZvyEiibL7AhzxvAHgeWyiEw3vdjV7a+paXbxs/Hkjf3ThyhGOBawjFlb0AYxXNK/I 73+vul/rEYe6SKIiOWy7S/pBrB+4HQxE6IRzikdEZCuaXPjdD3AbrfrYX/2w25rzQj87 y+6bPiV2xN9ZU9l8/V9+3ZpEs30PD/ka7KfY83aLWGeFqJafEH/w1aarSBJUKsRZHVJ0 xzAIQFRt0Xq3rnKNSZAAyqLffC01fk/SMZC71LZ4SrMET+g5uAmXByCAx0bA+gRu17ji jnDg== X-Gm-Message-State: APzg51CVkS2qAO8e0LU7hjSwmZJjZII4wV3QbeE+0BsxPQIAXfp+DOJ2 Z07CC5hCCxGHxFfriQsF3SY= X-Google-Smtp-Source: ANB0Vdaz/RcwhIxUjR6e9Y8xJ8VGVafD9o1VcmWHEGlHBqlF5g+UL8tl8CYjL89c16CttmBSVEBe/A== X-Received: by 2002:a1c:9f41:: with SMTP id i62-v6mr6529197wme.87.1536869077565; Thu, 13 Sep 2018 13:04:37 -0700 (PDT) Original-Received: from calancha-pc.dy.bbexcite.jp (15.red-83-50-151.dynamicip.rima-tde.net. [83.50.151.15]) by smtp.gmail.com with ESMTPSA id y17-v6sm4927348wrh.49.2018.09.13.13.04.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 Sep 2018 13:04:36 -0700 (PDT) X-Google-Original-From: Tino Calancha X-X-Sender: calancha@calancha-pc.dy.bbexcite.jp In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:150298 Archived-At: On Thu, 13 Sep 2018, Noam Postavsky wrote: > On 13 September 2018 at 14:19, Tino Calancha 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? Yeah, that's right. > Perhaps completing-read-multiple would make more sense here. Hummmm, it sounds like a good idea. I will look on it. >> + (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? To clean the minibuffer after the second filter fails; before you do the composition, you have an implicit AND, so you are requiring: (and (eq major-mode mode1-mode) (eq major-mode mode2-mode)) ;; This fails ;; after `ibuffer-or-filter' previous line is changed to: (or (eq major-mode mode1-mode) (eq major-mode mode2-mode)) >> + (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) Right, much more elegant. Thank you! I will update the patch accordingly