To install this package from Emacs, use package-install
or list-packages
.
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 Installation: 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)) Use Emacs 27 and want to write JSX? Then use `js2-minor-mode' as described above. Use Emacs 26 or earlier? Then use `js2-jsx-mode': (add-to-list 'auto-mode-alist '("\\.jsx?\\'" . js2-jsx-mode)) (add-to-list 'interpreter-mode-alist '("node" . js2-jsx-mode)) Note that linting of JSX code may fail in both modes. To customize how it works: M-x customize-group RET js2-mode RET Notes: 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 unmaintained.
js2-mode-20230408.tar.lz | 2023-Apr-08 | 121 KiB |
js2-mode-20220710.tar.lz | 2022-Jul-10 | 121 KiB |
js2-mode-20211229.tar.lz | 2021-Dec-29 | 120 KiB |
js2-mode-20201220.tar.lz | 2020-Dec-20 | 119 KiB |
js2-mode-20190219.tar.lz | 2019-Feb-19 | 130 KiB |
js2-mode-20180301.tar.lz | 2018-Mar-01 | 130 KiB |
js2-mode-20170721.tar.lz | 2017-Jul-21 | 128 KiB |
js2-mode-20170116.tar.lz | 2017-Jan-16 | 117 KiB |
js2-mode-20160623.tar.lz | 2016-Jun-23 | 116 KiB |
js2-mode-20150909.tar.lz | 2015-Sep-10 | 111 KiB |
js2-mode-20150713.tar.lz | 2015-Jul-13 | 110 KiB |
js2-mode-20150202.tar.lz | 2015-Feb-04 | 107 KiB |
js2-mode-20141118.tar.lz | 2014-Nov-19 | 99.8 KiB |
js2-mode-20141115.tar.lz | 2014-Nov-16 | 99.8 KiB |
js2-mode-20140114.tar.lz | 2014-Jan-16 | 88.5 KiB |
js2-mode-20131106.tar.lz | 2013-Nov-08 | 90.9 KiB |
js2-mode-20130619.tar.lz | 2013-Aug-15 | 88.9 KiB |
js2-mode-20130228.el.lz | 2013-Feb-28 | 83.9 KiB |
js2-mode-20090814.el.lz | 2012-Nov-29 | 82.8 KiB |
js2-mode-1.1.el.lz | 2012-Dec-25 | 84.7 KiB |
js2-new-node
(#591)._
separator in numbers (i.e., numeric separator)
(#584).M-x imenu
will now list test blocks defined with
describe()
and it()
(#576).js2-jump-to-definition
(#423).import.meta
(#547).for await of
syntax (#543).js-mode
with js2-minor-mode
(see README), rather than
js2-jsx-mode
.js2-jsx-mode
will now trigger a warning in Emacs 27.?.
js2-strict-trailing-comma-warning
to nil.js2-object-property-access
.@yield
, @yields
, @abstract
, @virtual
and @typedef
./*jslint
declarations.js2-getprop-has-side-effects
.js2-ignored-warnings
.js2-include-*-externs
are now evaluated on demand. As a result,
they can now be effectively used as file- or directory-local
variables.js2-mode-assume-strict
, for use with ES6 modules.js2-object-property
, which has no color by default.js2-getter-setter-node
is renamed to js2-method-node
, together with
its related functions. It already handles generator methods, and we
added support for async methods (see below), so the old name would get
more confusing.js2-jsx-mode
, deriving from js2-mode
. Supports indentation of
JSXElement expressions wrapped within parentheses or as function arguments.
Indentation is customizable via sgml-attribute-offset
.js2-mode
now derives from js-mode
. That means the former
function will run js-mode-hook
, as well as js2-mode-hook
. The
...
...