changeset 75756:97721109e77f

(gdb-script-font-lock-syntactic-keywords): Improve comments.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 10 Feb 2007 20:21:28 +0000
parents 2b38ddd3fe74
children fa4ebb68ab30
files lisp/progmodes/gud.el
diffstat 1 files changed, 16 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/gud.el	Sat Feb 10 12:04:34 2007 +0000
+++ b/lisp/progmodes/gud.el	Sat Feb 10 20:21:28 2007 +0000
@@ -3177,20 +3177,25 @@
     ("\\$\\(\\w+\\)" (1 font-lock-variable-name-face))
     ("^\\s-*\\(\\w\\(\\w\\|\\s_\\)*\\)" (1 font-lock-keyword-face))))
 
-;; FIXME: The keyword "end" associated with "document"
-;; should have font-lock-keyword-face (currently font-lock-doc-face).
 (defvar gdb-script-font-lock-syntactic-keywords
   '(("^document\\s-.*\\(\n\\)" (1 "< b"))
-    ;; It would be best to change the \n in front, but it's more difficult.
     ("^end\\>"
-     (0 (progn
-          (unless (eq (match-beginning 0) (point-min))
-            (put-text-property (1- (match-beginning 0)) (match-beginning 0)
-                               'syntax-table (eval-when-compile
-                                               (string-to-syntax "> b")))
-            (put-text-property (1- (match-beginning 0)) (match-end 0)
-                               'font-lock-multiline t)
-            nil))))))
+     (0 (unless (eq (match-beginning 0) (point-min))
+          ;; We change the \n in front, which is more difficult, but results
+          ;; in better highlighting.  If the doc is empty, the single \n is
+          ;; both the beginning and the end of the docstring, which can't be
+          ;; expressed in syntax-tables.  Instead, we place the "> b" after
+          ;; placing the "< b", so the start marker is overwritten by the
+          ;; termination marker and in the end Emacs simply considers that
+          ;; there's no docstring at all, which is fine.
+          (put-text-property (1- (match-beginning 0)) (match-beginning 0)
+                             'syntax-table (eval-when-compile
+                                             (string-to-syntax "> b")))
+          ;; Make sure that rehighlighting the previous line won't erase our
+          ;; syntax-table property.  
+          (put-text-property (1- (match-beginning 0)) (match-end 0)
+                             'font-lock-multiline t)
+          nil)))))
 
 (defun gdb-script-font-lock-syntactic-face (state)
   (cond