GNU bug report logs - #78797
31.0.50; hints in a repeat map cause an error

Previous Next

Package: emacs;

Reported by: Jacek Świerk <jacekswierk <at> gmail.com>

Date: Sun, 15 Jun 2025 09:58:02 UTC

Severity: normal

Fixed in version 31.0.50

Done: Juri Linkov <juri <at> linkov.net>

To reply to this bug, email your comments to 78797 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#78797; Package emacs. (Sun, 15 Jun 2025 09:58:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jacek Świerk <jacekswierk <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 15 Jun 2025 09:58:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Jacek Świerk <jacekswierk <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; hints in a repeat map cause an error
Date: Sun, 15 Jun 2025 11:36:57 +0200
[Message part 1 (text/plain, inline)]
Using the following minimal configuration:

(repeat-mode +1)
(defvar-keymap navigation-repeat-map
  :repeat (:hints ((next-line . "next")
                   (previous-line . "previous")))
  "n" #'next-line
  "p" #'previous-line)

Attempting to press "n" or "p" results in an error on Emacs master:
"Error in post-command-hook (repeat-post-hook): wrong-type-argument
characterp [110])"

The repetition does not seem to work as well. The same configuration
works correctly on Emacs 30.1. The commit that introduced this behavior
seems to be 2e937dc2b5ad7a87a099df3f014795e88df5cba9 and it may be
reproduced just by calling repeat-echo-message-string function.

In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.49, cairo version 1.18.4) of 2025-06-15 built on arch
Repository revision: 08a7477d2205f4f4a9c6bcc184fdea060c33474b
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12401006
System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-modules --without-m17n-flt --without-gconf
 --with-native-compilation=yes --with-xinput2 --with-x-toolkit=gtk3
 --without-xaw3d --with-sound=no --with-tree-sitter --without-gpm
 --without-compress-install
 '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
 'CFLAGS=-march=native -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer
 -mno-omit-leaf-frame-pointer' 'LDFLAGS=-Wl,-O1 -Wl,--sort-common
 -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs
 -fuse-ld=mold''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PNG RSVG SECCOMP SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP X11 XDBE XIM XINERAMA XINPUT2 XPM XRANDR GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: pl_PL.UTF-8
  value of $LC_NUMERIC: pl_PL.UTF-8
  value of $LC_TIME: pl_PL.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: im=fcit
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-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
  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:
None found.

Features:
(mailalias mailclient browse-url xdg textsec uni-scripts url url-proxy
url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util url-parse auth-source cl-seq
eieio eieio-core cl-macs icons json map url-vars idna-mapping
ucs-normalize uni-confusable textsec-check pp shadow sort mail-extr
compile comint ansi-osc ansi-color ring emacsbug lisp-mnt message
mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec
password-cache epa derived epg rfc6068 epg-config gnus-util
text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils time-date subr-x help-fns radix-tree
cl-print byte-opt gv debug backtrace find-func cl-extra help-mode
comp-run bytecomp byte-compile comp-common rx repeat 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 dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process tty-child-frames native-compile emacs)

Memory information:
((conses 16 267428 52311) (symbols 48 8809 3) (strings 32 49106 3904)
 (string-bytes 1 1192475) (vectors 16 46255)
 (vector-slots 8 568804 29252) (floats 8 130 136)
 (intervals 56 1234 0) (buffers 1064 16))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78797; Package emacs. (Sun, 15 Jun 2025 17:01:02 GMT) Full text and rfc822 format available.

Message #8 received at 78797 <at> debbugs.gnu.org (full text, mbox):

From: Juri Linkov <juri <at> linkov.net>
To: Jacek Świerk <jacekswierk <at> gmail.com>
Cc: 78797 <at> debbugs.gnu.org
Subject: Re: bug#78797: 31.0.50; hints in a repeat map cause an error
Date: Sun, 15 Jun 2025 19:49:07 +0300
> Using the following minimal configuration:
>
> (repeat-mode +1)

Thanks for the bug report.

> (defvar-keymap navigation-repeat-map
>   :repeat (:hints ((next-line . "next")
>                    (previous-line . "previous")))
>   "n" #'next-line
>   "p" #'previous-line)
>
> Attempting to press "n" or "p" results in an error on Emacs master:
> "Error in post-command-hook (repeat-post-hook): wrong-type-argument
> characterp [110])"

I guess you meant pressing "C-n" or "C-p", then it's reproducible.

> The repetition does not seem to work as well. The same configuration
> works correctly on Emacs 30.1. The commit that introduced this behavior
> seems to be 2e937dc2b5ad7a87a099df3f014795e88df5cba9 and it may be
> reproduced just by calling repeat-echo-message-string function.

This commit fixed the display of keys with modifiers.
For example, for

(defvar-keymap navigation-repeat-map
  :repeat t
  "M-n" #'next-line
  "M-p" #'previous-line)

it displayed just "Repeat with ESC", but after this commit
correctly displays "Repeat with M-n, M-p".

So we need to decide how to display hints for keys with modifiers.

Without modifiers, it displays "Repeat with *n*ext, *p*revious".
Maybe with modifiers it could display "Repeat with M-*n*ext, M-*p*revious".
But what if the character is in the middle of the hint?

For example, for the hint "foonext" it will display "M-foo*n*ext".
This looks strange.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78797; Package emacs. (Thu, 19 Jun 2025 06:43:02 GMT) Full text and rfc822 format available.

Message #11 received at 78797 <at> debbugs.gnu.org (full text, mbox):

From: Juri Linkov <juri <at> linkov.net>
To: Jacek Świerk <jacekswierk <at> gmail.com>
Cc: 78797 <at> debbugs.gnu.org
Subject: Re: bug#78797: 31.0.50; hints in a repeat map cause an error
Date: Thu, 19 Jun 2025 09:41:06 +0300
close 78797 31.0.50
thanks

> (defvar-keymap navigation-repeat-map
>   :repeat t
>   "M-n" #'next-line
>   "M-p" #'previous-line)
>
> it displayed just "Repeat with ESC", but after this commit
> correctly displays "Repeat with M-n, M-p".
>
> So we need to decide how to display hints for keys with modifiers.
>
> Without modifiers, it displays "Repeat with *n*ext, *p*revious".
> Maybe with modifiers it could display "Repeat with M-*n*ext, M-*p*revious".
> But what if the character is in the middle of the hint?

Ok, now fixed with the following format:

1. for "n" #'next-line

  "Repeat with [n]ext"

2. for "M-n" #'next-line

  "Repeat with M-n ([n]ext)"




bug marked as fixed in version 31.0.50, send any further explanations to 78797 <at> debbugs.gnu.org and Jacek Świerk <jacekswierk <at> gmail.com> Request was from Juri Linkov <juri <at> linkov.net> to control <at> debbugs.gnu.org. (Thu, 19 Jun 2025 06:43:04 GMT) Full text and rfc822 format available.

This bug report was last modified 1 day ago.

Previous Next


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