# HG changeset patch # User Stefan Monnier # Date 1015208046 0 # Node ID 568974ab179627bbc7c048ff20c44643a3f8d4de # Parent f8e3c181984818e6fe150fd5441b3ab57f855ace Change maintainer to FSF. (sgml-start-tag-regex, sgml-font-lock-keywords-1, sgml-mode-common) (sgml-tags-invisible, sgml-beginning-of-tag): Allow _ : and non-ASCII in tag names, as required for XML. (sgml-name-char): Don't assume anything about charsets handled by encode-char. diff -r f8e3c1819848 -r 568974ab1796 lisp/textmodes/sgml-mode.el --- a/lisp/textmodes/sgml-mode.el Mon Mar 04 01:39:29 2002 +0000 +++ b/lisp/textmodes/sgml-mode.el Mon Mar 04 02:14:06 2002 +0000 @@ -1,8 +1,9 @@ ;;; sgml-mode.el --- SGML- and HTML-editing modes -;; Copyright (C) 1992,95,96,98,2001 Free Software Foundation, Inc. +;; Copyright (C) 1992,95,96,98,2001,2002 Free Software Foundation, Inc. ;; Author: James Clark +;; Maintainer: FSF ;; Adapted-By: ESR, Daniel Pfeiffer , ;; F.Potorti@cnuce.cnr.it ;; Keywords: wp, hypermedia, comm, languages @@ -225,16 +226,18 @@ :group 'sgml) (defconst sgml-start-tag-regex - "<[A-Za-z]\\([-.A-Za-z0-9= \n\t]\\|\"[^\"]*\"\\|'[^']*'\\)*" + "<[[:alpha:]]\\([-_.:[:alnum:]= \n\t]\\|\"[^\"]*\"\\|'[^']*'\\)*" "Regular expression that matches a non-empty start tag. Any terminating `>' or `/' is not matched.") ;; internal (defconst sgml-font-lock-keywords-1 - '(("<\\([!?][a-z][-.a-z0-9]*\\)" 1 font-lock-keyword-face) - ("<\\(/?[a-z][-.a-z0-9]*\\)" 1 font-lock-function-name-face) - ("[&%][a-z][-.a-z0-9]*;?" . font-lock-variable-name-face))) + '(("<\\([!?][[:alpha:]][-_.:[:alnum:]]*\\)" 1 font-lock-keyword-face) + ("<\\(/?[[:alpha:]][-_.:[:alnum:]]*\\)" 1 font-lock-function-name-face) + ;; FIXME: this doesn't cover the variable using a default value. + ("\\([[:alpha:]][-_.:[:alnum:]]*\\)=[\"']" 1 font-lock-variable-name-face) + ("[&%][[:alpha:]][-_.:[:alnum:]]*;?" . font-lock-variable-name-face))) (defconst sgml-font-lock-keywords-2 (append @@ -364,9 +367,9 @@ ;; This is desirable because SGML discards a newline that appears ;; immediately after a start tag or immediately before an end tag. (set (make-local-variable 'paragraph-separate) "[ \t]*$\\|\ -\[ \t]*$") +\[ \t]*$") (set (make-local-variable 'paragraph-start) "[ \t]*$\\|\ -\[ \t]*") +\[ \t]*") (set (make-local-variable 'adaptive-fill-regexp) "[ \t]*") (set (make-local-variable 'comment-start) "") @@ -429,7 +432,7 @@ ;; Set `imenu-generic-expression' here, rather than in `sgml-mode-common', ;; because this definition probably is not useful in HTML mode. (set (make-local-variable 'imenu-generic-expression) - "= (prefix-numeric-value arg) 0) (not sgml-tags-invisible))) - (while (re-search-forward "<\\([!/?A-Za-z][-A-Za-z0-9]*\\)" + (while (re-search-forward "<\\([!/?]?[[:alpha:]][-_.:[:alnum:]]*\\)" nil t) (setq string (cdr (assq (intern-soft (downcase (match-string 1))) @@ -850,7 +857,7 @@ (forward-list) (point)) 0))) - (if (looking-at "<[!?/]?[[A-Za-z][A-Za-z0-9]*") + (if (looking-at "<[!/?]?[[:alpha:]][-_.:[:alnum:]]*") (buffer-substring-no-properties (1+ (point)) (match-end 0)) @@ -1298,7 +1305,7 @@ outline-regexp "^.*<[Hh][1-6]\\>" outline-heading-end-regexp "" outline-level (lambda () - (char-after (1- (match-end 0))))) + (char-before (match-end 0)))) (setq imenu-create-index-function 'html-imenu-index) (when sgml-xml (setq mode-name "XHTML")) (set (make-local-variable 'sgml-empty-tags)