diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index f3d8695e24..c2c3f61e3d 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -192,8 +192,20 @@ sgml-mode-syntax-table "Syntax table used in SGML mode. See also `sgml-specials'.") (defconst sgml-tag-syntax-table - (let ((table (sgml-make-syntax-table sgml-specials))) - (dolist (char '(?\( ?\) ?\{ ?\} ?\[ ?\] ?$ ?% ?& ?* ?+ ?/)) + (let ((table (sgml-make-syntax-table sgml-specials)) + brackets) + (setq brackets (delete-dups + (flatten-tree + (map-char-table + (lambda (key value) + (setq brackets (cons (list + (if (consp key) + (list (car key) (cdr key)) + key) + value) + brackets))) + (unicode-property-table-internal 'paired-bracket))))) + (dolist (char (append brackets (list ?$ ?% ?& ?* ?+ ?/))) (modify-syntax-entry char "." table)) (unless (memq ?' sgml-specials) ;; Avoid that skipping a tag backwards skips any "'" prefixing it.