From c25d0edb6ec8b0381d330455520e1e4327bf2ed1 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 16 Jul 2007 18:38:05 +0000 Subject: [PATCH] (tex-verbatim-environments): Add safe-local-variable property. (tex-font-lock-syntactic-keywords): Lookup tex-verbatim-environments when starting font-lock rather than when loading tex-mode.el. --- lisp/ChangeLog | 5 +++++ lisp/textmodes/tex-mode.el | 41 +++++++++++++++++++++----------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 31c25511d5d..6e1ff0cf5a0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,10 @@ 2007-07-16 Stefan Monnier + * textmodes/tex-mode.el (tex-verbatim-environments): + Add safe-local-variable property. + (tex-font-lock-syntactic-keywords): Lookup tex-verbatim-environments + when starting font-lock rather than when loading tex-mode.el. + * progmodes/sh-script.el (sh-font-lock-quoted-subshell): Skip over the whole $( rather than just the $. Rename from sh-quoted-subshell. (sh-font-lock-syntactic-keywords): Adjust call accordingly. diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 034caeee702..eb1429b41e5 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -637,26 +637,31 @@ An alternative value is \" . \", if you use a font with a narrow period." (defvar tex-verbatim-environments '("verbatim" "verbatim*")) +(put 'tex-verbatim-environments 'safe-local-variable + (lambda (x) (require 'cl) (every 'stringp x))) (defvar tex-font-lock-syntactic-keywords - (let ((verbs (regexp-opt tex-verbatim-environments t))) - `((,(concat "^\\\\begin *{" verbs "}.*\\(\n\\)") 2 "|") - ;; Technically, we'd like to put the "|" property on the \n preceding - ;; the \end, but this would have 2 disadvantages: - ;; 1 - it's wrong if the verbatim env is empty (the same \n is used to - ;; start and end the fenced-string). - ;; 2 - font-lock considers the preceding \n as being part of the - ;; preceding line, so things gets screwed every time the previous - ;; line is re-font-locked on its own. - ;; There's a hack in tex-font-lock-keywords-1 to remove the verbatim - ;; face from the \ but C-M-f still jumps to the wrong spot :-( --Stef - (,(concat "^\\(\\\\\\)end *{" verbs "}\\(.?\\)") (1 "|") (3 "<")) - ;; ("^\\(\\\\\\)begin *{comment}" 1 "< b") - ;; ("^\\\\end *{comment}.*\\(\n\\)" 1 "> b") - ("\\\\verb\\**\\([^a-z@*]\\)" - ;; Do it last, because it uses syntax-ppss which needs the - ;; syntax-table properties of previous entries. - 1 (tex-font-lock-verb (match-end 1)))))) + '((eval . `(,(concat "^\\\\begin *{" + (regexp-opt tex-verbatim-environments t) + "}.*\\(\n\\)") 2 "|")) + ;; Technically, we'd like to put the "|" property on the \n preceding + ;; the \end, but this would have 2 disadvantages: + ;; 1 - it's wrong if the verbatim env is empty (the same \n is used to + ;; start and end the fenced-string). + ;; 2 - font-lock considers the preceding \n as being part of the + ;; preceding line, so things gets screwed every time the previous + ;; line is re-font-locked on its own. + ;; There's a hack in tex-font-lock-keywords-1 to remove the verbatim + ;; face from the \ but C-M-f still jumps to the wrong spot :-( --Stef + (eval . `(,(concat "^\\(\\\\\\)end *{" + (regexp-opt tex-verbatim-environments t) + "}\\(.?\\)") (1 "|") (3 "<"))) + ;; ("^\\(\\\\\\)begin *{comment}" 1 "< b") + ;; ("^\\\\end *{comment}.*\\(\n\\)" 1 "> b") + ("\\\\verb\\**\\([^a-z@*]\\)" + ;; Do it last, because it uses syntax-ppss which needs the + ;; syntax-table properties of previous entries. + 1 (tex-font-lock-verb (match-end 1))))) (defun tex-font-lock-unfontify-region (beg end) (font-lock-default-unfontify-region beg end) -- 2.39.2