From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 13 Sep 2018 18:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 32731 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 32731@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15368627992154 (code B ref -1); Thu, 13 Sep 2018 18:20:02 +0000 Received: (at submit) by debbugs.gnu.org; 13 Sep 2018 18:19:59 +0000 Received: from localhost ([127.0.0.1]:39587 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0WDf-0000Yg-8I for submit@debbugs.gnu.org; Thu, 13 Sep 2018 14:19:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34256) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0WDe-0000YS-0J for submit@debbugs.gnu.org; Thu, 13 Sep 2018 14:19:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g0WDU-00086L-Ge for submit@debbugs.gnu.org; Thu, 13 Sep 2018 14:19:52 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:50576) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1g0WDM-0007wK-Q1 for submit@debbugs.gnu.org; Thu, 13 Sep 2018 14:19:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55031) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g0WDL-0006LK-MA for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 14:19:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g0WDC-0007o6-Gj for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 14:19:35 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]:34481) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g0WDB-0007mJ-PO for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 14:19:30 -0400 Received: by mail-wr1-x431.google.com with SMTP id g33-v6so7406873wrd.1 for ; Thu, 13 Sep 2018 11:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=nBIT0e9ZZpcI7WpV6f2xE4Mc3+qh5joff++NRy3CoK0=; b=rTNwHudhJSHbRIvl2R52ryUkfDhXJ3OsmU+WQYYgD0GoydNHcqDqcxVYWg7wwgBGOW qH5DbF/KiMY9XFqi1W0CbNi0Py5SWO0Esb7q6N/cjVpsEEuc/huB+hJNSN2LjRdaEALc Vq6Wo1x6M7eUrxM/BKU2fqvLzDPZLzKdJ8HWp2qux4wU5/QI3nFbrZwhmR6WndtFt03J YHrILfhM68KeG74KKq4J+hsLvmZW5h7t3uSjd9qKCA6j6LrZAnnP8l0uCwS7kosrTZAP HdSafuKwjKUWjc2adCYhmIhZQMrnMEsfzgxszMdth0R0P4mJNzAFCFJ96RcZAG+8DTFe qZng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=nBIT0e9ZZpcI7WpV6f2xE4Mc3+qh5joff++NRy3CoK0=; b=eZOcSKWLEFq1TQbV+bG6qNDVILPbPlsX67QRKBOjYyQNl3AogIz/hAxKGinxzEPh53 4GmceNiz6qDa33V/B0f1yyeDygEF8MR+taMYuEaHQMX5eEnkdoSNYdyuuSi26znWdOFc l1FmVyNzs8HCNHyDSKzluVvKVp7vVp+NOrf1EIWF8zQ03i1G2ItjvQ1bPBwW2AdqjjcI GPuWi6Mksgzflt2vpxkWd2A/1+iMU5PCNbSTN1Arf6QYlVgBuzL71UDfzRkr4VJmKw3l YyIDJ4HSHUSatpG+HdAsDpds+6STYHvxoJEaw5z95ANDAg1PkZNYu/MJakwdK/k1tDoA 8XNg== X-Gm-Message-State: APzg51Aalyt95/IyY/2H+B3ow9NbWJtQvntywCKOCQjy8LF5w0TwwVQY bLDv3PUp1sbq1F4kUWPZgBsXr4jl X-Google-Smtp-Source: ANB0Vda25x3ImuaJ8rUatLIk22nBdnv8Fxbu4U/+SAJsqEeK1S8Ht+FgrHhrl7XJOWKBe1uIjn7wmw== X-Received: by 2002:a1c:55c2:: with SMTP id j185-v6mr6873936wmb.104.1536862767752; Thu, 13 Sep 2018 11:19:27 -0700 (PDT) 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 z141-v6sm4495782wmc.3.2018.09.13.11.19.25 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 13 Sep 2018 11:19:26 -0700 (PDT) From: Tino Calancha Date: Fri, 14 Sep 2018 03:19:21 +0900 Message-ID: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Severity: wishlist Ibuffer filtering is a great feature. If you just want to filter by 1 major, then it's quite straight. /m [mode1-name] RET Filtering by >1 major mode is still possible; you must combine the individuals filters with `ibuffer-or-filter': /m [mode1-name] RET /m [mode2-name] RET /| /m [mode3-name] RET /| . . . /m [modeN-name] RET /| This become a bit cumbersome with > 2 mode names; you also need to remember how to combine filters, which I usually forget :-| Following patch adds a new command `ibuffer-filter-by-used-modes', similar as `ibuffer-filter-by-used-mode', to simplify this filtering. The new command accepts a list of mode names, and it takes care internally of the filter composition. Interactively, it preserves the interface of `ibuffer-filter-by-used-mode', with the only difference that the user might input a comma separated list of mode names. For instance, ;; Following produces identical result as the original command M-x ibuffer-filter-by-used-modes RET mode1-mode RET ;; This is equivalent to create the N filters + OR-compose them M-x ibuffer-filter-by-used-modes RET mode1-mode,mode2-mode,...,modeN-mode RET --8<-----------------------------cut here---------------start------------->8--- commit e36ff5779764e531cc149e4342e93cb6e37c30ee Author: Tino Calancha Date: Fri Sep 14 03:10:11 2018 +0900 Ibuffer filter by mode: Handle >1 mode names Extend used mode filtering so that we can input >1 mode. For instance, if we want to filter all buffers in C or C++ mode, then we can call the filter interactively with input: 'c-mode,c++-mode'. * lisp/ibuf-ext.el (ibuffer-filter-by-used-modes): New command. Accept a list of mode names (symbols). Interactively, accept a comma separated list of mode names. * lisp/ibuffer.el(ibuffer-mode-map): Rebind '/ m' to the new command. * etc/NEWS(Ibuffer): Announce this change. diff --git a/etc/NEWS b/etc/NEWS index a54ac2db43..6ef6f20b05 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -48,6 +48,11 @@ often cause crashes. Set it to nil if you really need those fonts. ** Ibuffer --- +*** The new command 'ibuffer-filter-by-used-modes', bound +to '/ m', extends 'ibuffer-filter-by-used-mode'; it makes easy +filtering buffers by a list of major modes. + +--- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Imenu diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index a3143e5e29..b7c3ae8030 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1265,6 +1265,34 @@ used-mode (ibuffer-list-buffer-modes) nil t nil nil default)))) (eq qualifier (buffer-local-value 'major-mode buf))) +;;;###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))))) + (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) + (ibuffer-or-filter)))) + ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode "Limit current view to buffers whose major mode inherits from QUALIFIER." diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 08b0801cb5..f7c20d0da3 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -519,7 +519,7 @@ ibuffer-mode-map (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode) (define-key map (kbd "/ RET") 'ibuffer-filter-by-mode) - (define-key map (kbd "/ m") 'ibuffer-filter-by-used-mode) + (define-key map (kbd "/ m") 'ibuffer-filter-by-used-modes) (define-key map (kbd "/ M") 'ibuffer-filter-by-derived-mode) (define-key map (kbd "/ n") 'ibuffer-filter-by-name) (define-key map (kbd "/ *") 'ibuffer-filter-by-starred-name) --8<-----------------------------cut here---------------end--------------->8--- In GNU Emacs 26.1.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2018-09-14 built Repository revision: 41cdda22c78eb0b00612ce25cdb356dd64322fcc From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 13 Sep 2018 19:10:02 +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: To: Tino Calancha Cc: 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15368657907344 (code B ref 32731); Thu, 13 Sep 2018 19:10:02 +0000 Received: (at 32731) by debbugs.gnu.org; 13 Sep 2018 19:09:50 +0000 Received: from localhost ([127.0.0.1]:39614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0Wzt-0001uO-ND for submit@debbugs.gnu.org; Thu, 13 Sep 2018 15:09:49 -0400 Received: from mail-ot1-f51.google.com ([209.85.210.51]:39288) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0Wzs-0001uA-Ho for 32731@debbugs.gnu.org; Thu, 13 Sep 2018 15:09:48 -0400 Received: by mail-ot1-f51.google.com with SMTP id c12-v6so2303639otl.6 for <32731@debbugs.gnu.org>; Thu, 13 Sep 2018 12:09:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=woUlzvZYxiDds8GHr/tVRs7PQOAjhJNoNcL+66lFYrk=; b=ANQJpMUb7/B1EYJHil0khDEuuTRXZRk5cNLApCQH1zrv22ohVvHqVK6DwUcM3JOPx0 1DLXGQe1lfr9tUauGDOjrhEgsfaPLKct2levuZSyXT/sub/lx+c1cbMVvmrqnZPSOwE/ RGll5g7ALqNbArK3lp1b6YUxbC87PmaYil0gSwDqrlliukq9f4i4fjL8JC336FuSmqJm fyTCsGc9Z5tCzT4Biy1OzWSzDFwhxXEqK/0DJCdTk7jvAPX8wSn9D3/xmVNlzE2TP3E8 08otmBwG9BWdUB3zkSiC74qNLYAJIYoe6Mf9xPgUgUoeiLZc3X+JIlFkSGnmi7augWPW pfXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=woUlzvZYxiDds8GHr/tVRs7PQOAjhJNoNcL+66lFYrk=; b=te9YmqKLZjB7iquAt/bt3YAYZe9qmPBneqdm+aC8uFcWBl0aML+0tS0K0ImolQ/+4D UCceYijlXavrzGXrCkyD77oyQPvSEeUehztgv8kS+JWKKzwsNbhsbdR+hjCfn4sch2rd gb5Ouxh1/5SA+xQYP5Lc0jd0jAk38R/Il5bokpaU963K4Ni5fmhMJRF5S80r8rFnTnsw CKCtFR76I36foBRYfTds7QxaGXW1VB4XwZ/cdBcscaWnVUtEVBYlpnm5XIxYOaMzBfUI GJ1NrIxYyluMxM8Ra0/glfCD0Al7DtlIhMpfxXXHummIMaNC2aSyhs9+UvHuAyETekTl InSA== X-Gm-Message-State: APzg51Du+Ta/miPuse5828jzpPXqm4zrTstVEiNatAQaOyTACyFd2OqE eFgFiBCBb8JFyNRydvwTLsd8hjZ6fVKwMXy8h2M= X-Google-Smtp-Source: ANB0VdY8INmHA/8i++w9z/TpkDIiIKeBmzO79sUItf96asrVRmc28frKu1LS6F7qA52DilsJ7laWA2dCGA43Mxesg9U= X-Received: by 2002:a9d:3f85:: with SMTP id r5-v6mr2121111otc.202.1536865782584; Thu, 13 Sep 2018 12:09:42 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a9d:540f:0:0:0:0:0 with HTTP; Thu, 13 Sep 2018 12:09:41 -0700 (PDT) In-Reply-To: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> From: Noam Postavsky Date: Thu, 13 Sep 2018 15:09:41 -0400 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) 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? 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) From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names 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: To: Noam Postavsky Cc: 32731@debbugs.gnu.org, Tino Calancha Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153686908513101 (code B ref 32731); Thu, 13 Sep 2018 20:05:01 +0000 Received: (at 32731) by debbugs.gnu.org; 13 Sep 2018 20:04:45 +0000 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 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 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) 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) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Fri, 14 Sep 2018 05:04:33 +0900 (JST) X-X-Sender: calancha@calancha-pc.dy.bbexcite.jp In-Reply-To: Message-ID: References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) 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 From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 13 Sep 2018 20:39:02 +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: To: Noam Postavsky Cc: 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153687113416411 (code B ref 32731); Thu, 13 Sep 2018 20:39:02 +0000 Received: (at 32731) by debbugs.gnu.org; 13 Sep 2018 20:38:54 +0000 Received: from localhost ([127.0.0.1]:39647 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0YO5-0004Gd-L5 for submit@debbugs.gnu.org; Thu, 13 Sep 2018 16:38:53 -0400 Received: from mail-wr1-f48.google.com ([209.85.221.48]:44515) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0YO3-0004GN-Rn for 32731@debbugs.gnu.org; Thu, 13 Sep 2018 16:38:52 -0400 Received: by mail-wr1-f48.google.com with SMTP id v16-v6so8000621wro.11 for <32731@debbugs.gnu.org>; Thu, 13 Sep 2018 13:38:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=gU7xGxistbj8x6+A33xWXJT2EtVXMDaGIoFbgWR2iUI=; b=HtbjGtHqTMux8z/ZuJ3N3V8BOiobOKA9OLyHpPCdmudhXV5ROXfJFHjBzgtIZbZYlA 7Fb13i7TFrdNtUIxJ0ePW5xtWsem6EksvIdeggLz4UrSFIlJQM4lLY+DIUtHInu6Wr+A D0kQXIfhI24wrxJxXIW3XgskXr/9Ml45dM/zLnpS+2A5jwMHLdgg1ZrmDBl5f5kWOlcZ XZb6gIoTwqtdosuf6ObMu5vl/R20WF7L8fK5ZWspEd2SWZ/gqKRGg3t+ZWATfcGUXLAS OiXugbGVxv8m0dYffp6PbBo1EQd9/9ZjbOPxEHqRqiQUKKDJF6Ij93AfHVSsiO8Lw4Jc +LVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=gU7xGxistbj8x6+A33xWXJT2EtVXMDaGIoFbgWR2iUI=; b=IgTnE1CiXm7cniTikK/tiH7LudCaAA+JphPIK4L2jPDkKaTC/RMuVlwlb7jXc1Cu0Y w6ZU/SkuEO65qvXGsDAXJUqyFRzp3Cp3oKhYp2MBZVv1Z7apLvR39tjvN4d6B/u5xb00 j0AVOeUaw7benuHGrNKrtytLYMzF9UXVZuslKaQpLv1mLs/S9S8mmhVxf5v8brS1IGek W0nfMJq0ARbKpWZ5Ew1jU6AQfzJ8Jpwa5dDqeN0IoaDLro+NVAHG75o4rEsPXAxbvr/9 0cHdoGP/PoD2APHmKoaTnnpTECNz+ctwjW8fuDccYwD45NM+v0eaI0t03z8qxHPqLYlY tj6Q== X-Gm-Message-State: APzg51BHwAH2VBIwBmeDXu+R8ylj/jfeuOz/pm9tkYWD1AhakqUVcDsN eGjM7MUsPzwpWP+0/IE6/7rkoawY X-Google-Smtp-Source: ANB0VdYqpnnCPjMaHEti/7YbtwlIRwijF36/C1P9au302x4bZ0D59WQyRgEk1zfWIEWydzAmWaFq3A== X-Received: by 2002:adf:b357:: with SMTP id k23-v6mr7205785wrd.207.1536871125618; Thu, 13 Sep 2018 13:38:45 -0700 (PDT) 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 r30-v6sm6678519wrc.90.2018.09.13.13.38.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 13 Sep 2018 13:38:44 -0700 (PDT) From: Tino Calancha References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> Date: Fri, 14 Sep 2018 05:38:39 +0900 In-Reply-To: (Noam Postavsky's message of "Thu, 13 Sep 2018 15:09:41 -0400") Message-ID: <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Noam Postavsky writes: > This will use completion only for the first mode, right? Perhaps > completing-read-multiple would make more sense here. This is very nice suggestion! I never used this nice defun before! (`completing-read-multiple') > 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) I tried this way and I see 2 nits: 1) With just one mode you still get superflous `or' [OR [major mode in use: mode1]] 2) Also, with just one mode, we miss the printout message with the description: "Filter by major mode in use added: mode1" Less important but `define-ibuffer-filter' performs some checks (there is a `condition-case'). Following is a patch on top of previous patch with all your suggestions: --8<-----------------------------cut here---------------start------------->8--- commit 5a0657d2d06dd495090d49fae477dbc624b1c85b Author: Tino Calancha Date: Fri Sep 14 05:22:32 2018 +0900 Use completing-read-multiple * lisp/ibuf-ext.el (ibuffer-filter-by-used-modes): Construct teh filter by hand, instead of callig `completing-read-multiple'. diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index b7c3ae8030..f2f9ce8bce 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1277,21 +1277,16 @@ ibuffer-filter-by-used-modes '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))))) + (completing-read-multiple + (if default + (format "Filter by major mode (default %s): " default) + "Filter by major mode: ") + (ibuffer-list-buffer-modes) + nil t nil nil nil default))))) (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) - (ibuffer-or-filter)))) + (push `(or ,@(mapcar (lambda (m) `(used-mode . ,m)) modes)) + ibuffer-filtering-qualifiers) + (ibuffer-update nil t)) ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode --8<-----------------------------cut here---------------end--------------->8--- Next one just use `completing-read-multiple' (keeps calling `'ibuffer-filter-by-used-mode'); I prefer this one: --8<-----------------------------cut here---------------start------------->8--- commit af9471040740d351208da7bc929219b291674d67 Author: Tino Calancha Date: Fri Sep 14 05:36:35 2018 +0900 Ibuffer filter by modes: Accept several mode names Extend mode filters so that we can input more than 1 mode. For instance, if we want to filter all buffers in C or C++ mode, then we can call the filter interactively with input: 'c-mode,c++-mode'. * lisp/ibuf-ext.el (ibuffer-filter-by-used-modes): New command. Accept a list of mode names (symbols). Interactively, accept a comma separated list of mode names. * lisp/ibuffer.el(ibuffer-mode-map): Rebind '/ m' to the new command. * etc/NEWS(Ibuffer): Announce this change. Co-authored-by: Noam Postavsky diff --git a/etc/NEWS b/etc/NEWS index a54ac2db43..6ef6f20b05 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -48,6 +48,11 @@ often cause crashes. Set it to nil if you really need those fonts. ** Ibuffer --- +*** The new command 'ibuffer-filter-by-used-modes', bound +to '/ m', extends 'ibuffer-filter-by-used-mode'; it makes easy +filtering buffers by a list of major modes. + +--- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Imenu diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index a3143e5e29..048d0bc126 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1265,6 +1265,32 @@ used-mode (ibuffer-list-buffer-modes) nil t nil nil default)))) (eq qualifier (buffer-local-value 'major-mode buf))) +;;;###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 + (completing-read-multiple + (if default + (format "Filter by major mode (default %s): " default) + "Filter by major mode: ") + (ibuffer-list-buffer-modes) + nil t nil nil nil default))))) + (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) + (ibuffer-or-filter)))) + ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode "Limit current view to buffers whose major mode inherits from QUALIFIER." diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 08b0801cb5..f7c20d0da3 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -519,7 +519,7 @@ ibuffer-mode-map (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode) (define-key map (kbd "/ RET") 'ibuffer-filter-by-mode) - (define-key map (kbd "/ m") 'ibuffer-filter-by-used-mode) + (define-key map (kbd "/ m") 'ibuffer-filter-by-used-modes) (define-key map (kbd "/ M") 'ibuffer-filter-by-derived-mode) (define-key map (kbd "/ n") 'ibuffer-filter-by-name) (define-key map (kbd "/ *") 'ibuffer-filter-by-starred-name) --8<-----------------------------cut here---------------end--------------->8--- From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 13 Sep 2018 23:40:02 +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: To: Tino Calancha Cc: 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153688196710010 (code B ref 32731); Thu, 13 Sep 2018 23:40:02 +0000 Received: (at 32731) by debbugs.gnu.org; 13 Sep 2018 23:39:27 +0000 Received: from localhost ([127.0.0.1]:39804 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0bCo-0002bO-Oj for submit@debbugs.gnu.org; Thu, 13 Sep 2018 19:39:26 -0400 Received: from mail-it0-f46.google.com ([209.85.214.46]:40205) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0bCn-0002b9-Cm for 32731@debbugs.gnu.org; Thu, 13 Sep 2018 19:39:25 -0400 Received: by mail-it0-f46.google.com with SMTP id h23-v6so290691ita.5 for <32731@debbugs.gnu.org>; Thu, 13 Sep 2018 16:39:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=5SjIPA0+ZJk86zkOd5q8S7tm2fqHL5pnuD9aA8LzzKI=; b=gqFPGlohY1USQ75YuWnXJEJ7qWdUaGdByHniFChsbthaiqbme44z28rdYhhNjwmZxW u8NmNqRcWeKJdNnmv44qca27+M7pYJ5jayxOr0ljhKReCt+Qlo+UnM8SVijJkQEe7r7a +szCJtJj+GxW+Dy1hfXf2yuiNx6lAs9E7z567oFPDubCFee32s7YnZXpkSD996r3s7CU yalqx6Ll2SZT1v0orcTqkxnHX+GwhX4A0XEBWi4OzG2pAZOzJBdg0UrXy51dz4H5Ow3S 9d8zaZhcguPwRnlnKGNcBm5I7NNbYffDxWo9r8Ol5unZUZyPjPUB83EwiaX3UWmcbZTK sQ3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=5SjIPA0+ZJk86zkOd5q8S7tm2fqHL5pnuD9aA8LzzKI=; b=mkwt1hiscNN9RCOuE9M39XtI9XV28LBLEoB/ehcPEin7ZVNUlBuDspyk4cFftWr5zr ARR8iQePdl9eYdYfKeiijV1XRiTGHlcFskeKm9x1llZUMTvaWfWSQNCFxFeyhxsUXNf1 6eP/PISdElpx0F+wKAbwTI5XOdFHmHdLFHSHK4VpYrX7jRClDIGqrMK71w9yUCFRznN6 0hO4WXfSdZBpgjby0uFdUE3mjbicwayF9ep3nsAlsj3SyM+gk1VP2t+CodT1oThb2pwx 1ujqJMuV05+Nr2D0l5aj66LpNxHG6JwIUcKOJSFeZ06xv8d84cU1RTNsX0wZdwcNVRfP l8Wg== X-Gm-Message-State: APzg51CSyRphYkqu7PGpn4gP3Z1f4bMWtyyj/4aYKhQPkX2OCIXTSI3l MpMusdjdQr3b1bs1bAuxtBiLg5cZ X-Google-Smtp-Source: ANB0Vdamwn8EcTY3o7tMl+5+TyfuD3FhlmgGncQgopGKk0Si8l43RoiWlaNad6tMUVYy/IR2KFt2Ag== X-Received: by 2002:a24:255:: with SMTP id 82-v6mr334601itu.144.1536881959637; Thu, 13 Sep 2018 16:39:19 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id u5-v6sm1708006ioc.85.2018.09.13.16.39.18 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 13 Sep 2018 16:39:18 -0700 (PDT) From: Noam Postavsky References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> Date: Thu, 13 Sep 2018 19:39:17 -0400 In-Reply-To: <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> (Tino Calancha's message of "Fri, 14 Sep 2018 05:38:39 +0900") Message-ID: <87ftydezmi.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Tino Calancha writes: >> 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) > I tried this way and I see 2 nits: > 1) With just one mode you still get superflous `or' > [OR [major mode in use: mode1]] > > 2) Also, with just one mode, we miss the printout message > with the description: > "Filter by major mode in use added: mode1" Yeah, we need special cases for lists of zero and one modes. > Less important but `define-ibuffer-filter' performs some checks > (there is a `condition-case'). The condition-case thing is in a lambda form which goes into ibuffer-filtering-alist, so I don't think there is a need to explicitly invoke it when constructing a filter of an existing type. > Next one just use `completing-read-multiple' (keeps calling > `'ibuffer-filter-by-used-mode'); I prefer this one: I would be okay if it was just a matter of repeated ibuffer-filter-* calls, but the fact that it produces error messages which then need to be hidden makes it unacceptable, IMO. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 15 Sep 2018 09:16: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: To: Noam Postavsky Cc: 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15370029341682 (code B ref 32731); Sat, 15 Sep 2018 09:16:01 +0000 Received: (at 32731) by debbugs.gnu.org; 15 Sep 2018 09:15:34 +0000 Received: from localhost ([127.0.0.1]:41109 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g16ft-0000R3-O8 for submit@debbugs.gnu.org; Sat, 15 Sep 2018 05:15:34 -0400 Received: from mail-wr1-f47.google.com ([209.85.221.47]:41841) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g16fq-0000Ql-It for 32731@debbugs.gnu.org; Sat, 15 Sep 2018 05:15:31 -0400 Received: by mail-wr1-f47.google.com with SMTP id z96-v6so12694379wrb.8 for <32731@debbugs.gnu.org>; Sat, 15 Sep 2018 02:15:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=3+gTKl0hkdEmcAXdnLqo6Ze0FYC9KWcI/zrKJXOzjoM=; b=jFIuA94t2/NLxTiSvDqzpVFhvMYe8PiBYxQolZdIFI5AQeS8OYCMtikeIBCNQ+mZoM 5scAfA1OUavORyn1LXRhvg67LBY1BP6hPvmNV3fjqC7gjU4k4xkXTjRe78us1+5IFenp 7xzb36kGnyYqPwrwkwN1sU4vPpVYV1gJLDlg1Ov7yEdXpxUsC0tVV4FbtEmZm3B17s+b N65+sijih6EW1RXIyDmRjuU/3pbzOdaxRws0DqxkLBulTdUjBhEfzei7Py4jEkVOw7dm S8+SW9LrtcYheKB7iLuUgT3uWNFM5xtVino5xAbcTXuRxue58rNMB1e+y7j3GZ2d9dl+ K5yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=3+gTKl0hkdEmcAXdnLqo6Ze0FYC9KWcI/zrKJXOzjoM=; b=b6/KWRxMvkpuVKr3Ae+qZy/5vGHJTppo1uT4oKFhZGnTdiMXbN3sTKGCiuLh/ONlMK TW6TS49ARnCgUC5pbS579nmvvIyOGm618hZa8y6HSkEWyLneZNOcVXH9DGIYp7csY8xd aOXYT6pNxBpT9865Oe1JLtJ+gCrF5rG7scrTV3ZCBJVVzbWQj2RimCbMii3oFGD/o1pe EYTJtb2ntLxSejqzoU4xopb/EPx2zGUwQP4qI5kHh4WLGSrWmdVJRn2cu7WKSQbr3Qu+ PW5QnaE2xLJWtPZV7SFHQurEItALlrqOOIxx2lWicjqz1x35Ecy2AxqDCwWXYWDclDrv OGzg== X-Gm-Message-State: APzg51Doo4x2XvEqMOZfiCdx52IKvOGb1UAsehH119MfSteYV9Ws5fr5 7gBlR5Do60pfvT+4uZ0lDcyxNoay X-Google-Smtp-Source: ANB0Vdb8Rk2lo5xmrbnuTYfNZ+488vDdZtLujDc2rLFTM/Ufw+ZUZbERDBjU8Jaojpbc4RvSulA0cQ== X-Received: by 2002:adf:9ae5:: with SMTP id a92-v6mr13224496wrc.125.1537002924348; Sat, 15 Sep 2018 02:15:24 -0700 (PDT) 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 i4-v6sm6893226wrs.85.2018.09.15.02.15.23 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 15 Sep 2018 02:15:23 -0700 (PDT) From: Tino Calancha References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> Date: Sat, 15 Sep 2018 18:15:18 +0900 In-Reply-To: <87ftydezmi.fsf@gmail.com> (Noam Postavsky's message of "Thu, 13 Sep 2018 19:39:17 -0400") Message-ID: <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Noam Postavsky writes: > Tino Calancha writes: > > Yeah, we need special cases for lists of zero and one modes. No problem. >> Less important but `define-ibuffer-filter' performs some checks >> (there is a `condition-case'). > > The condition-case thing is in a lambda form which goes into > ibuffer-filtering-alist, so I don't think there is a need to explicitly > invoke it when constructing a filter of an existing type. Absolutely. Sorry for the noise. >> Next one just use `completing-read-multiple' (keeps calling >> `'ibuffer-filter-by-used-mode'); I prefer this one: > > I would be okay if it was just a matter of repeated ibuffer-filter-* > calls, but the fact that it produces error messages which then need to > be hidden makes it unacceptable, IMO. I agree with you: those messages must not be produced. BTW, I've noticed following commit is missing in the release branch: 'Make ibuffer filters idempotent' (ee6fe8378a28444cb4913abca4af742f736e9b45) I suggest we backport it. Then, I am OK with the next patch (which uses that commit): --8<-----------------------------cut here---------------start------------->8--- commit c60a9bb36d4d4092866f36d1d8b246b79c1a2fd8 Author: Tino Calancha Date: Sat Sep 15 18:01:14 2018 +0900 Ibuffer filter by modes: Accept several mode names Extend mode filters so that we can input more than 1 mode. For instance, if we want to filter all buffers in C or C++ mode, then we can call the filter interactively with input: 'c-mode,c++-mode'. * lisp/ibuf-ext.el (ibuffer-filter-by-used-modes): New command. Accept a list of mode names (symbols). Interactively, accept a comma separated list of mode names. * lisp/ibuffer.el(ibuffer-mode-map): Rebind '/ m' to the new command. * etc/NEWS(Ibuffer): Announce this change. Co-authored-by: Noam Postavsky diff --git a/etc/NEWS b/etc/NEWS index a54ac2db43..6ef6f20b05 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -48,6 +48,11 @@ often cause crashes. Set it to nil if you really need those fonts. ** Ibuffer --- +*** The new command 'ibuffer-filter-by-used-modes', bound +to '/ m', extends 'ibuffer-filter-by-used-mode'; it makes easy +filtering buffers by a list of major modes. + +--- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Imenu diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index a3143e5e29..7094ae2674 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1265,6 +1265,35 @@ used-mode (ibuffer-list-buffer-modes) nil t nil nil default)))) (eq qualifier (buffer-local-value 'major-mode buf))) +;;;###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 + (completing-read-multiple + (if default + (format "Filter by major mode (default %s): " default) + "Filter by major mode: ") + (ibuffer-list-buffer-modes) + nil t nil nil default))))) + ;; Sort to avoid adding filter (or mode2 mode1) once we have (or mode1 mode2) + (setq modes (sort (delete-dups modes) #'string-lessp)) + (cond ((null (cdr modes)) (ibuffer-filter-by-used-mode (car modes))) + (t (let ((composed-filter + `(or ,@(mapcar (lambda (m) `(used-mode . ,m)) modes))) + (mode-names (mapconcat #'symbol-name modes ","))) + (if (null (ibuffer-push-filter composed-filter)) + (message "Filter by mode in use already applied: %s" mode-names) + (message "Filter by mode in use added: %s" mode-names) + (ibuffer-update nil t)))))) + ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode "Limit current view to buffers whose major mode inherits from QUALIFIER." diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 08b0801cb5..f7c20d0da3 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -519,7 +519,7 @@ ibuffer-mode-map (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode) (define-key map (kbd "/ RET") 'ibuffer-filter-by-mode) - (define-key map (kbd "/ m") 'ibuffer-filter-by-used-mode) + (define-key map (kbd "/ m") 'ibuffer-filter-by-used-modes) (define-key map (kbd "/ M") 'ibuffer-filter-by-derived-mode) (define-key map (kbd "/ n") 'ibuffer-filter-by-name) (define-key map (kbd "/ *") 'ibuffer-filter-by-starred-name) --8<-----------------------------cut here---------------end--------------->8--- In GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) Repository revision: 41cdda22c78eb0b00612ce25cdb356dd64322fcc From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 15 Sep 2018 12:44: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: To: Tino Calancha Cc: 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153701538730074 (code B ref 32731); Sat, 15 Sep 2018 12:44:01 +0000 Received: (at 32731) by debbugs.gnu.org; 15 Sep 2018 12:43:07 +0000 Received: from localhost ([127.0.0.1]:41171 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g19ul-0007p0-CC for submit@debbugs.gnu.org; Sat, 15 Sep 2018 08:43:07 -0400 Received: from mail-io1-f49.google.com ([209.85.166.49]:43349) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g19uj-0007oV-JL for 32731@debbugs.gnu.org; Sat, 15 Sep 2018 08:43:06 -0400 Received: by mail-io1-f49.google.com with SMTP id y10-v6so8082948ioa.10 for <32731@debbugs.gnu.org>; Sat, 15 Sep 2018 05:43:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version; bh=vLk0xXrxBUVZwYOe2900cDsw6U4M18p3y0dM14bplRU=; b=nAEF2IeINLnqD98sVsti3/sGQ49PSU7edLZVVwmPgB5y28qoVpbiZ+dqbnRWkoW9W8 7L6txcBVJcbUl+GBbUHYem+ptlQN7kkn5YPDsw5pZ5jrmV2fdquwcup+8+60K1v+XxKe PWmSZYqavZ4ANGK4u4vrNG2dra8d+kpYMkGPQViI1/nY/TIKOYBRGwzDz76Xd7WpoF3c elNbjWrmTaKljYGmIYBDzVA39WLccparjCPOrahdq3rZnLjWMiX3YVixVAVkmq5gKZWp JnYra5G9/n7Gx88T54AesByUcABJNrtdqzYwLF/W27DFh/3tCp4O9mn16JbcfC0xSEX7 1FsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references :user-agent:date:message-id:mime-version; bh=vLk0xXrxBUVZwYOe2900cDsw6U4M18p3y0dM14bplRU=; b=qlSPr2Tevu2E1K2MO3ohLy6Fn88ZKnZ10gC5OAPbqrxA8E7J4bym2nvNNGAy5sId0m njeLdeFqeGn3STqrxbZSq0fg2A9RX5f8vJ7obfcsKJW8RRryGpgSeHUarrKVakFa3f/J e92YBUZXng75UCulGmMXn/3gTLfDf/XYyQ0klvwOHzi/zlSeWFmhqfOcEEY1NV6e3yos FusjaH9RJpvpyJuGukmJUoB5vshoQDnEcgo5VxPTekLtaO6o6CWxftFwykWSBXw5i1ea t/eW6Uyrv7g4FwAFGXsy0zqiINuuUFGzTH/ZdSWyO0Wlnk6/zGszdGppFHjEjzjAMhdj DpDg== X-Gm-Message-State: APzg51C50Y5W5yA71QKA2OD6UIsL3bd5qVnrUkxu1z38hoDckuVl4o8M MfBuFLaTEpWJ9GT89sG6E9PqO8H2 X-Google-Smtp-Source: ANB0Vda+FPPsQq73QZLSZ4K/BdBSa8CbZBB5EfJGTpaYgswinTRZpYiB1Py9EjF64OcW87n9lbwCSw== X-Received: by 2002:a6b:1706:: with SMTP id 6-v6mr14896473iox.58.1537015379836; Sat, 15 Sep 2018 05:42:59 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id x68-v6sm1352560ita.2.2018.09.15.05.42.58 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 15 Sep 2018 05:42:59 -0700 (PDT) From: Noam Postavsky In-Reply-To: <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> (Tino Calancha's message of "Sat, 15 Sep 2018 18:15:18 +0900") References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) Date: Sat, 15 Sep 2018 08:42:54 -0400 Message-ID: <878t43rkxd.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Tino Calancha writes: > BTW, I've noticed following commit is missing in the release branch: > 'Make ibuffer filters idempotent' > (ee6fe8378a28444cb4913abca4af742f736e9b45) > > I suggest we backport it. > Then, I am OK with the next patch (which uses that commit): Shouldn't this patch be going into master anyway (since it's adding a new feature)? > + (cond ((null (cdr modes)) (ibuffer-filter-by-used-mode (car modes))) > + (t (let ((composed-filter We should handle the (null modes) case too, but otherwise looks good to me. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 17 Sep 2018 17:45: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: To: Noam Postavsky Cc: 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15372062859987 (code B ref 32731); Mon, 17 Sep 2018 17:45:01 +0000 Received: (at 32731) by debbugs.gnu.org; 17 Sep 2018 17:44:45 +0000 Received: from localhost ([127.0.0.1]:43332 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g1xZk-0002b0-HN for submit@debbugs.gnu.org; Mon, 17 Sep 2018 13:44:44 -0400 Received: from mail-wr1-f53.google.com ([209.85.221.53]:42113) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g1xZi-0002am-0P for 32731@debbugs.gnu.org; Mon, 17 Sep 2018 13:44:42 -0400 Received: by mail-wr1-f53.google.com with SMTP id v17-v6so18203473wrr.9 for <32731@debbugs.gnu.org>; Mon, 17 Sep 2018 10:44:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=WeIq6JU/1YbX86IjSN2lFRm0J1STII5R/KO4UTGUTuk=; b=HkC1DWY2xYDBqlESgnsp+a2MmpFkibsOzgkKccNP5tzzeRI4Yx1rmXgaYvz3iHEF2t L1+L6b27L5krAB7Aa+5NmRlUOrdntqOisjFALMIvj34MA6cAred7ycxiqS/3PEX2sPss Gar3D0+NQF94Stp3EQkqL02lD4xjlR/k6cX4+P6tQ3rb5guH7/76a7htx28HN7hg+pBH RHrwAvjT22qnPRi1fxUjjz4DIoIDPb5PYCs0j4whxnh13+kpoCDShQ7UQ6+3qWNOi//+ sZCLeNuKQZAvGHh4wIwXuYr2eArlJEZbIYHN4lgQs88Tz/3FmT3txG0DY3W3oDDauUU5 fztA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=WeIq6JU/1YbX86IjSN2lFRm0J1STII5R/KO4UTGUTuk=; b=CCFpwUKgtdxiTnzpLWF6jeFdDBn4hWpsofSM3M0rDsoXQP8gIqe7l5/d/szk+9nTXt R07/UwvJNrBPArDUJLMObb0kPfnnBYfHUQIPl9UVwWsZU219XTdE1CW7aYrsvyoWSbO3 N/J74LEwm3yqMLozQSdqdeLsF43dEAcywWPH9L4Il3RspSyIdbIx7hYRpHZi7ZfeyaQd 80Kbv8F8xcriq+VQLn05LzqXRvUJ1votXIj6pwhT4YwOEQOPTRLMYB8DDVPjU6Wx3ZLq /vi6a1mD+A42OSZIwLapS1BhwRkni4tOAVIcMu1x8POBXMXxj/mtnBsDzVNkOtwRELip GUCg== X-Gm-Message-State: APzg51BI4P5WfEb1+goqe3Lxs/R/JJODko9BEkn6rCObPQVe7BUvKIKE ELIDr6x+vK/PclmkP6LAR0eXxW+h X-Google-Smtp-Source: ANB0VdYUxI/MHa5wG14MhEJejQ8MqqcqUv9JpZZrSejSEz//k0kO5xV3BZP+SS1ZXpJOOUAf589Amg== X-Received: by 2002:adf:e1c5:: with SMTP id l5-v6mr20619886wri.36.1537206274620; Mon, 17 Sep 2018 10:44:34 -0700 (PDT) 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 y184-v6sm7261889wmg.17.2018.09.17.10.44.33 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 Sep 2018 10:44:33 -0700 (PDT) From: Tino Calancha References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> Date: Tue, 18 Sep 2018 02:44:28 +0900 In-Reply-To: <878t43rkxd.fsf@gmail.com> (Noam Postavsky's message of "Sat, 15 Sep 2018 08:42:54 -0400") Message-ID: <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Noam Postavsky writes: >Shouldn't this patch be going into master anyway (since it's adding a >new feature)? I think is pretty tiny and safe new feature. We can ask Eli anyway [probably he is reading this right now :-)] >> + (cond ((null (cdr modes)) (ibuffer-filter-by-used-mode (car modes))) >> + (t (let ((composed-filter > > We should handle the (null modes) case too, but otherwise looks good to > me. Yeah, that's right. * I don't like much such new function `ibuffer-filter-by-used-modes': isn't it better that `ibuffer-filter-by-used-mode' handles both inputs? * Why just 'used modes' and not the other 2 mode filters benefit from this feature? Because I just use that filter, i.e. '/ m'. A bit selfish. Please take a look in following patch. * It allows filtering by >1 mode with the 3 mode filters. * It moves most of the code inside the macro `define-ibuffer-filter'; no need to add new functions. --8<-----------------------------cut here---------------start------------->8--- commit 2079d7b656cef1e1d2c03f3c7e0c93ec135f348d Author: Tino Calancha Date: Tue Sep 18 02:19:54 2018 +0900 Ibuffer filter by modes: Accept several mode names Extend all mode filters so that they handle >1 mode. For instance, if the user wants to filter all buffers in C or C++ mode, then s?he can call the filter interactively with input: 'c-mode,c++-mode'. * lisp/ibuf-ext.el (ibuffer-filter-by-used-mode) (ibuffer-filter-by-mode, ibuffer-filter-by-derived-mode) Accept a mode name or a list of mode names. Interactively, accept a comma separated list of mode names. * lisp/ibuf-macs.el(define-ibuffer-filter): Adjust it to handle QUALIFIER been a list of symbols. * etc/NEWS(Ibuffer): Announce this change. Co-authored-by: Noam Postavsky diff --git a/etc/NEWS b/etc/NEWS index fa93112c91..43d9a38b91 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -62,6 +62,10 @@ to reduce differences between developer and production builds. ** Ibuffer --- +*** All mode filters accept a symbol or a list of symbols, i.e., you +can filter several major modes with easy. + +--- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Gnus diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index d9949d2835..2b0292f2de 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1228,28 +1228,33 @@ ibuffer-list-buffer-modes ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext") (define-ibuffer-filter mode - "Limit current view to buffers with major mode QUALIFIER." + "Limit current view to buffers with major mode in QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. +Called interactively, accept a comma separated list of mode names." (:description "major mode" :reader (let* ((buf (ibuffer-current-buffer)) (default (if (and buf (buffer-live-p buf)) (symbol-name (buffer-local-value 'major-mode buf))))) - (intern - (completing-read + (mapcar #'intern + (completing-read-multiple (if default (format "Filter by major mode (default %s): " default) "Filter by major mode: ") obarray - #'(lambda (e) - (string-match "-mode\\'" (symbol-name e))) + (lambda (e) + (string-match "-mode\\'" (if (symbolp e) (symbol-name e) e))) t nil nil default)))) (eq qualifier (buffer-local-value 'major-mode buf))) ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") (define-ibuffer-filter used-mode - "Limit current view to buffers with major mode QUALIFIER. -Called interactively, this function allows selection of modes + "Limit current view to buffers with major mode in QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. + +Called interactively, accept a comma separated list of mode names. +When called interactively, this function allows selection of modes currently used by buffers." (:description "major mode in use" :reader @@ -1257,8 +1262,8 @@ used-mode (default (if (and buf (buffer-live-p buf)) (symbol-name (buffer-local-value 'major-mode buf))))) - (intern - (completing-read + (mapcar #'intern + (completing-read-multiple (if default (format "Filter by major mode (default %s): " default) "Filter by major mode: ") @@ -1267,11 +1272,13 @@ used-mode ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode - "Limit current view to buffers whose major mode inherits from QUALIFIER." + "Limit current view to buffers whose major mode inherits from QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. +Called interactively, accept a comma separated list of mode names." (:description "derived mode" :reader - (intern - (completing-read "Filter by derived mode: " + (mapcar #'intern + (completing-read-multiple "Filter by derived mode: " (ibuffer-list-buffer-modes t) nil t))) (with-current-buffer buf (derived-mode-p qualifier))) diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el index 6a70a8341a..7893ec9cae 100644 --- a/lisp/ibuf-macs.el +++ b/lisp/ibuf-macs.el @@ -296,21 +296,34 @@ ibuffer-save-marks \(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" (declare (indent 2) (doc-string 2)) - (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name))))) + (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name)))) + (filter (make-symbol "ibuffer-filter")) + (qualifier-str (make-symbol "ibuffer-qualifier-str"))) `(progn (defun ,fn-name (qualifier) ,(or documentation "This filter is not documented.") (interactive (list ,reader)) - (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))) + (let ((,filter (cons ',name qualifier)) + (,qualifier-str qualifier)) + ;; The mode filters accept one symbol or a list of symbols; if the + ;; user inputs >1 mode, compose the individual filters with `or'. + ,(when (memq name (list 'mode 'used-mode 'derived-mode)) + `(progn + (unless (listp qualifier) (setq qualifier (list qualifier))) + ;; Reject equivalent filters: (or m1 m2) is same as (or m2 m1). + (setq qualifier (sort (delete-dups qualifier) #'string-lessp)) + (setq ,filter (cons ',name (car qualifier))) + (setq ,qualifier-str + (mapconcat (lambda (m) (if (symbolp m) (symbol-name m) m)) + qualifier ",")) + (when (cdr qualifier) + (setq ,filter `(or ,@(mapcar (lambda (m) (cons ',name m)) qualifier)))))) + (if (null (ibuffer-push-filter ,filter)) + (message ,(format "Filter by %s already applied: %%s" description) + ,qualifier-str) + (message ,(format "Filter by %s added: %%s" description) + ,qualifier-str) + (ibuffer-update nil t)))) (push (list ',name ,description (lambda (buf qualifier) (condition-case nil --8<-----------------------------cut here---------------end--------------->8--- From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 17 Sep 2018 18:28:02 +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: To: Tino Calancha Cc: npostavs@gmail.com, 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153720885914176 (code B ref 32731); Mon, 17 Sep 2018 18:28:02 +0000 Received: (at 32731) by debbugs.gnu.org; 17 Sep 2018 18:27:39 +0000 Received: from localhost ([127.0.0.1]:43346 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g1yFH-0003ga-JS for submit@debbugs.gnu.org; Mon, 17 Sep 2018 14:27:39 -0400 Received: from eggs.gnu.org ([208.118.235.92]:39357) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g1yFG-0003gL-E4 for 32731@debbugs.gnu.org; Mon, 17 Sep 2018 14:27:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g1yF8-0005Wl-3K for 32731@debbugs.gnu.org; Mon, 17 Sep 2018 14:27:33 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55211) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g1yF7-0005Wa-VR; Mon, 17 Sep 2018 14:27:30 -0400 Received: from [176.228.60.248] (port=3426 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1g1yF7-0000yP-IN; Mon, 17 Sep 2018 14:27:29 -0400 Date: Mon, 17 Sep 2018 21:27:27 +0300 Message-Id: <83h8iogesw.fsf@gnu.org> From: Eli Zaretskii In-reply-to: <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> (message from Tino Calancha on Tue, 18 Sep 2018 02:44:28 +0900) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Tino Calancha > Date: Tue, 18 Sep 2018 02:44:28 +0900 > Cc: 32731@debbugs.gnu.org > > Noam Postavsky writes: > > >Shouldn't this patch be going into master anyway (since it's adding a > >new feature)? > I think is pretty tiny and safe new feature. "Tiny and safe feature" doesn't necessarily cut it. It has to be something important. Is it? From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 17 Sep 2018 19:55:02 +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: To: Eli Zaretskii Cc: 32731@debbugs.gnu.org, npostavs@gmail.com, Tino Calancha Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153721404823511 (code B ref 32731); Mon, 17 Sep 2018 19:55:02 +0000 Received: (at 32731) by debbugs.gnu.org; 17 Sep 2018 19:54:08 +0000 Received: from localhost ([127.0.0.1]:43390 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g1zay-000679-JF for submit@debbugs.gnu.org; Mon, 17 Sep 2018 15:54:08 -0400 Received: from mail-wr1-f43.google.com ([209.85.221.43]:38120) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g1zax-00066d-0x for 32731@debbugs.gnu.org; Mon, 17 Sep 2018 15:54:07 -0400 Received: by mail-wr1-f43.google.com with SMTP id w11-v6so18576443wrc.5 for <32731@debbugs.gnu.org>; Mon, 17 Sep 2018 12:54:06 -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=00NbpY9DP6lqRUgAUntg/MLebWJ7C1ayENZ96izIPtY=; b=jO6vGwb181bTQPQajTEiEhM56eeGWr3uyiUJ6NHDjthWi7deD1ejQ4kGhTyUfLUjvS 8k94OeXpBLIRuZRoyjYoKYe/hzfWq8VUWgr90l8TTRdOmbeS2rdoh+tiZmMyCEAG1/IV oDQkRp4zfCoAJ/CRSxwKeAXoywcPU9d01mazaBrHWfZWOH+Q3219776zrBwI3aODW4qC ZOiBx58ijXs5LC1fPCR4jfo25PtdlgIP3P1us9V44c+h5ye+FxbBZapqGs96oENKOCJI WZ0LxAaIoi8X7q9cj1N9tOSYv7b1/XX2rMP+fKRM4gwP5etnnQNT6l9YUGV4dPr8x8WG G6GA== 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=00NbpY9DP6lqRUgAUntg/MLebWJ7C1ayENZ96izIPtY=; b=QLaXA0UMk55/NGtvPiXHrx9rY0CzdExiPpgPLwyQSHfnFOf+9C52UPaTybYQBZIXJs 9oNmiZZTfhLm0KpoVuXZuqo1A7TR958f8AftifVEztwdPS42a1VenHmzHGIr+8vFdaoD ju/JosiTdxlV7itrjokCHfKEYKpkhGG8S8ypuxQ5ZtMqJXRnwVf2UtS0srYcnClqQgSR BfvsfBrjlSeplnzmZp9jgPV9EIfJjHQrtXyV/5Mch75Ieeu49hzLCxbUopVPukKRP+6F RnM5n5IeBJJKxW3Er8ZOE8Gj9wzR8W+S5LtKvF6tMoxHXRga6HUkTuqF2XGHOB2liIEa roEQ== X-Gm-Message-State: APzg51DuqH5C2q98eFYhJVIrDw+7ozBgYEpT0zLanQ3B9yIg/ByFEdPi xCRD40QG+2O2CzDNW6E2jPQ= X-Google-Smtp-Source: ANB0VdYmPuEWdGRjLWTbmMD+OUhMGvD5c/LKafWTAoswCFt80g0W/LDR9a5QE6FE96M6l3kxOENbrw== X-Received: by 2002:a5d:6150:: with SMTP id y16-v6mr20977621wrt.141.1537214041060; Mon, 17 Sep 2018 12:54:01 -0700 (PDT) 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 n11-v6sm18095222wra.26.2018.09.17.12.53.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Sep 2018 12:54:00 -0700 (PDT) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Tue, 18 Sep 2018 04:53:56 +0900 (JST) X-X-Sender: calancha@calancha-pc.dy.bbexcite.jp In-Reply-To: <83h8iogesw.fsf@gnu.org> Message-ID: References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <83h8iogesw.fsf@gnu.org> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, 17 Sep 2018, Eli Zaretskii wrote: >> From: Tino Calancha >> Date: Tue, 18 Sep 2018 02:44:28 +0900 >> Cc: 32731@debbugs.gnu.org >> >> Noam Postavsky writes: >> >>> Shouldn't this patch be going into master anyway (since it's adding a >>> new feature)? >> I think is pretty tiny and safe new feature. > > "Tiny and safe feature" doesn't necessarily cut it. It has to be > something important. Is it? It's not important; just for convenience. It doesn't bring anything new: you can get the same result just typing more keys. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 18 Sep 2018 07:15:02 +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: To: Tino Calancha Cc: npostavs@gmail.com, 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153725487217351 (code B ref 32731); Tue, 18 Sep 2018 07:15:02 +0000 Received: (at 32731) by debbugs.gnu.org; 18 Sep 2018 07:14:32 +0000 Received: from localhost ([127.0.0.1]:43574 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2ADP-0004Vn-RI for submit@debbugs.gnu.org; Tue, 18 Sep 2018 03:14:32 -0400 Received: from eggs.gnu.org ([208.118.235.92]:51647) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2ADO-0004Vb-51 for 32731@debbugs.gnu.org; Tue, 18 Sep 2018 03:14:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g2ADF-0002x1-QH for 32731@debbugs.gnu.org; Tue, 18 Sep 2018 03:14:24 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38663) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g2ADF-0002wx-LN; Tue, 18 Sep 2018 03:14:21 -0400 Received: from [176.228.60.248] (port=4212 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1g2ADF-0001JM-9P; Tue, 18 Sep 2018 03:14:21 -0400 Date: Tue, 18 Sep 2018 10:14:19 +0300 Message-Id: <83bm8vgtv8.fsf@gnu.org> From: Eli Zaretskii In-reply-to: (message from Tino Calancha on Tue, 18 Sep 2018 04:53:56 +0900 (JST)) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <83h8iogesw.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Tino Calancha > Date: Tue, 18 Sep 2018 04:53:56 +0900 (JST) > cc: Tino Calancha , npostavs@gmail.com, > 32731@debbugs.gnu.org > > >> Noam Postavsky writes: > >> > >>> Shouldn't this patch be going into master anyway (since it's adding a > >>> new feature)? > >> I think is pretty tiny and safe new feature. > > > > "Tiny and safe feature" doesn't necessarily cut it. It has to be > > something important. Is it? > It's not important; just for convenience. > It doesn't bring anything new: you can get the same result just typing > more keys. Then I think we had better put it on master. Thanks. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 18 Sep 2018 23:20: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: To: Tino Calancha Cc: 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153731278430590 (code B ref 32731); Tue, 18 Sep 2018 23:20:01 +0000 Received: (at 32731) by debbugs.gnu.org; 18 Sep 2018 23:19:44 +0000 Received: from localhost ([127.0.0.1]:44885 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2PHU-0007xK-Cq for submit@debbugs.gnu.org; Tue, 18 Sep 2018 19:19:44 -0400 Received: from mail-it0-f50.google.com ([209.85.214.50]:51166) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2PHS-0007x5-3x for 32731@debbugs.gnu.org; Tue, 18 Sep 2018 19:19:42 -0400 Received: by mail-it0-f50.google.com with SMTP id j81-v6so5806018ite.0 for <32731@debbugs.gnu.org>; Tue, 18 Sep 2018 16:19:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=2FajHe2m1axiNpaNRSH4kkbzZ0eKVRiEJfxs/Gu1BkM=; b=LeiRfcU3L8V7hB310jeo1OBCQsU2BGw6xo3wuXu9eZkAEsZ1UhOZ7ONNbnovCj4GpE Sn5rSu0uhhxEWocSZ5SbpO08I7W2H+nBFQPOspjZRL5SUVbjscQa/GaBNEqmbp20GN/g Hn4zkLVWEcdzUq4KCboQkW9Hj9fY/LoLRMMeKFtBJI8hq4HbKI35ua1pQsW5ivsHeubQ BcEKI5AAvSvuXtHoLHzynV/SrX9QXWs8xU0VjM0IC8iilDs85G6NNpvspINZ1vbh+8IS d1cMlOexN1DU272GMecDxDEEsrS0qk929wkXq1wF4NH8Jgt14dmu2MBPqV/hq+plagr5 k6jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=2FajHe2m1axiNpaNRSH4kkbzZ0eKVRiEJfxs/Gu1BkM=; b=K1fTHGJP+Vgism+fhp/IU4hfAU8GW/jMiN/gTatJ7rseiCRcKovQLny5+xO+/oW3xl brUK9vPJVmAkOQXGZPJkbFGxNDdg2FYQhUtjSouALqUfepR8meMifgoOKu3Gupob1wlO wz0C49pRTB2Co2Z8S5CwjDT1lYF1PovF1TGImyP+0OzeRNnN3795hlXVd4w25jYEEUuL MR8G7oviq5hx3hbIqZJlQjb6fJ99i8wOV0s1PANbmYkfPHmYx9sUf/oSETNiav4KlZ8W sRcx7H/ownxgs4HDOd4bZlBgb7wfVR92rnHaTjWZn9RQVf0DiSsbkqVsJcKXnE2Lq94B gNbw== X-Gm-Message-State: APzg51B6/O/V6CKV41xmATyx80hplL8fw5Nzt4iMfEScTNwsvKOKzjYC 1H50D1oPDUTdORDr24F6nzy6jABM X-Google-Smtp-Source: ANB0VdZ/eLVtLJXxdIheNqRrKPLaK4RlZ0p+pIupEvqrGrCRXXsivWX6J32+6o/WNSxVLcRbbnzuag== X-Received: by 2002:a24:5753:: with SMTP id u80-v6mr18909147ita.21.1537312776449; Tue, 18 Sep 2018 16:19:36 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id u204-v6sm5596138itb.34.2018.09.18.16.19.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 18 Sep 2018 16:19:35 -0700 (PDT) From: Noam Postavsky References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> Date: Tue, 18 Sep 2018 19:19:34 -0400 In-Reply-To: <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> (Tino Calancha's message of "Tue, 18 Sep 2018 02:44:28 +0900") Message-ID: <871s9qqtq1.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Tino Calancha writes: > * I don't like much such new function > `ibuffer-filter-by-used-modes': isn't it better that > `ibuffer-filter-by-used-mode' handles both inputs? In principle, I agree with this, but there is a drawback to be aware of: fancier completion modes (e.g., icomplete, ido, etc) don't support completing-read-multiple. So users of those modes could see this as a regression. > * It moves most of the code inside the macro `define-ibuffer-filter'; no > need to add new functions. I don't like that define-ibuffer-filter has special code for certain filter types. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 19 Sep 2018 09:25: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: To: Noam Postavsky Cc: 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15373490472175 (code B ref 32731); Wed, 19 Sep 2018 09:25:01 +0000 Received: (at 32731) by debbugs.gnu.org; 19 Sep 2018 09:24:07 +0000 Received: from localhost ([127.0.0.1]:45141 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2YiN-0000Z0-5i for submit@debbugs.gnu.org; Wed, 19 Sep 2018 05:24:07 -0400 Received: from mail-wm1-f53.google.com ([209.85.128.53]:35741) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2YiL-0000YW-Fj for 32731@debbugs.gnu.org; Wed, 19 Sep 2018 05:24:05 -0400 Received: by mail-wm1-f53.google.com with SMTP id o18-v6so6064020wmc.0 for <32731@debbugs.gnu.org>; Wed, 19 Sep 2018 02:24:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=CBq0AJlyf6+QbwRnR2f4k0cNFWjYodX/2nVH4ZgxwC0=; b=p+Ok5v1wWvQi++nndoJzglcVeS9VFsogmFKYby2lNukCsPZNLIvnuQYlJHxYpXqVYZ cGXBHvcFi4T6LR8TIf9AhoJV4rgGczk2GseEKSxI0t0tkCmZbx83LuObeQNi215OfbVs VqHbYqo7H61UvSzeLSfKEOVjj3pbX/TUUuuzouW3MG1d1Otw2K7DvF1599XkOzDquoyc wBHCdzJlc6TZrEIu76TbGFf6fqnxiQBJkG1HIn9E1k6J57bDQzdVp4ARdBjQwF2/gZzp ZYhJpzDC1aXK809JXLqD+pcc6XzXWNFrNY425Fxc/p4CwtYBjeTlQyQQGS9ALEo1xSfx 2xYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=CBq0AJlyf6+QbwRnR2f4k0cNFWjYodX/2nVH4ZgxwC0=; b=L9stW/r/ryjtP71GFChZygTRkUSVMwQO2RjlplEUZh/nrP0gC+G7/DDyx7pq44VYXM 6jDD6ZVp9/JT8fqqLfBzDcR4GE9EI30GKeAfl6KHBSsMLoXsnfpnZXLrv2RbFnSdQIDZ 32uil8q4qWjZSOwLfUWiffhD4wbn2qwEkoxsZl5RJRTduNWLT6Evi/qiKwTugXojlhvX 2i8WeSiowVDgYx0nAoH0DbGHiPWFfqXceMMZXrxziWzHzzNLQSs1YuFLvaH0u3IS4jEA LsLXvwaQwbRvb0lphr4jJ+Q9KNTY3DZmEEYACH5H81bkWbgcTGPzoe8gpww0Z/KubEHZ 1Ldw== X-Gm-Message-State: APzg51BWXSmlxwaMp7okPT8fsw84x+QsSbI83AstIwoNgy4vaJLY4Y25 biRRdTCNTu4LURecMwo0N9465go8 X-Google-Smtp-Source: ANB0VdaUAeQrBFq7o/bkAKHmdTmpNugpSRSo8QVicZ2RSuUFXrRykUk18P7OB6DwLDTI1Nk8lkNtwg== X-Received: by 2002:a1c:e581:: with SMTP id c123-v6mr19736082wmh.85.1537349039271; Wed, 19 Sep 2018 02:23:59 -0700 (PDT) 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 d4-v6sm553072wrw.70.2018.09.19.02.23.57 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 19 Sep 2018 02:23:58 -0700 (PDT) From: Tino Calancha References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> Date: Wed, 19 Sep 2018 18:23:52 +0900 In-Reply-To: <871s9qqtq1.fsf@gmail.com> (Noam Postavsky's message of "Tue, 18 Sep 2018 19:19:34 -0400") Message-ID: <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Noam Postavsky writes: > Tino Calancha writes: > >> * I don't like much such new function >> `ibuffer-filter-by-used-modes': isn't it better that >> `ibuffer-filter-by-used-mode' handles both inputs? > > In principle, I agree with this, but there is a drawback to be aware of: > fancier completion modes (e.g., icomplete, ido, etc) don't support > completing-read-multiple. So users of those modes could see this as a > regression. OK. Annotaded here for the records. >> * It moves most of the code inside the macro `define-ibuffer-filter'; no >> need to add new functions. > > I don't like that define-ibuffer-filter has special code for certain > filter types. Me either, but I don't like code duplication either: Macros are a convenient way to avoid that. Unless you have something sound in mind... Following patch adds a key :composable, which also serves as documentation. --8<-----------------------------cut here---------------start------------->8--- commit 5c6092b172209cb0261f36f423f508bddc4d0dcd Author: Tino Calancha Date: Wed Sep 19 18:08:35 2018 +0900 Ibuffer filter by modes: Accept several mode names Extend all mode filters so that they handle >1 mode. For instance, if the user wants to filter all buffers in C or C++ mode, then s?he can call the filter interactively with input: 'c-mode,c++-mode'. * lisp/ibuf-macs.el(define-ibuffer-filter): Add key :composable. If the value of this key is non-nil, then the filter accepts a single qualifier or a list of them; in the latter case, the resultant filter is the `or' composition of the individual ones. * lisp/ibuf-ext.el (ibuffer-filter-by-used-mode) (ibuffer-filter-by-mode, ibuffer-filter-by-derived-mode) Accept a mode name or a list of mode names. Interactively, accept a comma separated list of mode names. Set :composable value non-nil. * etc/NEWS(Ibuffer): Announce this change. Co-authored-by: Noam Postavsky diff --git a/etc/NEWS b/etc/NEWS index fa93112c91..43d9a38b91 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -62,6 +62,10 @@ to reduce differences between developer and production builds. ** Ibuffer --- +*** All mode filters accept a symbol or a list of symbols, i.e., you +can filter several major modes with easy. + +--- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Gnus diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index d9949d2835..fc2e21a77f 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1228,28 +1228,34 @@ ibuffer-list-buffer-modes ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext") (define-ibuffer-filter mode - "Limit current view to buffers with major mode QUALIFIER." + "Limit current view to buffers with major mode in QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. +Called interactively, accept a comma separated list of mode names." (:description "major mode" :reader (let* ((buf (ibuffer-current-buffer)) (default (if (and buf (buffer-live-p buf)) (symbol-name (buffer-local-value 'major-mode buf))))) - (intern - (completing-read + (mapcar #'intern + (completing-read-multiple (if default (format "Filter by major mode (default %s): " default) "Filter by major mode: ") obarray - #'(lambda (e) - (string-match "-mode\\'" (symbol-name e))) - t nil nil default)))) + (lambda (e) + (string-match "-mode\\'" (if (symbolp e) (symbol-name e) e))) + t nil nil default))) + :composable t) (eq qualifier (buffer-local-value 'major-mode buf))) ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") (define-ibuffer-filter used-mode - "Limit current view to buffers with major mode QUALIFIER. -Called interactively, this function allows selection of modes + "Limit current view to buffers with major mode in QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. + +Called interactively, accept a comma separated list of mode names. +When called interactively, this function allows selection of modes currently used by buffers." (:description "major mode in use" :reader @@ -1257,23 +1263,27 @@ used-mode (default (if (and buf (buffer-live-p buf)) (symbol-name (buffer-local-value 'major-mode buf))))) - (intern - (completing-read + (mapcar #'intern + (completing-read-multiple (if default (format "Filter by major mode (default %s): " default) "Filter by major mode: ") - (ibuffer-list-buffer-modes) nil t nil nil default)))) + (ibuffer-list-buffer-modes) nil t nil nil default))) + :composable t) (eq qualifier (buffer-local-value 'major-mode buf))) ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode - "Limit current view to buffers whose major mode inherits from QUALIFIER." + "Limit current view to buffers whose major mode inherits from QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. +Called interactively, accept a comma separated list of mode names." (:description "derived mode" :reader - (intern - (completing-read "Filter by derived mode: " + (mapcar #'intern + (completing-read-multiple "Filter by derived mode: " (ibuffer-list-buffer-modes t) - nil t))) + nil t)) + :composable t) (with-current-buffer buf (derived-mode-p qualifier))) ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext") diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el index 6a70a8341a..1030096ec1 100644 --- a/lisp/ibuf-macs.el +++ b/lisp/ibuf-macs.el @@ -282,12 +282,16 @@ ibuffer-save-marks (cl-defmacro define-ibuffer-filter (name documentation (&key reader - description) + description + composable) &rest body) "Define a filter named NAME. DOCUMENTATION is the documentation of the function. READER is a form which should read a qualifier from the user. DESCRIPTION is a short string describing the filter. +COMPOSABLE is a boolean; if non-nil, the filter accepts both, +a single condition or a list of them; in the latter +case the filter is the `or' composition of the conditions. BODY should contain forms which will be evaluated to test whether or not a particular buffer should be displayed or not. The forms in BODY @@ -296,21 +300,32 @@ ibuffer-save-marks \(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" (declare (indent 2) (doc-string 2)) - (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name))))) + (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name)))) + (filter (make-symbol "ibuffer-filter")) + (qualifier-str (make-symbol "ibuffer-qualifier-str"))) `(progn (defun ,fn-name (qualifier) ,(or documentation "This filter is not documented.") (interactive (list ,reader)) - (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))) + (let ((,filter (cons ',name qualifier)) + (,qualifier-str qualifier)) + ,(when composable + `(progn + (unless (listp qualifier) (setq qualifier (list qualifier))) + ;; Reject equivalent filters: (or f1 f2) is same as (or f2 f1). + (setq qualifier (sort (delete-dups qualifier) #'string-lessp)) + (setq ,filter (cons ',name (car qualifier))) + (setq ,qualifier-str + (mapconcat (lambda (m) (if (symbolp m) (symbol-name m) m)) + qualifier ",")) + (when (cdr qualifier) ; Compose individual filters with `or'. + (setq ,filter `(or ,@(mapcar (lambda (m) (cons ',name m)) qualifier)))))) + (if (null (ibuffer-push-filter ,filter)) + (message ,(format "Filter by %s already applied: %%s" description) + ,qualifier-str) + (message ,(format "Filter by %s added: %%s" description) + ,qualifier-str) + (ibuffer-update nil t)))) (push (list ',name ,description (lambda (buf qualifier) (condition-case nil --8<-----------------------------cut here---------------end--------------->8--- From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 19 Sep 2018 09:43:02 +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: To: Tino Calancha Cc: npostavs@gmail.com, 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15373501793974 (code B ref 32731); Wed, 19 Sep 2018 09:43:02 +0000 Received: (at 32731) by debbugs.gnu.org; 19 Sep 2018 09:42:59 +0000 Received: from localhost ([127.0.0.1]:45145 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2Z0d-000122-0U for submit@debbugs.gnu.org; Wed, 19 Sep 2018 05:42:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45694) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2Z0b-00011m-5h for 32731@debbugs.gnu.org; Wed, 19 Sep 2018 05:42:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g2Z0S-0005cq-GL for 32731@debbugs.gnu.org; Wed, 19 Sep 2018 05:42:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_20 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38123) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g2Z09-0005SJ-DD; Wed, 19 Sep 2018 05:42:48 -0400 Received: from [176.228.60.248] (port=4236 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1g2Z07-0006og-Rh; Wed, 19 Sep 2018 05:42:28 -0400 Date: Wed, 19 Sep 2018 12:42:28 +0300 Message-Id: <83sh25escb.fsf@gnu.org> From: Eli Zaretskii In-reply-to: <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> (message from Tino Calancha on Wed, 19 Sep 2018 18:23:52 +0900) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Tino Calancha > Date: Wed, 19 Sep 2018 18:23:52 +0900 > Cc: 32731@debbugs.gnu.org > > Following patch adds a key :composable, which also serves as > documentation. Thanks, a few nits to the documentation parts: > --- > +*** All mode filters accept a symbol or a list of symbols, i.e., you > +can filter several major modes with easy. Please try to keep the first line in a NEWS item a single complete sentence, as much as possible: that allows for more convenient browsing in Outline mode. In this case, I would break this into two sentences: a short announcement and followup details: *** All mode filters can now accept a list of symbols. This means you can now easily filter several major modes, as well as a single mode. > ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext") > (define-ibuffer-filter mode > - "Limit current view to buffers with major mode QUALIFIER." > + "Limit current view to buffers with major mode in QUALIFIER. > +QUALIFIER is the mode name as a symbol or a list of symbols. In the first sentence, I'd suggest to rephrase: Limit current view to buffers with major mode(s) specified by QUALIFIER. because "in QUALIFIER" only covers the case of a list. Similarly in other doc strings you modified the same way. > +Called interactively, accept a comma separated list of mode names. > +When called interactively, this function allows selection of modes > currently used by buffers." These two sentences seem to be in contradiction, so they probably need to be merged or rephrased. > (cl-defmacro define-ibuffer-filter (name documentation > (&key > reader > - description) > + description > + composable) > &rest body) > "Define a filter named NAME. > DOCUMENTATION is the documentation of the function. > READER is a form which should read a qualifier from the user. > DESCRIPTION is a short string describing the filter. > +COMPOSABLE is a boolean; if non-nil, the filter accepts both, ^ That comma should be deleted, it gets in the way of understanding what you mean. And I would actually rephrase if non-nil, the filter accepts either a single condition or a list of them because "both" might be interpreted as meaning "and", not "or". I also wonder whether "COMPOSABLE" is a good name for this argument; how about ACCEPT-LIST instead? Thanks for working on this. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 21 Sep 2018 08:38:02 +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: To: Eli Zaretskii Cc: npostavs@gmail.com, 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153751907422503 (code B ref 32731); Fri, 21 Sep 2018 08:38:02 +0000 Received: (at 32731) by debbugs.gnu.org; 21 Sep 2018 08:37:54 +0000 Received: from localhost ([127.0.0.1]:47630 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3Gwk-0005qt-Bo for submit@debbugs.gnu.org; Fri, 21 Sep 2018 04:37:54 -0400 Received: from mail-wr1-f46.google.com ([209.85.221.46]:43343) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3Gwi-0005qf-4G for 32731@debbugs.gnu.org; Fri, 21 Sep 2018 04:37:52 -0400 Received: by mail-wr1-f46.google.com with SMTP id k5-v6so11976603wre.10 for <32731@debbugs.gnu.org>; Fri, 21 Sep 2018 01:37:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=eWb4Lmprz9CQtROuTsJhRNksVmbRiRvcW611MFR9O/A=; b=dwRipWTlKQQ4GZ5NDi0ca9OIQFBBsZgE7D+X8dLnRkIvn9N4hNwHvwS2z143Hvs8bf 5z+dec5yTUcR6yIVJUk1axohdn1123ufSk/50Cu2JPNkfMgUmE6p+1WIaqDz2AsjDh5M hKOx5v+I47aMKSfXGoC71uko30HHHs7fhMaGq9Lp7T2YPR1RGQhs6C2/B6cdNYvOkw/r BEH3kxRxZH/DZg9WS3eEs6api36EsOTRoHKHQVH/6K6WahAV72eBY4HZUQ296mcKpeJu 8Pmfnf37FmyLFFoKAY0v0JeS9n0n3vxvQEzSNMtQ+zdAgvkg7cTdSmIcgIfTyxPhDCQL 0EFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=eWb4Lmprz9CQtROuTsJhRNksVmbRiRvcW611MFR9O/A=; b=GxSko/jf/uHWoez0sOxuRxdVWP1Nb70aRZXxKEee4gR8k26X+St8/5vx/Rg2WOfo53 8UQFtpGHeI7YeRI9iTUbXLJWFkrmHtnKRzt/WwwZ4LWngMCBxb/3ZGB8RAPm+0hges75 /iO7OG2k1OB3oYwigXoTcbMbt12GTDJsNP1G/4WMS1RzzgLpY+DdMPbexgh+rvVxKF8U 62qz9UdSW3niqguMPaQ2X/XSo2U1zjEHWvQnWz3gnKdjZWdVCAiQeP22xt3x62mbSFfY 134a3hmuIQqggUArw5tH2K0LFiMrjhTp5OKl4CloeFZWEz8rYEgR2mzzelexf/ewFe4i lj6w== X-Gm-Message-State: APzg51BbParCL6YrvrPnBw959fxURqfY0+t2RLV8Y2mc9OxJSNXPJ+bP VkJMBYoYbywW99XNo3nUIrocIgcf X-Google-Smtp-Source: ANB0VdZNGWFBwvPUw4JXMiTqDU5w+J1+pTM0rXzE/3yNoxNusK/EwOvKJzy83TcNqTzve2b0i1UxqQ== X-Received: by 2002:a5d:55ca:: with SMTP id i10-v6mr36472764wrw.38.1537519065778; Fri, 21 Sep 2018 01:37:45 -0700 (PDT) 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 z13sm27283402wrw.19.2018.09.21.01.37.44 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 21 Sep 2018 01:37:45 -0700 (PDT) From: Tino Calancha References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> Date: Fri, 21 Sep 2018 17:37:39 +0900 In-Reply-To: <83sh25escb.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 19 Sep 2018 12:42:28 +0300") Message-ID: <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Tino Calancha >> Date: Wed, 19 Sep 2018 18:23:52 +0900 >> Cc: 32731@debbugs.gnu.org >> >> Following patch adds a key :composable, which also serves as >> documentation. > > Thanks, a few nits to the documentation parts: Thank you. I've amended the patch to address all the nits: --8<-----------------------------cut here---------------start------------->8--- commit 72e332c986304775e91020c88ded1ba9d7226023 Author: Tino Calancha Date: Fri Sep 21 17:32:57 2018 +0900 Ibuffer filter by modes: Accept several mode names Extend all mode filters so that they handle >1 mode. For instance, if the user wants to filter all buffers in C or C++ mode, then s?he can call the filter interactively with input: 'c-mode,c++-mode' (Bug#32731). * lisp/ibuf-macs.el(define-ibuffer-filter): Add key :accept-list. If the value of this key is non-nil, then the filter accepts either a single qualifier or a list of them; in the latter case, the resultant filter is the `or' composition of the individual ones. * lisp/ibuf-ext.el (ibuffer-filter-by-used-mode) (ibuffer-filter-by-mode, ibuffer-filter-by-derived-mode) Set :accept-list value non-nil. Interactively, accept a comma separated list of mode names. * etc/NEWS(Ibuffer): Announce this change. Co-authored-by: Noam Postavsky diff --git a/etc/NEWS b/etc/NEWS index 736955be0c..9f7e0544d5 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -62,6 +62,11 @@ to reduce differences between developer and production builds. ** Ibuffer --- +*** All mode filters can now accept a list of symbols. +This means you can now easily filter several major modes, as well +as a single mode. + +--- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Gnus diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index d9949d2835..e3e0d0b578 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1228,28 +1228,33 @@ ibuffer-list-buffer-modes ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext") (define-ibuffer-filter mode - "Limit current view to buffers with major mode QUALIFIER." + "Limit current view to buffers with major mode(s) specified by QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. +Called interactively, accept a comma separated list of mode names." (:description "major mode" :reader (let* ((buf (ibuffer-current-buffer)) (default (if (and buf (buffer-live-p buf)) (symbol-name (buffer-local-value 'major-mode buf))))) - (intern - (completing-read + (mapcar #'intern + (completing-read-multiple (if default (format "Filter by major mode (default %s): " default) "Filter by major mode: ") obarray - #'(lambda (e) - (string-match "-mode\\'" (symbol-name e))) - t nil nil default)))) + (lambda (e) + (string-match "-mode\\'" (if (symbolp e) (symbol-name e) e))) + t nil nil default))) + :accept-list t) (eq qualifier (buffer-local-value 'major-mode buf))) ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") (define-ibuffer-filter used-mode - "Limit current view to buffers with major mode QUALIFIER. -Called interactively, this function allows selection of modes + "Limit current view to buffers with major mode(s) specified by QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. + +Called interactively, accept a comma separated list of mode names currently used by buffers." (:description "major mode in use" :reader @@ -1257,23 +1262,29 @@ used-mode (default (if (and buf (buffer-live-p buf)) (symbol-name (buffer-local-value 'major-mode buf))))) - (intern - (completing-read + (mapcar #'intern + (completing-read-multiple (if default (format "Filter by major mode (default %s): " default) "Filter by major mode: ") - (ibuffer-list-buffer-modes) nil t nil nil default)))) + (ibuffer-list-buffer-modes) nil t nil nil default))) + :accept-list t) (eq qualifier (buffer-local-value 'major-mode buf))) ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode - "Limit current view to buffers whose major mode inherits from QUALIFIER." + "Limit current view to buffers with major mode(s) specified by QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. + Restrict the view to buffers whose major mode derivates + from modes specified by QUALIFIER. +Called interactively, accept a comma separated list of mode names." (:description "derived mode" :reader - (intern - (completing-read "Filter by derived mode: " - (ibuffer-list-buffer-modes t) - nil t))) + (mapcar #'intern + (completing-read-multiple "Filter by derived mode: " + (ibuffer-list-buffer-modes t) + nil t)) + :accept-list t) (with-current-buffer buf (derived-mode-p qualifier))) ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext") diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el index 6a70a8341a..066d9ac2d9 100644 --- a/lisp/ibuf-macs.el +++ b/lisp/ibuf-macs.el @@ -282,12 +282,16 @@ ibuffer-save-marks (cl-defmacro define-ibuffer-filter (name documentation (&key reader - description) + description + accept-list) &rest body) "Define a filter named NAME. DOCUMENTATION is the documentation of the function. READER is a form which should read a qualifier from the user. DESCRIPTION is a short string describing the filter. +ACCEPT-LIST is a boolean; if non-nil, the filter accepts either +a single condition or a list of them; in the latter +case the filter is the `or' composition of the conditions. BODY should contain forms which will be evaluated to test whether or not a particular buffer should be displayed or not. The forms in BODY @@ -296,29 +300,40 @@ ibuffer-save-marks \(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" (declare (indent 2) (doc-string 2)) - (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name))))) + (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name)))) + (filter (make-symbol "ibuffer-filter")) + (qualifier-str (make-symbol "ibuffer-qualifier-str"))) `(progn (defun ,fn-name (qualifier) ,(or documentation "This filter is not documented.") (interactive (list ,reader)) - (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))) + (let ((,filter (cons ',name qualifier)) + (,qualifier-str qualifier)) + ,(when accept-list + `(progn + (unless (listp qualifier) (setq qualifier (list qualifier))) + ;; Reject equivalent filters: (or f1 f2) is same as (or f2 f1). + (setq qualifier (sort (delete-dups qualifier) #'string-lessp)) + (setq ,filter (cons ',name (car qualifier))) + (setq ,qualifier-str + (mapconcat (lambda (m) (if (symbolp m) (symbol-name m) m)) + qualifier ",")) + (when (cdr qualifier) ; Compose individual filters with `or'. + (setq ,filter `(or ,@(mapcar (lambda (m) (cons ',name m)) qualifier)))))) + (if (null (ibuffer-push-filter ,filter)) + (message ,(format "Filter by %s already applied: %%s" description) + ,qualifier-str) + (message ,(format "Filter by %s added: %%s" description) + ,qualifier-str) + (ibuffer-update nil t)))) (push (list ',name ,description (lambda (buf qualifier) - (condition-case nil - (progn ,@body) - (error (ibuffer-pop-filter) - (when (eq ',name 'predicate) - (error "Wrong filter predicate: %S" - qualifier)))))) + (condition-case nil + (progn ,@body) + (error (ibuffer-pop-filter) + (when (eq ',name 'predicate) + (error "Wrong filter predicate: %S" + qualifier)))))) ibuffer-filtering-alist) :autoload-end))) --8<-----------------------------cut here---------------end--------------->8--- In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) Repository revision: 7f3877e83405a089b580fe9d0342dc0b6c08cbfc From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 22 Sep 2018 09:15:02 +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: To: Tino Calancha Cc: npostavs@gmail.com, 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153760767030569 (code B ref 32731); Sat, 22 Sep 2018 09:15:02 +0000 Received: (at 32731) by debbugs.gnu.org; 22 Sep 2018 09:14:30 +0000 Received: from localhost ([127.0.0.1]:48702 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3dzh-0007wy-QT for submit@debbugs.gnu.org; Sat, 22 Sep 2018 05:14:29 -0400 Received: from eggs.gnu.org ([208.118.235.92]:48514) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3dzg-0007wk-FL for 32731@debbugs.gnu.org; Sat, 22 Sep 2018 05:14:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g3dzW-0006XG-Kh for 32731@debbugs.gnu.org; Sat, 22 Sep 2018 05:14:22 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52580) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g3dzW-0006X0-9D; Sat, 22 Sep 2018 05:14:18 -0400 Received: from [176.228.60.248] (port=2836 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1g3dzV-0002v9-PK; Sat, 22 Sep 2018 05:14:18 -0400 Date: Sat, 22 Sep 2018 12:14:05 +0300 Message-Id: <83k1nddhcy.fsf@gnu.org> From: Eli Zaretskii In-reply-to: <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> (message from Tino Calancha on Fri, 21 Sep 2018 17:37:39 +0900) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Tino Calancha > Cc: npostavs@gmail.com, 32731@debbugs.gnu.org > Date: Fri, 21 Sep 2018 17:37:39 +0900 > > Eli Zaretskii writes: > > >> From: Tino Calancha > >> Date: Wed, 19 Sep 2018 18:23:52 +0900 > >> Cc: 32731@debbugs.gnu.org > >> > >> Following patch adds a key :composable, which also serves as > >> documentation. > > > > Thanks, a few nits to the documentation parts: > Thank you. > I've amended the patch to address all the nits: Thanks, this LGTM. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 22 Sep 2018 13:01:02 +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: To: Tino Calancha Cc: Eli Zaretskii , 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153762122128823 (code B ref 32731); Sat, 22 Sep 2018 13:01:02 +0000 Received: (at 32731) by debbugs.gnu.org; 22 Sep 2018 13:00:21 +0000 Received: from localhost ([127.0.0.1]:48885 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3hWH-0007Up-5B for submit@debbugs.gnu.org; Sat, 22 Sep 2018 09:00:21 -0400 Received: from mail-it1-f175.google.com ([209.85.166.175]:53020) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3hWF-0007Ua-2N for 32731@debbugs.gnu.org; Sat, 22 Sep 2018 09:00:19 -0400 Received: by mail-it1-f175.google.com with SMTP id h3-v6so5265056ita.2 for <32731@debbugs.gnu.org>; Sat, 22 Sep 2018 06:00:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=ux5WcqcH3GuZejmwhpSrqw/Xp8Jf+8mdWeGznZDquMk=; b=VY63VmCX9FEpSRxcrs2ciT8V2qoLSMsF3YwSKZiJjZfvzSqqbEQ9PQhOz+vpEVuB/i pIMtowKyy7lT19GvAID4FkFsqsp+bPQgoBjYRq5X9MFV0TgOlNSnR3FRpnKomGDNfEhi nEzs9iYwfurq5dsRJ7aWLUm86U3z8/FcYocdaFK0ZvcmQ7S7lYIOHQjwyPv+xHj4ekTq 6Noj60VNWPJIofq+rkRVvmT3ayNrUA7qZ8RXMOfZLfV8ckEMibt3zvBMXyZfp8nGBHHg OmbdimWPpmYToDGs6SfFsJCztzltbT62As6fA6Yt1g5tqXcWFtTNmWo5oMsYfpl1+oGK hl8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=ux5WcqcH3GuZejmwhpSrqw/Xp8Jf+8mdWeGznZDquMk=; b=mGE8uC6Q4T+tGhDTww64xLVl5PDuxKFYLP1YOelQnDz/9/IUgsuPPn5YxRQvmZuPHP XDgCADU+FUQdCk9uKlO9cjKqUm4qKmcRqlvSXJ0YnBPGyT6upFaqFUxAnyhPQh8LpFTd VeOiG4A5wdx2j3HeGd5nXva+Xwtg74cD3qx/RPgy29F+DrkVAHk80j4pWEbr9kyAlRAq VXkodfKCPxtdxP42a+v6Jgtx6sxhzarDJAKUSrSh8245QPPY8BSuBtIBoKKBQQN2Evpk HEF39sOgKZ/WWDq7QbJ7y+AW+2dPklR35G1sqPEStfeSMdYR7B1aar10XrTzElgNz51K lkCg== X-Gm-Message-State: APzg51CxG9U8I5lNWiRavwnvJ76/yXml/RYAHDkFT0sQThXWKSLP9oIl jhfTc6yw6+ybpmtzpi17Ja3593m4 X-Google-Smtp-Source: ANB0VdbxBtPIcPPKjbeMYfA4qtUI802mOPCLSacjZaMgiCsYlfmjJnbCwD7DfbwitSuLwysHkdzUwA== X-Received: by 2002:a24:3ac3:: with SMTP id m186-v6mr1577757itm.106.1537621213304; Sat, 22 Sep 2018 06:00:13 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id x68-v6sm4463920ita.2.2018.09.22.06.00.11 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 22 Sep 2018 06:00:11 -0700 (PDT) From: Noam Postavsky References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> Date: Sat, 22 Sep 2018 09:00:10 -0400 In-Reply-To: <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> (Tino Calancha's message of "Fri, 21 Sep 2018 17:37:39 +0900") Message-ID: <87r2hloffp.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Tino Calancha writes: > commit 72e332c986304775e91020c88ded1ba9d7226023 > Author: Tino Calancha > Date: Fri Sep 21 17:32:57 2018 +0900 > > Ibuffer filter by modes: Accept several mode names > > Extend all mode filters so that they handle >1 mode. > For instance, if the user wants to filter all buffers in > C or C++ mode, then s?he can call the filter interactively If you'll pardon another nit, I suggest using "they" instead of "s?he" which has the advantage of being a pronounceable English word. > + (let ((,filter (cons ',name qualifier)) > + (,qualifier-str qualifier)) > + ,(when accept-list > + `(progn > + (unless (listp qualifier) (setq qualifier (list qualifier))) > + ;; Reject equivalent filters: (or f1 f2) is same as (or f2 f1). > + (setq qualifier (sort (delete-dups qualifier) #'string-lessp)) > + (setq ,filter (cons ',name (car qualifier))) > + (setq ,qualifier-str > + (mapconcat (lambda (m) (if (symbolp m) (symbol-name m) m)) > + qualifier ",")) > + (when (cdr qualifier) ; Compose individual filters with `or'. > + (setq ,filter `(or ,@(mapcar (lambda (m) (cons ',name m)) qualifier)))))) > + (if (null (ibuffer-push-filter ,filter)) > + (message ,(format "Filter by %s already applied: %%s" description) > + ,qualifier-str) > + (message ,(format "Filter by %s added: %%s" description) > + ,qualifier-str) > + (ibuffer-update nil t)))) Since I'm here nitting anyway, I would tweak this code a bit: (let ((,filter (cons ',name qualifier)) (,qualifier-desc qualifier)) ,(when accept-list `(when (listp qualifier) (setq ,qualifier-desc (mapconcat (lambda (m) (if (symbolp m) (symbol-name m) m)) qualifier ",")) (if (null (cdr qualifier)) (setf (cdr ,filter) (car qualifier)) ; Singleton list. ;; Reject equivalent filters: (or f1 f2) is same as (or f2 f1). (setq qualifier (delete-consecutive-dups (sort qualifier #'string-lessp))) ;; Compose individual filters with `or'. (setq ,filter `(or ,@(mapcar (lambda (m) (cons ',name m)) qualifier)))))) (if (null (ibuffer-push-filter ,filter)) (message ,(format "Filter by %s already applied: %%s" description) ,qualifier-desc) (message ,(format "Filter by %s added: %%s" description) ,qualifier-desc) (ibuffer-update nil t))) > (push (list ',name ,description > (lambda (buf qualifier) > - (condition-case nil > - (progn ,@body) > - (error (ibuffer-pop-filter) > - (when (eq ',name 'predicate) > - (error "Wrong filter predicate: %S" > - qualifier)))))) > + (condition-case nil > + (progn ,@body) > + (error (ibuffer-pop-filter) > + (when (eq ',name 'predicate) > + (error "Wrong filter predicate: %S" > + qualifier)))))) > ibuffer-filtering-alist) > :autoload-end))) I think this hunk is just changing spaces to tabs (shouldn't .dir-locals be setting indent-tabs-mode to nil though?). From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Richard Stallman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 23 Sep 2018 03:10:03 +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: To: Noam Postavsky Cc: 32731@debbugs.gnu.org, tino.calancha@gmail.com Reply-To: rms@gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15376721633407 (code B ref 32731); Sun, 23 Sep 2018 03:10:03 +0000 Received: (at 32731) by debbugs.gnu.org; 23 Sep 2018 03:09:23 +0000 Received: from localhost ([127.0.0.1]:50206 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3ulv-0000st-7C for submit@debbugs.gnu.org; Sat, 22 Sep 2018 23:09:23 -0400 Received: from eggs.gnu.org ([208.118.235.92]:50869) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3uls-0000sd-LG for 32731@debbugs.gnu.org; Sat, 22 Sep 2018 23:09:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g3ulX-0001RM-7y for 32731@debbugs.gnu.org; Sat, 22 Sep 2018 23:09:06 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:37873) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g3ulG-0000tj-FI; Sat, 22 Sep 2018 23:08:43 -0400 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1g3tKx-00034x-GY; Sat, 22 Sep 2018 21:37:27 -0400 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman In-Reply-To: <87r2hloffp.fsf@gmail.com> (message from Noam Postavsky on Sat, 22 Sep 2018 09:00:10 -0400) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> Message-Id: Date: Sat, 22 Sep 2018 21:37:27 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > If you'll pardon another nit, I suggest using "they" instead of "s?he" > which has the advantage of being a pronounceable English word. Using "they" for a singular antecedent is confusing, and I always find it jarring. I won't make a rule against, but I make a point of never using that construction. "S?he" avoids the confusion because it is clearly singular. I use a different set of gender-neutral singular pronouns, which I think fit better into English. See https://stallman.org/articles/genderless-pronouns.html. -- Dr Richard Stallman President, Free Software Foundation (https://gnu.org, https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 23 Sep 2018 12:02: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: To: Richard Stallman Cc: 32731@debbugs.gnu.org, tino.calancha@gmail.com Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153770409430957 (code B ref 32731); Sun, 23 Sep 2018 12:02:01 +0000 Received: (at 32731) by debbugs.gnu.org; 23 Sep 2018 12:01:34 +0000 Received: from localhost ([127.0.0.1]:50346 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g434v-00083F-Ta for submit@debbugs.gnu.org; Sun, 23 Sep 2018 08:01:34 -0400 Received: from mail-it1-f176.google.com ([209.85.166.176]:54555) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g434t-00082y-UA for 32731@debbugs.gnu.org; Sun, 23 Sep 2018 08:01:32 -0400 Received: by mail-it1-f176.google.com with SMTP id f14-v6so7183775ita.4 for <32731@debbugs.gnu.org>; Sun, 23 Sep 2018 05:01:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=ckRqgsHe3QOyiZQ2ONJJ2HCzxAd9AJwrc+ZnYOA9pdU=; b=gKy9w5QgJ+r+vgz61ftxf8sLmHWDbNJJtAg/sFSbnv4fgpZc1oLSC7zZyIw1IpSJkB ygISie6+zY0jiN3ADoQdoDmXogOCvxRp02f2NhqDSVdyyzwbieju05dynas1TYlCvylF J6xy72OLfw7/X2M3PrXDDIWg22ccu12rVsjK4A9NPtBs/8bmfWIhIz0nDZtWVvsv2doK MxLfd5ZaDcxVHElWljq0NyM+9PSXCrHC1EDgP6IYaoIDvDA3wJ1u2a5m+NGpYqEctf1x XAZ4YVtzRCm6GmF+jLpBo4YmbHcnYfWQUO8AZvpQBgqtmxT03Ge/uZVZIu3pTcwJyZvb tfRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=ckRqgsHe3QOyiZQ2ONJJ2HCzxAd9AJwrc+ZnYOA9pdU=; b=jSJ9aDlOWfUvv83bFxuiVE6vjWzrVkZtlTtv7Gaj4EbQN8KymhAiUaCdJasML6s+hw X2VIpxVro7sasAWGhBLY/chVJ1PObG6izIGi9mxwWdnqfNvhfcPrENWaPCa7fD0BP/Cx dlAoKJAspqf/2ewDDjNC/zk+a88VpjxJ3hbBeVM28HveJj/ZOVMB8aK1RDi8ot3oP9cT faGdHVUQ6x41I5WleqxtR31p3Qbg98zPTRtW3iUI33Y7q3Bzio3N4mtRRcXObbHn6o3k sLF8bNI8Q2fRN+dLwAemtqZWFjamWJ8wAla1GfzNT6tvrSKlMjIDGfp8RkdEtn7gpmy9 M1IQ== X-Gm-Message-State: ABuFfohbYJ318FI4DOyGz3gaAbSiXZRSOuToAvFowcemr/WOx2wcKIeC qLRy/BheCkfn9XCWfSl1jhE= X-Google-Smtp-Source: ANB0VdZXkdvQQQ5YiT+KE0ckprpkYe2OnBKJ/8opKIg0Sl7cdlTO3AUXk3nmihDjuW1GpjVEqSBU3w== X-Received: by 2002:a24:5256:: with SMTP id d83-v6mr4607103itb.1.1537704086306; Sun, 23 Sep 2018 05:01:26 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id s3-v6sm11183529ioo.87.2018.09.23.05.01.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 23 Sep 2018 05:01:25 -0700 (PDT) From: Noam Postavsky References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> Date: Sun, 23 Sep 2018 08:01:24 -0400 In-Reply-To: (Richard Stallman's message of "Sat, 22 Sep 2018 21:37:27 -0400") Message-ID: <87lg7so223.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Richard Stallman writes: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > > If you'll pardon another nit, I suggest using "they" instead of "s?he" > > which has the advantage of being a pronounceable English word. > > Using "they" for a singular antecedent is confusing, and I always find > it jarring. I won't make a rule against, but I make a point of never > using that construction. "S?he" avoids the confusion because it is > clearly singular. > > I use a different set of gender-neutral singular pronouns, which I > think fit better into English. See > https://stallman.org/articles/genderless-pronouns.html. I find "s?he" jarring due to its non-wordness and "per" confusing because it's already a word which means something else (I end up having to read the sentence from the beginning again to parse it right). I expect it's mostly a matter of practice though. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 24 Sep 2018 08:28: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: To: Richard Stallman Cc: 32731@debbugs.gnu.org, Noam Postavsky , Tino Calancha Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15377776726538 (code B ref 32731); Mon, 24 Sep 2018 08:28:01 +0000 Received: (at 32731) by debbugs.gnu.org; 24 Sep 2018 08:27:52 +0000 Received: from localhost ([127.0.0.1]:51289 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4MDf-0001hN-Vp for submit@debbugs.gnu.org; Mon, 24 Sep 2018 04:27:52 -0400 Received: from mail-wm1-f52.google.com ([209.85.128.52]:38169) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4MDe-0001hB-Rz for 32731@debbugs.gnu.org; Mon, 24 Sep 2018 04:27:51 -0400 Received: by mail-wm1-f52.google.com with SMTP id z16-v6so2641118wmi.3 for <32731@debbugs.gnu.org>; Mon, 24 Sep 2018 01:27:50 -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=+W/iWyjYk3f4RKprTA4snZA3qncy6LAnyT+k/3T54vQ=; b=VKFeLO4rDrvpfIdhjz77OvOwRqkPxhnW67Ex9I6AibO/RXvH8FY2JfiXBl1UWjTYnw WP9lCDWD1skI4zRHLo30kZzBMZkdDDErcFpU58PMFw/NArpZomPpSWwhSqJZBs90ieiI krqLLv+/k669wecdKbkLn/cjrTgYcPW+N5IomXzYIhvXEU3BmBNG32IZKMlZBn1mUPgY BZ4sezQSXycxOR91bzeVO7DVltwUEp/FHO4DMrCvSXeQ5eXKi+pFmdWRsmoh+hlLCWHW FP10nk0c9DDG2q1eV+s+YkUT4njOo8GX2zlK4zLuJ0V179RIHjXlgQedOt/rSso/nEZo 2wbg== 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=+W/iWyjYk3f4RKprTA4snZA3qncy6LAnyT+k/3T54vQ=; b=LZYdoVvZNWuNotyU0qbSZUEqu+VyQewS0EiQzZUtwxxpofFNvomMVnGOQOpd+wtQn1 b6Pwf+J3ISi3UIfZ5Qf2pCqY13yFMzFstjS+KgB0LRfgsuw2PukbLtOYRfxn7FPnY5uF y43wIq+J9YnvPnnPpB5wHbrng5zhf9n6SnAYBrDaYCiDZxNsBJ2+IX0bK1hzleeHnG63 WKtEJumh2e0SQnJiSVh1WCH03TyybTj/nOOfIpxF+1YdtFpn4hAf+FcRXoka4FUbYkgq jEdWJzUVX0F8XoVcYrGJVOhi+DDe6all+BiQNFZaGtVt7NGmDnGIsRP+r5oTQ4/qXmPo rJog== X-Gm-Message-State: ABuFfojesp4ntTTreEAGw/0WXFKrEZAilTrtpmK03cyGiyP02V1CEZEw yCp66TNHRW9TvtuzdU7bW7c= X-Google-Smtp-Source: ANB0VdZC4jSSwfTHvHONqAMiGzznSLXfV5oLn+dFnWEA2asl/S8EwlpGfYSqBm4+0dxhMB1QpXwXKw== X-Received: by 2002:a1c:b950:: with SMTP id j77-v6mr343312wmf.36.1537777665004; Mon, 24 Sep 2018 01:27:45 -0700 (PDT) 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 r140-v6sm11144434wmd.7.2018.09.24.01.27.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Sep 2018 01:27:44 -0700 (PDT) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Mon, 24 Sep 2018 17:27:42 +0900 (JST) X-X-Sender: calancha@calancha-pc.dy.bbexcite.jp In-Reply-To: Message-ID: References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sat, 22 Sep 2018, Richard Stallman wrote: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > > If you'll pardon another nit, I suggest using "they" instead of "s?he" > > which has the advantage of being a pronounceable English word. > > Using "they" for a singular antecedent is confusing, and I always find > it jarring. I won't make a rule against, but I make a point of never > using that construction. "S?he" avoids the confusion because it is > clearly singular. > > I use a different set of gender-neutral singular pronouns, which I > think fit better into English. See > https://stallman.org/articles/genderless-pronouns.html. How about 'it'? This way we include robots: we shouldn't discriminate them ;-) I saw in your site 'he/she'. I rewrote as 'she/he', otherwise, someone picky might complain about males been prioritized. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 24 Sep 2018 08:37:02 +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: To: Noam Postavsky Cc: Eli Zaretskii , 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15377782087502 (code B ref 32731); Mon, 24 Sep 2018 08:37:02 +0000 Received: (at 32731) by debbugs.gnu.org; 24 Sep 2018 08:36:48 +0000 Received: from localhost ([127.0.0.1]:51309 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4MMJ-0001ww-Tv for submit@debbugs.gnu.org; Mon, 24 Sep 2018 04:36:48 -0400 Received: from mail-wm1-f50.google.com ([209.85.128.50]:52716) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4MMH-0001wf-Sy for 32731@debbugs.gnu.org; Mon, 24 Sep 2018 04:36:46 -0400 Received: by mail-wm1-f50.google.com with SMTP id l7-v6so3933159wme.2 for <32731@debbugs.gnu.org>; Mon, 24 Sep 2018 01:36:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=R9S/LSPn/1j0oCPN1NzyggB9FDdOm6sAGP8PjD2d018=; b=csyUIxEtboxNR8rbfOuMwxx0ZU6hGxEvHlj0nSaqVaaYp6PoLM2jn+koqvYPNSOC3H w7jeNphXI1Q4pMtJYNWPY8eNX5dd1Qxcs9C8U7jnUm311iMIsu44o2uOnnTy2NSu3heQ tTU2f3YIzOviaGbAMZ2vCj5S/ax5+/kG5eCd7olVd3/79DAI8fJICcQFxa9SIEvpkUKj bReuvQc6mo09WBlFo6NEIlBdhS++Mb8pQPgn6f7BOz54hXmDKgcqQoCzgBKmKoMU62wn CTzFPAxBwmjGQRgZUWmtkfnMqZ/IUaqQQT9XrHFXo3EdG8ZNh4K9dlLEQct/CQ5ZLi/K kK1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=R9S/LSPn/1j0oCPN1NzyggB9FDdOm6sAGP8PjD2d018=; b=s6qdP3AyfTPOUS/I90b1n4+B757gq7GtV0QLA0cYhEhHZGxEQ4PA2GsPiKT1oI+2ys aAGmIEk32ez0vUxvOtbxpk47uZ015JEvRBGSUgHhf/f0FOiQFEhc+JPIPNQNC6A0e58b CUYT2oiGvNUi5tnbIg/lT+wFn/I6mcPzjtI/PyhZeRxMMFJS0+/R2+QeJ+BYj2UpRzR8 t/HuHYnbXpFXLd5pRa0TM5ZL4UdPwskWbf9ttVBs/cNSJByGEriu0I+HzP8PSBWNU0ej No0CKrSi8D6sez5RqZ+VFGggOZKs96i8axvDdFQWlc3DEUls36eTzfreQC1OP5bu3gif i34A== X-Gm-Message-State: ABuFfoix4quAsn+OVFBpXu7RFgsnm/eCr0gf53eM8xjY3OT3rmgjWwZd TapGVHoJkgebbVNyrytGUrocse60 X-Google-Smtp-Source: ANB0VdYq8ZVHCTarhUY/1uDPVzF37pQbiWDp/bVs2OT0Ew5nt8tYLiDKXW2hLR3xtDBzRkPoFqqdGw== X-Received: by 2002:a1c:f11a:: with SMTP id p26-v6mr6220111wmh.92.1537778199721; Mon, 24 Sep 2018 01:36:39 -0700 (PDT) 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 t70-v6sm11793128wmt.30.2018.09.24.01.36.38 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 24 Sep 2018 01:36:39 -0700 (PDT) From: Tino Calancha References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> Date: Mon, 24 Sep 2018 17:36:34 +0900 In-Reply-To: <87r2hloffp.fsf@gmail.com> (Noam Postavsky's message of "Sat, 22 Sep 2018 09:00:10 -0400") Message-ID: <87tvmf70ml.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Noam Postavsky writes: > Tino Calancha writes: > >> commit 72e332c986304775e91020c88ded1ba9d7226023 >> Author: Tino Calancha >> Date: Fri Sep 21 17:32:57 2018 +0900 >> >> Ibuffer filter by modes: Accept several mode names >> >> Extend all mode filters so that they handle >1 mode. >> For instance, if the user wants to filter all buffers in >> C or C++ mode, then s?he can call the filter interactively > > If you'll pardon another nit, I suggest using "they" instead of "s?he" > which has the advantage of being a pronounceable English word. I changed to she/he. > I think this hunk is just changing spaces to tabs (shouldn't .dir-locals > be setting indent-tabs-mode to nil though?). I droped my hand-added tabs (also those I added in ibuf-ext.el). Actually I don't like tabs in source code (just added as a sign of respect to the library author). --8<-----------------------------cut here---------------start------------->8--- commit d385f8077ffed38046231bb29448598484352543 Author: Tino Calancha Date: Mon Sep 24 17:29:48 2018 +0900 Ibuffer filter by modes: Accept several mode names Extend all mode filters so that they handle >1 mode. For instance, if the user wants to filter all buffers in C or C++ mode, then she/he can call the filter interactively with input: 'c-mode,c++-mode' (Bug#32731). * lisp/ibuf-macs.el(define-ibuffer-filter): Add key :accept-list. If the value of this key is non-nil, then the filter accepts either a single qualifier or a list of them; in the latter case, the resultant filter is the `or' composition of the individual ones. * lisp/ibuf-ext.el (ibuffer-filter-by-used-mode) (ibuffer-filter-by-mode, ibuffer-filter-by-derived-mode) Set :accept-list value non-nil. Interactively, accept a comma separated list of mode names. * etc/NEWS(Ibuffer): Announce this change. Co-authored-by: Noam Postavsky diff --git a/etc/NEWS b/etc/NEWS index bc6791b05b..8126354ab8 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -62,6 +62,11 @@ to reduce differences between developer and production builds. ** Ibuffer --- +*** All mode filters can now accept a list of symbols. +This means you can now easily filter several major modes, as well +as a single mode. + +--- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Gnus diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index d9949d2835..32ec91db97 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1228,28 +1228,33 @@ ibuffer-list-buffer-modes ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext") (define-ibuffer-filter mode - "Limit current view to buffers with major mode QUALIFIER." + "Limit current view to buffers with major mode(s) specified by QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. +Called interactively, accept a comma separated list of mode names." (:description "major mode" :reader (let* ((buf (ibuffer-current-buffer)) (default (if (and buf (buffer-live-p buf)) (symbol-name (buffer-local-value 'major-mode buf))))) - (intern - (completing-read + (mapcar #'intern + (completing-read-multiple (if default (format "Filter by major mode (default %s): " default) "Filter by major mode: ") obarray - #'(lambda (e) - (string-match "-mode\\'" (symbol-name e))) - t nil nil default)))) + (lambda (e) + (string-match "-mode\\'" (if (symbolp e) (symbol-name e) e))) + t nil nil default))) + :accept-list t) (eq qualifier (buffer-local-value 'major-mode buf))) ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") (define-ibuffer-filter used-mode - "Limit current view to buffers with major mode QUALIFIER. -Called interactively, this function allows selection of modes + "Limit current view to buffers with major mode(s) specified by QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. + +Called interactively, accept a comma separated list of mode names currently used by buffers." (:description "major mode in use" :reader @@ -1257,23 +1262,29 @@ used-mode (default (if (and buf (buffer-live-p buf)) (symbol-name (buffer-local-value 'major-mode buf))))) - (intern - (completing-read + (mapcar #'intern + (completing-read-multiple (if default (format "Filter by major mode (default %s): " default) "Filter by major mode: ") - (ibuffer-list-buffer-modes) nil t nil nil default)))) + (ibuffer-list-buffer-modes) nil t nil nil default))) + :accept-list t) (eq qualifier (buffer-local-value 'major-mode buf))) ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode - "Limit current view to buffers whose major mode inherits from QUALIFIER." + "Limit current view to buffers with major mode(s) specified by QUALIFIER. +QUALIFIER is the mode name as a symbol or a list of symbols. + Restrict the view to buffers whose major mode derivates + from modes specified by QUALIFIER. +Called interactively, accept a comma separated list of mode names." (:description "derived mode" - :reader - (intern - (completing-read "Filter by derived mode: " - (ibuffer-list-buffer-modes t) - nil t))) + :reader + (mapcar #'intern + (completing-read-multiple "Filter by derived mode: " + (ibuffer-list-buffer-modes t) + nil t)) + :accept-list t) (with-current-buffer buf (derived-mode-p qualifier))) ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext") diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el index 6a70a8341a..72a35a5331 100644 --- a/lisp/ibuf-macs.el +++ b/lisp/ibuf-macs.el @@ -280,14 +280,18 @@ ibuffer-save-marks ;;;###autoload (cl-defmacro define-ibuffer-filter (name documentation - (&key - reader - description) - &rest body) + (&key + reader + description + accept-list) + &rest body) "Define a filter named NAME. DOCUMENTATION is the documentation of the function. READER is a form which should read a qualifier from the user. DESCRIPTION is a short string describing the filter. +ACCEPT-LIST is a boolean; if non-nil, the filter accepts either +a single condition or a list of them; in the latter +case the filter is the `or' composition of the conditions. BODY should contain forms which will be evaluated to test whether or not a particular buffer should be displayed or not. The forms in BODY @@ -296,30 +300,41 @@ ibuffer-save-marks \(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" (declare (indent 2) (doc-string 2)) - (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name))))) + (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name)))) + (filter (make-symbol "ibuffer-filter")) + (qualifier-str (make-symbol "ibuffer-qualifier-str"))) `(progn (defun ,fn-name (qualifier) - ,(or documentation "This filter is not documented.") - (interactive (list ,reader)) - (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))) + ,(or documentation "This filter is not documented.") + (interactive (list ,reader)) + (let ((,filter (cons ',name qualifier)) + (,qualifier-str qualifier)) + ,(when accept-list + `(progn + (unless (listp qualifier) (setq qualifier (list qualifier))) + ;; Reject equivalent filters: (or f1 f2) is same as (or f2 f1). + (setq qualifier (sort (delete-dups qualifier) #'string-lessp)) + (setq ,filter (cons ',name (car qualifier))) + (setq ,qualifier-str + (mapconcat (lambda (m) (if (symbolp m) (symbol-name m) m)) + qualifier ",")) + (when (cdr qualifier) ; Compose individual filters with `or'. + (setq ,filter `(or ,@(mapcar (lambda (m) (cons ',name m)) qualifier)))))) + (if (null (ibuffer-push-filter ,filter)) + (message ,(format "Filter by %s already applied: %%s" description) + ,qualifier-str) + (message ,(format "Filter by %s added: %%s" description) + ,qualifier-str) + (ibuffer-update nil t)))) (push (list ',name ,description - (lambda (buf qualifier) - (condition-case nil - (progn ,@body) - (error (ibuffer-pop-filter) - (when (eq ',name 'predicate) - (error "Wrong filter predicate: %S" - qualifier)))))) - ibuffer-filtering-alist) + (lambda (buf qualifier) + (condition-case nil + (progn ,@body) + (error (ibuffer-pop-filter) + (when (eq ',name 'predicate) + (error "Wrong filter predicate: %S" + qualifier)))))) + ibuffer-filtering-alist) :autoload-end))) (provide 'ibuf-macs) --8<-----------------------------cut here---------------end--------------->8--- From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Richard Stallman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 24 Sep 2018 19:59:02 +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: To: Tino Calancha Cc: 32731@debbugs.gnu.org, npostavs@gmail.com, tino.calancha@gmail.com Reply-To: rms@gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153781913925437 (code B ref 32731); Mon, 24 Sep 2018 19:59:02 +0000 Received: (at 32731) by debbugs.gnu.org; 24 Sep 2018 19:58:59 +0000 Received: from localhost ([127.0.0.1]:52388 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4X0V-0006cD-34 for submit@debbugs.gnu.org; Mon, 24 Sep 2018 15:58:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42285) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4X0S-0006bz-O5 for 32731@debbugs.gnu.org; Mon, 24 Sep 2018 15:58:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g4X0M-0006Fk-C2 for 32731@debbugs.gnu.org; Mon, 24 Sep 2018 15:58:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41786) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g4X0J-0006EU-CP; Mon, 24 Sep 2018 15:58:47 -0400 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1g4X0J-0004bB-62; Mon, 24 Sep 2018 15:58:47 -0400 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman In-Reply-To: (message from Tino Calancha on Mon, 24 Sep 2018 17:27:42 +0900 (JST)) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> Message-Id: Date: Mon, 24 Sep 2018 15:58:47 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] "She/he" seems to exclude nonbinary genders. "S?he" does not HAVE to mean "only she or he". -- Dr Richard Stallman President, Free Software Foundation (https://gnu.org, https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 24 Sep 2018 20:49:02 +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: To: Richard Stallman Cc: 32731@debbugs.gnu.org, npostavs@gmail.com, Tino Calancha Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153782213330612 (code B ref 32731); Mon, 24 Sep 2018 20:49:02 +0000 Received: (at 32731) by debbugs.gnu.org; 24 Sep 2018 20:48:53 +0000 Received: from localhost ([127.0.0.1]:52556 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4Xmm-0007xg-Rc for submit@debbugs.gnu.org; Mon, 24 Sep 2018 16:48:53 -0400 Received: from mail-wr1-f52.google.com ([209.85.221.52]:39499) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4Xmk-0007xS-Ru for 32731@debbugs.gnu.org; Mon, 24 Sep 2018 16:48:51 -0400 Received: by mail-wr1-f52.google.com with SMTP id s14-v6so21051411wrw.6 for <32731@debbugs.gnu.org>; Mon, 24 Sep 2018 13:48:50 -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=Y18eSVDuY5Jmc+NtRWA2B9yVlm581jTrd3nMz8cDb+A=; b=iPl5l0+QG4h/3L67Bm7Zx432HRP6+XExyJHRZ7luHlnDjER1TNexYS1EOHaO0wlaZ6 93hyZ6C0tFME6i1GT+JGTfwX3V0UPbYO1q8lGHtF686NA1CuJrDpELkU+YQYvDqZSRMd w9jRNo7mNbOpsxg425YLQDZEmadvpDFBqU474SdCG0xgFV6a1xS08BMA05L+aNSEzV0P Va/rlqGjne/RWECFR2egWFmLkgE2/FEn8xB5Mwu6wH+JTj8gzR2v4OGp0VSNS2ittvtV bMYA5ERyQeStb/NTNXn0oGPcitz5pB7vUEe7UjY0Bwt1YQghymf80HWefIEH8rpbJ24O hyJw== 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=Y18eSVDuY5Jmc+NtRWA2B9yVlm581jTrd3nMz8cDb+A=; b=BU9vNDVXnAe116eU5C3leiozGkshCHu31Nzeltkhu6QljmorB9nhGqJ7G8Wpzna/3C UMIyBk1w6FF0cS6KAAVhJxgixngkiYIsvuw3rVgnwfJWOoMVPupv+tPgmUAQlyoWsvfP A9vca7sKTucV3YLMckm7uqUdPbWb1t6PBz5o1b25tRV9tt+USTpyxVUKFwqgxxgQKG8M PLnAMiHKrvOgNyj8wdP+e0+qL4fiIy1TIMCAiLFdRJ6183qyymCkJbubZroWNFE4bF+E 4je6a6PB0I6vtNaFuEr7EtreyBpy9IeL8Pu3q1YO/T6v+2rPcDFKoPEerfwSZhalR7s1 PjYw== X-Gm-Message-State: ABuFfohhDS1H6PchBXEFDxPy2v7FRkpHKZ/kXzVRbiZ/zdsMJlKHBbzH P0FGpqGhir5OeK+xKt1nULI= X-Google-Smtp-Source: ACcGV60p7j8RSrqcq2un7fBRT1KTys3hJjtfQNZBFIPVJgiiAEJacyI5QJJuZ4h9UzlwVP/60+jnuQ== X-Received: by 2002:adf:a626:: with SMTP id k35-v6mr363812wrc.109.1537822125076; Mon, 24 Sep 2018 13:48:45 -0700 (PDT) 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 b12sm568863wrx.11.2018.09.24.13.48.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Sep 2018 13:48:44 -0700 (PDT) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Tue, 25 Sep 2018 05:48:43 +0900 (JST) X-X-Sender: calancha@calancha-pc.dy.bbexcite.jp In-Reply-To: Message-ID: References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, 24 Sep 2018, Richard Stallman wrote: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > "She/he" seems to exclude nonbinary genders. > "S?he" does not HAVE to mean "only she or he". I don't feel excluded if I read "she". Maybe I have enough self-confidence or I know the difference between sex and gramatical genre. Anyway, whatever Eli likes is fine for me. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 24 Sep 2018 21:16: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: To: Tino Calancha Cc: npostavs@gmail.com, rms@gnu.org, 32731@debbugs.gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.15378237268471 (code B ref 32731); Mon, 24 Sep 2018 21:16:01 +0000 Received: (at 32731) by debbugs.gnu.org; 24 Sep 2018 21:15:26 +0000 Received: from localhost ([127.0.0.1]:52578 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4YCT-0002CZ-M6 for submit@debbugs.gnu.org; Mon, 24 Sep 2018 17:15:25 -0400 Received: from eggs.gnu.org ([208.118.235.92]:39126) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4YCR-0002CJ-Sy for 32731@debbugs.gnu.org; Mon, 24 Sep 2018 17:15:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g4YCM-0005Kd-3G for 32731@debbugs.gnu.org; Mon, 24 Sep 2018 17:15:18 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44071) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g4YCI-0005Jn-CY; Mon, 24 Sep 2018 17:15:14 -0400 Received: from [176.228.60.248] (port=4993 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1g4YC4-0002qK-3Q; Mon, 24 Sep 2018 17:15:00 -0400 Date: Tue, 25 Sep 2018 00:14:54 +0300 Message-Id: <83ftxya981.fsf@gnu.org> From: Eli Zaretskii In-reply-to: (message from Tino Calancha on Tue, 25 Sep 2018 05:48:43 +0900 (JST)) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Tino Calancha > Date: Tue, 25 Sep 2018 05:48:43 +0900 (JST) > Cc: Tino Calancha , 32731@debbugs.gnu.org, > npostavs@gmail.com > > > "She/he" seems to exclude nonbinary genders. > > "S?he" does not HAVE to mean "only she or he". > I don't feel excluded if I read "she". Maybe I have enough > self-confidence or I know the difference between > sex and gramatical genre. > Anyway, whatever Eli likes is fine for me. I usually just rewrite the text to be in plural, like "the users" instead of "the user". Then "they" is correct English. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 25 Sep 2018 08:15: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: To: Eli Zaretskii Cc: npostavs@gmail.com, 32731@debbugs.gnu.org, rms@gnu.org, Tino Calancha Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153786326124529 (code B ref 32731); Tue, 25 Sep 2018 08:15:01 +0000 Received: (at 32731) by debbugs.gnu.org; 25 Sep 2018 08:14:21 +0000 Received: from localhost ([127.0.0.1]:52831 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4iU9-0006NZ-BL for submit@debbugs.gnu.org; Tue, 25 Sep 2018 04:14:21 -0400 Received: from mail-wr1-f45.google.com ([209.85.221.45]:34716) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4iU7-0006NN-Rm for 32731@debbugs.gnu.org; Tue, 25 Sep 2018 04:14:20 -0400 Received: by mail-wr1-f45.google.com with SMTP id t15so14386926wrx.1 for <32731@debbugs.gnu.org>; Tue, 25 Sep 2018 01:14:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:mail-copies-to:gmane-reply-to-list :date:in-reply-to:message-id:mime-version:content-transfer-encoding; bh=n/Ozld3Iw+4N5BiYID3pJm2H9TRQoGP7IxjnCK6Ass0=; b=DdsXk/yWk/iEMUgSUpj59Whs18E78VHkV8J8jrB8tx7Upvlft/fjhLefngv/ct/TAU lV/u7pM87MSIDgPPLSyNcRjlYQ+10d5rXPk1If9NRYndrLZuovbArXtq7qAa9Fjraom2 +/vPBkZVC6fpkRP35dX4WxkQDGwlp6onchHPwUnBLaDgaahesrLRIRusqivqxj/bbFtv vuGkctV9jYi+gZQcvGVE7ClYqbbfcuEF0T5ygc/Vsjq3LhNkYHR6aj155bL76v95Nvfv HJskk57APzHFynjv8CI1+9ruulnGT73ZYBz3oYdB8lALdymouxLxiTuFAsqoxd+1M/T5 IMVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:mail-copies-to :gmane-reply-to-list:date:in-reply-to:message-id:mime-version :content-transfer-encoding; bh=n/Ozld3Iw+4N5BiYID3pJm2H9TRQoGP7IxjnCK6Ass0=; b=LnV4qGcZVveieAr11LyeGMvqasXXuef8kO8Eu+63vOGbxdPqJdBCwLWjVXaoDUlgsr 3yHjWA8Wwq+cdrnc4qJFYOMPHlPyzg38Cr+h60W7vE0OB4eek5B8Te+almTJgPbQhk1v h1lWqHXetXJJf2M+ksPDwnoQGn6G2BOuxRvwe/vhC1sotjHRkEclRQBafHcjfv2D2BPL I+fWQiEiDfg/h5UD1co3ngCNYKdoEMCsO8rK59tk9atuEtbm+gU5WWK1VW+I27qImB+R 8t53jFY+h8K3eIlzlBdl3tp2zJdYtFTuZ1mZVDZgI7ASG51D8/MmGjHobZ8YxAW+CkYt ODfQ== X-Gm-Message-State: ABuFfoiJVffPn8WGHDo1w8rz//POHULhH8CfttykeEOQ9C3zhBJRttfY qH+kYG8TorUN2H7ALkoIqEo= X-Google-Smtp-Source: ACcGV601nDBlorR3uidM7NdFlbygRYk+5QDZ3hx2wWMGgeIYwwVNOzqK4dirhr0xWqcr59BAhxFGiw== X-Received: by 2002:adf:f0d1:: with SMTP id x17-v6mr1947052wro.49.1537863253920; Tue, 25 Sep 2018 01:14:13 -0700 (PDT) Received: from rpluim-ubuntu ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id e64-v6sm1283967wmg.0.2018.09.25.01.14.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Sep 2018 01:14:12 -0700 (PDT) From: Robert Pluim References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> <83ftxya981.fsf@gnu.org> Mail-Copies-To: never Gmane-Reply-To-List: yes Date: Tue, 25 Sep 2018 10:14:11 +0200 In-Reply-To: <83ftxya981.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 25 Sep 2018 00:14:54 +0300") Message-ID: <875zyu9ep8.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Tino Calancha >> Date: Tue, 25 Sep 2018 05:48:43 +0900 (JST) >> Cc: Tino Calancha , 32731@debbugs.gnu.org, >> npostavs@gmail.com >>=20 >> > "She/he" seems to exclude nonbinary genders. >> > "S?he" does not HAVE to mean "only she or he". >> I don't feel excluded if I read "she". Maybe I have enough=20 >> self-confidence or I know the difference between >> sex and gramatical genre. >> Anyway, whatever Eli likes is fine for me. > > I usually just rewrite the text to be in plural, like "the users" > instead of "the user". Then "they" is correct English. Point of order: singular they has been correct English for the last 700 years. Some people don=CA=BCt like it, but that doesn=CA=BCt make it wr= ong. Robert From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 25 Sep 2018 09:25:02 +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: To: Robert Pluim Cc: npostavs@gmail.com, 32731@debbugs.gnu.org, rms@gnu.org, tino.calancha@gmail.com Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153786748731338 (code B ref 32731); Tue, 25 Sep 2018 09:25:02 +0000 Received: (at 32731) by debbugs.gnu.org; 25 Sep 2018 09:24:47 +0000 Received: from localhost ([127.0.0.1]:52864 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4jaJ-00089O-3S for submit@debbugs.gnu.org; Tue, 25 Sep 2018 05:24:47 -0400 Received: from eggs.gnu.org ([208.118.235.92]:44611) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4jaH-00089B-Ab for 32731@debbugs.gnu.org; Tue, 25 Sep 2018 05:24:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g4jaB-000827-3F for 32731@debbugs.gnu.org; Tue, 25 Sep 2018 05:24:39 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52833) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g4ja6-00080P-IE; Tue, 25 Sep 2018 05:24:34 -0400 Received: from [176.228.60.248] (port=2415 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1g4ja0-0005cS-2s; Tue, 25 Sep 2018 05:24:28 -0400 Date: Tue, 25 Sep 2018 12:24:22 +0300 Message-Id: <835zyu9bg9.fsf@gnu.org> From: Eli Zaretskii In-reply-to: <875zyu9ep8.fsf@gmail.com> (message from Robert Pluim on Tue, 25 Sep 2018 10:14:11 +0200) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> <83ftxya981.fsf@gnu.org> <875zyu9ep8.fsf@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Robert Pluim > Cc: Tino Calancha , 32731@debbugs.gnu.org, npostavs@gmail.com, rms@gnu.org > Date: Tue, 25 Sep 2018 10:14:11 +0200 > > > I usually just rewrite the text to be in plural, like "the users" > > instead of "the user". Then "they" is correct English. > > Point of order: singular they has been correct English for the last > 700 years. Some people donʼt like it, but that doesnʼt make it wrong. "Some people" seem to include Richard, who said a few messages ago: > Using "they" for a singular antecedent is confusing, and I always find > it jarring. I won't make a rule against, but I make a point of never > using that construction. Thus my preference to rewrite in plural. From unknown Sat Aug 16 12:46:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Resent-From: Richard Stallman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 25 Sep 2018 23:04: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: To: Eli Zaretskii Cc: rpluim@gmail.com, 32731@debbugs.gnu.org, npostavs@gmail.com, tino.calancha@gmail.com Reply-To: rms@gnu.org Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153791661631742 (code B ref 32731); Tue, 25 Sep 2018 23:04:01 +0000 Received: (at 32731) by debbugs.gnu.org; 25 Sep 2018 23:03:36 +0000 Received: from localhost ([127.0.0.1]:54186 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4wMi-0008Fu-Gs for submit@debbugs.gnu.org; Tue, 25 Sep 2018 19:03:36 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57320) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g4wMh-0008Ff-H1 for 32731@debbugs.gnu.org; Tue, 25 Sep 2018 19:03:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g4wMb-0004dZ-A0 for 32731@debbugs.gnu.org; Tue, 25 Sep 2018 19:03:30 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41385) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g4wMJ-0004Qv-Mn; Tue, 25 Sep 2018 19:03:11 -0400 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1g4wMJ-0006VF-GW; Tue, 25 Sep 2018 19:03:11 -0400 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman In-Reply-To: <835zyu9bg9.fsf@gnu.org> (message from Eli Zaretskii on Tue, 25 Sep 2018 12:24:22 +0300) References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> <83ftxya981.fsf@gnu.org> <875zyu9ep8.fsf@gmail.com> <835zyu9bg9.fsf@gnu.org> Message-Id: Date: Tue, 25 Sep 2018 19:03:11 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > Thus my preference to rewrite in plural. Please do that, -- Dr Richard Stallman President, Free Software Foundation (https://gnu.org, https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) From unknown Sat Aug 16 12:46:24 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Tino Calancha Subject: bug#32731: closed (Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names) Message-ID: References: <87a7o07hww.fsf@calancha-pc.dy.bbexcite.jp> <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> X-Gnu-PR-Message: they-closed 32731 X-Gnu-PR-Package: emacs Reply-To: 32731@debbugs.gnu.org Date: Sat, 29 Sep 2018 09:50:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1538214602-30688-1" This is a multi-part message in MIME format... ------------=_1538214602-30688-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 32731@debbugs.gnu.org. --=20 32731: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D32731 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1538214602-30688-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 32731-done) by debbugs.gnu.org; 29 Sep 2018 09:49:14 +0000 Received: from localhost ([127.0.0.1]:58276 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g6BsA-0007xu-Ab for submit@debbugs.gnu.org; Sat, 29 Sep 2018 05:49:14 -0400 Received: from mail-wm1-f43.google.com ([209.85.128.43]:39931) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g6Bs8-0007xh-IV for 32731-done@debbugs.gnu.org; Sat, 29 Sep 2018 05:49:13 -0400 Received: by mail-wm1-f43.google.com with SMTP id q8-v6so4323739wmq.4 for <32731-done@debbugs.gnu.org>; Sat, 29 Sep 2018 02:49:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version:content-transfer-encoding; bh=dWxo8dBXUHrajAMhgM1uoTP/vJ0dXvbfRZcp+cOWzJk=; b=qNibLY++oBg87a+cwvgoulsZqJFQ7RmY8u1Fz6Ip235Omdp/Wx4ONXzvULswo0uE6/ fC7cAJD752OVeBkAZQSrlvt8mPvzSQ5PaAck4RkzL7vnP79l7KZfVZ1sbYn9zlZkIRPF AM0yatIGRCt92T/SpNr42tiy+AAnMAsw9Dzz/1Dkrq2nrn27PqNs3LOyJ51i8r0Hr0/P Au/CYhKSdA/f0CjRRfR77A9LA+07FyyXjfxHa9WEPFmkon4pnNOpPNOBtyyDV3tVfgqw dGqC10u6pVcKhMlk7slZXwRSFs7junCT/UCh4rj5Km22zhrnR/d1tex8dj0Iy6pgq0Q8 mpBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=dWxo8dBXUHrajAMhgM1uoTP/vJ0dXvbfRZcp+cOWzJk=; b=G77LERDsuxCDrxJ9bTCIPfMurhFjwx8abVMQeRsNBTTpDmDfQ+nEQ3BDnJqd/EbFdc ToquLshv8O5I4P7F9ba2MO9MMUAtN7iWOqSZPlRjPFHZBg2awasWy6Ty115DvQUA6x7N oziaqjrPcrS2dNG+WR9lNOUz/QYKWvl7Bn/n9C1RPUesvozStdyUSDsGESaqzGSxDrXc BIp/uqihv6xf5D51s2q1uceZmSQdMD+6iCXy6EjCou3Pd6jFjVTeYfGKWrqNtgm0QQHA tiKFv/YXL/y1nyI96aC4rZmJz3meMuneuXYnZH0FBbyE5xri2a6+p8zwmkTKb4uOnybN e2eA== X-Gm-Message-State: ABuFfohcrx47gV8C+Ukf0CwllWVn9/UbYvIpRmQTS9l8CTEJ1cMofwIz S0tCbNYfYp/hqfj/RsnkbdI5E6e/dgs= X-Google-Smtp-Source: ACcGV606t0tSHGcRsXw8RXs7ZaVv+LJCLm8rvtVnyci6T4SDQHkpvI6Itn7i0bOzjD8XP7RHt9LyZA== X-Received: by 2002:a1c:a187:: with SMTP id k129-v6mr4258873wme.111.1538214546386; Sat, 29 Sep 2018 02:49:06 -0700 (PDT) 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 k63-v6sm8053206wmd.46.2018.09.29.02.49.04 for <32731-done@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 29 Sep 2018 02:49:05 -0700 (PDT) From: Tino Calancha To: 32731-done@debbugs.gnu.org Subject: Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names References: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> <874let9lps.fsf@calancha-pc.dy.bbexcite.jp> <87ftydezmi.fsf@gmail.com> <87worn86l5.fsf@calancha-pc.dy.bbexcite.jp> <878t43rkxd.fsf@gmail.com> <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> <871s9qqtq1.fsf@gmail.com> <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> <83sh25escb.fsf@gnu.org> <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> <87r2hloffp.fsf@gmail.com> <83ftxya981.fsf@gnu.org> <875zyu9ep8.fsf@gmail.com> Date: Sat, 29 Sep 2018 18:49:03 +0900 In-Reply-To: <875zyu9ep8.fsf@gmail.com> (Robert Pluim's message of "Tue, 25 Sep 2018 10:14:11 +0200") Message-ID: <87a7o07hww.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 32731-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Robert Pluim writes: > Eli Zaretskii writes: > >>> From: Tino Calancha >>> Date: Tue, 25 Sep 2018 05:48:43 +0900 (JST) >>> Cc: Tino Calancha , 32731@debbugs.gnu.org, >>> npostavs@gmail.com >>>=20 >>> > "She/he" seems to exclude nonbinary genders. >>> > "S?he" does not HAVE to mean "only she or he". >>> I don't feel excluded if I read "she". Maybe I have enough=20 >>> self-confidence or I know the difference between >>> sex and gramatical genre. >>> Anyway, whatever Eli likes is fine for me. >> >> I usually just rewrite the text to be in plural, like "the users" >> instead of "the user". Then "they" is correct English. > > Point of order: singular they has been correct English for the last > 700 years. Some people don=CA=BCt like it, but that doesn=CA=BCt make it = wrong. My grandmother used to say: "You'll never go to bed without learning a new thing" [I know, every grandmother says that; same as the best food is the one prepared by the mother of the person you are asking.] I will write it in plural. Thank you all for the feedback! Implemented at master branch as commit 'Ibuffer filter by modes: Accept several mode names' (2296bf188fc99d66306e71e6decd3d2e176b7ae6) ------------=_1538214602-30688-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 13 Sep 2018 18:19:59 +0000 Received: from localhost ([127.0.0.1]:39587 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0WDf-0000Yg-8I for submit@debbugs.gnu.org; Thu, 13 Sep 2018 14:19:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34256) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g0WDe-0000YS-0J for submit@debbugs.gnu.org; Thu, 13 Sep 2018 14:19:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g0WDU-00086L-Ge for submit@debbugs.gnu.org; Thu, 13 Sep 2018 14:19:52 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:50576) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1g0WDM-0007wK-Q1 for submit@debbugs.gnu.org; Thu, 13 Sep 2018 14:19:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55031) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g0WDL-0006LK-MA for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 14:19:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g0WDC-0007o6-Gj for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 14:19:35 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]:34481) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g0WDB-0007mJ-PO for bug-gnu-emacs@gnu.org; Thu, 13 Sep 2018 14:19:30 -0400 Received: by mail-wr1-x431.google.com with SMTP id g33-v6so7406873wrd.1 for ; Thu, 13 Sep 2018 11:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=nBIT0e9ZZpcI7WpV6f2xE4Mc3+qh5joff++NRy3CoK0=; b=rTNwHudhJSHbRIvl2R52ryUkfDhXJ3OsmU+WQYYgD0GoydNHcqDqcxVYWg7wwgBGOW qH5DbF/KiMY9XFqi1W0CbNi0Py5SWO0Esb7q6N/cjVpsEEuc/huB+hJNSN2LjRdaEALc Vq6Wo1x6M7eUrxM/BKU2fqvLzDPZLzKdJ8HWp2qux4wU5/QI3nFbrZwhmR6WndtFt03J YHrILfhM68KeG74KKq4J+hsLvmZW5h7t3uSjd9qKCA6j6LrZAnnP8l0uCwS7kosrTZAP HdSafuKwjKUWjc2adCYhmIhZQMrnMEsfzgxszMdth0R0P4mJNzAFCFJ96RcZAG+8DTFe qZng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=nBIT0e9ZZpcI7WpV6f2xE4Mc3+qh5joff++NRy3CoK0=; b=eZOcSKWLEFq1TQbV+bG6qNDVILPbPlsX67QRKBOjYyQNl3AogIz/hAxKGinxzEPh53 4GmceNiz6qDa33V/B0f1yyeDygEF8MR+taMYuEaHQMX5eEnkdoSNYdyuuSi26znWdOFc l1FmVyNzs8HCNHyDSKzluVvKVp7vVp+NOrf1EIWF8zQ03i1G2ItjvQ1bPBwW2AdqjjcI GPuWi6Mksgzflt2vpxkWd2A/1+iMU5PCNbSTN1Arf6QYlVgBuzL71UDfzRkr4VJmKw3l YyIDJ4HSHUSatpG+HdAsDpds+6STYHvxoJEaw5z95ANDAg1PkZNYu/MJakwdK/k1tDoA 8XNg== X-Gm-Message-State: APzg51Aalyt95/IyY/2H+B3ow9NbWJtQvntywCKOCQjy8LF5w0TwwVQY bLDv3PUp1sbq1F4kUWPZgBsXr4jl X-Google-Smtp-Source: ANB0Vda25x3ImuaJ8rUatLIk22nBdnv8Fxbu4U/+SAJsqEeK1S8Ht+FgrHhrl7XJOWKBe1uIjn7wmw== X-Received: by 2002:a1c:55c2:: with SMTP id j185-v6mr6873936wmb.104.1536862767752; Thu, 13 Sep 2018 11:19:27 -0700 (PDT) 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 z141-v6sm4495782wmc.3.2018.09.13.11.19.25 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 13 Sep 2018 11:19:26 -0700 (PDT) From: Tino Calancha To: bug-gnu-emacs@gnu.org Subject: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Date: Fri, 14 Sep 2018 03:19:21 +0900 Message-ID: <87bm919s5y.fsf@calancha-pc.dy.bbexcite.jp> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Severity: wishlist Ibuffer filtering is a great feature. If you just want to filter by 1 major, then it's quite straight. /m [mode1-name] RET Filtering by >1 major mode is still possible; you must combine the individuals filters with `ibuffer-or-filter': /m [mode1-name] RET /m [mode2-name] RET /| /m [mode3-name] RET /| . . . /m [modeN-name] RET /| This become a bit cumbersome with > 2 mode names; you also need to remember how to combine filters, which I usually forget :-| Following patch adds a new command `ibuffer-filter-by-used-modes', similar as `ibuffer-filter-by-used-mode', to simplify this filtering. The new command accepts a list of mode names, and it takes care internally of the filter composition. Interactively, it preserves the interface of `ibuffer-filter-by-used-mode', with the only difference that the user might input a comma separated list of mode names. For instance, ;; Following produces identical result as the original command M-x ibuffer-filter-by-used-modes RET mode1-mode RET ;; This is equivalent to create the N filters + OR-compose them M-x ibuffer-filter-by-used-modes RET mode1-mode,mode2-mode,...,modeN-mode RET --8<-----------------------------cut here---------------start------------->8--- commit e36ff5779764e531cc149e4342e93cb6e37c30ee Author: Tino Calancha Date: Fri Sep 14 03:10:11 2018 +0900 Ibuffer filter by mode: Handle >1 mode names Extend used mode filtering so that we can input >1 mode. For instance, if we want to filter all buffers in C or C++ mode, then we can call the filter interactively with input: 'c-mode,c++-mode'. * lisp/ibuf-ext.el (ibuffer-filter-by-used-modes): New command. Accept a list of mode names (symbols). Interactively, accept a comma separated list of mode names. * lisp/ibuffer.el(ibuffer-mode-map): Rebind '/ m' to the new command. * etc/NEWS(Ibuffer): Announce this change. diff --git a/etc/NEWS b/etc/NEWS index a54ac2db43..6ef6f20b05 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -48,6 +48,11 @@ often cause crashes. Set it to nil if you really need those fonts. ** Ibuffer --- +*** The new command 'ibuffer-filter-by-used-modes', bound +to '/ m', extends 'ibuffer-filter-by-used-mode'; it makes easy +filtering buffers by a list of major modes. + +--- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Imenu diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index a3143e5e29..b7c3ae8030 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1265,6 +1265,34 @@ used-mode (ibuffer-list-buffer-modes) nil t nil nil default)))) (eq qualifier (buffer-local-value 'major-mode buf))) +;;;###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))))) + (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) + (ibuffer-or-filter)))) + ;;;###autoload (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext") (define-ibuffer-filter derived-mode "Limit current view to buffers whose major mode inherits from QUALIFIER." diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 08b0801cb5..f7c20d0da3 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -519,7 +519,7 @@ ibuffer-mode-map (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode) (define-key map (kbd "/ RET") 'ibuffer-filter-by-mode) - (define-key map (kbd "/ m") 'ibuffer-filter-by-used-mode) + (define-key map (kbd "/ m") 'ibuffer-filter-by-used-modes) (define-key map (kbd "/ M") 'ibuffer-filter-by-derived-mode) (define-key map (kbd "/ n") 'ibuffer-filter-by-name) (define-key map (kbd "/ *") 'ibuffer-filter-by-starred-name) --8<-----------------------------cut here---------------end--------------->8--- In GNU Emacs 26.1.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2018-09-14 built Repository revision: 41cdda22c78eb0b00612ce25cdb356dd64322fcc ------------=_1538214602-30688-1--