Ustaw tryb sieciowy zawsze jako wcięcie ze spacjami

10

Korzystam z trybu internetowego emacsa , a tabulacja w plikach JS wydaje się dziwnie działać.

Mam tabulację ustawioną na wcięcie 2 spacje, ale kiedy wcięcie osiąga 8 spacji, tryb sieciowy zamienia je w tabulację, a następnie kontynuuje tabulację 2 spacji aż do osiągnięcia kolejnych 8 spacji i konwertuje to na inną tabulator itp.

Czy mogę temu zapobiec i powiedzieć trybowi emacs / web tylko wcięcia w przestrzeni?

EDYTOWAĆ:

Oto krótki przykład funkcji zagnieżdżonej:

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

Oczywiście w Emacsie dobrze się prezentuje, ale tutaj możesz zobaczyć problem z wcięciem.

Zwrócę tutaj uwagę, że dzieje się to również w trybie javascript.

dieuwe
źródło
1
Czy jest to specyficzne dla trybu internetowego? Czy zdarza się to gdziekolwiek?
Malabarba,
Dzieje się tak tylko w trybie internetowym, wszystko inne jest w porządku z odstępami w nieskończoność.
dieuwe,
Przepraszamy, tryb javascript również działa w ten sam sposób. Ale to tylko te dwa.
dieuwe,
Którego javascript-modeużywasz, wbudowanego? Czy tak się dzieje, gdy wcina się HTML web-mode?
zdiagnozowano
Proszę opublikować zawartość pliku init. Emacs domyślnie używa tabulatora dla 8 spacji, więc musi być coś w twoim pliku init, aby wyłączyć go w większości trybów.
Gilles „SO- przestań być zły”,

Odpowiedzi:

10

Ogólnie rzecz biorąc, jeśli chcesz, aby wcięcia używały tylko spacji, polecam dostosowanie:

(setq-default indent-tabs-mode nil)

Wymusza to wcięcie do używania spacji i bez tabulatorów. Nie jestem jednak pewien, czy web-modeużywa zwykłych metod wcięcia, więc może nie przestrzegać tego.

Czy możesz podać przykładowy plik do zademonstrowania?

zdeterminowany
źródło
3
Dodałem przykład do pytania. Dodawanie (setq indent-tabs-mode nil)wydaje się nie zmieniać niczego w obu web-modei javascript-mode.
dieuwe,
3
Myślę, że powinieneś użyć, setq-defaultponieważ indent-tabs-modejest to bufor lokalny.
nperson325681,
@progo Dobra, działało. Dziękuję bardzo.
dieuwe
1
Czy możliwe jest wcięcie tylko za pomocą kart? Próbowałem różnych ustawień, ale wcina się tylko w przypadku mieszanych tabulatorów / spacji.
DFR
1
@Dfr Powinieneś dodać (setq-default indent-tabs-mode t)w swoim.emacs
fxbois
3

Wypróbuj ten kod w pliku konfiguracyjnym emacs, aby wymusić wcięcie w trybie internetowym. I przekazał go z web-mode domowej stronie.

(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
źródło
Czy to też zadziała? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
Andrew Lamarra