GNU ELPA - js2-mode

Description: Improved JavaScript editing mode

Latest: js2-mode-20141118.tar, 2014-Nov-19, 500kB

Home page:

Browse ELPA's repository: CGit or Gitweb

Full description

This JavaScript editing mode supports:

 - strict recognition of the Ecma-262 language standard
 - support for most Rhino and SpiderMonkey extensions from 1.5 and up
 - parsing support for ECMAScript for XML (E4X, ECMA-357)
 - accurate syntax highlighting using a recursive-descent parser
 - on-the-fly reporting of syntax errors and strict-mode warnings
 - undeclared-variable warnings using a configurable externs framework
 - "bouncing" line indentation to choose among alternate indentation points
 - smart line-wrapping within comments and strings
 - code folding:
   - show some or all function bodies as {...}
   - show some or all block comments as /*...*/
 - context-sensitive menu bar and popup menus
 - code browsing using the `imenu' package
 - many customization options


To install it as your major mode for JavaScript editing:

  (add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))

Alternatively, to install it as a minor mode just for JavaScript linting,
you must add it to the appropriate major-mode hook.  Normally this would be:

  (add-hook 'js-mode-hook 'js2-minor-mode)

You may also want to hook it in for shell scripts running via node.js:

  (add-to-list 'interpreter-mode-alist '("node" . js2-mode))

To customize how it works:
  M-x customize-group RET js2-mode RET


This mode includes a port of Mozilla Rhino's scanner, parser and
symbol table.  Ideally it should stay in sync with Rhino, keeping
`js2-mode' current as the EcmaScript language standard evolves.

Unlike cc-engine based language modes, js2-mode's line-indentation is not
customizable.  It is a surprising amount of work to support customizable
indentation.  The current compromise is that the tab key lets you cycle among
various likely indentation points, similar to the behavior of python-mode.

This mode does not yet work with "multi-mode" modes such as `mmm-mode'
and `mumamo', although it could be made to do so with some effort.
This means that `js2-mode' is currently only useful for editing JavaScript
files, and not for editing JavaScript within <script> tags or templates.

The project page on GitHub is used for development and issue tracking.
The original homepage at Google Code has outdated information and is mostly

Old versions

js2-mode-20141115.tar2014-Nov-16 500kB
js2-mode-20140114.tar2014-Jan-16 460kB
js2-mode-20131106.tar2013-Nov-08 470kB
js2-mode-20130619.tar2013-Aug-15 460kB
js2-mode-20130619.el2013-Jun-19 428kB
js2-mode-20130608.el2013-Jun-09 428kB
js2-mode-20130510.el2013-May-11 427kB
js2-mode-20130307.el2013-Mar-08 425kB
js2-mode-20130228.el2013-Feb-28 425kB
js2-mode-20130219.el2013-Feb-19 430kB
js2-mode-20130217.el2013-Feb-17 429kB
js2-mode-20090814.el2012-Nov-29 421kB
js2-mode-1.1.el2012-Dec-25 429kB