From: Filipp G. <fg...@fa...> - 2013-01-25 15:48:08
|
Emacs : GNU Emacs 24.2.1 (i686-pc-cygwin, GTK+ Version 2.24.11) of 2012-08-27 on fiona Package: CC Mode 5.33 (Java/lah) Buffer Style: java c-emacs-features: (pps-extended-state add-hook-local col-0-paren posix-char-classes gen-string-delim gen-comment-delim syntax-properties category-properties 1-bit) current state: ============== `M-x imenu' takes a long time when being run on the following file: public class A { public static void main(String[] args) { //a a a (abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef } } Adding some more 'abcdef's at the end increases that time even more. I tracked it down to the following extra space in regexp (why do we need a space in a type spec?): diff -r 0d641a4d3e7c cc-menus.el --- a/cc-menus.el Wed Jan 23 18:17:40 2013 +0000 +++ b/cc-menus.el Fri Jan 25 19:07:23 2013 +0400 @@ -165,7 +165,7 @@ (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 any number Appears in development version (patch was made on it) as well as in the version included in Emacs 24.2.1 (tried with -Q). -- Filipp Gunbin |