all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Alan Mackenzie <acm@muc.de>
Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
Subject: Re: Edebug corrupting point in buffers.
Date: Tue, 01 Nov 2022 15:47:45 -0400	[thread overview]
Message-ID: <jwv7d0e3235.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <Y2FtQMonpNeR1m1k@ACM> (Alan Mackenzie's message of "Tue, 1 Nov 2022 19:02:24 +0000")

> Why does set-window-configuration overwrite the buffer-points?  The
> window configuration does not contain them.  The code just assumes that
> the buffer-point should be set to the window point.  Of course, we have
> a race condition if a buffer is displayed in several windows.  So this
> would appear to be a bug, the root cause of the bug in this thread.

This suggests the patch below, right?
I note that this only changes the buffer-point for `current-buffer`, not
for all the buffers displayed in the window-config, right?
There's still a "race condition", of course.

> Maybe set-window-configuration should be amended not to write the
> buffer-points?  That might cause problems in other areas, though.  The
> window configuration is one of the few areas where the documentation is
> poor enough that you need to read the C source to find out what it's
> really doing.

Yup.  We could start by providing some way to tell
`set-window-configuration` not to change buffer-points (and use that in
Edebug)?  This way we fix the problem for Edebug without risking
changes elsewhere?

We can try and run out own Emacs with the patch installed, to see if we
notice any regression.  If we do, that might help us understand what we
should do.  If we don't, maybe it's hint that it was really just a bug.


        Stefan


diff --git a/src/window.c b/src/window.c
index b858d145415..382d3cbdc6a 100644
--- a/src/window.c
+++ b/src/window.c
@@ -7270,12 +7270,6 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
 	      set_marker_restricted (w->start, p->start, w->contents);
 	      set_marker_restricted (w->pointm, p->pointm, w->contents);
 	      set_marker_restricted (w->old_pointm, p->old_pointm, w->contents);
-	      /* As documented in Fcurrent_window_configuration, don't
-		 restore the location of point in the buffer which was
-		 current when the window configuration was recorded.  */
-	      if (!EQ (p->buffer, new_current_buffer)
-		  && XBUFFER (p->buffer) == current_buffer)
-		Fgoto_char (w->pointm);
 	    }
 	  else if (BUFFERP (w->contents) && BUFFER_LIVE_P (XBUFFER (w->contents)))
 	    /* Keep window's old buffer; make sure the markers are real.  */




  reply	other threads:[~2022-11-01 19:47 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-31 11:43 Edebug corrupting point in buffers; we need buffer-point and set-buffer-point, perhaps Alan Mackenzie
2022-10-31 13:16 ` Eli Zaretskii
2022-10-31 14:32   ` Alan Mackenzie
2022-10-31 14:50     ` Eli Zaretskii
2022-10-31 15:46       ` Alan Mackenzie
2022-10-31 17:33         ` Stefan Monnier
2022-10-31 17:55         ` Eli Zaretskii
2022-10-31 20:46           ` Alan Mackenzie
2022-11-01  6:21             ` Eli Zaretskii
2022-10-31 17:19       ` Stefan Monnier
2022-10-31 18:09         ` Eli Zaretskii
2022-10-31 20:35           ` Stefan Monnier
2022-10-31 17:21 ` Stefan Monnier
2022-10-31 18:10   ` Eli Zaretskii
2022-10-31 23:14     ` Stefan Monnier
2022-11-01  7:06       ` Eli Zaretskii
2022-10-31 21:25 ` Alan Mackenzie
2022-11-01  6:45   ` Eli Zaretskii
2022-11-01 11:41     ` Edebug corrupting point in buffers Alan Mackenzie
2022-11-01 11:53       ` Eli Zaretskii
2022-11-01 13:42         ` Alan Mackenzie
2022-11-01 14:42           ` Eli Zaretskii
2022-11-01 17:06             ` Alan Mackenzie
2022-11-01 17:12               ` Eli Zaretskii
2022-11-01 17:24                 ` Alan Mackenzie
2022-11-01 17:57                   ` Eli Zaretskii
2022-11-01 19:02                     ` Alan Mackenzie
2022-11-01 19:47                       ` Stefan Monnier [this message]
2022-11-01 20:53                         ` Alan Mackenzie
2022-11-01 21:51                           ` Stefan Monnier
2022-11-02 10:40                             ` Alan Mackenzie
2022-11-02 13:12                               ` Stefan Monnier
2022-11-02 13:28                                 ` Eli Zaretskii
2022-11-02  3:28                         ` Eli Zaretskii
2022-11-02 12:53                           ` Stefan Monnier
2022-11-02 17:40                       ` Juri Linkov
2022-11-02 18:26                         ` Eli Zaretskii
2022-11-02 18:36                           ` Juri Linkov
2022-11-02 18:52                             ` Eli Zaretskii
2022-11-03 17:25                               ` Juri Linkov
2022-11-03 18:06                                 ` Eli Zaretskii
2022-11-03 18:31                                   ` Juri Linkov
2022-11-02 11:34                     ` Alan Mackenzie
2022-11-02 14:00                       ` Eli Zaretskii
2022-11-02 16:18                         ` Alan Mackenzie
2022-11-02 16:57                           ` Eli Zaretskii
2022-11-03 11:32                             ` Alan Mackenzie
2022-11-03 13:29                               ` Eli Zaretskii
2022-11-03 18:07                                 ` Alan Mackenzie
2022-11-03 18:15                                   ` Eli Zaretskii
2022-11-03 20:25                                     ` Alan Mackenzie
2022-11-05 11:24                                       ` Eli Zaretskii
2022-11-05 16:50                                         ` Alan Mackenzie
2022-11-06  8:10                                           ` Eli Zaretskii
2022-11-06 14:40                                             ` Alan Mackenzie
2022-11-03 19:29                         ` Stefan Monnier
2022-11-03 19:36                           ` Eli Zaretskii
2022-11-03 20:39                             ` Stefan Monnier
2022-11-04  6:34                               ` Eli Zaretskii
2022-11-04  6:37                               ` Eli Zaretskii
2022-11-03 19:57                           ` Alan Mackenzie
2022-11-03 20:35                             ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwv7d0e3235.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=acm@muc.de \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.