changeset 112350:d89c2a0d1b12

* lisp/textmodes/tex-mode.el (tex-font-lock-verb): Make sure \verb highlighting doesn't spill over subsequent lines.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 17 Jan 2011 23:07:36 -0500
parents e4640e51ea08
children 176503f61eb1 71904feb29f6
files lisp/ChangeLog lisp/textmodes/tex-mode.el
diffstat 2 files changed, 19 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Jan 17 18:57:04 2011 -0800
+++ b/lisp/ChangeLog	Mon Jan 17 23:07:36 2011 -0500
@@ -1,10 +1,11 @@
 2011-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* 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  <monnier@iro.umontreal.ca>
-
 	* electric.el (electric-indent-post-self-insert-function):
 	Don't auto-indent for indent-to-left-margin, it's too often
 	counter-productive.
--- a/lisp/textmodes/tex-mode.el	Mon Jan 17 18:57:04 2011 -0800
+++ b/lisp/textmodes/tex-mode.el	Mon Jan 17 23:07:36 2011 -0500
@@ -791,20 +791,23 @@
 (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)