res))
(defun c-forward-annotation ()
- ;; Used for Java code only at the moment. Assumes point is on the
- ;; @, moves forward an annotation. returns nil if there is no
- ;; annotation at point.
- (and (looking-at "@")
- (progn (forward-char) t)
- (c-forward-type)
- (progn (c-forward-syntactic-ws) t)
- (if (looking-at "(")
- (c-go-list-forward)
- t)))
+ ;; Used for Java code only at the moment. Assumes point is on the @, moves
+ ;; forward an annotation and returns t. Leaves point unmoved and returns
+ ;; nil if there is no annotation at point.
+ (let ((pos (point)))
+ (or
+ (and (looking-at "@")
+ (not (looking-at c-keywords-regexp))
+ (progn (forward-char) t)
+ (looking-at c-symbol-key)
+ (progn (goto-char (match-end 0))
+ (c-forward-syntactic-ws)
+ t)
+ (if (looking-at "(")
+ (c-go-list-forward)
+ t))
+ (progn (goto-char pos) nil))))
(defmacro c-pull-open-brace (ps)
;; Pull the next open brace from PS (which has the form of paren-state),
(when (or (looking-at c-prefix-spec-kwds-re) ;FIXME!!! includes auto
(and (c-major-mode-is 'java-mode)
(looking-at "@[A-Za-z0-9]+")))
- (save-match-data
- (if (looking-at c-typedef-key)
- (setq at-typedef t)))
+ (if (save-match-data (looking-at c-typedef-key))
+ (setq at-typedef t))
(setq kwd-sym (c-keyword-sym (match-string 1)))
(save-excursion
(c-forward-keyword-clause 1)
(setq pos (point)))))) ; acts to make the `while' form continue.
nil)
-(defconst c-font-lock-maybe-decl-faces
- ;; List of faces that might be put at the start of a type when
- ;; `c-font-lock-declarations' runs. This needs to be evaluated to
- ;; ensure that face name aliases in Emacs are resolved.
- (list nil
- font-lock-type-face
- c-reference-face-name
- font-lock-keyword-face))
-
(defun c-font-lock-declarations (limit)
;; Fontify all the declarations, casts and labels from the point to LIMIT.
;; Assumes that strings and comments have been fontified already.
(c-find-decl-spots
limit
c-decl-start-re
- c-font-lock-maybe-decl-faces
+ (eval c-maybe-decl-faces)
(lambda (match-pos inside-macro)
;; Note to maintainers: don't use `limit' inside this lambda form;
objc t)
(c-lang-defvar c-type-decl-end-used (c-lang-const c-type-decl-end-used))
+(c-lang-defconst c-maybe-decl-faces
+ "List of faces that might be put at the start of a type when
+`c-font-lock-declarations' runs. This must be evaluated (with `eval') at
+runtime to get the actual list of faces. This ensures that face name
+aliases in Emacs are resolved."
+ t '(list nil
+ font-lock-type-face
+ c-reference-face-name
+ font-lock-keyword-face)
+ java (append (c-lang-const c-maybe-decl-faces)
+ '(font-lock-preprocessor-face)))
+(c-lang-defvar c-maybe-decl-faces (c-lang-const c-maybe-decl-faces))
+
\f
;;; Wrap up the `c-lang-defvar' system.