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