So ändern Sie die Einrückungsbreite im Emacs-Javascript-Modus

120

Ich möchte 2 Leerzeichen für meine Einrückungen anstelle von 4 verwenden. Ich kann das Standardverhalten des C-Modus ändern, indem ich:

(setq c-basic-offset 2)

Wie ändere ich dies im Javascript-Modus?

mksuth
quelle

Antworten:

198

js-indent-level kann im Standard-Javascript-Modus verwendet werden, der standardmäßig ab Emacs 23.2 enthalten ist.

(setq js-indent-level 2)

sollte tun, was Sie suchen. Wenn Sie eine ältere Version von Emacs verwenden, befinden Sie sich möglicherweise im Java-Modus. Ich denke, dieser Modus reagiert darauf c-basic-offset, aber ich kann mich irren.

Willi Ballenthin
quelle
2
(setq default-tab-width 2) wäre der entsprechende Tab-Breiten-Setter für den Java-Modus
Fergie
Bei Verwendung dieses Mechanismus bleibt die Registerkartenbreite bei 8, sodass Registerkarten nur verwendet werden, wenn die Einrückungsstufe 4 (2x4 = 8) oder mehr beträgt. Wie stellen Sie die Tabulatorbreite auf 2 oder 4 ein, damit Tabulatoren anstelle von Leerzeichen verwendet werden? Ich habe eine Reihe von Einstellungen ausprobiert, z. B. (setq tab-width 4), aber ohne Erfolg. Mein Ziel: Verwenden Sie die Tabulatorbreite 4 und nur Tabulatorzeichen (keine Leerzeichen als Ersatz).
JDP
jdp: Versuchen Sie es (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
Verwenden Sie js-mode-hookwie (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)
folgt
6
Ist das irgendwo dokumentiert? Gab es eine Möglichkeit, diese Informationen ohne Stackoverflow zu finden? Ich habe M-x haus dem js-Modus reingeschaut, konnte dort aber nichts finden.
Charles Holbrow
75

Ich wünschte, jemand hätte mir viel früher von Custom erzählt! Vielleicht hilft das einem anderen Sterblichen wie mir;)

Benutzerdefiniert aufrufen:

M-x customize

Wählen Sie dann "Programmieren" und dann "Sprachen" und wählen Sie dann eine Sprache / einen Modus zum Anpassen aus. Bearbeiten Sie die Optionen nach Belieben. Wenn Sie fertig sind, wählen Sie entweder "Für aktuelle Sitzung speichern" oder "Für zukünftige Sitzungen speichern".

wprl
quelle
17

Wenn Sie den js2-Modus verwenden (der meiner Meinung nach leistungsfähiger ist), lautet der Befehl:

(setq-default js2-basic-offset 2)

Quelle.

Metakermit
quelle
11

Möglicherweise möchten Sie auch festlegen, dass Emacs Leerzeichen anstelle von Tabulatoren verwenden

(setq-default indent-tabs-mode nil)
Tyler
quelle
Dies ist eher ein Kommentar als eine tatsächliche Antwort. Verdienen Sie sich mehr Ansehen, um Kommentare abgeben zu können.
Jcubic
2

In meiner Datei javascript.el (/ usr / share / emacs / site-lisp) habe ich gefunden

Javascript-Indent-Level 4

Wenn Sie also denselben Lisp-Modus verwenden, können Sie ihn durch Ausführen ändern

(setq javascript-indent-level 2)
Helge
quelle
2

Sie können auch verwenden

M-x customize-variable

und Typ

js-indent-level

( js-[TAB] zeigt eine Liste von Optionen). Dann ändern Sie das Js Indent Levelwie gewünscht und klicken [State:]und speichern.

kwarnke
quelle
2

Die Verwendung von EditorConfig könnte ebenfalls eine gute Idee sein. Und natürlich hatte Emacs einen Modus dafür editorconfig-emacs .

Es ist auch im Paketmanager ( M-x package-list-packages) über Melpa oder Marmelade erhältlich.

hs0ucy
quelle
2

Wenn Sie es pro Datei ändern möchten, setzen Sie dies oben in Ihre Datei:

// -*- mode: js; js-indent-level: 2; -*-
MatthewD
quelle
0

Keine dieser Lösungen funktionierte für mich nach dem Upgrade auf Emacs 26 (ich hatte bereits js-indent-levelauf 2 gesetzt, aber meine Registerkartenbreite ging auf 8 zurück), aber was funktionierte, war das Setzen der tab-widthVariablen auf 2, was die alte default-tab-widthVariable zu ersetzen scheint .

Ich fand dies M-x customizedurch die Suche nach tab width.

Malvineous
quelle