** JS mode
+---
*** JSX syntax is now automatically detected and enabled.
If a file imports Facebook's 'React' library, or if the file uses the
extension '.jsx', then various features supporting XML-like syntax
will be supported in 'js-mode' and derivative modes. ('js-jsx-mode'
no longer needs to be enabled.)
+---
*** New defcustom 'js-jsx-detect-syntax' disables automatic detection.
+This is turned on by default.
+---
*** New defcustom 'js-jsx-syntax' enables JSX syntax unconditionally.
+This is off by default.
+---
*** New variable 'js-jsx-regexps' controls JSX detection.
+---
*** JSX syntax is now highlighted like SGML.
+---
*** JSX code is properly indented in many more scenarios.
Previously, JSX indentation usually only worked when an element was
wrapped in parenthesis (e.g. in a 'return' statement or a function
of the React developer community, otherwise still adhering to SGML
conventions.
+---
*** Indentation uses 'js-indent-level' instead of 'sgml-basic-offset'.
It was never really intuitive that JSX indentation would be controlled
by an SGML variable. JSX is a syntax extension of JavaScript, so it
you would normally expect for this indentation to be controlled, and
you probably won't need to change your config.
+---
*** New defcustom 'js-jsx-attribute-offset' for JSX attribute indents.
+---
*** New variable 'js-syntactic-mode-name' controls mode name display.
Previously, the mode name was simply 'JavaScript'. Now, when a syntax
extension like JSX is enabled, the mode name is 'JavaScript[JSX]'.
-Setting this variable to nil can disable the new formatting.
+Set this variable to nil to disable the new behavior.
+---
*** New function 'js-use-syntactic-mode-name' for deriving modes.
Packages deriving from 'js-mode' with 'define-derived-mode' should
call this function to add enabled syntax extensions to their mode