Commits

Alan Mackenzie  committed 1bdd63c

Correctly fontify Java class constructors.
cc-langs.el (c-type-decl-suffix-key): Now matches ")" in Java Mode.
(c-recognize-typeless-decls): Set the Java value to t.
cc-engine.el (c-forward-decl-or-cast-1): While handling a "(", add a
check for, effectively, Java, and handle a "typeless" declaration there.

  • Participants
  • Parent commits e0466fc

Comments (0)

Files changed (2)

File cc-engine.el

 
       ;; Skip over type decl prefix operators.	(Note similar code in
       ;; `c-font-lock-declarators'.)
-      (while (and (looking-at c-type-decl-prefix-key)
-		  (if (and (c-major-mode-is 'c++-mode)
-			   (match-beginning 3))
-		      ;; If the third submatch matches in C++ then
-		      ;; we're looking at an identifier that's a
-		      ;; prefix only if it specifies a member pointer.
-		      (when (setq got-identifier (c-forward-name))
-			(if (looking-at "\\(::\\)")
-			    ;; We only check for a trailing "::" and
-			    ;; let the "*" that should follow be
-			    ;; matched in the next round.
-			    (progn (setq got-identifier nil) t)
-			  ;; It turned out to be the real identifier,
-			  ;; so stop.
-			  nil))
-		    t))
-
-	(if (eq (char-after) ?\()
+      (if (and c-recognize-typeless-decls
+	       (equal c-type-decl-prefix-key "\\<\\>"))
+	  (when (eq (char-after) ?\()
 	    (progn
 	      (setq paren-depth (1+ paren-depth))
-	      (forward-char))
-	  (unless got-prefix-before-parens
-	    (setq got-prefix-before-parens (= paren-depth 0)))
-	  (setq got-prefix t)
-	  (goto-char (match-end 1)))
-	(c-forward-syntactic-ws))
+	      (forward-char)))
+	(while (and (looking-at c-type-decl-prefix-key)
+		    (if (and (c-major-mode-is 'c++-mode)
+			     (match-beginning 3))
+			;; If the third submatch matches in C++ then
+			;; we're looking at an identifier that's a
+			;; prefix only if it specifies a member pointer.
+			(when (setq got-identifier (c-forward-name))
+			  (if (looking-at "\\(::\\)")
+			      ;; We only check for a trailing "::" and
+			      ;; let the "*" that should follow be
+			      ;; matched in the next round.
+			      (progn (setq got-identifier nil) t)
+			    ;; It turned out to be the real identifier,
+			    ;; so stop.
+			    nil))
+		      t))
+
+	  (if (eq (char-after) ?\()
+	      (progn
+		(setq paren-depth (1+ paren-depth))
+		(forward-char))
+	    (unless got-prefix-before-parens
+	      (setq got-prefix-before-parens (= paren-depth 0)))
+	    (setq got-prefix t)
+	    (goto-char (match-end 1)))
+	  (c-forward-syntactic-ws)))
 
       (setq got-parens (> paren-depth 0))
 
 		     "\\>")
 		  "")
 		"\\)")
-  (java idl) "\\([\[\(]\\)")
+  java "\\([\[\(\)]\\)"
+  idl "\\([\[\(]\\)")
 (c-lang-defvar c-type-decl-suffix-key (c-lang-const c-type-decl-suffix-key)
   'dont-doc)
 
 that are preceded by a declaration starting keyword, so
 e.g. `c-typeless-decl-kwds' may still be used when it's set to nil."
   t nil
-  (c c++ objc) t)
+  (c c++ objc java) t)
 (c-lang-defvar c-recognize-typeless-decls
   (c-lang-const c-recognize-typeless-decls))