GNU bug report logs - #78714
30.1; failure binding keys to certain unicode characters

Previous Next

Package: emacs;

Reported by: John Holman <john.g.holman <at> gmail.com>

Date: Sat, 7 Jun 2025 11:48:01 UTC

Severity: normal

Tags: fixed

Found in version 30.1

Fixed in version 30.2

Done: Robert Pluim <rpluim <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #48 received at 78714-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 78714-done <at> debbugs.gnu.org, john.g.holman <at> gmail.com
Subject: Re: bug#78714: 30.1;
 failure binding keys to certain unicode characters
Date: Sat, 05 Jul 2025 10:57:55 +0300
> Cc: 78714 <at> debbugs.gnu.org
> Date: Tue, 24 Jun 2025 17:15:11 -0400
> From:  Stefan Monnier via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> > However the same syntax fails for some characters (so far I've noticed this
> > for \u00B0 to \u00B6 but there will be more) e.g
> > after (define-key my-test-mode-map (kbd "a") "\u00B2") C-h k shows
> 
> Just never bind keys to strings.  It doesn't do what you think it does.
> Such strings are interpreted as "sequences of keyboard events" for
> reasons of compatibility with the pre-GUI world where ASCII reigned
> supreme.  So it comes with weird baggage inherited from *many*
> years ago.
> 
> Just say no.
> 
> If you want to bind a key to a keyboard macro, then use `kmacro`:
> 
>     (define-key my-test-mode-map (kbd "a") (kmacro "\u00B2"))
> 
> `kmacro` also treats the string as a "sequence of keyboard events" but
> expects this string to be written in a human-readable manner, i.e. the
> same syntax output by `key-binding` or accepted as input by `key-parse`,
> and it will often signal convenient errors when the format is unclear,
> instead of silently behaving in odd ways.
> 
> 
>         Stefan
> 
> 
> PS: IMO, we should deprecate the use of strings and arrays as "commands".
> It's been made obsolete back in 2002 when `kmacro.el` was added
> to Emacs.  We keep it for backward compatibility, but it's just a source
> of confusion.  Before Emacs-29's `kmacro` macro it could still be
> justified on the grounds that it was inconvenient to write
> 
>     (define-key my-test-mode-map (kbd "a") (kmacro-lambda-form "\u00B2"))
> 
> (and it still didn't use the nicer `key-parse` syntax, and it printed to
> something somewhat unpalatable), but nowadays `kmacro` is just
> a better alternative.

No further comments, so I'm now closing this bug.




This bug report was last modified 7 days ago.

Previous Next


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