Subject: bug#5582: 23.1.92; Unnecessary headings in makefile-mode imenu

From: Magnus Henoch <[email-masked]>
Date: Mon, 15 Feb 2010 17:36:22 +0000

Severity: wishlist

In makefile-mode, M-x imenu requires you to specify "Dependencies" or
"Macro assignments" before you can type the name of the thing you want
to jump to.  I think that's unnecessary, since having a macro assignment
with the same name as a dependency is very unusual.  The patch below
gives you a flat list instead:

	* progmodes/make-mode.el (makefile-imenu-generic-expression):
	Remove headings, turning the tree of targets into a flat list.

=== modified file 'lisp/progmodes/make-mode.el'
--- lisp/progmodes/make-mode.el	2010-01-13 08:35:10 +0000
+++ lisp/progmodes/make-mode.el	2010-02-15 16:46:38 +0000
@@ -516,8 +516,8 @@
     ("\\\\\n" 0 ".")))

 (defvar makefile-imenu-generic-expression
-  `(("Dependencies" makefile-previous-dependency 1)
-    ("Macro Assignment" ,makefile-macroassign-regex 1))
+  `((nil makefile-previous-dependency 1)
+    (nil ,makefile-macroassign-regex 1))
   "Imenu generic expression for Makefile mode.  See
`imenu-generic-expression'.")

 ;;; ------------------------------------------------------------

In GNU Emacs 23.1.92.1 (i686-pc-linux-gnu, GTK+ Version 2.18.1)
 of 2010-02-12 on linux-b2a3
Windowing system distributor `The X.Org Foundation', version 11.0.10605000
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: C
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Change Log

Minor modes in effect:
  bug-reference-mode: t
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  jabber-activity-mode: t
  jabber-mode-line-mode: t
  show-paren-mode: t
  server-mode: t
  ido-everywhere: t
  icomplete-mode: t
  display-time-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
e - i m e n i u - <backspace> <backspace> <backspace>
u - <M-tab> SPC C-f C-f C-f C-f C-f C-f C-b C-b C-b
C-M-k n i l C-n C-e ) <return> <C-s-down> <C-s-down>
s-i <tab> * <return> <tab> C-g C-h v m a k e f <tab>
i m <tab> e n <tab> <return> <C-s-down> <C-s-down>
C-x k C-g <C-s-down> <C-s-down> C-p C-f C-f C-f C-f
C-f C-f C-s C-w C-w C-w C-w C-s C-s <return> <C-s-down>
M-x n o r m a - m o d <return> <end> s-i <tab> C-g
<C-s-down> C-x b <return> M-p C-a C-f C-f C-f C-f C-f
C-M-k n i l C-e <return> <C-s-down> <C-s-down> M-x
n o r m a l - m o d <return> s-i <tab> M A <tab> <return>
M-x l o c a t e <return> m a k e - m o d e . e l <return>
C-n C-p <return> s-i V a <return> m a x k <tab> <backspace>
<backspace> <tab> i m <tab> e <tab> <return> C-n C-f
C-f C-f C-f C-f C-M-k n i l C-n C-b C-b C-b C-M-k n
i l C-x C-s C-x v = C-n C-n C-n C-n C-n C-n C-n C-n
C-n C-h e <C-end> <C-backspace> C-x v = C-n C-n C-n
C-n C-n C-n C-n C-x 4 a R e m o v e SPC h e a d i n
g s , SPC t u r n i n g SPC t h e SPC t l <backspace>
r e e SPC o f SPC t a r g e t s SPC i n t o SPC a SPC
f l a t SPC l i s t . M-q M-x r e p o r t - e m a <tab>
<return>

Load-path shadows:
~/emacs/org-mode/lisp/org-html hides
/usr/local/share/emacs/23.1.92/lisp/org/org-html
~/emacs/org-mode/lisp/org-table hides
/usr/local/share/emacs/23.1.92/lisp/org/org-table
~/emacs/org-mode/lisp/org-bbdb hides
/usr/local/share/emacs/23.1.92/lisp/org/org-bbdb
~/emacs/org-mode/lisp/org-mouse hides
/usr/local/share/emacs/23.1.92/lisp/org/org-mouse
~/emacs/org-mode/lisp/org-rmail hides
/usr/local/share/emacs/23.1.92/lisp/org/org-rmail
~/emacs/org-mode/lisp/org-compat hides
/usr/local/share/emacs/23.1.92/lisp/org/org-compat
~/emacs/org-mode/lisp/org-latex hides
/usr/local/share/emacs/23.1.92/lisp/org/org-latex
~/emacs/org-mode/lisp/org-gnus hides
/usr/local/share/emacs/23.1.92/lisp/org/org-gnus
~/emacs/org-mode/lisp/org-habit hides
/usr/local/share/emacs/23.1.92/lisp/org/org-habit
~/emacs/org-mode/lisp/org-exp hides
/usr/local/share/emacs/23.1.92/lisp/org/org-exp
~/emacs/org-mode/lisp/org-src hides
/usr/local/share/emacs/23.1.92/lisp/org/org-src
~/emacs/org-mode/lisp/org-plot hides
/usr/local/share/emacs/23.1.92/lisp/org/org-plot
~/emacs/org-mode/lisp/org-publish hides
/usr/local/share/emacs/23.1.92/lisp/org/org-publish
~/emacs/org-mode/lisp/org-bibtex hides
/usr/local/share/emacs/23.1.92/lisp/org/org-bibtex
~/emacs/org-mode/lisp/org-xoxo hides
/usr/local/share/emacs/23.1.92/lisp/org/org-xoxo
~/emacs/org-mode/lisp/org-remember hides
/usr/local/share/emacs/23.1.92/lisp/org/org-remember
~/emacs/org-mode/lisp/org-crypt hides
/usr/local/share/emacs/23.1.92/lisp/org/org-crypt
~/emacs/org-mode/lisp/org-timer hides
/usr/local/share/emacs/23.1.92/lisp/org/org-timer
~/emacs/org-mode/lisp/org-vm hides
/usr/local/share/emacs/23.1.92/lisp/org/org-vm
~/emacs/org-mode/lisp/org hides /usr/local/share/emacs/23.1.92/lisp/org/org
~/emacs/org-mode/lisp/org-mew hides
/usr/local/share/emacs/23.1.92/lisp/org/org-mew
~/emacs/org-mode/lisp/org-archive hides
/usr/local/share/emacs/23.1.92/lisp/org/org-archive
~/emacs/org-mode/lisp/org-indent hides
/usr/local/share/emacs/23.1.92/lisp/org/org-indent
~/emacs/org-mode/lisp/org-agenda hides
/usr/local/share/emacs/23.1.92/lisp/org/org-agenda
~/emacs/org-mode/lisp/org-exp-blocks hides
/usr/local/share/emacs/23.1.92/lisp/org/org-exp-blocks
~/emacs/org-mode/lisp/org-id hides
/usr/local/share/emacs/23.1.92/lisp/org/org-id
~/emacs/org-mode/lisp/org-install hides
/usr/local/share/emacs/23.1.92/lisp/org/org-install
~/emacs/org-mode/lisp/org-datetree hides
/usr/local/share/emacs/23.1.92/lisp/org/org-datetree
~/emacs/org-mode/lisp/org-clock hides
/usr/local/share/emacs/23.1.92/lisp/org/org-clock
~/emacs/org-mode/lisp/org-w3m hides
/usr/local/share/emacs/23.1.92/lisp/org/org-w3m
~/emacs/org-mode/lisp/org-irc hides
/usr/local/share/emacs/23.1.92/lisp/org/org-irc
~/emacs/org-mode/lisp/org-inlinetask hides
/usr/local/share/emacs/23.1.92/lisp/org/org-inlinetask
~/emacs/org-mode/lisp/org-mac-message hides
/usr/local/share/emacs/23.1.92/lisp/org/org-mac-message
~/emacs/org-mode/lisp/org-list hides
/usr/local/share/emacs/23.1.92/lisp/org/org-list
~/emacs/org-mode/lisp/org-colview hides
/usr/local/share/emacs/23.1.92/lisp/org/org-colview
~/emacs/org-mode/lisp/org-mobile hides
/usr/local/share/emacs/23.1.92/lisp/org/org-mobile
~/emacs/org-mode/lisp/org-attach hides
/usr/local/share/emacs/23.1.92/lisp/org/org-attach
~/emacs/org-mode/lisp/org-wl hides
/usr/local/share/emacs/23.1.92/lisp/org/org-wl
~/emacs/org-mode/lisp/org-info hides
/usr/local/share/emacs/23.1.92/lisp/org/org-info
~/emacs/org-mode/lisp/org-macs hides
/usr/local/share/emacs/23.1.92/lisp/org/org-macs
~/emacs/org-mode/lisp/org-mhe hides
/usr/local/share/emacs/23.1.92/lisp/org/org-mhe
~/emacs/org-mode/lisp/org-jsinfo hides
/usr/local/share/emacs/23.1.92/lisp/org/org-jsinfo
~/emacs/org-mode/lisp/org-freemind hides
/usr/local/share/emacs/23.1.92/lisp/org/org-freemind
~/emacs/org-mode/lisp/org-icalendar hides
/usr/local/share/emacs/23.1.92/lisp/org/org-icalendar
~/emacs/org-mode/lisp/org-feed hides
/usr/local/share/emacs/23.1.92/lisp/org/org-feed
~/emacs/org-mode/lisp/org-footnote hides
/usr/local/share/emacs/23.1.92/lisp/org/org-footnote
~/emacs/org-mode/lisp/org-protocol hides
/usr/local/share/emacs/23.1.92/lisp/org/org-protocol
~/emacs/org-mode/lisp/org-ascii hides
/usr/local/share/emacs/23.1.92/lisp/org/org-ascii
~/emacs/org-mode/lisp/org-docbook hides
/usr/local/share/emacs/23.1.92/lisp/org/org-docbook
~/emacs/org-mode/lisp/org-faces hides
/usr/local/share/emacs/23.1.92/lisp/org/org-faces
~/emacs/emms/lisp/tq hides /usr/local/share/emacs/23.1.92/lisp/emacs-lisp/tq

Features:
(shadow emacsbug vc-bzr locate ielm info two-column ediff-merg
ediff-diff ediff-wind ediff-help ediff-util ediff-mult ediff-init ediff
em-unix pcomplete em-term term ehelp electric em-script em-prompt em-ls
em-hist em-pred em-glob em-dirs em-cmpl em-basic esh-opt em-banner
em-alias esh-var esh-io esh-cmd esh-ext esh-proc esh-arg esh-groups
eshell esh-module esh-mode esh-util find-dired grep log-view tabify man
log-edit pcvs-util add-log diff-mode vc vc-dispatcher make-mode
org-colview mule-util face-remap rect url-cache url-http cal-china lunar
solar cal-dst cal-bahai cal-islam cal-hebrew holidays hol-loaddefs
diary-lib diary-loaddefs cal-iso cal-menu calendar cal-loaddefs gnus-fun
bookmark pp iso-transl jka-compr find-func mailalias smtpmail bbdb-hooks
browse-url quail help-mode view w3-forms w3-style w3-hot url-file
url-dired w3-toolbar w3-emacs w3-props url-auth w3 w3-menu url-news
url-irc url-gw cus-edit w3-emulate w3-parse w3-fast-parse w3-display
w3-mouse w3-imap url-handlers w3-widget w3-vars w3-keymap w3-cus css
font devices ange-ftp w3-cfg w3-compat imenu vc-hg etags tramp-imap
tramp-gw tramp-fish tramp-smb tramp-cache tramp-ftp tramp-cmds tramp
shell tramp-compat trampver multi-isearch org-clock flow-fill bbdb-gui
gnus-cite smiley ansi-color gnus-async gnus-bcklg sort gnus-ml
disp-table nndoc parse-time nnfolder utf-7 utf7 auth-source nnimap imap
nndraft nnmh nnml gnus-agent gnus-srvr gnus-score score-mode nnvirtual
nntp gnus-cache spam spam-stat gnus-uu yenc gnus-msg goto-addr thingatpt
sasl-digest hmac-md5 copyright jabber-gmail jabber-keepalive jabber-ping
jabber-bookmarks jabber-private jabber jabber-libnotify dbus
jabber-awesome jabber-osd jabber-wmii jabber-xmessage jabber-festival
jabber-sawfish jabber-ratpoison jabber-screen jabber-socks5
jabber-ft-server jabber-si-server jabber-ft-client jabber-ft-common
jabber-si-client jabber-si-common jabber-feature-neg jabber-truncate
jabber-time jabber-autoaway jabber-vcard-avatars jabber-chatstates
jabber-events jabber-vcard jabber-avatar jabber-activity jabber-watch
jabber-modeline jabber-ahc-presence jabber-ahc jabber-version
jabber-ourversion jabber-muc-nick-completion hippie-exp jabber-browse
jabber-search jabber-register jabber-roster jabber-presence jabber-muc
jabber-muc-nick-coloring assoc hexrgb jabber-newdisco jabber-widget
jabber-disco jabber-chat jabber-history jabber-chatbuffer jabber-alert
jabber-iq jabber-core jabber-console sgml-mode ewoc jabber-keymap
jabber-sasl sasl sasl-anonymous sasl-login sasl-plain fsm jabber-logon
jabber-conn srv dns starttls tls jabber-xml xml jabber-menu eldoc
org-feed org-w3m org-wl org-vm org-rmail org-mhe org-mew org-irc
org-habit org-jsinfo org-infojs org-html org-exp org-exp-blocks
org-agenda org-info org-gnus org-bibtex org-bbdb paren server ido
icomplete time cus-start cus-load emms-playlist-sort emms-last-played
emms-info-libtag emms-lastfm emms-url emms-playing-time emms-mode-line
url url-proxy url-privacy url-expand url-methods url-history url-cookie
url-util url-parse url-vars emms-cache emms-info-ogginfo
emms-info-mp3info emms-info later-do emms-playlist-mode emms-player-vlc
emms-player-mplayer emms-player-simple emms-source-playlist
emms-source-file dired emms-setup emms emms-compat bbdb-gnus gnus-art
mm-uu mml2015 epg-config mm-view smime dig gnus-sum nnoo gnus-group
gnus-undo nnmail mail-source format-spec gnus-start gnus-spec gnus-int
gnus-range message sendmail ecomplete mml mml-sec password-cache
mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045
qp ietf-drums gmm-utils mailheader canlock sha1 hex-util hashcash
gnus-win gnus gnus-ems nnheader gnus-util netrc mail-utils mm-util
mail-prsvr wid-edit bbdb-snarf mail-extr rfc822 bbdb-com warnings
mailabbrev bbdb-autoloads bbdb regexp-opt timezone patmatch erl-service
derived derl erlext epmd net-fsm erl wrangler erlang flymake compile
comint ring w3-auto edmacro kmacro remember org-remember org-datetree
org byte-opt bytecomp byte-compile org-footnote org-src org-list
org-faces org-compat org-macs easymenu time-date noutline outline
easy-mmode org-redmine cl cl-19 org-install uniquify advice help-fns
advice-preload vc-p4 p4-lowlevel lfe-mode erlang-web-template tempo
erlang-start jabber-autoloads jabber-util tooltip ediff-hook vc-hooks
lisp-float-type mwheel x-win x-dnd font-setting tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev loaddefs button minibuffer faces cus-face files
text-properties overlay md5 base64 format env code-pages mule custom
widget hashtable-print-readable backquote make-network-process dbusbind
system-font-setting font-render-setting gtk x-toolkit x multi-tty emacs)

-- 
Magnus Henoch