GNU bug report logs - #73446
29.1; Curious behaviour with with-current-buffer and read-string

Previous Next

Package: emacs;

Reported by: Al Haji-Ali <abdo.haji.ali <at> gmail.com>

Date: Tue, 24 Sep 2024 08:31:02 UTC

Severity: normal

Found in version 29.1

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#73446: closed (29.1; Curious behaviour with with-current-buffer
 and read-string )
Date: Tue, 24 Sep 2024 16:05:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Tue, 24 Sep 2024 18:50:19 +0300
with message-id <86setpcapw.fsf <at> gnu.org>
and subject line Re: bug#73446: 29.1; Curious behaviour with with-current-buffer and read-string
has caused the debbugs.gnu.org bug report #73446,
regarding 29.1; Curious behaviour with with-current-buffer and read-string 
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
73446: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=73446
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Al Haji-Ali <abdo.haji.ali <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.1; Curious behaviour with with-current-buffer and read-string 
Date: Tue, 24 Sep 2024 09:19:56 +0100
Consider this code snippet:

,----
| (with-current-buffer (get-buffer "*scratch*")
|   (message "START point %S %S" (current-buffer) (point))
|   (goto-char 10)
|   (message "BEFORE point %S %S" (current-buffer) (point))
|   (with-current-buffer (get-buffer "*Messages*") ;; some random buffer
|     (read-string "Test: "))
|   (message "AFTER point %S %S" (current-buffer) (point)))
`----

Assuming that *scratch* has a point at something other than 10 and *is visible in a window*, I get this output in Messages

,----
| START point #<buffer *scratch*> 2952
| BEFORE point #<buffer *scratch*> 10
| AFTER point #<buffer *scratch*> 2952
`----

I was expecting (point) AFTER to be 100, as it was BEFORE.

This only happens when `read-string` is called and when `with-current-buffer` is nested, and only when *scratch* is visible in a window.

I can easily solve this issue with `save-excursion`, but I thought this might be an unintended behaviour worth reporting.

Best regards,
-- Al


[Message part 3 (message/rfc822, inline)]
From: Eli Zaretskii <eliz <at> gnu.org>
To: Al Haji-Ali <abdo.haji.ali <at> gmail.com>
Cc: 73446-done <at> debbugs.gnu.org
Subject: Re: bug#73446: 29.1; Curious behaviour with with-current-buffer and
 read-string
Date: Tue, 24 Sep 2024 18:50:19 +0300
> From: Al Haji-Ali <abdo.haji.ali <at> gmail.com>
> Cc: 73446 <at> debbugs.gnu.org
> Date: Tue, 24 Sep 2024 16:07:42 +0100
> 
> 
> On 24/09/2024, Eli Zaretskii wrote:
> > If this is what you do, then it's the expected behavior: test1 is
> > displayed in another window, and so its window-point overrides what
> > you do.  See the node "Window Point" in the ELisp manual.
> >
> > This is not a bug.
> 
> Ah I see. It is interesting that even if the window displaying the
> buffer is shown but seemingly not selected (since the focus is on the
> minibuffer during `read-string`), the point gets reset to the
> window-point when Emacs waits for user input.
> 
> I vote to close this issue and apologies for the noise.

Thanks, I'm closing it.  But there's no need to apologize: Emacs is a
very complex beast, and no one knows all of its subtleties by heart.


This bug report was last modified 318 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.