GNU bug report logs -
#24542
25.1.50; The symbol `@' and sexp scanning
Previous Next
Reported by: Michael Heerdegen <michael_heerdegen <at> web.de>
Date: Sun, 25 Sep 2016 17:43:02 UTC
Severity: minor
Tags: confirmed
Merged with 11314
Found in versions 24.1.50, 25.1.50, 27.0.50
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
> (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)
The patch below seems to fix it.
Any comments/objections?
Stefan
[bug24542.diff (text/x-diff, inline)]
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 9b4c3f994cd..10d7f01ebaf 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -40,9 +40,8 @@ 'emacs-lisp-mode-abbrev-table
(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'.")
diff --git a/test/lisp/progmodes/elisp-mode-tests.el b/test/lisp/progmodes/elisp-mode-tests.el
index 1d1ef9981e5..3ef5a28e460 100644
--- a/test/lisp/progmodes/elisp-mode-tests.el
+++ b/test/lisp/progmodes/elisp-mode-tests.el
@@ -1131,5 +1131,14 @@ test-indentation
(emacs-lisp-mode)
(indent-region (point-min) (point-max)))))
+(ert-deftest elisp-tests-syntax-propertize ()
+ (with-temp-buffer
+ (emacs-lisp-mode)
+ (insert "(a '@)")
+ (should (equal (scan-sexps (+ (point-min) 3) 1) (1- (point-max))))
+ (erase-buffer)
+ (insert "(a ,@)")
+ (should-error (scan-sexps (+ (point-min) 3) 1))))
+
(provide 'elisp-mode-tests)
;;; elisp-mode-tests.el ends here
This bug report was last modified 1 year and 40 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.