Attached is a patch for two bugs in `imenu--generic-function'. I ran into them when using a function value for argument REGEXP, though neither has to do particularly with that use case. Instead, they both have to do with the case where items are within comments or strings, which might be skipped. 1. When checking whether the current item is inside a comment or string, it's necessary to first move point to position START. Otherwise, the test is made at bol (which might not be within a comment or string, even though the START position is). 2. At the end, it's necessary to remove any empty menus that could have been added. That can happen because of skipping things inside comments or strings. In GNU Emacs 27.0.50 (build 3, x86_64-w64-mingw32) of 2018-03-21 Repository revision: e70d0c9e66d7a8609450b2889869d16aeb0363b5 Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --without-dbus --host=x86_64-w64-mingw32 --without-compress-install -C 'CFLAGS=-O2 -static -g3''