Subject: imenu-add-menubar-index fails in Objective-C mode

From: Juanma Barranquero <[email-masked]>
Date: Tue, 17 Feb 2009 13:22:21 +0100

Package: emacs,cc-mode

[This part is a bugfix]

emacs -Q --visit nsfns.m --f imenu-add-menubar-index

 => Error in menu-bar-update-hook: (invalid-function imenu-progress-message)

The reason is that progmodes/cc-menus.el does

  (cc-bytecomp-defun imenu-progress-message)

to avoid loading imenu.el, and then uses `imenu-progress-message' in
Objective-C specific code (cc-imenu-objc-function). But it is a macro,
so it fails.

I think the best way to fix it is just removing the cc-bytecomp-defun
and all calls to imenu-progress-message from cc-menus.el. That macro
has been defined as a no-op since 2004-10-27 and I don't think it is
worth jumping around hoops just to make cc-menus.el successfully
define something that goes unused.

[This part is not a bugfix, so not needed now]

Additionally, there are useless calls to `imenu-progress-message' in
imenu.el, erc/erc-imenu.el and net/smtp-mode.el. For the latter two,
removing the macro calls would also remove the need to require imenu.

    Juanma

2009-02-17  Juanma Barranquero  <[email-masked]>

	* progmodes/cc-menus.el (imenu-progress-message):
	Remove (bogus and useless) cc-bytecomp-defun.
	(cc-imenu-objc-function): Don't call `imenu-progress-message'.
	Don't let-bind unused variable `stupid'.

Index: lisp/progmodes/cc-menus.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/progmodes/cc-menus.el,v
retrieving revision 1.42
diff -u -2 -r1.42 cc-menus.el
--- lisp/progmodes/cc-menus.el	17 Feb 2009 10:59:14 -0000	1.42
+++ lisp/progmodes/cc-menus.el	17 Feb 2009 11:51:30 -0000
@@ -48,5 +48,4 @@
 (cc-bytecomp-defvar imenu-generic-expression)
 (cc-bytecomp-defvar imenu-create-index-function)
-(cc-bytecomp-defun imenu-progress-message)

 
@@ -317,5 +316,4 @@
 	(classcount 0)
 	toplist
-	stupid
 	str
 	str2
@@ -331,8 +329,6 @@
 	   'buffer-substring)))
     (goto-char (point-max))
-    (imenu-progress-message stupid 0)
     ;;
     (while (re-search-backward cc-imenu-objc-generic-expression nil t)
-      (imenu-progress-message stupid)
       (setq langnum (if (match-beginning OBJC)
 			OBJC
@@ -386,5 +382,4 @@
 	      methodlist nil))))
     ;;
-    (imenu-progress-message stupid 100)
     (if (eq (car toplist) nil)
 	(setq toplist (cdr toplist)))