From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Noam Postavsky Newsgroups: gmane.emacs.bugs Subject: bug#32731: 26.1.50; Ibuffer filter by mode: Handle >1 mode names Date: Sat, 22 Sep 2018 09:00:10 -0400 Message-ID: <87r2hloffp.fsf@gmail.com> 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> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1537621151 18625 195.159.176.226 (22 Sep 2018 12:59:11 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 22 Sep 2018 12:59:11 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) Cc: 32731@debbugs.gnu.org To: Tino Calancha Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Sep 22 14:59:07 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3hV4-0004kW-ME for geb-bug-gnu-emacs@m.gmane.org; Sat, 22 Sep 2018 14:59:06 +0200 Original-Received: from localhost ([::1]:32913 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g3hXB-0005Z3-2H for geb-bug-gnu-emacs@m.gmane.org; Sat, 22 Sep 2018 09:01:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50095) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g3hX4-0005Y8-5S for bug-gnu-emacs@gnu.org; Sat, 22 Sep 2018 09:01:11 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g3hWy-0000Fx-8V for bug-gnu-emacs@gnu.org; Sat, 22 Sep 2018 09:01:09 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:44627) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g3hWw-0000F7-AH for bug-gnu-emacs@gnu.org; Sat, 22 Sep 2018 09:01:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1g3hWw-0007W6-4A for bug-gnu-emacs@gnu.org; Sat, 22 Sep 2018 09:01:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 22 Sep 2018 13:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32731 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 32731-submit@debbugs.gnu.org id=B32731.153762122128823 (code B ref 32731); Sat, 22 Sep 2018 13:01:02 +0000 Original-Received: (at 32731) by debbugs.gnu.org; 22 Sep 2018 13:00:21 +0000 Original-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 Original-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 Original-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) Original-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) In-Reply-To: <87zhwb6yb0.fsf@calancha-pc.dy.bbexcite.jp> (Tino Calancha's message of "Fri, 21 Sep 2018 17:37:39 +0900") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:150547 Archived-At: 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?).