GNU bug report logs -
#78957
31.0.50; Wrong mode-line in fancy diary
Previous Next
Reported by: Manuel Giraud <manuel <at> ledu-giraud.fr>
Date: Fri, 4 Jul 2025 19:16: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.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 78957 in the body.
You can then email your comments to 78957 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Fri, 04 Jul 2025 19:16:03 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Manuel Giraud <manuel <at> ledu-giraud.fr>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Fri, 04 Jul 2025 19:16:03 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi,
When viewing diary entry from the calendar, the mode line could be set
erroneously. The recipe:
- Have a file "/tmp/diary" with the following content:
--8<---------------cut here---------------start------------->8---
July 4, 2025 A bitter day for many
--8<---------------cut here---------------end--------------->8---
- emacs -Q
- M-: (setopt diary-file "/tmp/diary") <RET>
- M-: (toggle-frame-fullscreen) <RET>
- M-: (calendar) <RET>
- g d
- 2025 <RET>
- July <RET>
- 4 <RET>
- d
Observe that the date in the mode line of the diary view buffer is not
centered and maybe partly out of sight. This seems to come from the
fact that the call to `window-edges' in `calendar-set-mode-line' does
not return correct values but I can't figure out why.
In GNU Emacs 31.0.50 (build 14, x86_64-unknown-openbsd7.7) of 2025-07-04
built on computer
Repository revision: 763c3cd081a833940961373a73705640b1808636
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101018
System Description: OpenBSD computer 7.7 GENERIC.MP#41 amd64
Configured using:
'configure CC=egcc CPPFLAGS=-I/usr/local/include
LDFLAGS=-L/usr/local/lib MAKEINFO=gmakeinfo --prefix=/home/manuel/emacs
--bindir=/home/manuel/bin --with-x-toolkit=no
--with-toolkit-scroll-bars=no --without-cairo --without-dbus
--without-gconf --without-gsettings --without-compress-install'
Configured features:
FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBOTF LIBXML2 M17N_FLT
MODULES NOTIFY KQUEUE OLDXMENU PDUMPER PNG RSVG SQLITE3 THREADS TIFF
TREE_SITTER WEBP X11 XDBE XFT XIM XINERAMA XINPUT2 XPM XRANDR ZLIB
Important settings:
value of $LC_CTYPE: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: VC dir
Minor modes in effect:
vc-dir-git-mode: t
display-time-mode: t
display-battery-mode: t
desktop-save-mode: t
exwm-randr-mode: t
server-mode: t
electric-pair-mode: t
override-global-mode: t
repeat-mode: t
global-eldoc-mode: t
eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
minibuffer-regexp-mode: t
buffer-read-only: t
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
/home/manuel/prog/elisp/exwm/exwm hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm
/home/manuel/prog/elisp/exwm/exwm-xsettings hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-xsettings
/home/manuel/prog/elisp/exwm/exwm-xim hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-xim
/home/manuel/prog/elisp/exwm/exwm-workspace hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-workspace
/home/manuel/prog/elisp/exwm/exwm-randr hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-randr
/home/manuel/prog/elisp/exwm/exwm-manage hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-manage
/home/manuel/prog/elisp/exwm/exwm-layout hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-layout
/home/manuel/prog/elisp/exwm/exwm-input hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-input
/home/manuel/prog/elisp/exwm/exwm-floating hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-floating
/home/manuel/prog/elisp/exwm/exwm-systemtray hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-systemtray
/home/manuel/prog/elisp/exwm/exwm-core hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-core
/home/manuel/prog/elisp/exwm/exwm-background hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-background
/home/manuel/.emacs.d/elpa/ef-themes-1.10.0/theme-loaddefs hides /home/manuel/emacs/share/emacs/31.0.50/lisp/theme-loaddefs
/home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlwave hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlwave
/home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlw-toolbar hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlw-toolbar
/home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlw-shell hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlw-shell
/home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlw-help hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlw-help
/home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlw-complete-structtag hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlw-complete-structtag
Features:
(shadow sort mail-extr emacsbug lisp-mnt macrostep-c cmacexp macrostep
doc-view filenotify jka-compr image-mode exif flyspell ispell tex-mode
compile shell pcomplete comint ansi-osc ansi-color vc-hg vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs log-view log-edit add-log pcvs-util eww
vtable mule-util url-queue mm-url gnus-dired vc-dir ewoc vc vc-git
diff-mode track-changes files-x vc-dispatcher debbugs-browse
bug-reference texinfo texinfo-loaddefs format-spec time battery desktop
frameset exwm-randr xcb-randr exwm exwm-input xcb-keysyms xcb-xkb
exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout
exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types
xcb-debug server ef-themes modus-operandi-tinted-theme modus-themes zone
speed-type thingatpt url-http url-auth url-gw nsm compat ytdious ring
mpdired transmission color calc-bin calc-ext calc calc-loaddefs rect
calc-macs supercite regi ebdb-gnus gnus-msg gnus-art mm-uu mml2015
mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku
url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml
gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time iso8601
gnus-spec gnus-int gnus-range gnus-win ebdb-message message yank-media
puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mail-parse rfc2231 gmm-utils mailheader ebdb-mua
ebdb-com crm ebdb-format ebdb mailabbrev eieio-opt speedbar ezimage
dframe find-func eieio-base timezone icalendar gnus nnheader gnus-util
text-property-search time-date range sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils erlang-start idlwave idlwave-menus
idlw-menus idlwave-bindings idlw-bindings idlwave-routine idlw-routine
idlwave-scan idlw-scan idlwave-help idlw-help idlwave-complete
idlw-complete idlwave-variables idlw-variables skeleton cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
elec-pair appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs
pcase dired-x dired-aux dired dired-loaddefs edmacro kmacro
use-package-bind-key bind-key use-package-core repeat easy-mmode
cus-edit pp cus-start cus-load wid-edit debbugs-autoloads ebdb-autoloads
cl-extra help-mode ef-themes-autoloads elpher-autoloads exwm-autoloads
gnuplot-autoloads hyperbole-autoloads kotl-autoloads hact set hhist
idlwave-autoloads notmuch-autoloads osm-autoloads pdf-tools-autoloads
reddigg-autoloads ht-autoloads dash-autoloads promise-autoloads
rust-mode-autoloads info slime-autoloads warnings macrostep-autoloads
speed-type-autoloads sudo-edit-autoloads svg-clock-autoloads
tablist-autoloads transmission-autoloads xelb-autoloads
ytdious-autoloads package browse-url xdg url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs icons password-cache json subr-x map byte-opt
gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl
tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
touch-screen tool-bar dnd fontset image regexp-opt fringe tabulated-list
replace newcomment text-mode lisp-mode prog-mode register page tab-bar
menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse
jit-lock font-lock syntax font-core term/tty-colors frame minibuffer
nadvice seq simple cl-generic indonesian philippine cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop
case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads kqueue lcms2 dynamic-setting font-render-setting xinput2 x
multi-tty move-toolbar make-network-process tty-child-frames emacs)
Memory information:
((conses 16 571884 484905) (symbols 48 41392 2)
(strings 32 195972 20036) (string-bytes 1 4840619)
(vectors 16 113028) (vector-slots 8 915611 43230) (floats 8 490 804)
(intervals 56 3510 0) (buffers 1064 36))
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Fri, 04 Jul 2025 22:21:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 78957 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Fri, 04 Jul 2025 21:14:52 +0200 Manuel Giraud <manuel <at> ledu-giraud.fr> wrote:
> Hi,
>
> When viewing diary entry from the calendar, the mode line could be set
> erroneously. The recipe:
>
> - Have a file "/tmp/diary" with the following content:
>
> July 4, 2025 A bitter day for many
>
> - emacs -Q
> - M-: (setopt diary-file "/tmp/diary") <RET>
> - M-: (toggle-frame-fullscreen) <RET>
> - M-: (calendar) <RET>
> - g d
> - 2025 <RET>
> - July <RET>
> - 4 <RET>
> - d
>
> Observe that the date in the mode line of the diary view buffer is not
> centered and maybe partly out of sight. This seems to come from the
> fact that the call to `window-edges' in `calendar-set-mode-line' does
> not return correct values but I can't figure out why.
I think it's because both times `window-edges' is called in
`diary-fancy-display' the selected window is the one displaying the
Calendar, whose `window-width' is the full screen width due to
`toggle-frame-fullscreen', while the window displaying the Fancy Diary
is half as wide. The following patch seems to fix the problem for me:
[Message part 2 (text/x-patch, inline)]
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 8fb6fadfe4c..3b0275d4cee 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -1058,7 +1058,8 @@ diary-fancy-display
(unless (car (diary-display-no-entries)) ; no entries
;; Prepare the fancy diary buffer.
(calendar-in-read-only-buffer diary-fancy-buffer
- (calendar-set-mode-line "Diary Entries")
+ (with-selected-window (get-buffer-window diary-fancy-buffer)
+ (calendar-set-mode-line "Diary Entries"))
(let ((holiday-list-last-month 1)
(holiday-list-last-year 1)
(date (list 0 0 0))
@@ -1139,7 +1140,8 @@ diary-fancy-display
(if (eq major-mode 'diary-fancy-display-mode)
(run-hooks 'diary-fancy-display-mode-hook)
(diary-fancy-display-mode))
- (calendar-set-mode-line diary--date-string))))
+ (with-selected-window (get-buffer-window diary-fancy-buffer)
+ (calendar-set-mode-line diary--date-string)))))
;; FIXME modernize?
(defun diary-print-entries ()
[Message part 3 (text/plain, inline)]
Steve Berman
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Sat, 05 Jul 2025 08:54:05 GMT)
Full text and
rfc822 format available.
Message #11 received at 78957 <at> debbugs.gnu.org (full text, mbox):
Stephen Berman <stephen.berman <at> gmx.net> writes:
> On Fri, 04 Jul 2025 21:14:52 +0200 Manuel Giraud <manuel <at> ledu-giraud.fr> wrote:
>
>> Hi,
>>
>> When viewing diary entry from the calendar, the mode line could be set
>> erroneously. The recipe:
>>
>> - Have a file "/tmp/diary" with the following content:
>>
>> July 4, 2025 A bitter day for many
>>
>> - emacs -Q
>> - M-: (setopt diary-file "/tmp/diary") <RET>
>> - M-: (toggle-frame-fullscreen) <RET>
>> - M-: (calendar) <RET>
>> - g d
>> - 2025 <RET>
>> - July <RET>
>> - 4 <RET>
>> - d
>>
>> Observe that the date in the mode line of the diary view buffer is not
>> centered and maybe partly out of sight. This seems to come from the
>> fact that the call to `window-edges' in `calendar-set-mode-line' does
>> not return correct values but I can't figure out why.
>
> I think it's because both times `window-edges' is called in
> `diary-fancy-display' the selected window is the one displaying the
> Calendar, whose `window-width' is the full screen width due to
> `toggle-frame-fullscreen', while the window displaying the Fancy Diary
> is half as wide. The following patch seems to fix the problem for me:
>
> diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
> index 8fb6fadfe4c..3b0275d4cee 100644
> --- a/lisp/calendar/diary-lib.el
> +++ b/lisp/calendar/diary-lib.el
> @@ -1058,7 +1058,8 @@ diary-fancy-display
> (unless (car (diary-display-no-entries)) ; no entries
> ;; Prepare the fancy diary buffer.
> (calendar-in-read-only-buffer diary-fancy-buffer
> - (calendar-set-mode-line "Diary Entries")
> + (with-selected-window (get-buffer-window diary-fancy-buffer)
> + (calendar-set-mode-line "Diary Entries"))
> (let ((holiday-list-last-month 1)
> (holiday-list-last-year 1)
> (date (list 0 0 0))
> @@ -1139,7 +1140,8 @@ diary-fancy-display
> (if (eq major-mode 'diary-fancy-display-mode)
> (run-hooks 'diary-fancy-display-mode-hook)
> (diary-fancy-display-mode))
> - (calendar-set-mode-line diary--date-string))))
> + (with-selected-window (get-buffer-window diary-fancy-buffer)
> + (calendar-set-mode-line diary--date-string)))))
Thanks! That works as expected. I thought that the set-buffer (from
calendar-in-read-only-buffer) was enough but apparently not.
While here, I will complete your patch for other calls of
calendar-set-mode-line (lunar phases,...)
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Sat, 05 Jul 2025 10:04:03 GMT)
Full text and
rfc822 format available.
Message #14 received at 78957 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Sat, 05 Jul 2025 10:53:11 +0200 Manuel Giraud <manuel <at> ledu-giraud.fr> wrote:
> Stephen Berman <stephen.berman <at> gmx.net> writes:
>
>> On Fri, 04 Jul 2025 21:14:52 +0200 Manuel Giraud <manuel <at> ledu-giraud.fr> wrote:
>>
>>> Hi,
>>>
>>> When viewing diary entry from the calendar, the mode line could be set
>>> erroneously. The recipe:
>>>
>>> - Have a file "/tmp/diary" with the following content:
>>>
>>> July 4, 2025 A bitter day for many
>>>
>>> - emacs -Q
>>> - M-: (setopt diary-file "/tmp/diary") <RET>
>>> - M-: (toggle-frame-fullscreen) <RET>
>>> - M-: (calendar) <RET>
>>> - g d
>>> - 2025 <RET>
>>> - July <RET>
>>> - 4 <RET>
>>> - d
>>>
>>> Observe that the date in the mode line of the diary view buffer is not
>>> centered and maybe partly out of sight. This seems to come from the
>>> fact that the call to `window-edges' in `calendar-set-mode-line' does
>>> not return correct values but I can't figure out why.
>>
>> I think it's because both times `window-edges' is called in
>> `diary-fancy-display' the selected window is the one displaying the
>> Calendar, whose `window-width' is the full screen width due to
>> `toggle-frame-fullscreen', while the window displaying the Fancy Diary
>> is half as wide. The following patch seems to fix the problem for me:
>>
>> diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
>> index 8fb6fadfe4c..3b0275d4cee 100644
>> --- a/lisp/calendar/diary-lib.el
>> +++ b/lisp/calendar/diary-lib.el
>> @@ -1058,7 +1058,8 @@ diary-fancy-display
>> (unless (car (diary-display-no-entries)) ; no entries
>> ;; Prepare the fancy diary buffer.
>> (calendar-in-read-only-buffer diary-fancy-buffer
>> - (calendar-set-mode-line "Diary Entries")
>> + (with-selected-window (get-buffer-window diary-fancy-buffer)
>> + (calendar-set-mode-line "Diary Entries"))
>> (let ((holiday-list-last-month 1)
>> (holiday-list-last-year 1)
>> (date (list 0 0 0))
>> @@ -1139,7 +1140,8 @@ diary-fancy-display
>> (if (eq major-mode 'diary-fancy-display-mode)
>> (run-hooks 'diary-fancy-display-mode-hook)
>> (diary-fancy-display-mode))
>> - (calendar-set-mode-line diary--date-string))))
>> + (with-selected-window (get-buffer-window diary-fancy-buffer)
>> + (calendar-set-mode-line diary--date-string)))))
>
> Thanks! That works as expected. I thought that the set-buffer (from
> calendar-in-read-only-buffer) was enough but apparently not.
>
> While here, I will complete your patch for other calls of
> calendar-set-mode-line (lunar phases,...)
I hope you haven't spent time on that yet, because it occurred to me
that the following patch might suffice:
[Message part 2 (text/x-patch, inline)]
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 917624c489e..6b23cbcd1d4 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1167,7 +1167,7 @@ calendar-in-read-only-buffer
(setq buffer-read-only nil
buffer-undo-list t)
(erase-buffer)
- (display-buffer ,buffer)
+ (select-window (display-buffer ,buffer))
,@body
(goto-char (point-min))
(set-buffer-modified-p nil)
[Message part 3 (text/plain, inline)]
It seems to DTRT for all users of `calendar-in-read-only-buffer' (after
byte-compiling), if I haven't overlooked anything.
Steve Berman
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Sat, 05 Jul 2025 10:20:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 78957 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Stephen Berman <stephen.berman <at> gmx.net> writes:
[...]
> I hope you haven't spent time on that yet, because it occurred to me
> that the following patch might suffice:
:-D I did not spend to much time but, in the mean time, came up with
this one:
[0001-Fix-mode-line-string-width-in-diary-view.patch (text/x-patch, inline)]
From 5b1b04936e5d31197ea5129fb7e56e28f0aa24ad Mon Sep 17 00:00:00 2001
From: Stephen Berman <stephen.berman <at> gmx.net>
Date: Sat, 5 Jul 2025 10:56:00 +0200
Subject: [PATCH] Fix mode-line string width in diary view
* lisp/calendar/calendar.el (calendar-in-read-only-buffer):
Select the buffer window because, for example,
`calendar-set-mode-line' needs it.
---
lisp/calendar/calendar.el | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 917624c489e..8b7aa71db93 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1168,8 +1168,9 @@ calendar-in-read-only-buffer
buffer-undo-list t)
(erase-buffer)
(display-buffer ,buffer)
- ,@body
- (goto-char (point-min))
+ (with-selected-window (get-buffer-window ,buffer)
+ ,@body
+ (goto-char (point-min)))
(set-buffer-modified-p nil)
(setq buffer-read-only t)))
--
2.49.0
[Message part 3 (text/plain, inline)]
But, I prefer yours. Do you mind if I complete your patch with my log
entry?
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Sat, 05 Jul 2025 10:24:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 78957 <at> debbugs.gnu.org (full text, mbox):
On Sat, 05 Jul 2025 12:19:40 +0200 Manuel Giraud <manuel <at> ledu-giraud.fr> wrote:
> Stephen Berman <stephen.berman <at> gmx.net> writes:
>
> [...]
>
>> I hope you haven't spent time on that yet, because it occurred to me
>> that the following patch might suffice:
>
> :-D I did not spend to much time but, in the mean time, came up with
> this one:
>
>>From 5b1b04936e5d31197ea5129fb7e56e28f0aa24ad Mon Sep 17 00:00:00 2001
> From: Stephen Berman <stephen.berman <at> gmx.net>
> Date: Sat, 5 Jul 2025 10:56:00 +0200
> Subject: [PATCH] Fix mode-line string width in diary view
>
> * lisp/calendar/calendar.el (calendar-in-read-only-buffer):
> Select the buffer window because, for example,
> `calendar-set-mode-line' needs it.
> ---
> lisp/calendar/calendar.el | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
> index 917624c489e..8b7aa71db93 100644
> --- a/lisp/calendar/calendar.el
> +++ b/lisp/calendar/calendar.el
> @@ -1168,8 +1168,9 @@ calendar-in-read-only-buffer
> buffer-undo-list t)
> (erase-buffer)
> (display-buffer ,buffer)
> - ,@body
> - (goto-char (point-min))
> + (with-selected-window (get-buffer-window ,buffer)
> + ,@body
> + (goto-char (point-min)))
> (set-buffer-modified-p nil)
> (setq buffer-read-only t)))
>
> --
> 2.49.0
>
>
> But, I prefer yours. Do you mind if I complete your patch with my log
> entry?
Be my guest :-)
Steve Berman
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Sat, 05 Jul 2025 10:31:02 GMT)
Full text and
rfc822 format available.
Message #23 received at 78957 <at> debbugs.gnu.org (full text, mbox):
Stephen Berman <stephen.berman <at> gmx.net> writes:
[...]
>> But, I prefer yours. Do you mind if I complete your patch with my log
>> entry?
>
> Be my guest :-)
Sorry I spoke to quick. I think mine does the right thing, because it
preserve the selected window as the calendar (as it used to be). WDYT?
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Sat, 05 Jul 2025 10:41:01 GMT)
Full text and
rfc822 format available.
Message #26 received at 78957 <at> debbugs.gnu.org (full text, mbox):
On Sat, 05 Jul 2025 12:30:39 +0200 Manuel Giraud <manuel <at> ledu-giraud.fr> wrote:
> Stephen Berman <stephen.berman <at> gmx.net> writes:
>
> [...]
>
>>> But, I prefer yours. Do you mind if I complete your patch with my log
>>> entry?
>>
>> Be my guest :-)
>
> Sorry I spoke to quick. I think mine does the right thing, because it
> preserve the selected window as the calendar (as it used to be). WDYT?
Ah, right, I did overlook that. Yes, your patch is better.
Steve Berman
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Thu, 10 Jul 2025 12:25:05 GMT)
Full text and
rfc822 format available.
Message #29 received at 78957 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> Stephen Berman <stephen.berman <at> gmx.net> writes:
>
> [...]
>
>> I hope you haven't spent time on that yet, because it occurred to me
>> that the following patch might suffice:
>
> :-D I did not spend to much time but, in the mean time, came up with
> this one:
>
>>From 5b1b04936e5d31197ea5129fb7e56e28f0aa24ad Mon Sep 17 00:00:00 2001
> From: Stephen Berman <stephen.berman <at> gmx.net>
> Date: Sat, 5 Jul 2025 10:56:00 +0200
> Subject: [PATCH] Fix mode-line string width in diary view
>
> * lisp/calendar/calendar.el (calendar-in-read-only-buffer):
> Select the buffer window because, for example,
> `calendar-set-mode-line' needs it.
> ---
> lisp/calendar/calendar.el | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
> index 917624c489e..8b7aa71db93 100644
> --- a/lisp/calendar/calendar.el
> +++ b/lisp/calendar/calendar.el
> @@ -1168,8 +1168,9 @@ calendar-in-read-only-buffer
> buffer-undo-list t)
> (erase-buffer)
> (display-buffer ,buffer)
> - ,@body
> - (goto-char (point-min))
> + (with-selected-window (get-buffer-window ,buffer)
> + ,@body
> + (goto-char (point-min)))
> (set-buffer-modified-p nil)
> (setq buffer-read-only t)))
>
> --
> 2.49.0
Hi Eli,
Do you think this patch could go in? Maybe in the emacs-30 branch since
it is a bug fix?
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Thu, 10 Jul 2025 13:29:05 GMT)
Full text and
rfc822 format available.
Message #32 received at 78957 <at> debbugs.gnu.org (full text, mbox):
> From: Manuel Giraud <manuel <at> ledu-giraud.fr>
> Cc: 78957 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>
> Date: Thu, 10 Jul 2025 14:24:00 +0200
>
> Hi Eli,
>
> Do you think this patch could go in? Maybe in the emacs-30 branch since
> it is a bug fix?
Is this a regression in a recent Emacs version? If yes, which
version?
If this isn't a regression, then please make the patch 110% safe if
you want it to go to the release branch. E.g., what if
get-buffer-window returns nil?
Martin, any comments to the patch, with emphasis on its safety?
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Thu, 10 Jul 2025 14:43:02 GMT)
Full text and
rfc822 format available.
Message #35 received at 78957 <at> debbugs.gnu.org (full text, mbox):
> Martin, any comments to the patch, with emphasis on its safety?
If the patch is this one
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 917624c489e..8b7aa71db93 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1168,8 +1168,9 @@ calendar-in-read-only-buffer
buffer-undo-list t)
(erase-buffer)
(display-buffer ,buffer)
- ,@body
- (goto-char (point-min))
+ (with-selected-window (get-buffer-window ,buffer)
+ ,@body
+ (goto-char (point-min)))
(set-buffer-modified-p nil)
(setq buffer-read-only t)))
Switch to BUFFER
then I would write it as
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 917624c489e..67764eb0b26 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1167,9 +1167,11 @@ calendar-in-read-only-buffer
(setq buffer-read-only nil
buffer-undo-list t)
(erase-buffer)
- (display-buffer ,buffer)
- ,@body
- (goto-char (point-min))
+ (let ((window (display-buffer ,buffer)))
+ (when window
+ (with-selected-window window
+ ,@body
+ (goto-char (point-min)))))
(set-buffer-modified-p nil)
(setq buffer-read-only t)))
which selects the correct window if there is one.
But I doubt that it is a good idea to use 'set-buffer' here and talk
about "Switch to BUFFER" in the first place.
martin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Thu, 10 Jul 2025 15:12:02 GMT)
Full text and
rfc822 format available.
Message #38 received at 78957 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Manuel Giraud <manuel <at> ledu-giraud.fr>
>> Cc: 78957 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>
>> Date: Thu, 10 Jul 2025 14:24:00 +0200
>>
>> Hi Eli,
>>
>> Do you think this patch could go in? Maybe in the emacs-30 branch since
>> it is a bug fix?
>
> Is this a regression in a recent Emacs version? If yes, which
> version?
Hard to tell but it seems it already has been an issue before:
--8<---------------cut here---------------start------------->8---
commit 4cbd0713000c5f0a184e16df3556e8408ea3b894
Author: Mark Oteiza <mvoteiza <at> udel.edu>
Date: Sat Oct 10 22:23:59 2015 -0400
* lisp/calendar/calendar.el: Display buffer before executing body.
In each use of this macro, the modeline is derived from a window width
calculation, which will be wrong if (display-buffer) splits the window
horizontally.
--8<---------------cut here---------------end--------------->8---
But at the same time, `calendar-set-mode-line' has not been modified
since 2012.
So maybe, once upon a time, `display-buffer' meant "make this buffer the
selected window" and this is not the case anymore.
> If this isn't a regression, then please make the patch 110% safe if
> you want it to go to the release branch. E.g., what if
> get-buffer-window returns nil?
>
> Martin, any comments to the patch, with emphasis on its safety?
I'll try and report about Martin's proposal.
Thanks.
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Thu, 10 Jul 2025 15:25:02 GMT)
Full text and
rfc822 format available.
Message #41 received at 78957 <at> debbugs.gnu.org (full text, mbox):
> From: Manuel Giraud <manuel <at> ledu-giraud.fr>
> Cc: martin rudalics <rudalics <at> gmx.at>, stephen.berman <at> gmx.net,
> 78957 <at> debbugs.gnu.org
> Date: Thu, 10 Jul 2025 17:10:56 +0200
>
> > Is this a regression in a recent Emacs version? If yes, which
> > version?
>
> Hard to tell but it seems it already has been an issue before:
>
> --8<---------------cut here---------------start------------->8---
> commit 4cbd0713000c5f0a184e16df3556e8408ea3b894
> Author: Mark Oteiza <mvoteiza <at> udel.edu>
> Date: Sat Oct 10 22:23:59 2015 -0400
>
> * lisp/calendar/calendar.el: Display buffer before executing body.
>
> In each use of this macro, the modeline is derived from a window width
> calculation, which will be wrong if (display-buffer) splits the window
> horizontally.
> --8<---------------cut here---------------end--------------->8---
>
> But at the same time, `calendar-set-mode-line' has not been modified
> since 2012.
>
> So maybe, once upon a time, `display-buffer' meant "make this buffer the
> selected window" and this is not the case anymore.
No, display-buffer never selected the window. Its doc string always
said that.
> > If this isn't a regression, then please make the patch 110% safe if
> > you want it to go to the release branch. E.g., what if
> > get-buffer-window returns nil?
> >
> > Martin, any comments to the patch, with emphasis on its safety?
>
> I'll try and report about Martin's proposal.
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Fri, 11 Jul 2025 11:45:03 GMT)
Full text and
rfc822 format available.
Message #44 received at 78957 <at> debbugs.gnu.org (full text, mbox):
martin rudalics <rudalics <at> gmx.at> writes:
> > Martin, any comments to the patch, with emphasis on its safety?
>
> If the patch is this one
>
> diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
> index 917624c489e..8b7aa71db93 100644
> --- a/lisp/calendar/calendar.el
> +++ b/lisp/calendar/calendar.el
> @@ -1168,8 +1168,9 @@ calendar-in-read-only-buffer
> buffer-undo-list t)
> (erase-buffer)
> (display-buffer ,buffer)
> - ,@body
> - (goto-char (point-min))
> + (with-selected-window (get-buffer-window ,buffer)
> + ,@body
> + (goto-char (point-min)))
> (set-buffer-modified-p nil)
> (setq buffer-read-only t)))
> Switch to BUFFER
> then I would write it as
>
> diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
> index 917624c489e..67764eb0b26 100644
> --- a/lisp/calendar/calendar.el
> +++ b/lisp/calendar/calendar.el
> @@ -1167,9 +1167,11 @@ calendar-in-read-only-buffer
> (setq buffer-read-only nil
> buffer-undo-list t)
> (erase-buffer)
> - (display-buffer ,buffer)
> - ,@body
> - (goto-char (point-min))
> + (let ((window (display-buffer ,buffer)))
> + (when window
> + (with-selected-window window
> + ,@body
> + (goto-char (point-min)))))
> (set-buffer-modified-p nil)
> (setq buffer-read-only t)))
>
> which selects the correct window if there is one.
So, there is something I missed with both patches. After a complete
rebuild of Emacs with the patch, the misalignment in the mode-line is
still there. But if afterward, I `load-file' "calendar.el" and then
"diary-lib.el", the misalignment is fixed. What am I missing?
> But I doubt that it is a good idea to use 'set-buffer' here and talk
> about "Switch to BUFFER" in the first place.
Yes, we'd have to modify the docstring.
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Fri, 11 Jul 2025 11:52:01 GMT)
Full text and
rfc822 format available.
Message #47 received at 78957 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Manuel Giraud <manuel <at> ledu-giraud.fr>
>> Cc: martin rudalics <rudalics <at> gmx.at>, stephen.berman <at> gmx.net,
>> 78957 <at> debbugs.gnu.org
>> Date: Thu, 10 Jul 2025 17:10:56 +0200
>>
>> > Is this a regression in a recent Emacs version? If yes, which
>> > version?
>>
>> Hard to tell but it seems it already has been an issue before:
>>
>> --8<---------------cut here---------------start------------->8---
>> commit 4cbd0713000c5f0a184e16df3556e8408ea3b894
>> Author: Mark Oteiza <mvoteiza <at> udel.edu>
>> Date: Sat Oct 10 22:23:59 2015 -0400
>>
>> * lisp/calendar/calendar.el: Display buffer before executing body.
>>
>> In each use of this macro, the modeline is derived from a window width
>> calculation, which will be wrong if (display-buffer) splits the window
>> horizontally.
>> --8<---------------cut here---------------end--------------->8---
>>
>> But at the same time, `calendar-set-mode-line' has not been modified
>> since 2012.
>>
>> So maybe, once upon a time, `display-buffer' meant "make this buffer the
>> selected window" and this is not the case anymore.
>
> No, display-buffer never selected the window. Its doc string always
> said that.
Ok. So maybe, the patch 4cbd07130 was working by chance because the
calendar window was already splitted at correct width.
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Sat, 26 Jul 2025 08:39:02 GMT)
Full text and
rfc822 format available.
Message #50 received at 78957 <at> debbugs.gnu.org (full text, mbox):
Ping! Can we please make some progress with this?
> From: Manuel Giraud <manuel <at> ledu-giraud.fr>
> Cc: Eli Zaretskii <eliz <at> gnu.org>, stephen.berman <at> gmx.net,
> 78957 <at> debbugs.gnu.org
> Date: Fri, 11 Jul 2025 13:44:20 +0200
>
> martin rudalics <rudalics <at> gmx.at> writes:
>
> > > Martin, any comments to the patch, with emphasis on its safety?
> >
> > If the patch is this one
> >
> > diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
> > index 917624c489e..8b7aa71db93 100644
> > --- a/lisp/calendar/calendar.el
> > +++ b/lisp/calendar/calendar.el
> > @@ -1168,8 +1168,9 @@ calendar-in-read-only-buffer
> > buffer-undo-list t)
> > (erase-buffer)
> > (display-buffer ,buffer)
> > - ,@body
> > - (goto-char (point-min))
> > + (with-selected-window (get-buffer-window ,buffer)
> > + ,@body
> > + (goto-char (point-min)))
> > (set-buffer-modified-p nil)
> > (setq buffer-read-only t)))
> > Switch to BUFFER
> > then I would write it as
> >
> > diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
> > index 917624c489e..67764eb0b26 100644
> > --- a/lisp/calendar/calendar.el
> > +++ b/lisp/calendar/calendar.el
> > @@ -1167,9 +1167,11 @@ calendar-in-read-only-buffer
> > (setq buffer-read-only nil
> > buffer-undo-list t)
> > (erase-buffer)
> > - (display-buffer ,buffer)
> > - ,@body
> > - (goto-char (point-min))
> > + (let ((window (display-buffer ,buffer)))
> > + (when window
> > + (with-selected-window window
> > + ,@body
> > + (goto-char (point-min)))))
> > (set-buffer-modified-p nil)
> > (setq buffer-read-only t)))
> >
> > which selects the correct window if there is one.
>
> So, there is something I missed with both patches. After a complete
> rebuild of Emacs with the patch, the misalignment in the mode-line is
> still there. But if afterward, I `load-file' "calendar.el" and then
> "diary-lib.el", the misalignment is fixed. What am I missing?
>
> > But I doubt that it is a good idea to use 'set-buffer' here and talk
> > about "Switch to BUFFER" in the first place.
>
> Yes, we'd have to modify the docstring.
> --
> Manuel Giraud
>
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78957
; Package
emacs
.
(Sat, 26 Jul 2025 17:28:02 GMT)
Full text and
rfc822 format available.
Message #53 received at 78957 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:
> Ping! Can we please make some progress with this?
Ok. So I've tried again this time starting from a "make extraclean"
with the attached patch and it works as expected for diary entries,
moonphases, etc.
[0001-Fix-mode-line-string-width-in-diary-view.patch (text/x-patch, attachment)]
[Message part 3 (text/plain, inline)]
--
Manuel Giraud
Reply sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
You have taken responsibility.
(Sat, 02 Aug 2025 14:10:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Manuel Giraud <manuel <at> ledu-giraud.fr>
:
bug acknowledged by developer.
(Sat, 02 Aug 2025 14:10:03 GMT)
Full text and
rfc822 format available.
Message #58 received at 78957-done <at> debbugs.gnu.org (full text, mbox):
> From: Manuel Giraud <manuel <at> ledu-giraud.fr>
> Cc: rudalics <at> gmx.at, stephen.berman <at> gmx.net, 78957 <at> debbugs.gnu.org
> Date: Sat, 26 Jul 2025 19:27:16 +0200
>
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
> > Ping! Can we please make some progress with this?
>
> Ok. So I've tried again this time starting from a "make extraclean"
> with the attached patch and it works as expected for diary entries,
> moonphases, etc.
Thanks, installed on the master branch, and closing the bug.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sun, 31 Aug 2025 11:24:15 GMT)
Full text and
rfc822 format available.
This bug report was last modified 13 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.