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?

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.


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


17

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

(setq-default js2-basic-offset 2)

Quelle.


11

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

(setq-default indent-tabs-mode nil)

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)

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.


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.


2

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

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.