Jak zmienić szerokość wcięcia w trybie javascript emacsa

120

Chciałbym użyć 2 spacji dla moich wcięć zamiast 4. Mogę zmienić domyślne zachowanie trybu C za pomocą:

(setq c-basic-offset 2)

Jak mogę to zmienić w trybie javascript?

mksuth
źródło

Odpowiedzi:

198

js-indent-level może być używany w domyślnym trybie javascript, który jest dołączany domyślnie począwszy od emacs 23.2.

(setq js-indent-level 2)

powinien robić to, czego szukasz. Jeśli używasz starszej wersji emacsa, możesz być w trybie java. Myślę, że ten tryb reaguje c-basic-offset, jednak mogę się mylić.

Willi Ballenthin
źródło
2
(setq default-tab-width 2) będzie odpowiadającym ustawieniem szerokości tabulatorów dla trybu java
Fergie
Używając tego mechanizmu, szerokość tabulatora pozostaje na poziomie 8, więc tabulatory są używane tylko wtedy, gdy poziom wcięcia wynosi 4 (2x4 = 8) lub więcej. Jak ustawić szerokość tabulatora na 2 lub 4, aby zamiast spacji były używane tabulatory? Wypróbowałem kilka ustawień, np. (Setq tab-width 4), ale bezskutecznie. Mój cel: użyj tabulatora o szerokości 4 i używaj tylko znaków tabulacji (bez spacji jako substytutu).
jdp,
jdp: Spróbuj (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,
Użyj w ten js-mode-hooksposób:(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
Czy jest to gdzieś udokumentowane? Czy istniał sposób na znalezienie tych informacji bez przepełnienia stosu? Zajrzałem M-x hz js-mode, ale nie mógł znaleźć coś tam.
Charles Holbrow
75

Żałuję, że ktoś nie powiedział mi o Custom o wiele wcześniej! Może to pomoże innemu zwykłemu śmiertelnikowi, jak ja;)

Wywołaj niestandardowe:

M-x customize

Następnie wybierz „Programowanie”, a następnie „Języki”, a następnie wybierz język / tryb do dostosowania. Edytuj opcje według własnego uznania. Po zakończeniu wybierz opcję „Zapisz dla bieżącej sesji” lub „Zapisz dla przyszłych sesji”.

wprl
źródło
17

Jeśli używasz trybu js2 (który jest potężniejszym IMHO), to polecenie brzmi:

(setq-default js2-basic-offset 2)

Źródło.

metakermit
źródło
11

Możesz również chcieć ustawić emacs, aby używał spacji zamiast tabulatorów

(setq-default indent-tabs-mode nil)
Tyler
źródło
To bardziej komentarz niż rzeczywista odpowiedź. Zdobądź więcej reputacji, aby móc komentować.
jcubic
2

W moim pliku javascript.el (/ usr / share / emacs / site-lisp) znalazłem

poziom wcięcia javascript 4

Więc jeśli używasz tego samego trybu lisp, możesz go zmienić, uruchamiając

(setq javascript-indent-level 2)
Helge
źródło
2

Możesz także użyć

M-x customize-variable

i wpisz

js-indent-level

( js-[TAB] pokazuje listę opcji). Następnie zmień Js Indent Levelżądane i kliknij [State:]i zapisz.

kwarnke
źródło
2

Używanie EditorConfig też może być dobrym pomysłem. I oczywiście Emacs miał do tego tryb editorconfig-emacs .

Jest również dostępny w menedżerze pakietów ( M-x package-list-packages) za pośrednictwem Melpa lub Marmalade.

hs0ucy
źródło
2

Jeśli chcesz to zmienić dla każdego pliku, umieść to na początku pliku:

// -*- mode: js; js-indent-level: 2; -*-
Matthew D.
źródło
0

Żadne z tych rozwiązań nie zadziałało po aktualizacji do Emacsa 26 ( js-indent-levelustawiłem już 2, ale szerokość mojej zakładki powróciła do 8), ale zadziałało ustawienie tab-widthzmiennej na 2, która wydaje się zastępować starą default-tab-widthzmienną.

Znalazłem to w M-x customizewyszukiwarce tab width.

Malvineous
źródło