* etc/NEWS: Document new and improved JSX support in js-mode

parent cf416d96
Pipeline #1215 failed with stage
in 60 minutes and 1 second
...@@ -1259,6 +1259,51 @@ near the current column in Tabulated Lists (see variables ...@@ -1259,6 +1259,51 @@ near the current column in Tabulated Lists (see variables
This defcustom allows for the customization of the modifier key used This defcustom allows for the customization of the modifier key used
in a terminal frame. in a terminal frame.
** 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.
*** New defcustom 'js-jsx-syntax' enables JSX syntax unconditionally.
*** 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
call). It would also fail in many intricate cases. Now, indentation
should work anywhere without parenthesis; many more intricacies are
supported; and, indentation conventions align more closely with those
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
should be indented just like any other expression in JavaScript. This
is technically a breaking change, but it will probably align with how
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.
*** 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
name, too.
* New Modes and Packages in Emacs 27.1 * New Modes and Packages in Emacs 27.1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment