From 9cc3a0c79c5a6af2691b2b566f8e3eb3654b806f Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 17 Jan 2011 23:07:36 -0500 Subject: [PATCH] * lisp/textmodes/tex-mode.el (tex-font-lock-verb): Make sure \verb highlighting doesn't spill over subsequent lines. --- lisp/ChangeLog | 5 +++-- lisp/textmodes/tex-mode.el | 29 ++++++++++++++++------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2d381534228..e83a2cf61a4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,10 +1,11 @@ 2011-01-18 Stefan Monnier + * textmodes/tex-mode.el (tex-font-lock-verb): Make sure \verb + highlighting doesn't spill over subsequent lines. + * emacs-lisp/easy-mmode.el (define-minor-mode): Don't re-evaluate the keymap expression. Improve docstring. -2011-01-18 Stefan Monnier - * electric.el (electric-indent-post-self-insert-function): Don't auto-indent for indent-to-left-margin, it's too often counter-productive. diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 77a4309ca0f..d2737d384d8 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -791,20 +791,23 @@ Not smaller than the value set by `tex-suscript-height-minimum'." (defun tex-font-lock-verb (start delim) "Place syntax table properties on the \verb construct. START is the position of the \\ and DELIM is the delimiter char." - ;; Do nothing if the \verb construct is itself inside a comment or - ;; verbatim env. + ;; Do nothing if the \verb construct is itself inside a comment or + ;; verbatim env. (unless (nth 8 (save-excursion (syntax-ppss start))) - ;; Let's find the end and mark it. - ;; This may span more than a single line, but we don't bother - ;; placing a syntax-multiline property since such multiline verbs aren't - ;; valid anyway. - (skip-chars-forward (string ?^ delim)) - (unless (eobp) - (when (eq (char-syntax (preceding-char)) ?/) - (put-text-property (1- (point)) (point) - 'syntax-table (string-to-syntax "."))) - (put-text-property (point) (1+ (point)) - 'syntax-table (string-to-syntax "\""))))) + ;; Let's find the end and mark it. + (let ((afterdelim (point))) + (skip-chars-forward (string ?^ delim) (line-end-position)) + (if (eolp) + ;; "LaTeX Error: \verb ended by end of line." + ;; Remove the syntax-table property we've just put on the + ;; start-delimiter, so it doesn't spill over subsequent lines. + (put-text-property (1- afterdelim) afterdelim + 'syntax-table nil) + (when (eq (char-syntax (preceding-char)) ?/) + (put-text-property (1- (point)) (point) + 'syntax-table (string-to-syntax "."))) + (put-text-property (point) (1+ (point)) + 'syntax-table (string-to-syntax "\"")))))) ;; Use string syntax but math face for $...$. (defun tex-font-lock-syntactic-face-function (state) -- 2.11.4.GIT