diff options
| author | Alan Mackenzie | 2012-04-11 18:09:10 +0000 |
|---|---|---|
| committer | Alan Mackenzie | 2012-04-11 18:09:10 +0000 |
| commit | 57f845ee63c2ed533fc55b19b9f35a63402ffcd4 (patch) | |
| tree | 2770a81a0478a947d0f3b45cf112465803df15bd | |
| parent | 0de3da9f2fdaa4259a3b53bb2faf96ee7109f51c (diff) | |
| download | emacs-57f845ee63c2ed533fc55b19b9f35a63402ffcd4.tar.gz emacs-57f845ee63c2ed533fc55b19b9f35a63402ffcd4.zip | |
Make imenu work again for Objective C Mode.
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/progmodes/cc-menus.el | 41 |
2 files changed, 25 insertions, 21 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index cde248a979e..9ef18ad7086 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,5 +1,10 @@ | |||
| 1 | 2012-04-11 Alan Mackenzie <acm@muc.de> | 1 | 2012-04-11 Alan Mackenzie <acm@muc.de> |
| 2 | 2 | ||
| 3 | * progmodes/cc-menus.el (cc-imenu-objc-generic-expression): Make | ||
| 4 | imenu work again for Objective C Mode. Correct the *-index | ||
| 5 | values, these having been disturbed by a previous change in | ||
| 6 | 2011-08. | ||
| 7 | |||
| 3 | * progmodes/cc-engine.el (c-before-change-check-<>-operators): | 8 | * progmodes/cc-engine.el (c-before-change-check-<>-operators): |
| 4 | Correct two search limits. | 9 | Correct two search limits. |
| 5 | 10 | ||
diff --git a/lisp/progmodes/cc-menus.el b/lisp/progmodes/cc-menus.el index f57fcbff5ca..a53d65f6307 100644 --- a/lisp/progmodes/cc-menus.el +++ b/lisp/progmodes/cc-menus.el | |||
| @@ -63,6 +63,20 @@ For example: | |||
| 63 | 63 | ||
| 64 | A sample value might look like: `\\(_P\\|_PROTO\\)'.") | 64 | A sample value might look like: `\\(_P\\|_PROTO\\)'.") |
| 65 | 65 | ||
| 66 | ;; *Warning for cc-mode developers* | ||
| 67 | ;; | ||
| 68 | ;; `cc-imenu-objc-generic-expression' elements depend on | ||
| 69 | ;; `cc-imenu-c++-generic-expression'. So if you change this | ||
| 70 | ;; expression, you need to change following variables, | ||
| 71 | ;; `cc-imenu-objc-generic-expression-*-index', | ||
| 72 | ;; too. `cc-imenu-objc-function' uses these *-index variables, in | ||
| 73 | ;; order to know where the each regexp *group \\(foobar\\)* elements | ||
| 74 | ;; are started. | ||
| 75 | ;; | ||
| 76 | ;; *-index variables are initialized during `cc-imenu-objc-generic-expression' | ||
| 77 | ;; being initialized. | ||
| 78 | ;; | ||
| 79 | |||
| 66 | (defvar cc-imenu-c++-generic-expression | 80 | (defvar cc-imenu-c++-generic-expression |
| 67 | `( | 81 | `( |
| 68 | ;; Try to match ::operator definitions first. Otherwise `X::operator new ()' | 82 | ;; Try to match ::operator definitions first. Otherwise `X::operator new ()' |
| @@ -187,23 +201,8 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.") | |||
| 187 | ")" | 201 | ")" |
| 188 | "[.," c-alnum " \t\n\r]*" | 202 | "[.," c-alnum " \t\n\r]*" |
| 189 | "{" | 203 | "{" |
| 190 | )) 1)) | 204 | )) 1)) |
| 191 | "Imenu generic expression for Java mode. See | 205 | "Imenu generic expression for Java mode. See `imenu-generic-expression'.") |
| 192 | `imenu-generic-expression'.") | ||
| 193 | |||
| 194 | ;; *Warning for cc-mode developers* | ||
| 195 | ;; | ||
| 196 | ;; `cc-imenu-objc-generic-expression' elements depend on | ||
| 197 | ;; `cc-imenu-c++-generic-expression'. So if you change this | ||
| 198 | ;; expression, you need to change following variables, | ||
| 199 | ;; `cc-imenu-objc-generic-expression-*-index', | ||
| 200 | ;; too. `cc-imenu-objc-function' uses these *-index variables, in | ||
| 201 | ;; order to know where the each regexp *group \\(foobar\\)* elements | ||
| 202 | ;; are started. | ||
| 203 | ;; | ||
| 204 | ;; *-index variables are initialized during `cc-imenu-objc-generic-expression' | ||
| 205 | ;; being initialized. | ||
| 206 | ;; | ||
| 207 | 206 | ||
| 208 | ;; Internal variables | 207 | ;; Internal variables |
| 209 | (defvar cc-imenu-objc-generic-expression-noreturn-index nil) | 208 | (defvar cc-imenu-objc-generic-expression-noreturn-index nil) |
| @@ -224,7 +223,7 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.") | |||
| 224 | "\\|" | 223 | "\\|" |
| 225 | ;; > General function name regexp | 224 | ;; > General function name regexp |
| 226 | ;; Pick a token by (match-string 3) | 225 | ;; Pick a token by (match-string 3) |
| 227 | (car (cdr (nth 2 cc-imenu-c++-generic-expression))) ; -> index += 5 | 226 | (car (cdr (nth 2 cc-imenu-c++-generic-expression))) ; -> index += 6 |
| 228 | (prog2 (setq cc-imenu-objc-generic-expression-general-func-index 3) "") | 227 | (prog2 (setq cc-imenu-objc-generic-expression-general-func-index 3) "") |
| 229 | ;; > Special case for definitions using phony prototype macros like: | 228 | ;; > Special case for definitions using phony prototype macros like: |
| 230 | ;; > `int main _PROTO( (int argc,char *argv[]) )'. | 229 | ;; > `int main _PROTO( (int argc,char *argv[]) )'. |
| @@ -233,11 +232,11 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.") | |||
| 233 | (concat | 232 | (concat |
| 234 | "\\|" | 233 | "\\|" |
| 235 | (car (cdr (nth 3 cc-imenu-c++-generic-expression))) ; -> index += 1 | 234 | (car (cdr (nth 3 cc-imenu-c++-generic-expression))) ; -> index += 1 |
| 236 | (prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 9) "") | 235 | (prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 10) "") |
| 237 | ) | 236 | ) |
| 238 | (prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 8) "") | 237 | (prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 9) "") |
| 239 | "") ; -> index += 0 | 238 | "") ; -> index += 0 |
| 240 | (prog2 (setq cc-imenu-objc-generic-expression-proto-index 8) "") | 239 | (prog2 (setq cc-imenu-objc-generic-expression-proto-index 9) "") |
| 241 | ;; | 240 | ;; |
| 242 | ;; For Objective-C | 241 | ;; For Objective-C |
| 243 | ;; Pick a token by (match-string 8 or 9) | 242 | ;; Pick a token by (match-string 8 or 9) |