Cómo cambiar el ancho de la sangría en el modo javascript de emacs

120

Me gustaría usar 2 espacios para mis sangrías en lugar de 4. Puedo cambiar el comportamiento predeterminado del modo C usando:

(setq c-basic-offset 2)

¿Cómo cambio esto en modo javascript?

mksuth
fuente

Respuestas:

198

js-indent-level se puede usar en el modo javascript predeterminado, que se incluye por defecto a partir de emacs 23.2.

(setq js-indent-level 2)

debe hacer lo que está buscando. Si está utilizando una versión anterior de emacs, es posible que esté en modo java. Creo que este modo responde c-basic-offset, sin embargo, puedo estar equivocado.

Willi Ballenthin
fuente
2
(setq default-tab-width 2) sería el configurador de ancho de pestaña correspondiente para el modo java
Fergie
Con este mecanismo, el ancho de la pestaña permanece en 8, por lo que las pestañas solo se usan si el nivel de sangría es 4 (2x4 = 8) o más. ¿Cómo se configura el ancho de la pestaña en 2 o 4 para que se usen pestañas en lugar de espacios? Probé un montón de configuraciones, por ejemplo (setq tab-width 4) pero fue en vano. Mi objetivo: usar el ancho de tabulación 4 y solo usar caracteres de tabulación (no espacios como sustituto).
jdp
jdp: Prueba (defun my-javascript-mode-hook () (setq indent-tabs-mode t tab-width 4 js-indent-level 4)) (add-hook 'javascript-mode-hook 'my-javascript-mode-hook).
phils
Use js-mode-hook, así:(defun my-js-mode-hook () (setq indent-tabs-mode t tab-width 4 js-indent-level 4)) (add-hook 'js-mode-hook 'my-js-mode-hook)
skeltoac
6
¿Está esto documentado en alguna parte? ¿Había alguna forma de encontrar esta información sin stackoverflow? Miré M-x hdesde el modo js, ​​pero no pude encontrar nada allí.
Charles Holbrow
75

¡Ojalá alguien me hubiera hablado de Custom mucho antes! Quizás esto ayude a otro simple mortal como yo;)

Invocar personalizado:

M-x customize

Luego, elija "Programación" y luego "Idiomas" y luego seleccione un idioma / modo para personalizar. Edite las opciones como mejor le parezca. Cuando termine, elija "Guardar para la sesión actual" o "Guardar para sesiones futuras".

wprl
fuente
17

Si está usando el modo js2 (que es más poderoso en mi humilde opinión), entonces el comando es:

(setq-default js2-basic-offset 2)

Fuente.

metakermit
fuente
11

Es posible que también desee configurar emacs para usar espacios en lugar de pestañas

(setq-default indent-tabs-mode nil)
Tyler
fuente
Esto es más un comentario que una respuesta real. Gana más reputación para poder comentar.
jcubic
2

En mi archivo javascript.el (/ usr / share / emacs / site-lisp) encontré

javascript-indent-nivel 4

Entonces, si está usando el mismo modo lisp, puede cambiarlo ejecutando

(setq javascript-indent-level 2)
Helge
fuente
2

También puedes usar

M-x customize-variable

y escriba

js-indent-level

( js-[TAB] muestra una lista de opciones). Luego cambie el Js Indent Levelcomo desee y haga clic [State:]y guarde.

kwarnke
fuente
2

Usar EditorConfig también podría ser una buena idea. Y, por supuesto, Emacs tenía un modo para ello editorconfig-emacs .

También está disponible en el administrador de paquetes ( M-x package-list-packages) a través de Melpa o Marmalade.

hs0ucy
fuente
2

Si desea cambiarlo por archivo, coloque esto en la parte superior de su archivo:

// -*- mode: js; js-indent-level: 2; -*-
MatthewD
fuente
0

Ninguna de estas soluciones funcionó para mí después de actualizar a Emacs 26 (ya había js-indent-levelestablecido en 2 pero el ancho de mi pestaña volvió a 8), pero lo que funcionó fue establecer la tab-widthvariable en 2, que parece reemplazar la antiguadefault-tab-width variable anterior.

Encontré esto M-x customizebuscando tab width.

Malvino
fuente