He usado js2-mode pero no sangra html en javascript correctamente. Encontré este repositorio https://github.com/jsx/jsx-mode.el pero no es para reaccionar, es para algún otro jsx.
¿Qué utiliza para editar la aplicación de reacción con archivos jsx?
Tenga en cuenta que todavía hay algún problema de sangría si utiliza la función de flecha en el atributo del componente. Pero esta solución funciona bien en la mayoría de los casos.
El parche sigue siendo útil para la versión estable actual rjsx-mode v0.4.0.
La razón por la que me rjsx-modequedo es que hereda del modo js2, por lo que puedo usar las funciones imenu del modo js2. Es muy útil al escribir es6 javascript.
Tenga en cuenta que si usa en js2-jsx-modelugar de rjsx-mode, todavía necesita mi parche.
Solución 2:
Utiliza el modo web. No uso el modo web, pero su reciente nota de lanzamiento afirma que la sangría jsx se puede manejar correctamente. Si usa el modo web, imenu del modo js2 ya no está disponible.
No sabía que el modo web admite jsx, lo usaré en ese momento, el autor realmente responde en github, si encuentra errores en la sangría.
jcubic
1
¡El problema de sangría en el modo rjsx parece estar solucionado!
cgl
Se soluciona después de aplicar mi corrección. Uso el modo rjsx en Emacs 25.2 y 25.3
chen bin
El parche es una buena idea, ¡ojalá ya se haya fusionado en modo rjsx!
Rudolf Olah
¿Puede agregar información sobre el parche innecesario con nuevas versiones rjsx-modeo eliminarlo por completo?
DoMiNeLa10
5
Por Emacs masterrama (con el tiempo Emacs 27), el apoyo JSX está ahora integrado en el modo por defecto JavaScript para Emacs, js-mode. (¡Pruébelo! Puede construir desde la fuente o, por ejemplo, instalar una instantánea desde un PPA ).
Si se anticipa el uso de JSX, la compatibilidad con JSX se habilitará automáticamente en los buffers de JavaScript. Los criterios predeterminados son:
el nombre del archivo termina en ".jsx" o
import React from 'react'o var React = require('react')aparece cerca de la parte superior del archivo
Puede personalizar la estrategia de detección agregando expresiones regulares a la variable js-jsx-regexps. Para habilitar JSX incondicionalmente, también se puede configurar js-jsx-syntaxpara t en una variable de archivo / locals.el-.dir / archivo de inicio, o una llamada js-jsx-enableen js-mode-hook.
Una vez habilitado, JSX se resaltará y sangrará correctamente.
Los usuarios que se sintieron decepcionados con el soporte de sangría JSX disponible desde la versión 25 pueden sorprenderse gratamente al descubrir que la sangría es mucho más precisa que antes. Por ejemplo, JSX ya no necesita estar entre paréntesis para sangrarse correctamente. La sangría de código con funciones de flecha también funciona mucho mejor ahora.
De hecho, tenía la impresión de que sería útil de todos modos. Editó la respuesta para eliminar cosas no relacionadas con JSX.
amirouche
0
También uso el modo web y si lo use-packageusas puedes usar este fragmento de código.
(use-package web-mode
:defer 2
:after (add-node-modules-path)
:ensure t
:mode ("\\.html?\\'"
"/themes/.*\\.php?\\'"
"/\\(components\\|containers\\|src\\)/.*\\.js[x]?\\'"
"\\.\\(handlebars\\|hbs\\)\\'")
:config (progn
(setq
web-mode-markup-indent-offset 2
web-mode-css-indent-offset 2
web-mode-code-indent-offset 2
web-mode-enable-auto-closing t
web-mode-enable-auto-opening t
web-mode-enable-auto-pairing t
web-mode-enable-auto-indentation t
web-mode-enable-auto-quoting t
web-mode-enable-current-column-highlight t
web-mode-enable-current-element-highlight t
web-mode-content-types-alist
'(("jsx" . "/\\(components\\|containers\\|src\\)/.*\\.js[x]?\\'")))))
Esto también agrega módulos de nodo local a su ruta para que pueda usar eslintcon flycheck. Tenga en cuenta que esto supone que está en macOS, que debe add-node-modules-pathsolucionar el mismo problema. También necesitará configurar Flycheck por separado para que linting funcione.
Si solo quieres cosas relacionadas con jsx, puedes usar esto:
Esto habilitará el modo web solo en carpetas con nombres components, containerso src. Si desea habilitar el modo web en cualquier archivo .js, elimine esas líneas. Si no desea que Web en modo activado en srccarpetas a continuación, quitar esa línea en la cadena tanto en :modey :config.
rjsx-mode
o eliminarlo por completo?Por Emacs
master
rama (con el tiempo Emacs 27), el apoyo JSX está ahora integrado en el modo por defecto JavaScript para Emacs,js-mode
. (¡Pruébelo! Puede construir desde la fuente o, por ejemplo, instalar una instantánea desde un PPA ).Si se anticipa el uso de JSX, la compatibilidad con JSX se habilitará automáticamente en los buffers de JavaScript. Los criterios predeterminados son:
import React from 'react'
ovar React = require('react')
aparece cerca de la parte superior del archivoPuede personalizar la estrategia de detección agregando expresiones regulares a la variable
js-jsx-regexps
. Para habilitar JSX incondicionalmente, también se puede configurarjs-jsx-syntax
para t en una variable de archivo / locals.el-.dir / archivo de inicio, o una llamadajs-jsx-enable
enjs-mode-hook
.Una vez habilitado, JSX se resaltará y sangrará correctamente.
Los usuarios que se sintieron decepcionados con el soporte de sangría JSX disponible desde la versión 25 pueden sorprenderse gratamente al descubrir que la sangría es mucho más precisa que antes. Por ejemplo, JSX ya no necesita estar entre paréntesis para sangrarse correctamente. La sangría de código con funciones de flecha también funciona mucho mejor ahora.
fuente
Yo uso el modo web con la siguiente configuración:
fuente
También uso el modo web y si lo
use-package
usas puedes usar este fragmento de código.Esto también agrega módulos de nodo local a su ruta para que pueda usar
eslint
conflycheck
. Tenga en cuenta que esto supone que está en macOS, que debeadd-node-modules-path
solucionar el mismo problema. También necesitará configurar Flycheck por separado para que linting funcione.Si solo quieres cosas relacionadas con jsx, puedes usar esto:
Esto habilitará el modo web solo en carpetas con nombres
components
,containers
osrc
. Si desea habilitar el modo web en cualquier archivo .js, elimine esas líneas. Si no desea que Web en modo activado ensrc
carpetas a continuación, quitar esa línea en la cadena tanto en:mode
y:config
.fuente