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.

dieuwe
fuente
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?

dgtized
fuente
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)
YulongNiu
fuente
¿Esto también funcionaría? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
Andrew Lamarra