From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Tino Calancha Newsgroups: gmane.emacs.bugs Subject: bug#28826: 27.0.50; Ibuffer filters should be idempotent Date: Sat, 14 Oct 2017 11:56:39 +0900 Message-ID: <87mv4u4eu0.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1507949850 732 195.159.176.226 (14 Oct 2017 02:57:30 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 14 Oct 2017 02:57:30 +0000 (UTC) To: 28826@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Oct 14 04:57:24 2017 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 1e3CdN-0005fI-Ut for geb-bug-gnu-emacs@m.gmane.org; Sat, 14 Oct 2017 04:57:06 +0200 Original-Received: from localhost ([::1]:52544 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3CdV-0001N9-8W for geb-bug-gnu-emacs@m.gmane.org; Fri, 13 Oct 2017 22:57:13 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41530) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3CdO-0001KT-Tq for bug-gnu-emacs@gnu.org; Fri, 13 Oct 2017 22:57:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3CdK-0003oT-2M for bug-gnu-emacs@gnu.org; Fri, 13 Oct 2017 22:57:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:58186) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e3CdJ-0003o6-Uv for bug-gnu-emacs@gnu.org; Fri, 13 Oct 2017 22:57:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1e3CdJ-0007Qy-OA for bug-gnu-emacs@gnu.org; Fri, 13 Oct 2017 22:57:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 14 Oct 2017 02:57:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 28826 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.150794981928566 (code B ref -1); Sat, 14 Oct 2017 02:57:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 14 Oct 2017 02:56:59 +0000 Original-Received: from localhost ([127.0.0.1]:38634 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e3CdH-0007Qg-2t for submit@debbugs.gnu.org; Fri, 13 Oct 2017 22:56:59 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:50489) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e3CdF-0007QQ-8M for submit@debbugs.gnu.org; Fri, 13 Oct 2017 22:56:57 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3Cd9-0003iM-5F for submit@debbugs.gnu.org; Fri, 13 Oct 2017 22:56:51 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:43033) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3Cd9-0003i4-1n for submit@debbugs.gnu.org; Fri, 13 Oct 2017 22:56:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41459) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3Cd7-0001IT-RA for bug-gnu-emacs@gnu.org; Fri, 13 Oct 2017 22:56:50 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3Cd2-0003bB-UK for bug-gnu-emacs@gnu.org; Fri, 13 Oct 2017 22:56:49 -0400 Original-Received: from mail-pf0-x231.google.com ([2607:f8b0:400e:c00::231]:54626) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e3Cd2-0003a9-O8 for bug-gnu-emacs@gnu.org; Fri, 13 Oct 2017 22:56:44 -0400 Original-Received: by mail-pf0-x231.google.com with SMTP id n89so4112409pfk.11 for ; Fri, 13 Oct 2017 19:56:44 -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=rd3+k+PnX2BIe0C8C0ts4xLtHQQyu0bi9DQY24wS+No=; b=fCLJSfob2tHpaaqrQ0B9gJbr5Rt/2A61XtvI9N5Y0z/gyVmTSfJYX5OuJvIWxCc/ye L9k3D4+6x6vXIs3Ymj9Pz9ozlnL6qGCGDn9FD7at6qa/GmtEOCDxdGvXCf3h35D+DZTF f0o2ZMZ2Kt/bRsjMGnCg9B/O9Od4wpaVFjg/9fWmzlW1BE1t6BsLJA9QPHdZx+7xhdpH 14ShWFuko3uH0hdSmbzBi9UYyHEKXV5VwU9aG3/U8KdPwSQpEmO/Xf9g8jD8GYppWxT0 B/Uyq/CnJzU+MWZxaY7bj5HeyW/EW85p9+QYovvAorXUbhCRuvTnAZHIjI9Su7naEepY b6Kw== 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=rd3+k+PnX2BIe0C8C0ts4xLtHQQyu0bi9DQY24wS+No=; b=OQZwvWwnILIPNtAcCJ1EplBeYIpBLHtsH+ItICuCXCdUI9iNO7RMPD3BiObxOpYkPK 3MUIs+mKfBDl0Ba6GNsvnpOKo9U8VmznDA072HMZHC1PYLg3jwnxVV3TISjnv9BbzMbu +eKU3XAy3T4O0xjoz0CLn5o+1CJiRRfEnAXlN1645YnoczHc4l0TGcLF1/pOJrsrJ1QL zHWRxWBkO2qx+t/xL4ss65ALz2WjkNMeOPPIWYHNJ6zFBVfXzEkLPa83XNEmrMbsghiR eDQEU6ja46i4S2vupb17a9G+Fi0jVdFrseEFy+ptgYHQwiS3ywo2OAnucO3I+mERrwmK 8lfw== X-Gm-Message-State: AMCzsaVtw2XYnFFgFCb2J5p13KnZEMG80Rd4rBBST1Zkfi8pJZc9Kur+ YUO9MiZai04wP0hu3f/hJuOfdQ== X-Google-Smtp-Source: AOwi7QAzd9zoGFJAnHKtOTMoXkqooVGlVld/jmcjrf0KdIXCNd5SYB3JXow2fbaUSLHfjN6QLLBpYA== X-Received: by 10.84.248.150 with SMTP id q22mr3068148pll.190.1507949803643; Fri, 13 Oct 2017 19:56:43 -0700 (PDT) Original-Received: from calancha-pc (203.191.218.133.dy.bbexcite.jp. [133.218.191.203]) by smtp.gmail.com with ESMTPSA id u186sm4197082pgb.84.2017.10.13.19.56.41 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 13 Oct 2017 19:56:43 -0700 (PDT) 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-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:138373 Archived-At: emacs -Q M-x ibuffer RET /n s RET /n s RET ; again ;; ibuffer-filtering-qualifiers contains twice the filter ;; You can read on top: ;; Ibuffer by recency [buffer name: s] [buffer name: s] --8<-----------------------------cut here---------------start------------->8--- commit d65a5a22981dccc69a6e26cde1e567d109e884b3 Author: Tino Calancha Date: Sat Oct 14 11:30:32 2017 +0900 Make ibuffer filters idempotent * lisp/ibuf-ext.el (ibuffer-push-filter): Check if the filter is already in effect (Bug#28826). * lisp/ibuf-macs.el (define-ibuffer-filter): Report to user if the filter was already enabled. diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index 686bc392b6..097a7b3b43 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1034,7 +1034,8 @@ ibuffer-pop-filter (defun ibuffer-push-filter (filter-specification) "Add FILTER-SPECIFICATION to `ibuffer-filtering-qualifiers'." - (push filter-specification ibuffer-filtering-qualifiers)) + (unless (member filter-specification ibuffer-filtering-qualifiers) + (push filter-specification ibuffer-filtering-qualifiers))) ;;;###autoload (defun ibuffer-decompose-filter () diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el index e0c91e20ed..c30067f2f5 100644 --- a/lisp/ibuf-macs.el +++ b/lisp/ibuf-macs.el @@ -301,12 +301,16 @@ ibuffer-save-marks (defun ,fn-name (qualifier) ,(or documentation "This filter is not documented.") (interactive (list ,reader)) - (ibuffer-push-filter (cons ',name qualifier)) - (message "%s" - (format ,(concat (format "Filter by %s added: " description) - " %s") - qualifier)) - (ibuffer-update nil t)) + (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))) (push (list ',name ,description (lambda (buf qualifier) (condition-case nil --8<-----------------------------cut here---------------end--------------->8--- In GNU Emacs 27.0.50 (build 16, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2017-10-14 Repository revision: 78479a3984047a8153b43571e6b5ebfb674223a4