From unknown Sat Aug 16 00:30:43 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#32731 <32731@debbugs.gnu.org> To: bug#32731 <32731@debbugs.gnu.org> Subject: Status: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Reply-To: bug#32731 <32731@debbugs.gnu.org> Date: Sat, 16 Aug 2025 07:30:43 +0000 retitle 32731 26.1.50; Ibuffer filter by mode: Handle >1 mode names reassign 32731 emacs submitter 32731 Tino Calancha severity 32731 wishlist thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 13 14:19:59 2018 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 From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 13 15:09:49 2018 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: Subject: Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names To: Tino Calancha Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Thu Sep 13 16:04:45 2018 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 To: Noam Postavsky Subject: Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org, Tino Calancha 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 debbugs-submit-bounces@debbugs.gnu.org Thu Sep 13 16:38:54 2018 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 To: Noam Postavsky Subject: Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Thu Sep 13 19:39:27 2018 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 To: Tino Calancha 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> 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Sat Sep 15 05:15:34 2018 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 To: Noam Postavsky 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> 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Sat Sep 15 08:43:07 2018 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 To: Tino Calancha Subject: Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Mon Sep 17 13:44:44 2018 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 To: Noam Postavsky 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> 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Mon Sep 17 14:27:39 2018 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 To: Tino Calancha In-reply-to: <87sh2881dv.fsf@calancha-pc.dy.bbexcite.jp> (message from Tino Calancha on Tue, 18 Sep 2018 02:44:28 +0900) 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> 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-Debbugs-Envelope-To: 32731 Cc: npostavs@gmail.com, 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Mon Sep 17 15:54:08 2018 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 To: Eli Zaretskii Subject: Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org, npostavs@gmail.com, Tino Calancha 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 debbugs-submit-bounces@debbugs.gnu.org Tue Sep 18 03:14:32 2018 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 To: Tino Calancha In-reply-to: (message from Tino Calancha on Tue, 18 Sep 2018 04:53:56 +0900 (JST)) 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> <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-Debbugs-Envelope-To: 32731 Cc: npostavs@gmail.com, 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Tue Sep 18 19:19:44 2018 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 To: Tino Calancha 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> 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Wed Sep 19 05:24:07 2018 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 To: Noam Postavsky 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> 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Wed Sep 19 05:42:59 2018 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 To: Tino Calancha In-reply-to: <877ejh96xj.fsf@calancha-pc.dy.bbexcite.jp> (message from Tino Calancha on Wed, 19 Sep 2018 18:23:52 +0900) 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> 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-Debbugs-Envelope-To: 32731 Cc: npostavs@gmail.com, 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Fri Sep 21 04:37:54 2018 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 To: Eli Zaretskii 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> 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-Debbugs-Envelope-To: 32731 Cc: npostavs@gmail.com, 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 05:14:30 2018 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 To: Tino Calancha In-reply-to: <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> (message from Tino Calancha on Fri, 21 Sep 2018 17:37:39 +0900) 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> 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-Debbugs-Envelope-To: 32731 Cc: npostavs@gmail.com, 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 09:00:21 2018 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 To: Tino Calancha 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> 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-Debbugs-Envelope-To: 32731 Cc: Eli Zaretskii , 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 23:09:23 2018 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 To: Noam Postavsky In-Reply-To: <87r2hloffp.fsf@gmail.com> (message from Noam Postavsky on Sat, 22 Sep 2018 09:00:10 -0400) 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> 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org, tino.calancha@gmail.com 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: , Reply-To: rms@gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Sun Sep 23 08:01:34 2018 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 To: Richard Stallman 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> 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org, tino.calancha@gmail.com 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 debbugs-submit-bounces@debbugs.gnu.org Mon Sep 24 04:27:52 2018 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 To: Richard Stallman Subject: Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org, Noam Postavsky , Tino Calancha 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 debbugs-submit-bounces@debbugs.gnu.org Mon Sep 24 04:36:48 2018 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 To: Noam Postavsky 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> 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-Debbugs-Envelope-To: 32731 Cc: Eli Zaretskii , 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Mon Sep 24 15:58:59 2018 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 To: Tino Calancha In-Reply-To: (message from Tino Calancha on Mon, 24 Sep 2018 17:27:42 +0900 (JST)) 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> 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org, npostavs@gmail.com, tino.calancha@gmail.com 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: , Reply-To: rms@gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Mon Sep 24 16:48:53 2018 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 To: Richard Stallman Subject: Re: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names 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-Debbugs-Envelope-To: 32731 Cc: 32731@debbugs.gnu.org, npostavs@gmail.com, Tino Calancha 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 debbugs-submit-bounces@debbugs.gnu.org Mon Sep 24 17:15:26 2018 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 To: Tino Calancha In-reply-to: (message from Tino Calancha on Tue, 25 Sep 2018 05:48:43 +0900 (JST)) 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> 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-Debbugs-Envelope-To: 32731 Cc: npostavs@gmail.com, rms@gnu.org, 32731@debbugs.gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Tue Sep 25 04:14:21 2018 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 To: Eli Zaretskii 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> X-Debbugs-No-Ack: yes 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-Debbugs-Envelope-To: 32731 Cc: npostavs@gmail.com, 32731@debbugs.gnu.org, rms@gnu.org, Tino Calancha 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 debbugs-submit-bounces@debbugs.gnu.org Tue Sep 25 05:24:47 2018 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 To: Robert Pluim In-reply-to: <875zyu9ep8.fsf@gmail.com> (message from Robert Pluim on Tue, 25 Sep 2018 10:14:11 +0200) 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> 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-Debbugs-Envelope-To: 32731 Cc: npostavs@gmail.com, 32731@debbugs.gnu.org, rms@gnu.org, tino.calancha@gmail.com 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 debbugs-submit-bounces@debbugs.gnu.org Tue Sep 25 19:03:36 2018 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 To: Eli Zaretskii In-Reply-To: <835zyu9bg9.fsf@gnu.org> (message from Eli Zaretskii on Tue, 25 Sep 2018 12:24:22 +0300) 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> <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-Debbugs-Envelope-To: 32731 Cc: rpluim@gmail.com, 32731@debbugs.gnu.org, npostavs@gmail.com, tino.calancha@gmail.com 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: , Reply-To: rms@gnu.org 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 debbugs-submit-bounces@debbugs.gnu.org Sat Sep 29 05:49:14 2018 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) From unknown Sat Aug 16 00:30:43 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 27 Oct 2018 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator