From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 29 04:28:29 2016 Received: (at submit) by debbugs.gnu.org; 29 Nov 2016 09:28:29 +0000 Received: from localhost ([127.0.0.1]:45610 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cBeiC-0000yx-MC for submit@debbugs.gnu.org; Tue, 29 Nov 2016 04:28:29 -0500 Received: from eggs.gnu.org ([208.118.235.92]:52409) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cBeiB-0000yg-9L for submit@debbugs.gnu.org; Tue, 29 Nov 2016 04:28:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cBei1-0002Ba-85 for submit@debbugs.gnu.org; Tue, 29 Nov 2016 04:28:22 -0500 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]:35762) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cBei1-0002BW-2b for submit@debbugs.gnu.org; Tue, 29 Nov 2016 04:28:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43360) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBehz-00022D-Bq for bug-gnu-emacs@gnu.org; Tue, 29 Nov 2016 04:28:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cBehw-00029x-M2 for bug-gnu-emacs@gnu.org; Tue, 29 Nov 2016 04:28:15 -0500 Received: from mail-pg0-x22d.google.com ([2607:f8b0:400e:c05::22d]:36125) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cBehw-00029h-74 for bug-gnu-emacs@gnu.org; Tue, 29 Nov 2016 04:28:12 -0500 Received: by mail-pg0-x22d.google.com with SMTP id f188so67456536pgc.3 for ; Tue, 29 Nov 2016 01:28:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version; bh=C70zSIM7kmMwOKT/8OJQT5oVHmQtgMfAH6eZIc0Ar4I=; b=lmLO9iyRKE0pjrcLZUHsf/mFvBLFKLHkd4Ieuxq1sa8HegwyULttjgoGGTyzoLnNcK XHkxjmS0WNGa1KEvdtb0FmcrKvfP5Fs6gH8R2OMjlw54ituXwsKC25fX4/G9VAGCI4e7 y1xSODBfE6c84kYVLzhEuLzypnRz78FFypwNY9VIg+N25yaAxvuuwIPgmComNGqnhZCx WiwX/XeS5iekqRu4XuezNofERrRWG8gAkwZlH8TP2ShPzMbPZFYb91DhNrO9KOAUpwd9 wHuo6YuxJUb8Fz+mnggPE40trhCgGoJJAdTLvvkMz4DS/Ond5Rz7OmzeREjBaYRHUZcG SUow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=C70zSIM7kmMwOKT/8OJQT5oVHmQtgMfAH6eZIc0Ar4I=; b=Cycz5wYIPybrXV3ovV30jMjcgYZupcoGCQ4Qzknz84Lv3KmeZLW6O/6RSRV9qbCCe2 ReRJ0HL5gB302aecqpLLMr/tUdaxulNjrt6yndXhaqdYd9FUNPxPr5bIJjKq55PArJI7 vXR0Nq+2EGEX/1K6r5TvAT0jpVwI3LVSD+dgmbcP9l5KMxSPO4CWMHtg1DP1EtGCcMD6 RAn0UPLK0p3iQLEzvOMV4A8FCjgsgNqwQlX85XCyKBHZwMLO/046olTSaUPe9axX2GsJ AWmLpMdMQO/FFMAClMXyOvCa/JgjTqjNW3dnYOEocUm2P9L4V8rciUyXdK4PPc7zj78Y 11Ow== X-Gm-Message-State: AKaTC03Sv2C2GOgcc36UrlEHifckmx3CaIlJDIy3RoHxSSfDRZTEooCHQzzNjJjsRxGfvw== X-Received: by 10.84.216.17 with SMTP id m17mr58843289pli.82.1480411690043; Tue, 29 Nov 2016 01:28:10 -0800 (PST) Received: from calancha-pc (177.192.218.133.dy.bbexcite.jp. [133.218.192.177]) by smtp.gmail.com with ESMTPSA id i76sm93348657pfk.89.2016.11.29.01.28.08 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 Nov 2016 01:28:09 -0800 (PST) From: Tino Calancha To: bug-gnu-emacs@gnu.org Subject: 26.0.50; ibuffer-decompose-filter-group: unwanted side effects Date: Tue, 29 Nov 2016 18:28:07 +0900 Message-ID: <87h96qskig.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] 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: -4.0 (----) `ibuffer-decompose-filter-group' has unwanted side effects: it might modify `ibuffer-saved-filter-groups'. emacs -Q -eval "(dired (expand-file-name source-directory))" ;; Evaluate following form: (progn (ibuffer) (setq ibuffer-show-empty-filter-groups nil ibuffer-saved-filter-groups '(("saved-filters" ("Shell" (used-mode . shell-mode)) ("Elisp" (or (used-mode . emacs-lisp-mode) (used-mode . lisp-interaction-mode))) ("Dired" (used-mode . dired-mode)) ("Info" (or (used-mode . help-mode) (used-mode . debugger-mode) (used-mode . Custom-mode) (used-mode . completion-list-mode) (name . "\\`[*]Messages[*]\\'")))))) (ibuffer-switch-to-saved-filter-groups "saved-filters")) ;; Now we call `ibuffer-decompose-filter-group' followed by ;; `ibuffer-filter-disable' and `ibuffer-switch-to-saved-filter-groups'. ;; These commands should bring us back to the initial Ibuffer status: /D Elisp RET // /R ;; Elisp group is missing without calling `ibuffer-delete-saved-filter-groups' M-: (assoc "Elisp" (cdar ibuffer-saved-filter-groups)) RET => nil The reason seems to be that `ibuffer-saved-filter-groups' and `ibuffer-filter-groups' share elements. (eq (cdar ibuffer-saved-filter-groups) ibuffer-filter-groups) => t Then, the destructive function `ibuffer-delete-alist' applied on `ibuffer-filter-groups' will modify the other list as well. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >From 45f95151de799fc1acd19353a40b22d6783ad1a6 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Tue, 29 Nov 2016 18:14:32 +0900 Subject: [PATCH] ibuffer-decompose-filter-group avoid unwanted side effects * lisp/ibuf-ext.el (ibuffer-delete-alist): Remove it. (ibuffer-remove-alist): New defun; it supersedes 'ibuffer-delete-alist'. All callers changed (Bug#25058). * test/lisp/ibuffer-tests.el (ibuffer-test-Bug25058): Add test. --- lisp/ibuf-ext.el | 23 +++++++++++------------ test/lisp/ibuffer-tests.el | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index 5ef0746..7f35ce6 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -38,12 +38,11 @@ (require 'cl-lib)) ;;; Utility functions -(defun ibuffer-delete-alist (key alist) - "Delete all entries in ALIST that have a key equal to KEY." - (let (entry) - (while (setq entry (assoc key alist)) - (setq alist (delete entry alist))) - alist)) +(defun ibuffer-remove-alist (key alist) + "Remove all entries in ALIST that have a key equal to KEY." + (while (ibuffer-awhen (assoc key alist) + (setq alist (remove it alist)) it)) + alist) ;; borrowed from Gnus (defun ibuffer-remove-duplicates (list) @@ -281,7 +280,7 @@ ibuffer-interactive-filter-by-mode (let ((buf (ibuffer-current-buffer))) (if (assq 'mode ibuffer-filtering-qualifiers) (setq ibuffer-filtering-qualifiers - (ibuffer-delete-alist 'mode ibuffer-filtering-qualifiers)) + (ibuffer-remove-alist 'mode ibuffer-filtering-qualifiers)) (ibuffer-push-filter (cons 'mode (buffer-local-value 'major-mode buf))))) (ibuffer-update nil t)) @@ -556,7 +555,7 @@ ibuffer-generate-filter-groups (append ibuffer-filter-groups (list (cons "Default" nil)))))) ;; (dolist (hidden ibuffer-hidden-filter-groups) - ;; (setq filter-group-alist (ibuffer-delete-alist + ;; (setq filter-group-alist (ibuffer-remove-alist ;; hidden filter-group-alist))) (let ((vec (make-vector (length filter-group-alist) nil)) (i 0)) @@ -640,7 +639,7 @@ ibuffer-decompose-filter-group (interactive (list (ibuffer-read-filter-group-name "Decompose filter group: " t))) (let ((data (cdr (assoc group ibuffer-filter-groups)))) - (setq ibuffer-filter-groups (ibuffer-delete-alist + (setq ibuffer-filter-groups (ibuffer-remove-alist group ibuffer-filter-groups) ibuffer-filtering-qualifiers data)) (ibuffer-update nil t)) @@ -688,7 +687,7 @@ ibuffer-kill-filter-group (ibuffer-aif (assoc name ibuffer-filter-groups) (progn (push (copy-tree it) ibuffer-filter-group-kill-ring) - (setq ibuffer-filter-groups (ibuffer-delete-alist + (setq ibuffer-filter-groups (ibuffer-remove-alist name ibuffer-filter-groups)) (setq ibuffer-hidden-filter-groups (delete name ibuffer-hidden-filter-groups))) @@ -778,7 +777,7 @@ ibuffer-delete-saved-filter-groups (completing-read "Delete saved filter group: " ibuffer-saved-filter-groups nil t)))) (setq ibuffer-saved-filter-groups - (ibuffer-delete-alist name ibuffer-saved-filter-groups)) + (ibuffer-remove-alist name ibuffer-saved-filter-groups)) (ibuffer-maybe-save-stuff) (ibuffer-update nil t)) @@ -949,7 +948,7 @@ ibuffer-delete-saved-filters (completing-read "Delete saved filters: " ibuffer-saved-filters nil t)))) (setq ibuffer-saved-filters - (ibuffer-delete-alist name ibuffer-saved-filters)) + (ibuffer-remove-alist name ibuffer-saved-filters)) (ibuffer-maybe-save-stuff) (ibuffer-update nil t)) diff --git a/test/lisp/ibuffer-tests.el b/test/lisp/ibuffer-tests.el index 3a4def3..260469e 100644 --- a/test/lisp/ibuffer-tests.el +++ b/test/lisp/ibuffer-tests.el @@ -66,5 +66,38 @@ (mapc (lambda (buf) (when (buffer-live-p buf) (kill-buffer buf))) (list buf1 buf2))))) +(ert-deftest ibuffer-test-Bug25058 () + "Test for http://debbugs.gnu.org/25058 ." + (ibuffer) + (let ((orig-filters ibuffer-saved-filter-groups) + (tmp-filters '(("saved-filters" + ("Shell" + (used-mode . shell-mode)) + ("Elisp" + (or + (used-mode . emacs-lisp-mode) + (used-mode . lisp-interaction-mode))) + ("Dired" + (used-mode . dired-mode)) + ("Info" + (or + (used-mode . help-mode) + (used-mode . debugger-mode) + (used-mode . Custom-mode) + (used-mode . completion-list-mode) + (name . "\\`[*]Messages[*]\\'"))))))) + (unwind-protect + (progn + (setq ibuffer-saved-filter-groups tmp-filters) + (ibuffer-switch-to-saved-filter-groups "saved-filters") + (ibuffer-decompose-filter-group "Elisp") + (ibuffer-filter-disable) + (ibuffer-switch-to-saved-filter-groups "saved-filters") + (should (assoc "Elisp" (cdar ibuffer-saved-filter-groups)))) + (setq ibuffer-saved-filter-groups orig-filters) + (ibuffer-awhen (get-buffer "*Ibuffer*") + (and (buffer-live-p it) (kill-buffer it)))))) + + (provide 'ibuffer-tests) ;; ibuffer-tests.el ends here -- 2.10.2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; In GNU Emacs 26.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.4) of 2016-11-28 Repository revision: 2c8a7e50d24daf19ea7d86f1cfeaa98a41c56085 From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 07:55:18 2016 Received: (at 25058-done) by debbugs.gnu.org; 7 Dec 2016 12:55:18 +0000 Received: from localhost ([127.0.0.1]:58943 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEbkk-0004dq-0H for submit@debbugs.gnu.org; Wed, 07 Dec 2016 07:55:18 -0500 Received: from mail-pg0-f48.google.com ([74.125.83.48]:34650) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEbkj-0004de-71 for 25058-done@debbugs.gnu.org; Wed, 07 Dec 2016 07:55:17 -0500 Received: by mail-pg0-f48.google.com with SMTP id x23so161919175pgx.1 for <25058-done@debbugs.gnu.org>; Wed, 07 Dec 2016 04:55:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version; bh=CDFW1EFyth8p9T6/DagoLmfsf17jjkw7eGdsIWqm4qY=; b=dhqYtrTZz2lZ0Y4T23vh3Z5ehMCGW4nrASFae7ZGqFI3ibYmdgTSyQ2pg0k7KY2YSP F2Pca4+iXO9sDzeAGFgZm8mhGKwH/SBvMZ73eN9xKvEccIxycuGOjmxvQ8HtuUCfmqeB YfhXojoTifTMOeafhokVXkE1b7mYgkrEkXIuTve+gZDuCVxFZjBOfKW4vT/M3NwU2Gub xWBp8+ysrClx8riRTGsFay2BmWtmL1LUSdfYES1FGgco/Fqoi2qqWK242dhS8w2MdOe1 gPmvmrncmYuQQpSeipH8YtqIQ7qz1m/avfFpIyPGVgHn8WGQ3UM4JqGLZlcL2lsM4LAc 8ajw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=CDFW1EFyth8p9T6/DagoLmfsf17jjkw7eGdsIWqm4qY=; b=YhP2QjrZ1JcpQ1IZzDMlzEVKVJrLBc6NjQ7/EgkXLp3eTH27cQ0j9xABeJVPwz5xMn ruBCjZ6Tv/Z+Ye7ee3x1tuKnZkPizOBMNcS2EZJEBCriG3eyCJ8dIsh1Q9Ym9HwtQT/Q BegzFZHjMk2Tp1lT/Ro0AEde2qpSE8zOwtC0knECIePqlZo6XdxQ3f+p5yMBW9470G5Z cpm4knREkFRryf2UPuawbvaqMUx2FdtIbnnzRl516pe82W/KKv+osLdw36gQJ24MAtLu ynscoHxnKcgx9Ken8vRKX1Bi9oObXJZdC0G4foZ/dhkQrA3DW4sCBw2fUbbYMK3cIvB0 l3zg== X-Gm-Message-State: AKaTC00DPtS9iR1kvqUjKhniBjmIx9eEyqDZDFC1xk8fhfdqMg6aI/15K3x2vQlaikWLQg== X-Received: by 10.99.171.10 with SMTP id p10mr121087714pgf.36.1481115310322; Wed, 07 Dec 2016 04:55:10 -0800 (PST) Received: from calancha-pc (pl676.nas813.p-iwate.nttpc.ne.jp. [124.154.237.164]) by smtp.gmail.com with ESMTPSA id g22sm42790560pgn.20.2016.12.07.04.55.09 for <25058-done@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 07 Dec 2016 04:55:09 -0800 (PST) From: Tino Calancha To: 25058-done@debbugs.gnu.org Subject: Re: bug#25058: 26.0.50; ibuffer-decompose-filter-group: unwanted side effects References: <87h96qskig.fsf@gmail.com> Date: Wed, 07 Dec 2016 21:55:06 +0900 In-Reply-To: <87h96qskig.fsf@gmail.com> (Tino Calancha's message of "Tue, 29 Nov 2016 18:28:07 +0900") Message-ID: <878trr99w5.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 25058-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: 0.0 (/) Tino Calancha writes: > `ibuffer-decompose-filter-group' has unwanted side effects: it might > modify `ibuffer-saved-filter-groups'. Pushed fix to master branch as commit 53fefb5. From unknown Sat Aug 16 21:15:51 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 05 Jan 2017 12:24:12 +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