summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorNoam Postavsky <npostavs@gmail.com>2019-06-23 21:27:43 -0400
committerNoam Postavsky <npostavs@gmail.com>2019-06-25 18:58:23 -0400
commite62ad04963982ea9cc7622b32484778845bc2ec1 (patch)
tree70e80f572dce3f269acdf6136278fb29e049cdd9 /lisp
parent06b35b2f922150a11d6b4b5c68a40e9957a69e52 (diff)
downloademacs-e62ad04963982ea9cc7622b32484778845bc2ec1.tar.gz
Fix sgml-mode handling of quotes within parens (Bug#36347)
* lisp/textmodes/sgml-mode.el (sgml-syntax-propertize): Use syntax-ppss-table if set. This is only needed on the release branch, on master the caller (syntax-propertize) already does this. (sgml-mode): Set syntax-ppss-table to sgml-tag-syntax-table. This correctly classifies parens as punctuation, so they won't confuse the parser. * test/lisp/textmodes/sgml-mode-tests.el (sgml-tests--quotes-syntax): New test copied from master, with two cases added for this bug.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/textmodes/sgml-mode.el10
1 files changed, 6 insertions, 4 deletions
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 128e58810e5..c9724e0e3f7 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -357,10 +357,11 @@ Any terminating `>' or `/' is not matched.")
(defun sgml-syntax-propertize (start end)
"Syntactic keywords for `sgml-mode'."
(goto-char start)
- (sgml-syntax-propertize-inside end)
- (funcall
- (syntax-propertize-rules sgml-syntax-propertize-rules)
- start end))
+ (with-syntax-table (or syntax-ppss-table (syntax-table))
+ (sgml-syntax-propertize-inside end)
+ (funcall
+ (syntax-propertize-rules sgml-syntax-propertize-rules)
+ start end)))
(defun sgml-syntax-propertize-inside (end)
(let ((ppss (syntax-ppss)))
@@ -568,6 +569,7 @@ Do \\[describe-key] on the following bindings to discover what they do.
sgml-font-lock-keywords-2)
nil t))
(setq-local syntax-propertize-function #'sgml-syntax-propertize)
+ (setq-local syntax-ppss-table sgml-tag-syntax-table)
(setq-local facemenu-add-face-function 'sgml-mode-facemenu-add-face-function)
(setq-local sgml-xml-mode (sgml-xml-guess))
(unless sgml-xml-mode