Subject: 24.3; m4-mode uses word syntax for "_"

From: Tom Tromey <[email-masked]>
Date: Tue, 09 Apr 2013 10:07:33 -0600

I noticed today that m4-mode uses word syntax for "_".
This makes forward-word et al act in a surprising way.
This patch seems to fix the problem for me, but I'm not sure if it has
other consequences.

=== modified file 'lisp/progmodes/m4-mode.el'
--- lisp/progmodes/m4-mode.el	2013-01-02 16:13:04 +0000
+++ lisp/progmodes/m4-mode.el	2013-04-09 16:06:09 +0000
@@ -95,7 +95,7 @@
 (modify-syntax-entry ?{  "_" m4-mode-syntax-table)
 (modify-syntax-entry ?}  "_" m4-mode-syntax-table)
 (modify-syntax-entry ?*  "w" m4-mode-syntax-table)
-(modify-syntax-entry ?_  "w" m4-mode-syntax-table)
+(modify-syntax-entry ?_  "_" m4-mode-syntax-table)
 (modify-syntax-entry ?\"  "w" m4-mode-syntax-table)
 (modify-syntax-entry ?\"  "w" m4-mode-syntax-table)

In GNU Emacs 24.3.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.6.4)
 of 2013-04-05 on barimba
Bzr revision: 111341 [email-masked]
Windowing system distributor `Fedora Project', version 11.0.11303000
Configured using:
 `configure '--prefix=/home/tromey/Space/EmacsBzr/emacs-mt/install''

Important settings:
  value of $LANG: en_US.utf8
  value of $XMODIFIERS: @im=none
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: m4

Minor modes in effect:
  global-auto-revert-mode: t
  shell-dirtrack-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-spelling-mode: t
  erc-truncate-mode: t
  diff-auto-refine-mode: t
  erc-status-mode: t
  erc-services-mode: t
  erc-networks-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  tooltip-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
  line-number-mode: t
  transient-mark-mode: t

Recent input:
w e r e SPC C-l n o t SPC c o m p a t i b l e SPC w 
i t h SPC C + + 1 1 . <return> d n l <return> A C _ 
D M-/ ( [ g l <backspace> l i b c x x _ c h M-/ <M-backspace> 
<M-backspace> C-/ C-/ M-b M-b M-f C-u C-u C-f C-k s 
d M-/ C-h C-g ] C-x C-s C-z n C-x C-f C-g C-z n C-h 
m C-h f C-g <help-echo> <help-echo> <down-mouse-1> 
<mouse-2> <help-echo> C-x C-f C-g C-x 1 C-l C-SPC C-v 
C-u C-SPC M-v M-v C-v C-l C-u C-n C-s ? _ C-a C-f C-h 
f <return> C-z n C-x C-f C-a M-f M-f M-b M-r e m a 
c s <return> C-e <M-backspace> <M-backspace> <M-backspace> 
t r <tab> <M-backspace> e m <tab> C-g C-z n C-a C-SPC 
C-e M-w C-z n C-x b * s c r <tab> <return> M-> C-y 
M-b M-b M-b M-b M-b M-d _ C-e C-z o C-z o C-j C-z o 
C-x b <return> M-b M-b M-b C-z o C-z o C-x 1 C-l M-x 
r e p o r t C-g C-z n C-x C-f M-p M-r e m a c s <return> 
C-e <M-backspace> t r <tab> <M-backspace> <M-backspace> 
<M-backspace> t r <tab> e <backspace> <backspace> <tab> 
/ l i s <tab> p r o g <tab> m 4 <tab> <return> C-s 
? _ C-u C-p C-u C-p C-e M-b C-h f <return> C-h v s 
t a n d a r d - s y n <tab> C-g <help-echo> <down-mouse-1> 
<mouse-2> C-x 1 C-h C-g C-u C-n C-u C-n M-b M-b M-b 
M-b M-d _ C-x C-s C-z n M-x r e p o r t - e m <tab> 
<return>

Recent messages:
Type C-x 1 to delete the help window, C-M-v to scroll help.
Quit
Mark set [3 times]
Quit
Mark saved where search started
Type C-x 1 to delete the help window.
Quit

Saving file /home/tromey/Space/EmacsBzr/emacs-mt/trunk/lisp/progmodes/m4-mode.el...
Wrote /home/tromey/Space/EmacsBzr/emacs-mt/trunk/lisp/progmodes/m4-mode.el

Load-path shadows:
/home/tromey/lib/lisp/rpm-spec-mode hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/site-lisp/rpm-spec-mode
/home/tromey/.emacs.d/elpa/css-mode-1.0/css-mode hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/textmodes/css-mode
/home/tromey/.emacs.d/elpa/ruby-mode-1.0/ruby-mode hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/progmodes/ruby-mode
/home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/play/bubbles
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-mode hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-mode
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-valid hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-valid
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-xsd hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-xsd
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-enc hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-enc
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-glyph hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-glyph
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-pttrn hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-pttrn
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-uchnm hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-uchnm
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-nxml hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-nxml
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/xmltok hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/xmltok
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-parse hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-parse
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-dt hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-dt
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-maint hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-maint
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-rap hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-rap
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-cmpct hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-cmpct
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-match hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-match
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-parse hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-parse
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-outln hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-outln
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-util hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-util
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-uri hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-uri
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-maint hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-maint
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-ns hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-ns
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/xsd-regexp hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/xsd-regexp
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-util hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/nxml-util
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-loc hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/nxml/rng-loc
/home/tromey/.emacs.d/elpa/erc-5.3/erc-replace hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-replace
/home/tromey/.emacs.d/elpa/erc-5.3/erc-imenu hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-imenu
/home/tromey/.emacs.d/elpa/erc-5.3/erc-networks hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-networks
/home/tromey/.emacs.d/elpa/erc-5.3/erc-identd hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-identd
/home/tromey/.emacs.d/elpa/erc-5.3/erc-lang hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-lang
/home/tromey/.emacs.d/elpa/erc-5.3/erc-ezbounce hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-ezbounce
/home/tromey/.emacs.d/elpa/erc-5.3/erc-speedbar hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-speedbar
/home/tromey/.emacs.d/elpa/erc-5.3/erc-services hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-services
/home/tromey/.emacs.d/elpa/erc-5.3/erc-stamp hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-stamp
/home/tromey/.emacs.d/elpa/erc-5.3/erc-sound hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-sound
/home/tromey/.emacs.d/elpa/erc-5.3/erc-ibuffer hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-ibuffer
/home/tromey/.emacs.d/elpa/erc-5.3/erc-netsplit hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-netsplit
/home/tromey/.emacs.d/elpa/erc-5.3/erc-pcomplete hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-pcomplete
/home/tromey/.emacs.d/elpa/erc-5.3/erc-dcc hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-dcc
/home/tromey/.emacs.d/elpa/erc-5.3/erc-ring hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-ring
/home/tromey/.emacs.d/elpa/erc-5.3/erc-autoaway hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-autoaway
/home/tromey/.emacs.d/elpa/erc-5.3/erc-button hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-button
/home/tromey/.emacs.d/elpa/erc-5.3/erc-list hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-list
/home/tromey/.emacs.d/elpa/erc-5.3/erc-page hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-page
/home/tromey/.emacs.d/elpa/erc-5.3/erc-compat hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-compat
/home/tromey/.emacs.d/elpa/erc-5.3/erc-menu hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-menu
/home/tromey/.emacs.d/elpa/erc-5.3/erc-notify hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-notify
/home/tromey/.emacs.d/elpa/erc-5.3/erc-goodies hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-goodies
/home/tromey/.emacs.d/elpa/erc-5.3/erc-capab hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-capab
/home/tromey/.emacs.d/elpa/erc-5.3/erc-backend hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-backend
/home/tromey/.emacs.d/elpa/erc-5.3/erc-fill hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-fill
/home/tromey/.emacs.d/elpa/erc-5.3/erc-join hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-join
/home/tromey/.emacs.d/elpa/erc-5.3/erc hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc
/home/tromey/.emacs.d/elpa/erc-5.3/erc-match hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-match
/home/tromey/.emacs.d/elpa/erc-5.3/erc-log hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-log
/home/tromey/.emacs.d/elpa/erc-5.3/erc-xdcc hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-xdcc
/home/tromey/.emacs.d/elpa/erc-5.3/erc-track hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-track
/home/tromey/.emacs.d/elpa/erc-5.3/erc-truncate hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-truncate
/home/tromey/.emacs.d/elpa/erc-5.3/erc-spelling hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/erc/erc-spelling
/home/tromey/.emacs.d/elpa/emms-3.0/tq hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/emacs-lisp/tq
/home/tromey/.emacs.d/elpa/erc-5.3/erc-hecomplete hides /home/tromey/Space/EmacsBzr/emacs-mt/install/share/emacs/24.3/lisp/obsolete/erc-hecomplete

Features:
(shadow emacsbug m4-mode find-dired grep find-file find-func iswitchb
smerge-mode cal-move jimb-patch dired-aux autoconf autoconf-mode
gdb-shell idutils sh-script smie executable rebase-mode help-mode
autorevert cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds
pcmpl-unix pcmpl-gnu shell compile vc-git vc-bzr vc-sccs vc-svn vc-rcs
vc-dir ewoc vc vc-dispatcher mailalias bbdb-sc supercite regi mail-hist
dabbrev jka-compr gnus-fun thai-util thai-word vc-cvs goto-addr add-log
bug-reference bbdb-hooks copyright misearch multi-isearch sgml-mode
erc-menu erc-join erc-ring erc-pcomplete pcomplete erc-track erc-match
erc-button erc-fill erc-stamp erc-netsplit erc-spelling erc-truncate
shr-color color shr flow-fill diff-mode mm-archive qp gnus-html
browse-url xml url-cache mm-url bbdb-gui mule-util smiley gnus-cite
gnus-async gnus-bcklg gnus-ml disp-table nndraft nnmh gnutls parse-time
netrc network-stream starttls tls nnml nnfolder bbdb-gnus bbdb-snarf
mail-extr bbdb-com nnnil gnus-agent gnus-srvr gnus-score score-mode
nnvirtual gnus-msg gnus-art mm-uu mml2015 epg-config mm-view mml-smime
smime dig nntp gnus-cache gnus-sum nnoo gnus-group gnus-undo nnmail
mail-source smtpmail sendmail gnus-start gnus-spec gnus-int gnus-range
message rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse
rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader
gnus-win gnus gnus-ems nnheader mail-utils wid-edit cus-start cus-load
flyspell ispell eldoc emms-status emms-lastfm rx emms-browser sort
emms-playlist-sort emms-score emms-player-xine emms-player-mpd emms-url
url url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util url-parse url-vars mailcap tq emms-playing-time
emms-lyrics derived emms-streams emms-mode-line emms-cache
emms-info-ogginfo emms-info-mp3info emms-info later-do
emms-playlist-mode edmacro kmacro emms-player-mplayer emms-player-simple
emms-source-playlist emms-source-file locate dired emms-setup emms
emms-compat dwarf-mode-autoloads gdb-shell-autoloads finder-inf
magit-autoloads nxml-enc pydoc-info-autoloads info-look info
weblogger-autoloads xml-rpc-autoloads package cal-china lunar solar
cal-dst cal-bahai cal-islam cal-hebrew holidays hol-loaddefs appt
diary-lib diary-loaddefs cal-menu easymenu calendar cal-loaddefs
uniquify warnings mouse-sel easy-mmode cl-macs gv status cl erc-services
erc-networks erc-goodies erc erc-backend erc-compat format-spec
auth-source eieio byte-opt bytecomp byte-compile cconv gnus-util mm-util
mail-prsvr password-cache thingatpt pp cc-styles cc-align cc-engine
cc-vars cc-defs advice help-fns cl-lib advice-preload bbdb timezone
ange-ftp comint ansi-color ring server bbdb-autoloads time-date tooltip
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
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 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
dynamic-setting system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty emacs)

Tom