Haga que el modo web siempre sangría con espacios


10

Estoy usando el modo web emacs , y la tabulación en los archivos JS parece estar actuando de manera extraña.

Tengo una pestaña configurada para sangrar 2 espacios, pero cuando la sangría alcanza 8 espacios, el modo web los convierte en una pestaña, y luego continúa tabulando 2 espacios hasta que alcanza otros 8, y los convierte en otra pestaña, etc.

¿Puedo evitar que esto suceda y decirle a emacs / web-mode que solo sangre espacios?

EDITAR:

Aquí hay un breve ejemplo de función anidada:

(function() {
  function() {
    function() {
      function() {
    function() {
      // Indenting problem.
    }
      }
    }
  }
})()

Obviamente se muestra bien en Emacs, pero puede ver el problema de sangría aquí.

Notaré aquí que esto también ocurre en modo javascript.


1
¿Es esto específico del modo web? ¿O sucede en alguna parte?
— Malabarba

Esto solo sucede en modo web, todo lo demás está bien con espacios indefinidamente.
— dieuwe

Lo sentimos, el modo javascript también hace lo mismo. Pero son solo esos dos.
— dieuwe

¿Cuál javascript-modeestás usando, el incorporado? Además, ¿esto sucede al sangrar html web-mode?
— Dgtized

Por favor, publique el contenido de su archivo init. Emacs usa una pestaña para 8 espacios por defecto, por lo que debe haber algo en su archivo init para desactivarlo en la mayoría de los modos.
— Gilles 'SO- deja de ser malvado'

Respuestas:


10

En general, si desea que la sangría use solo espacios, recomendaría personalizar:

(setq-default indent-tabs-mode nil)

Esto obliga a la sangría a usar espacios y no pestañas. Sin web-modeembargo, no estoy seguro de si usa los métodos regulares para la sangría, por lo que es posible que no respete esto.

¿Puedes dar un archivo de ejemplo para demostrar?


3
Han agregado un ejemplo a la pregunta. Agregar (setq indent-tabs-mode nil)no parece cambiar nada en ambos web-modey javascript-mode.
— dieuwe

3
Creo que deberías usar setq-defaultporque indent-tabs-modees buffer-local.
— nperson325681

@progo Ok, eso funcionó. Muchas gracias.
— dieuwe

1
¿Es posible sangrar solo con pestañas? He probado diferentes configuraciones, pero solo sangra con pestañas / espacios mixtos.
— Dfr

1
@Dfr Debe agregar (setq-default indent-tabs-mode t)su.emacs
— fxbois

3

Intente este código en su archivo de configuración de emacs para forzar la sangría en modo web. Lo referí desde la página de inicio del modo web.

(require 'web-mode)
(defun my-web-mode-hook ()
  "Hooks for Web mode."
  (setq web-mode-markup-indent-offset 2)
)
(add-hook 'web-mode-hook  'my-web-mode-hook)

¿Esto también funcionaría? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
— Andrew Lamarra
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.