About [![Build Status](https://travis-ci.org/mooz/js2-mode.svg?branch=master)](https://travis-ci.org/mooz/js2-mode) [![MELPA](https://melpa.org/packages/js2-mode-badge.svg)](https://melpa.org/#/js2-mode) ====== Improved JavaScript editing mode for GNU Emacs ([description here](http://elpa.gnu.org/packages/js2-mode.html)). For some of the latest changes, see [latest user-visible changes](https://github.com/mooz/js2-mode/blob/master/NEWS.md). Installation ====== The stable versions are hosted at [GNU ELPA](http://elpa.gnu.org/) (M-x list-packages). You can also install the latest development version from [MELPA](https://melpa.org/#/getting-started). Requirements ====== Emacs 24.1+ and `cl-lib` (either built-in or installed from GNU ELPA). React and JSX ====== The currently recommended solution is to install Emacs 27 (you can [build from source](http://git.savannah.gnu.org/cgit/emacs.git/tree/INSTALL.REPO) or e.g. install a snapshot from a [PPA](https://launchpad.net/~ubuntu-elisp/+archive/ubuntu/ppa)) and use `js-mode` as the major mode. To make use of the JS2 AST and the packages that integrate with it, we recommend `js2-minor-mode`. See the corresponding [instructions in the Commentary](https://github.com/mooz/js2-mode/blob/bb73461c2c7048d811b38e6b533a30fb5fdcea93/js2-mode.el#L57). `js-mode` in Emacs 27 includes full support for syntax highlighting and indenting of JSX syntax. [rjsx-mode](https://github.com/felipeochoa/rjsx-mode/) is an alternative option which comes with certain tradeoffs. Bugs ==== * See broken syntax highlighting and timer errors? Recently upgraded Emacs from version 24.2 or earlier? Try [reinstalling or byte-recompiling](https://github.com/mooz/js2-mode/issues/72) the package. * Any indentation problems should be reported with `M-x report-emacs-bug` (please try reproducing them with `js-mode` first, for clarity). Starting with Emacs 25, `js2-mode` delegates indentation to the indentation engine of `js-mode`. Please report other problems at . Contributing ====== `js2-mode` is subject to the same [copyright assignment](http://www.gnu.org/prep/maintain/html_node/Copyright-Papers.html) policy as Emacs itself, `org-mode`, `CEDET` and other packages in [GNU ELPA](http://elpa.gnu.org/packages/). Any [legally significant](http://www.gnu.org/prep/maintain/html_node/Legally-Significant.html#Legally-Significant) contributions can only be accepted after the author has completed their paperwork. Please ask for the request form, and we'll send it to you. See Also ====== Some third-party modes that use the generated syntax tree: * [js2-refactor](https://github.com/magnars/js2-refactor.el) * [skewer-mode](https://github.com/skeeto/skewer-mode)