So first of all, what *is* imenu.
... read, read ....
So it partly seems like a one file only form of etags. But if you do M-x imenu-add-menubar-index it will add an "index" menu to the menu bar with a list of all files for easy access. Being a bit of a mouse-ophobe, I'm not so sure how I'd like that. Also you have to hit rescan whenever you change the contents of the file (or set up imenu-auto-rescan).
Seems like another case of having more than one way to do things. I'll probably stick with etags, but for completeness here is a brief overview of the imenu support functions.
So there is really just one function:
Go to the beginning of the file. look for "def and "class" references (unless in comments or string) and add them to the list.
Hmm, I wonder if something else more wonderful is going on here. Doesn't really seem like functionality worth supporting.
Perhaps if you had it set up to go off a simple mouse motion as described here.
(if (featurep 'xemacs)
(global-set-key [(shift button3)] 'imenu) ; XEmacs
(global-set-key [S-mouse-3] 'imenu)) ; GNU Emacs
Also looks like it integrates in with ido to some extent. Maybe there is some goodness from that.
Any way, that's enough on that topic.