index b151bd0..8a87448 100644 --- a/lisp/progmodes/cc-menus.el +++ b/lisp/progmodes/cc-menus.el @@ -149,17 +149,18 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.") (defvar cc-imenu-java-generic-expression `((nil ,(concat - "[" c-alpha "_][\]\[." c-alnum "_]+[ \t\n\r]+" ; type spec + "[" c-alpha "_][\]\[." c-alnum "_<> ]+[ \t\n\r]+" ; type spec "\\([" c-alpha "_][" c-alnum "_]+\\)" ; method name "[ \t\n\r]*" ;; An argument list that is either empty or contains at least - ;; two identifiers with only space between them. This avoids + ;; two words with whitespace in between them. Words are + ;; identifiers and <>@ characers. This prevents us from ;; matching e.g. "else if (foo)". (concat "([ \t\n\r]*" - "\\([\]\[.," c-alnum "_]+" + "\\([\]\[.," c-alnum "_@<> ]+" "[ \t\n\r]+" "[\]\[.," c-alnum "_]" - "[\]\[.," c-alnum "_ \t\n\r]*" + "[\]\[.," c-alnum "_ \t\n\r@<> ]*" "\\)?)") "[.," c-alnum "_ \t\n\r]*" "{"