--- Begin Message ---
Subject: |
25.1.50; The symbol `@' and sexp scanning |
Date: |
Sun, 25 Sep 2016 19:42:17 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
Hi,
the following breaks my "el-search" package when searching in
"skeleton.el". It assumes that calling `scan-sexps' works at the start
of any sexp.
Recipe: in emacs -Q,
insert
(eq element '@)
in an elisp mode buffer (e.g. scratch). Put point at the quote or the
"@". Eval
(goto-char (scan-sexps (point) 1))
and you get an error like:
Debugger entered--Lisp error: (scan-error "Containing expression ends
prematurely" 15 16)
scan-sexps(13 1)
(goto-char (scan-sexps (point) 1))
eval((goto-char (scan-sexps (point) 1)) nil)
eval-expression((goto-char (scan-sexps (point) 1)) nil)
funcall-interactively(eval-expression (goto-char (scan-sexps (point) 1)) nil)
call-interactively(eval-expression nil nil)
command-execute(eval-expression)
I think `scan-sexps' should not error. FWIW, if I add one more sexp to
the list after "'@" (different from "'@"), there is no error.
TIA,
Michael.
In GNU Emacs 25.1.50.2 (x86_64-pc-linux-gnu, GTK+ Version 3.21.5)
of 2016-09-23 built on drachen
Repository revision: 14c36d76df035faa127580d706a0564f4e496991
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
System Description: Debian GNU/Linux testing (stretch)
Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY
LIBXML2 FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
Important settings:
value of $LC_ALL: de_DE.utf8
value of $LC_COLLATE: C
value of $LC_TIME: C
value of $LANG: de_DE.utf8
locale-coding-system: utf-8-unix
Major mode: Emacs-Lisp
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#24542: 25.1.50; The symbol `@' and sexp scanning |
Date: |
Fri, 12 Apr 2024 13:29:16 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
>> (defvar emacs-lisp-mode-syntax-table
>> (let ((table (make-syntax-table lisp-data-mode-syntax-table)))
>> - ;; These are redundant, now.
>> - ;;(modify-syntax-entry ?\[ "(] " table)
>> - ;;(modify-syntax-entry ?\] ")[ " table)
>> + ;; `syntax-propertize'. takes care of `,@'.
>> + (modify-syntax-entry ?@ "_" table)
>> table)
>> "Syntax table used in `emacs-lisp-mode'.")
>
> This seems to give good results for me - so far at least.
Thanks, pushed to `master`, closing.
Stefan
--- End Message ---