From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: phillip.lord@russet.org.uk (Phillip Lord) Newsgroups: gmane.emacs.bugs Subject: bug#23632: 25.1.50; Gratuitous undo boundary in latex-insert-block Date: Fri, 03 Jun 2016 23:18:56 +0100 Message-ID: <87porxrk4v.fsf@russet.org.uk> References: <87lh2vo7s6.fsf@gmail.com> <87shx23830.fsf@gmail.com> <87wpmcwn13.fsf@russet.org.uk> <87wpm9q4z7.fsf@russet.org.uk> <87vb1rbbg1.fsf@russet.org.uk> <87shwutfmo.fsf@russet.org.uk> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1464992449 9909 80.91.229.3 (3 Jun 2016 22:20:49 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 3 Jun 2016 22:20:49 +0000 (UTC) Cc: Chong Yidong , 23632@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jun 04 00:20:35 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1b8xRu-0004Np-2v for geb-bug-gnu-emacs@m.gmane.org; Sat, 04 Jun 2016 00:20:14 +0200 Original-Received: from localhost ([::1]:57993 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8xRt-0002Uh-5u for geb-bug-gnu-emacs@m.gmane.org; Fri, 03 Jun 2016 18:20:13 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55155) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8xRm-0002SI-Aj for bug-gnu-emacs@gnu.org; Fri, 03 Jun 2016 18:20:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b8xRi-0002qV-3N for bug-gnu-emacs@gnu.org; Fri, 03 Jun 2016 18:20:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:41184) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8xRi-0002qP-0U for bug-gnu-emacs@gnu.org; Fri, 03 Jun 2016 18:20:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1b8xRh-0004q5-PR for bug-gnu-emacs@gnu.org; Fri, 03 Jun 2016 18:20:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: phillip.lord@russet.org.uk (Phillip Lord) Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jun 2016 22:20:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23632 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 23632-submit@debbugs.gnu.org id=B23632.146499234418525 (code B ref 23632); Fri, 03 Jun 2016 22:20:01 +0000 Original-Received: (at 23632) by debbugs.gnu.org; 3 Jun 2016 22:19:04 +0000 Original-Received: from localhost ([127.0.0.1]:53521 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b8xQm-0004oj-9z for submit@debbugs.gnu.org; Fri, 03 Jun 2016 18:19:04 -0400 Original-Received: from cloud103.planethippo.com ([31.216.48.48]:47228) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b8xQl-0004oG-CW for 23632@debbugs.gnu.org; Fri, 03 Jun 2016 18:19:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=russet.org.uk; s=default; h=Content-Type:MIME-Version:Message-ID: In-Reply-To:Date:References:Subject:Cc:To:From; bh=lfbN4eNiDPTwtrmCi0apjm97DZh3+xXUSFJHoo2S094=; b=LHUHmdFxj45c0wxRPHTZHx7L7f R7CrejBhTJUCRKX2c7p0UNG0SpnARaSpwZ3Agypr+2hHohLSxhwMZvPQOWmV8B+i+0P1ojfQNkWHO iy1h+RxYis2rxzi6WEFseO4UTU5FZcLUobgjDG1kCaSbSzbOUzbfW42fDJ3UtkvRFYlAvv+buBUAL E1inkvMY5yFMtK25kyHzDThzngOPLUZiYcVSm9HbKu5vthBzzL60/PO2HWg2u3XlV/Dd9BqrEgW2h VDHRKIg0Wwa9kJPCY5jfRT/V+Wxi133/NEWvVup2UezBydeTBnBAjw5GBc7B2qKoCpS0726c1W/Ax 23H9ahtg==; Original-Received: from cpc1-benw10-2-0-cust373.gate.cable.virginm.net ([77.98.219.118]:57078 helo=russet.org.uk) by cloud103.planethippo.com with esmtpsa (TLSv1.2:DHE-RSA-AES128-SHA:128) (Exim 4.86_1) (envelope-from ) id 1b8xQf-002aze-D3; Fri, 03 Jun 2016 23:18:57 +0100 In-Reply-To: (Stefan Monnier's message of "Fri, 03 Jun 2016 13:00:03 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.94 (gnu/linux) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cloud103.planethippo.com X-AntiAbuse: Original Domain - debbugs.gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - russet.org.uk X-Get-Message-Sender-Via: cloud103.planethippo.com: authenticated_id: phillip.lord@russet.org.uk X-Authenticated-Sender: cloud103.planethippo.com: phillip.lord@russet.org.uk 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:119024 Archived-At: Stefan Monnier writes: >> Simple let binding would not give quite the same functionality, because >> of the last part -- I also add a boundary to buffers with a greater >> recursive depth; with a let binding, I think these would be unbound for >> commands that lower the recursion depth. > > Ah, you mean that the value of undo-auto--undoably-changed-buffers needs > to be propagated "out" when we leave the let-binding. I *think* so -- I'm not entirely sure. It might make no difference. > You're right. So instead of a simple `let', it needs to be something > like: > > (let ((tmp ())) > (unwind-protect > (let ((undo-auto--undoably-changed-buffers nil)) > (unwind-protect > > (setq tmp undo-auto--undoably-changed-buffers))) > (setq undo-auto--undoably-changed-buffers > (append tmp undo-auto--undoably-changed-buffers)))) > > Or > > (let ((tmp undo-auto--undoably-changed-buffers)) > (unwind-protect > (progn > (setq undo-auto--undoably-changed-buffers nil) > ) > (setq undo-auto--undoably-changed-buffers > (append undo-auto--undoably-changed-buffers tmp)))) > > Maybe a simple alternative would be to do > > (let ((undo-auto--undoably-changed-buffers nil)) > (unwind-protect > > (undo-auto--ensure-boundary undo-auto--undoably-changed-buffers))) I use this variable in several different places in two different places though -- once when we capture the undoable changes (which happens often) and once on at the end of each command. I'd have to do this let binding in the command loop? My current solution seems simpler, even if it does feel like I have created "recursion-level" local variables. Or am I totally mis-understanding what you are suggesting? I'd be happier with a simpler implementation if possible. Phil