Subject: bug#6358: 23.2; foreach should not be a javascript keyword

From: Jack Tanner <[email-masked]>
Date: Sat, 05 Jun 2010 11:24:17 -0400

When editing a .js file in js-mode, "foreach" is highlighted as a
keyword. It's not a valid JavaScript keyword and should not be
highlighted.

foreach (var foo in myObj) { } // Invalid construct

In GNU Emacs 23.2.1 (i386-mingw-nt6.1.7600)
  of 2010-05-08 on G41R2F1
Windowing system distributor `Microsoft Corp.', version 6.1.7600
configured using `configure --with-gcc (3.4) --no-opt --cflags 
-Ic:/xpm/include'

Important settings:
   value of $LC_ALL: nil
   value of $LC_COLLATE: nil
   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: ENU
   value of $XMODIFIERS: nil
   locale-coding-system: cp1252
   default enable-multibyte-characters: t

Major mode: Javascript

Minor modes in effect:
   shell-dirtrack-mode: t
   nxhtml-menu-mode: t
   nxhtml-tag-do-also: t
   popcmp-group-alternatives: t
   popcmp-short-help-beside-alts: t
   mlinks-active-links: t
   css-palette-global-mode: t
   rngalt-minimal-validation-header: t
   rngalt-display-validation-header: t
   show-paren-mode: t
   desktop-save-mode: t
   cua-mode: t
   tooltip-mode: t
   mouse-wheel-mode: t
   menu-bar-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
   column-number-mode: t
   line-number-mode: t
   transient-mark-mode: t

Recent input:
<S-down> <S-down> <S-down> <S-down> <S-down> <S-down>
<S-down> <S-down> <S-down> <S-down> <S-down> <S-down>
<S-down> <S-down> <S-down> <S-down> <S-down> <S-down>
<S-down> <S-down> <S-down> <S-down> <S-down> <S-down>
<S-down> <S-down> C-c <timeout> <C-home> C-s c l a
s s : <left> <C-left> ' <C-right> ' C-s <down> <right>
C-x C-s C-x C-f ~ / <backspace> <backspace> c / <backspace>
<backspace> / c y g d <backspace> <backspace> <backspace>
<backspace> <backspace> C-a <S-end> <backspace> c :
/ s i t e - l i s p / <backspace> <backspace> <backspace>
<backspace> <backspace> <backspace> <backspace> <backspace>
<backspace> <backspace> P r o <tab> \ SPC <tab> <backspace>
<backspace> SPC F <tab> SPC <tab> s <backspace> e m
<tab> l i <tab> <backspace> <backspace> <tab> <tab>
<tab> 2 <tab> <tab> l i <tab> j s <tab> <backspace>
<backspace> <backspace> <backspace> <backspace> <backspace>
<backspace> l a <tab> j <tab> <backspace> <backspace>
<backspace> <backspace> <backspace> <backspace> <backspace>
<backspace> <backspace> <backspace> <backspace> <backspace>
<backspace> <backspace> m o <tab> <backspace> <backspace>
<backspace> <backspace> <backspace> <tab> j a <tab>
<backspace> <backspace> <tab> p <tab> r <tab> o <tab>
g <tab> j <tab> <return> C-s f o r e a C-s <up> <right>
<prior> <C-home> <next> <next> <next> <next> <switch-frame>
M-x j s <tab> C-g C-h a j s - <return> <help-echo>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<down-mouse-1> <mouse-1> C-x k <return> <switch-frame>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1>
<mouse-1> <mouse-1> <mouse-1> <mouse-1> <mouse-1> <next>
<next> <next> <C-home> C-s i d e n t i f i e C-s C-s
C-s <up> <right> <prior> <C-home> <switch-frame> <switch-frame>
<switch-frame> <down-mouse-1> <mouse-movement> <mouse-1>
M-x e m <backspace> <backspace> b u g - <tab> C-g M-x
e m a c s - b <backspace> C-g C-h a r e p o r t <return>
M-x r e p o r t - e m <tab> <return>

Recent messages:
Mark saved where search started
Mark set
Making completion list...
Quit
Type C-x 4 C-o RET to restore the other window.
Mark set
Mark saved where search started
Mark set
Quit [2 times]
Type C-x 4 C-o RET to restore the other window.

Load-path shadows:
c:/site-lisp/table hides c:/Program Files 
2/emacs/emacs-23.2/lisp/textmodes/table
c:/site-lisp/css-mode hides c:/Program Files 
2/emacs/emacs-23.2/lisp/textmodes/css-mode

Features:
(shadow sort mail-extr message ecomplete rfc822 mml mml-sec mailabbrev
nnheader gmm-utils mailheader canlock sha1 hex-util hashcash mail-utils
emacsbug tramp-imap tramp-gw tramp-fish tramp-cache tramp-ftp tramp-cmds
tramp auth-source password-cache format-spec tramp-compat trampver
face-remap php-mode cc-langs add-log debug cogre-mode cogre picture-hack
rect picture cogre-load cogre-loaddefs cogre-srecode semantic/edit
semantic/find srecode/srt-mode semantic/analyze semantic/sort
semantic/scope semantic/analyze/fcn semantic/db semantic/format
srecode/template srecode/srt-wy semantic/wisent semantic/wisent/wisent
semantic/ctxt srecode/ctxt semantic/tag-ls srecode/compile srecode/map
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw cedet srecode/dictionary srecode/table srecode mode-local
eieio-base eieio-opt eieio multi-isearch css-mode nxml-uchnm rng-xsd
xsd-regexp rng-cmpct nxhtml-mumamo mumamo-fun nxhtml vc-git js json
etags newcomment cc-mode cc-fonts cc-menus cc-styles cc-align
ess-toolbar ess-mous mouseme thingatpt browse-url ess-menu speedbar
sb-image ezimage dframe ess-swv ess-noweb noweb-font-lock-mode essl-bugs
essd-omg essl-omg essd-els essd-sas essl-sas essa-sas executable shell
essd-arc essd-vst essd-xls essl-lsp essd-sta essl-sta make-regexp
essd-sp6w essd-sp4 essd-sp3 essd-r essd-r-args assoc essl-s ess-inf
ess-utils ess-mode noweb-mode ess ess-cust ess-emcs ess-site
nxhtml-autostart nxhtml-autoload moz cc-cmds majmodpri nxhtml-menu
udev-rinari udev-ecb udev flymake-js flymake nxhtml-mode html-quote
tidy-xhtml ediff-merg ediff-diff ediff-wind ediff-help ediff-util
ediff-mult ediff-init ediff html-imenu imenu loadhist popcmp xhtml-help
mlinks html-toc xml fupd html-pagetoc foldit appmenu-fold appmenu
help-mode view fold-dwim hideshow html-upl html-site derived ffip
gimpedit dired css-palette css-color mumamo sgml-mode rngalt
ourcomments-util uniquify recentf tree-widget org byte-opt org-footnote
org-src org-list org-faces org-compat org-macs noutline outline ido grep
compile comint ring bookmark pp apropos rng-nxml nxml-mode nxml-outln
nxml-rap nxml-glyph rng-valid rng-loc rng-uri rng-parse nxml-parse
rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-util nxml-enc xmltok
flyspell ispell cc-engine cc-vars cc-defs regexp-opt web-vcs bytecomp
byte-compile rx advice help-fns advice-preload url-http tls url
url-proxy url-privacy url-expand url-methods url-history url-auth
url-cookie timezone url-util url-parse url-gw url-vars mm-decode
gnus-util netrc mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047
rfc2045 qp ietf-drums mm-util time-date mail-prsvr cus-edit easymenu
wid-edit cl cl-19 web-autoload nxhtml-base easy-mmode paren desktop
delsel cua-base cus-start cus-load tooltip ediff-hook vc-hooks
lisp-float-type mwheel dos-w32 disp-table ls-lisp w32-win w32-vars
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 multi-tty emacs)