emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp/progmodes cc-menus.el


From: Alan Mackenzie
Subject: [Emacs-diffs] emacs/lisp/progmodes cc-menus.el
Date: Wed, 18 Nov 2009 21:13:07 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Alan Mackenzie <acmacm> 09/11/18 21:13:07

Modified files:
        lisp/progmodes : cc-menus.el 

Log message:
        (cc-imenu-java-generic-expression): A new, more accurate version of the
        regexp.  Contributed by Nathaniel Flath.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/progmodes/cc-menus.el?cvsroot=emacs&r1=1.43&r2=1.44

Patches:
Index: cc-menus.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/progmodes/cc-menus.el,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- cc-menus.el 18 Feb 2009 09:23:32 -0000      1.43
+++ cc-menus.el 18 Nov 2009 21:13:07 -0000      1.44
@@ -149,22 +149,45 @@
 (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
-       ;; matching e.g. "else if (foo)".
-       (concat "([ \t\n\r]*"
-              "\\([\]\[.," c-alnum "_]+"
+       ;; An argument list htat is either empty or contains any number
+       ;; of arguments.  An argument is any number of annotations
+       ;; followed by a type spec followed by a word.  A word is an
+       ;; identifier.  A type spec is an identifier, possibly followed
+       ;; by < typespec > possibly followed by [].
+       (concat "("
+               "\\("
+                  "[ \t\n\r]*"
+                  "\\("
+                     "@"
+                     "[" c-alpha "_]"
+                     "[" c-alnum "._]""*"
+                     "[ \t\n\r]+"
+                  "\\)*"
+                  "\\("
+                     "[" c-alpha "_]"
+                     "[\]\[" c-alnum "_.]*"
+                     "\\("
+                        "<"
+                        "[ \t\n\r]*"
+                        "[\]\[.," c-alnum "_<> \t\n\r]*"
+                        ">"
+                     "\\)?"
+                     "\\(\\[\\]\\)?"
               "[ \t\n\r]+"
-              "[\]\[.," c-alnum "_]"
-              "[\]\[.," c-alnum "_ \t\n\r]*"
-              "\\)?)")
-       "[.," c-alnum "_ \t\n\r]*"
+                  "\\)"
+                 "[" c-alpha "_]"
+                 "[" c-alnum "_]*"
+                 "[ \t\n\r,]*"
+               "\\)*"
+              ")"
+           "[ \t\n\r]*"
        "{"
-       ) 1))
-  "Imenu generic expression for Java mode.  See `imenu-generic-expression'.")
+       )) 1))
+  "Imenu generic expression for Java mode.  See
+`imenu-generic-expression'.")
 
 ;;                        *Warning for cc-mode developers*
 ;;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]