Variable: cc-imenu-objc-generic-expression
cc-imenu-objc-generic-expression is a variable defined in
cc-menus.el.gz.
Value
"^\\([[:alpha:]_][[:alnum:]_:<>~]*\\)[ ]*([ ]*\\([^ (*][^)]*\\)?)[ ]*[^ ;(]\\|^\\_<[^()\n]*[^[:alnum:]_:<>~]\\([[:alpha:]_][[:alnum:]_:<>~]*\\)\\([ \n]\\|\\\\\n\\)*(\\([ \n]\\|\\\\\n\\)*\\([^ \n(*][^()]*\\(([^()]*)[^()]*\\)*\\)?)\\([ \n]\\|\\\\\n\\)*[^ \n;(]\\|\\(^[-+][:[:alnum:]()*_<>\n ]*[;{]\\|^@interface[ ]+[[:alnum:]_]+[ ]*:\\|^@interface[ ]+[[:alnum:]_]+[ ]*([[:alnum:]_]+)\\|^@interface[ ]+[[:alnum:]_]+[ ]*.*$\\|^@implementation[ ]+[[:alnum:]_]+[ ]*([[:alnum:]_]+)\\|^@implementation[ ]+[[:alnum:]_]+\\|^@protocol[ ]+[[:alnum:]_]+\\)"
Documentation
Imenu generic expression for ObjC mode. See imenu-generic-expression.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cc-menus.el.gz
(defvar cc-imenu-objc-generic-expression
(concat
;;
;; For C
;;
;; > Special case to match a line like `main() {}'
;; > e.g. no return type, not even on the previous line.
;; Pick a token by (match-string 1)
(car (cdr (nth 1 cc-imenu-c++-generic-expression))) ; -> index += 2
(prog2 (setq cc-imenu-objc-generic-expression-noreturn-index 1) "")
"\\|"
;; > General function name regexp
;; Pick a token by (match-string 3)
(car (cdr (nth 2 cc-imenu-c++-generic-expression))) ; -> index += 6
(prog2 (setq cc-imenu-objc-generic-expression-general-func-index 3) "")
;; > Special case for definitions using phony prototype macros like:
;; > `int main _PROTO( (int argc,char *argv[]) )'.
;; Pick a token by (match-string 8)
(if cc-imenu-c-prototype-macro-regexp
(concat
"\\|"
(car (cdr (nth 3 cc-imenu-c++-generic-expression))) ; -> index += 1
(prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 10) "")
)
(prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 9) "")
"") ; -> index += 0
(prog2 (setq cc-imenu-objc-generic-expression-proto-index 9) "")
;;
;; For Objective-C
;; Pick a token by (match-string 8 or 9)
;;
"\\|\\("
"^[-+][:" c-alnum "()*_<>\n\t ]*[;{]" ; Methods
"\\|"
"^@interface[\t ]+[" c-alnum "_]+[\t ]*:"
"\\|"
"^@interface[\t ]+[" c-alnum "_]+[\t ]*([" c-alnum "_]+)"
"\\|"
;; For NSObject, NSProxy and Object... They don't have super class.
"^@interface[\t ]+[" c-alnum "_]+[\t ]*.*$"
"\\|"
"^@implementation[\t ]+[" c-alnum "_]+[\t ]*([" c-alnum "_]+)"
"\\|"
"^@implementation[\t ]+[" c-alnum "_]+"
"\\|"
"^@protocol[\t ]+[" c-alnum "_]+" "\\)")
"Imenu generic expression for ObjC mode. See `imenu-generic-expression'.")