]> code.delx.au - gnu-emacs/blobdiff - lisp/progmodes/cc-menus.el
* appt.el: Restore significant whitespace deleted by "spelling fix".
[gnu-emacs] / lisp / progmodes / cc-menus.el
index 02636c02787203b14b6fffa62baa53aff19c4e53..942303b10960f162a9e3670d41e99b88d4e98abc 100644 (file)
@@ -1,8 +1,6 @@
 ;;; cc-menus.el --- imenu support for CC Mode
 
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011  Free Software Foundation, Inc.
 
 ;; Authors:    1998- Martin Stjernholm
 ;;             1992-1999 Barry A. Warsaw
@@ -11,8 +9,8 @@
 ;;             1985 Richard M. Stallman
 ;; Maintainer: bug-cc-mode@gnu.org
 ;; Created:    22-Apr-1997 (split from cc-mode.el)
-;; Version:    See cc-mode.el
-;; Keywords:   c languages oop
+;; Keywords:   c languages
+;; Package:    cc-mode
 
 ;; This file is part of GNU Emacs.
 
@@ -68,7 +66,7 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
 (defvar cc-imenu-c++-generic-expression
   `(
     ;; Try to match ::operator definitions first. Otherwise `X::operator new ()'
-    ;; will be incorrectly recognised as function `new ()' because the regexps
+    ;; will be incorrectly recognized as function `new ()' because the regexps
     ;; work by backtracking from the end of the definition.
     (nil
      ,(concat
@@ -110,8 +108,11 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
        "[^" c-alnum "_:<>~]"                  ; match any non-identifier char
        "\\([" c-alpha "_][" c-alnum "_:<>~]*\\)" ; match function name
        "\\([ \t\n]\\|\\\\\n\\)*("            ; see above, BUT the arg list
-       "\\([ \t\n]\\|\\\\\n\\)*\\([^ \t\n(*][^)]*\\)?)" ; must not start
-       "\\([ \t\n]\\|\\\\\n\\)*[^ \t\n;(]"    ; with an asterisk or parentheses
+       "\\([ \t\n]\\|\\\\\n\\)*"             ; must not start
+       "\\([^ \t\n(*]"                       ; with an asterisk or parentheses
+       "[^()]*\\(([^()]*)[^()]*\\)*"         ; Maybe function pointer arguments
+       "\\)?)"
+       "\\([ \t\n]\\|\\\\\n\\)*[^ \t\n;(]"
        ) 1)
     ;; Special case for definitions using phony prototype macros like:
     ;; `int main _PROTO( (int argc,char *argv[]) )'.
@@ -150,7 +151,7 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
   `((nil
      ,(concat
        "[" c-alpha "_][\]\[." c-alnum "_<> ]+[ \t\n\r]+" ; type spec
-       "\\([" c-alpha "_][" c-alnum "_]+\\)" ; method name
+       "\\([" c-alpha "_][" c-alnum "_]*\\)" ; method name
        "[ \t\n\r]*"
        ;; An argument list htat is either empty or contains any number
        ;; of arguments.  An argument is any number of annotations
@@ -159,33 +160,34 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
        ;; 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-alpha "_]"
-                 "[" c-alnum "_]*"
-                 "[ \t\n\r,]*"
+               "[ \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-alpha "_]"
+               "[" c-alnum "_]*"
+               "[ \t\n\r,]*"
                "\\)*"
-              ")"
-           "[ \t\n\r]*"
-       "{"
-       )) 1))
+               ")"
+               "[.," c-alnum " \t\n\r]*"
+               "{"
+               )) 1))
   "Imenu generic expression for Java mode.  See
 `imenu-generic-expression'.")
 
@@ -441,5 +443,4 @@ Example:
 \f
 (cc-provide 'cc-menus)
 
-;; arch-tag: f6b60933-91f0-4145-ab44-70ca6d1b919b
 ;;; cc-menus.el ends here