changeset 73903:f0343b6fc846

(c-font-lock-declarations): Don't overwrite fontification for "case" and "default" keywords.
author Chong Yidong <cyd@stupidchicken.com>
date Fri, 10 Nov 2006 16:58:27 +0000
parents 8c826e10b91b
children fe0e3c5e9303
files lisp/progmodes/cc-fonts.el
diffstat 1 files changed, 32 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/cc-fonts.el	Fri Nov 10 16:58:10 2006 +0000
+++ b/lisp/progmodes/cc-fonts.el	Fri Nov 10 16:58:27 2006 +0000
@@ -1170,21 +1170,39 @@
 	      (c-fontify-recorded-types-and-refs)
 	      nil))
 
-	  ;; It was a false alarm.  Check if we're in a label instead.
+	  ;; It was a false alarm.
 	  (goto-char start-pos)
-	  (when (c-forward-label t match-pos nil)
-	    ;; Can't use `c-fontify-types-and-refs' here since we
-	    ;; should use the label face.
-	    (let (elem)
-	      (while c-record-ref-identifiers
-		(setq elem (car c-record-ref-identifiers)
-		      c-record-ref-identifiers (cdr c-record-ref-identifiers))
-		(c-put-font-lock-face (car elem) (cdr elem)
-				      c-label-face-name)))
-	    ;; `c-forward-label' probably has added a `c-decl-end'
-	    ;; marker, so return t to `c-find-decl-spots' to signal
-	    ;; that.
-	    t))))
+	  ;; The below code attempts to fontify the case constants in
+	  ;; c-label-face-name, but it cannot catch every case [sic].
+	  ;; And do we want to fontify case constants anyway?
+	  nil
+;;;	  (when (c-forward-label t match-pos nil)
+;;;	    ;; Can't use `c-fontify-types-and-refs' here since we
+;;;	    ;; should use the label face.
+;;;	    (save-excursion
+;;;	      (while c-record-ref-identifiers
+;;;		(let ((elem (car c-record-ref-identifiers))
+;;;		      c-record-type-identifiers)
+;;;		  (goto-char (cdr elem))
+;;;		  ;; Find the end of any label.
+;;;		  (while (and (re-search-forward "\\sw\\|:" nil t)
+;;;			      (progn (backward-char 1) t)
+;;;			      (or (re-search-forward
+;;;				   "\\=0[Xx][0-9A-Fa-f]+\\|\\([0-9]+\\)" nil t)
+;;;				  (c-forward-name)))
+;;;		    (c-backward-syntactic-ws)
+;;;		    (let ((end (point)))
+;;;		      ;; Now find the start of the bit we regard as the label.
+;;;		      (when (and (c-simple-skip-symbol-backward)
+;;;				 (not (c-get-char-property (point) 'face)))
+;;;			(c-put-font-lock-face (point) end c-label-face-name))
+;;;		      (goto-char end))))
+;;;		(setq c-record-ref-identifiers (cdr c-record-ref-identifiers))))
+;;;	    ;; `c-forward-label' probably has added a `c-decl-end'
+;;;	    ;; marker, so return t to `c-find-decl-spots' to signal
+;;;	    ;; that.
+;;;	    t)
+	  )))
 
       nil)))