GNU bug report logs -
#74091
31.0.50; string-pixel-width in mode line disables region
Previous Next
Reported by: Eshel Yaron <me <at> eshelyaron.com>
Date: Tue, 29 Oct 2024 17:28:02 UTC
Severity: normal
Found in version 31.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> Date: Tue, 29 Oct 2024 18:27:05 +0100
> From: Eshel Yaron via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>
>
>
> The new implementation of string-pixel-width has some unexpected effect
> when it is called from mode-line-format, as happens for example when
> mode-line-format-right-align occurs in mode-line-format:
>
> 1. emacs -Q
> 2. (setq-default mode-line-format
> '("" (:eval (progn (string-pixel-width "foo") nil))))
> 3. C-x C-f /path/to/emacs/lisp/subr.el
> 4. C-SPC
> 5. C-n
>
> At this point the region is expected to be active since we activated it
> in step 4. But in step 5 the mode line is updated, which calls
> string-pixel-width, which in turn unexpectedly disables the region.
Thanks, should be fixed now.
> I'm not really sure why this happens...
It happens because string-pixel-width modifies a buffer, and that sets
deactivate-mark, which then causes the region to be deactivated when
a command finishes. When you inject string-pixel-width into
mode-line-format, you indirectly cause it to be called from C-n and
the like, because those evaluate the mode-line format. So doing that
is quite a risky thing, in general.
This bug report was last modified 194 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.