From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: How to amalgamate changes across multiple buffers into a single undo entry Date: Fri, 24 Jul 2020 03:44:40 +0200 Message-ID: <877dutu1o7.fsf@ebih.ebihd> References: <906746352.441036.1595477678356@ichabod.co-bxl> Reply-To: Emanuel Berg Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26299"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:BkdZ5iBb8hGfvP1FLbdou+J802k= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Jul 24 03:45:14 2020 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jymlu-0006jG-04 for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 24 Jul 2020 03:45:14 +0200 Original-Received: from localhost ([::1]:53142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jymlt-0002MY-1a for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 23 Jul 2020 21:45:13 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43222) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jymlX-0002MP-Hi for help-gnu-emacs@gnu.org; Thu, 23 Jul 2020 21:44:51 -0400 Original-Received: from static.214.254.202.116.clients.your-server.de ([116.202.254.214]:57926 helo=ciao.gmane.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jymlV-0000zu-8T for help-gnu-emacs@gnu.org; Thu, 23 Jul 2020 21:44:50 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1jymlS-0006Au-Mi for help-gnu-emacs@gnu.org; Fri, 24 Jul 2020 03:44:46 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/23 17:55:47 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:123577 Archived-At: Brian Leung wrote: > Suppose one action causes a change in two buffers. > I'd like a way of performing an undo operation so > that both buffers will be undone at once [...] Well, first, what do you mean exactly by "at once"? You mean it should appear to the user as an atomic event, right? (Or, correspondingly, if it is to be invoked from Lisp, it should just require a single invocation for both buffers?) Well, yeah, I suppose that can be automated - just iterate the buffers and `undo' in each and every one. Like, for example, like this: (require 'cl-lib) (defun undo-in-two-buffers (msg bfr-a bfr-b) (let ((buff-a (get-buffer-create bfr-a)) (buff-b (get-buffer-create bfr-b)) ) (cl-dolist (buff (list buff-a buff-b)) (with-current-buffer buff (insert msg) )) (cl-dolist (buff (list buff-a buff-b)) (with-current-buffer buff (undo) )))) ;; (undo-in-two-buffers "undo me two times" "test-bfr-1" "test-bfr-2") But... I don't like the idea of that use of `undo'. Humans should use that as a part of the interactive edit and muscle memory/finger habits. But it doesn't feel right that program rely on it. Maybe I'm wrong here, I don't know. In all my Elisp, I never used `undo'. -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal