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?

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ć.


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”.


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.


11

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

(setq-default indent-tabs-mode nil)

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)

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.



2

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

// -*- mode: js; js-indent-level: 2; -*-

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.