Subject: bug#18593: 24.4.50; grep-files-aliases should use major mode instead

From: Tom Tromey <[email-masked]>
Date: Wed, 01 Oct 2014 08:52:30 +0100

I was visiting a ".h" file that had a major mode cookie to set the major
mode to C++.  Then I tried vc-git-grep.  It offered to default to
searching "*.[ch]" files.

This seems a bit sub-optimal to me, as Emacs already knows that the file
is C++, not C.  Defaulting to the "C++"-ish set of files would be more
useful.

Maybe grep-files-aliases could be based on major mode and not file
extension; or maybe at least the major mode could be tried first.

In GNU Emacs 24.4.50.10 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.9)
 of 2014-09-26 on bapiya
Repository revision: 117953 [email-masked]
Windowing system distributor `Fedora Project', version 11.0.11404000
System Description:	Fedora release 20 (Heisenbug)

Configured using:
 `configure --prefix=/home/tromey/Emacs/install'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Compilation

Minor modes in effect:
  shell-dirtrack-mode: t
  diff-auto-refine-mode: t
  which-function-mode: t
  projectile-global-mode: t
  projectile-mode: t
  global-auto-revert-mode: t
  desktop-save-mode: t
  erc-services-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  savehist-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t

Recent input:
C-x b E v e <tab> T <tab> <tab> h <tab> <return> C-s 
p e r f C-r C-a M-v C-z C-g C-l C-x b n s P e r <tab> 
<tab> h <tab> <return> C-M-p C-M-p C-v C-v C-s N o 
w C-M-p C-M-n C-M-p C-n M-f M-f M-b M-x v c - g i t 
- g r e p <return> <return> <return> C-g M-x v c - 
g i t - g r e p <return> <return> * <return> <M-backspace> 
<M-backspace> <return> C-x o C-x 1 C-z n C-h f v c 
- g i t - g r <tab> <return> C-x o C-e C-u C-b <return> 
C-x 1 C-s g r e p - f C-w C-w C-s C-s C-a C-u C-u C-n 
C-n C-n C-p C-u C-u C-f C-h f <return> C-x o C-n C-f 
<return> C-x 1 C-s C-s C-s C-s C-s C-s C-s M-< C-s 
C-s C-a C-u C-n C-u C-n C-l C-z n C-x b E M <tab> <return> 
C-o C-o g r e p - f i l e s - a l i a s e s SPC u s 
e SPC t h e SPC e x t e n s i o n <return> b u t SPC 
i t SPC s h o u l d SPC u s e SPC t h e SPC m a j o 
r SPC m o d e SPC i n s t e a d C-x C-s C-c b C-s d 
o c C-a C-c C-c C-x o C-x 1 C-s C-g C-u C-u C-n C-u 
C-u C-n C-n C-n C-c C-c C-x 1 C-c c <return> y C-x 
o C-x 1 M-> C-z n C-z n M-x r e p o r t - e m <tab> 
<return>

Recent messages:
Mark saved where search started
Mark set
Mark saved where search started
Auto-saving...done
Saving file /home/tromey/EMACS...
Wrote /home/tromey/EMACS
Mark saved where search started
Quit
Saving file /home/tromey/firefox-git/gecko-dev/docshell/base/nsDocShell.cpp...
Wrote /home/tromey/firefox-git/gecko-dev/docshell/base/nsDocShell.cpp

Load-path shadows:
/home/tromey/.emacs.d/elpa/css-mode-1.0/css-mode hides /home/tromey/Emacs/install/share/emacs/24.4.50/lisp/textmodes/css-mode
/home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/24.4.50/lisp/play/bubbles

Features:
(macros bbdb-sc supercite regi nnir iso-transl webjump nnregistry
url-http url-gw url-auth url-queue find-file ido gdb-shell shell ffap
xterm whitespace log-view gnus-fun flow-fill shr-color color gnus-html
xml url-cache mm-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util url-parse url-vars shr
browse-url mailalias shadow mail-hist emacsbug bbdb-gui bbdb-hooks
mule-util sort smiley gnus-cite mm-archive gnus-async gnus-bcklg qp
gnus-ml disp-table gnus-topic nndraft nnmh nnfolder utf-7 bbdb-gnus
bbdb-snarf mail-extr bbdb-com warnings cl gnutls network-stream starttls
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp
gnus-cache gnus-registry registry eieio-base gnus-art mm-uu mml2015
epg-config mm-view mml-smime smime dig mailcap gnus-sum gnus-group
gnus-undo smtpmail sendmail gnus-start gnus-cloud nnimap nnmail
mail-source tls utf7 netrc nnoo parse-time gnus-spec gnus-int gnus-range
gnus-win gnus gnus-ems nnheader eieio-opt speedbar sb-image ezimage
dframe log-edit message rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev mail-utils
gmm-utils mailheader pcvs-util copyright dabbrev misearch multi-isearch
help-mode debug cl-macs gv org-element org-rmail org-mhe org-irc
org-info org-gnus org-docview doc-view image-mode org-bibtex bibtex
org-bbdb org-w3m org org-macro org-footnote org-pcomplete org-list
org-faces org-entities noutline outline org-version ob-emacs-lisp ob
ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint
ob-core ob-eval org-compat org-macs org-loaddefs goto-addr add-log gud
conf-mode sgml-mode python dired-aux dired jka-compr smerge-mode
diff-mode easy-mmode vc-arch vc-mtn vc-hg bug-reference js json cc-mode
cc-fonts cc-guess cc-menus cc-cmds vc-bzr vc-sccs vc-svn vc-cvs vc-rcs
vc-git flyspell ispell eldoc diminish appt diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs which-func imenu projectile edmacro
kmacro pkg-info find-func lisp-mnt epl grep compile dash s minimap
autorevert filenotify desktop frameset cus-start cus-load status
erc-services erc-list erc-menu erc-join erc-ring erc-networks
erc-pcomplete pcomplete erc-track erc-match erc-button wid-edit
cl-loaddefs cl-lib erc-fill erc-stamp erc-netsplit erc-goodies erc
erc-backend erc-compat format-spec auth-source eieio byte-opt bytecomp
byte-compile cconv eieio-core gnus-util mm-util mail-prsvr
password-cache thingatpt pp advice help-fns vc-dir ewoc vc vc-dispatcher
cc-styles cc-align cc-engine cc-vars cc-defs bbdb timezone ange-ftp
comint ansi-color ring server savehist dwarf-mode-autoloads
jabber-autoloads lisppaste-autoloads pydoc-info-autoloads info-look info
easymenu weblogger-autoloads package bbdb-autoloads time-date tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar 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 minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 1573687 264282)
 (symbols 48 124378 0)
 (miscs 40 42004 7100)
 (strings 32 500107 77702)
 (string-bytes 1 15604811)
 (vectors 16 103278)
 (vector-slots 8 2432023 210343)
 (floats 8 677 930)
 (intervals 56 136269 12462)
 (buffers 976 347)
 (heap 1024 275932 57017))

Tom