Subject: bug#48658: Elisp lexer misreads ESC in escape sequence form

From: Ivan Sokolov <[email-masked]>
Date: Tue, 25 May 2021 23:47:11 +0300

Hello,

I found that Elisp lexer interprets Elisp escape sequence for ESC as
something different. The backtrace I got eralier (not present here)
points to line 328 in language/elisp/lexer.scm, I think get-character is
wrong.

https://git.savannah.gnu.org/cgit/guile.git/tree/module/language/elisp/lexer.scm?h=v3.0.7#n328

Emacs:
----------------
*** Welcome to IELM ***  Type (describe-mode) for help.
ELISP> emacs-version
"28.0.50"
ELISP> ?\C-a
1 (#o1, #x1, ?\C-a)
ELISP> "\C-a"
"^A"
ELISP> ?\C-\[
27 (#o33, #x1b, ?\C-\[)
ELISP> "\C-["
"^["
----------------

Guile:
----------------
GNU Guile 3.0.7
Copyright (C) 1995-2021 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
elisp@(guile-user)> ?\C-a
$1 = 1
elisp@(guile-user)> "\C-a"
$2 = "\x01"
elisp@(guile-user)> ?\C-\[
$3 = 67108955
elisp@(guile-user)> "\C-["
While reading expression:
In procedure integer->char: Argument 1 out of range: 67108955
elisp@(guile-user)>
----------------