Mercurial > emacs
comparison lisp/textmodes/sgml-mode.el @ 21780:5dc3fe7cd300
(sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
(sgml-font-lock-keywords): Initialize from sgml-font-lock-keywords-1.
(sgml-font-lock-keywords-2): New variable.
(sgml-mode-common): Make buffer-local binding for
sgml-font-lock-keywords-2 and initialize it.
Use it in font-lock-defaults.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 27 Apr 1998 01:22:08 +0000 |
parents | 3ae81bc17b19 |
children | 23bf812d4937 |
comparison
equal
deleted
inserted
replaced
21779:6aaa0268fe91 | 21780:5dc3fe7cd300 |
---|---|
203 "<[A-Za-z]\\([-.A-Za-z0-9= \n\t]\\|\"[^\"]*\"\\|'[^']*'\\)*" | 203 "<[A-Za-z]\\([-.A-Za-z0-9= \n\t]\\|\"[^\"]*\"\\|'[^']*'\\)*" |
204 "Regular expression that matches a non-empty start tag. | 204 "Regular expression that matches a non-empty start tag. |
205 Any terminating `>' or `/' is not matched.") | 205 Any terminating `>' or `/' is not matched.") |
206 | 206 |
207 | 207 |
208 (defvar sgml-font-lock-keywords | 208 ;; internal |
209 (defconst sgml-font-lock-keywords-1 | |
209 '(("<\\([!?][a-z0-9]+\\)" 1 font-lock-keyword-face) | 210 '(("<\\([!?][a-z0-9]+\\)" 1 font-lock-keyword-face) |
210 ("<\\(/?[a-z0-9]+\\)" 1 font-lock-function-name-face) | 211 ("<\\(/?[a-z0-9]+\\)" 1 font-lock-function-name-face) |
211 ("[&%][-.A-Za-z0-9]+;?" . font-lock-variable-name-face) | 212 ("[&%][-.A-Za-z0-9]+;?" . font-lock-variable-name-face) |
212 ("<!--[^<>]*-->" . font-lock-comment-face)) | 213 ("<!--[^<>]*-->" . font-lock-comment-face))) |
214 | |
215 (defconst sgml-font-lock-keywords-2 ()) | |
216 | |
217 ;; for font-lock, but must be defvar'ed after | |
218 ;; sgml-font-lock-keywords-1 and sgml-font-lock-keywords-2 above | |
219 (defvar sgml-font-lock-keywords sgml-font-lock-keywords-1 | |
213 "*Rules for highlighting SGML code. See also `sgml-tag-face-alist'.") | 220 "*Rules for highlighting SGML code. See also `sgml-tag-face-alist'.") |
214 | 221 |
215 ;; internal | 222 ;; internal |
216 (defvar sgml-font-lock-keywords-1 ()) | |
217 | |
218 (defvar sgml-face-tag-alist () | 223 (defvar sgml-face-tag-alist () |
219 "Alist of face and tag name for facemenu.") | 224 "Alist of face and tag name for facemenu.") |
220 | 225 |
221 (defvar sgml-tag-face-alist () | 226 (defvar sgml-tag-face-alist () |
222 "Tag names and face or list of faces to fontify with when invisible. | 227 "Tag names and face or list of faces to fontify with when invisible. |
271 (string :tag "Description"))) | 276 (string :tag "Description"))) |
272 :group 'sgml) | 277 :group 'sgml) |
273 | 278 |
274 (defun sgml-mode-common (sgml-tag-face-alist sgml-display-text) | 279 (defun sgml-mode-common (sgml-tag-face-alist sgml-display-text) |
275 "Common code for setting up `sgml-mode' and derived modes. | 280 "Common code for setting up `sgml-mode' and derived modes. |
276 SGML-TAG-FACE-ALIST is used for calculating `sgml-font-lock-keywords-1'. | 281 SGML-TAG-FACE-ALIST is used for calculating `sgml-font-lock-keywords-2'. |
277 SGML-DISPLAY-TEXT sets up alternate text for when tags are invisible (see | 282 SGML-DISPLAY-TEXT sets up alternate text for when tags are invisible (see |
278 varables of same name)." | 283 varables of same name)." |
279 (kill-all-local-variables) | 284 (kill-all-local-variables) |
280 (setq local-abbrev-table text-mode-abbrev-table) | 285 (setq local-abbrev-table text-mode-abbrev-table) |
281 (set-syntax-table sgml-mode-syntax-table) | 286 (set-syntax-table sgml-mode-syntax-table) |
292 (make-local-variable 'skeleton-transformation) | 297 (make-local-variable 'skeleton-transformation) |
293 (make-local-variable 'skeleton-further-elements) | 298 (make-local-variable 'skeleton-further-elements) |
294 (make-local-variable 'skeleton-end-hook) | 299 (make-local-variable 'skeleton-end-hook) |
295 (make-local-variable 'font-lock-defaults) | 300 (make-local-variable 'font-lock-defaults) |
296 (make-local-variable 'sgml-font-lock-keywords-1) | 301 (make-local-variable 'sgml-font-lock-keywords-1) |
302 (make-local-variable 'sgml-font-lock-keywords-2) | |
297 (make-local-variable 'facemenu-add-face-function) | 303 (make-local-variable 'facemenu-add-face-function) |
298 (make-local-variable 'facemenu-end-add-face) | 304 (make-local-variable 'facemenu-end-add-face) |
299 ;;(make-local-variable 'facemenu-remove-face-function) | 305 ;;(make-local-variable 'facemenu-remove-face-function) |
300 (and sgml-tag-face-alist | 306 (and sgml-tag-face-alist |
301 (not (assq 1 sgml-tag-face-alist)) | 307 (not (assq 1 sgml-tag-face-alist)) |
325 skeleton-end-hook (lambda () | 331 skeleton-end-hook (lambda () |
326 (or (eolp) | 332 (or (eolp) |
327 (not (or (eq v2 '\n) | 333 (not (or (eq v2 '\n) |
328 (eq (car-safe v2) '\n))) | 334 (eq (car-safe v2) '\n))) |
329 (newline-and-indent))) | 335 (newline-and-indent))) |
330 sgml-font-lock-keywords-1 (cdr (assq 1 sgml-tag-face-alist)) | 336 sgml-font-lock-keywords-2 (append |
337 sgml-font-lock-keywords-1 | |
338 (cdr (assq 1 sgml-tag-face-alist))) | |
331 font-lock-defaults '((sgml-font-lock-keywords | 339 font-lock-defaults '((sgml-font-lock-keywords |
332 sgml-font-lock-keywords-1) | 340 sgml-font-lock-keywords-1 |
341 sgml-font-lock-keywords-2) | |
333 nil | 342 nil |
334 t) | 343 t) |
335 facemenu-add-face-function 'sgml-mode-facemenu-add-face-function) | 344 facemenu-add-face-function 'sgml-mode-facemenu-add-face-function) |
336 (while sgml-display-text | 345 (while sgml-display-text |
337 (put (car (car sgml-display-text)) 'before-string | 346 (put (car (car sgml-display-text)) 'before-string |