From b51f1ef82fa324f08fe94b8fa8aaf8b8ebb3a48e Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Mon, 11 Jan 2016 17:46:04 +0000 Subject: Java Mode: Fontify identifiers in the presence of annotations. * lisp/progmodes/cc-engine.el (c-forward-annotation): Tidy up the coding: Don't move point when the defun fails. (c-forward-decl-or-cast-1): Correct a usage of match data. * lisp/progmodes/cc-fonts.el (c-font-lock-maybe-decl-faces): Remove. (c-font-lock-declarations): Use the new c-maybe-decl-faces in place of the removed variable. * lisp/progmodes/cc-langs.el (c-maybe-decl-faces): New language variable. --- lisp/progmodes/cc-engine.el | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'lisp/progmodes/cc-engine.el') diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 98699df0cab..b08c555e34f 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -6641,16 +6641,22 @@ comment at the start of cc-engine.el for more info." 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), @@ -6959,9 +6965,8 @@ comment at the start of cc-engine.el for more info." (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) -- cgit v1.2.3