Come modificare la larghezza del rientro in modalità javascript di emacs


120

Vorrei utilizzare 2 spazi per i miei rientri invece di 4. Posso modificare il comportamento predefinito della modalità C utilizzando:

(setq c-basic-offset 2)

Come lo cambio in modalità javascript?

Risposte:


198

js-indent-level può essere utilizzato nella modalità javascript predefinita, inclusa di default a partire da emacs 23.2.

(setq js-indent-level 2)

dovrebbe fare quello che stai cercando. Se stai usando una versione precedente di emacs, potresti essere in modalità java. Penso che questa modalità risponda c-basic-offset, tuttavia potrei sbagliarmi.


2
(setq default-tab-width 2) sarebbe il corrispondente setter della larghezza della tabulazione per la modalità java
Fergie

Utilizzando questo meccanismo, la larghezza della tabulazione rimane a 8 e quindi le tabulazioni vengono utilizzate solo se il livello di rientro è 4 (2x4 = 8) o più. Come si imposta la larghezza delle tabulazioni su 2 o 4 in modo che vengano utilizzate le tabulazioni anziché gli spazi? Ho provato un sacco di impostazioni, ad esempio (setq tab-width 4) ma senza alcun risultato. Il mio obiettivo: usa la larghezza di tabulazione 4 e usa solo caratteri di tabulazione (non spazi come sostituto).
jdp

jdp: prova (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

Usa js-mode-hook, in questo modo:(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
È documentato da qualche parte? C'era un modo per trovare queste informazioni senza stackoverflow? Ho guardato M-x hdalla modalità js, ma non sono riuscito a trovare nulla.
Charles Holbrow

75

Vorrei che qualcuno mi avesse parlato di Custom molto prima! Forse questo aiuterà un altro semplice mortale come me;)

Richiama personalizzato:

M-x customize

Quindi, scegli "Programmazione", quindi "Lingue", quindi seleziona una lingua / modalità da personalizzare. Modifica le opzioni come meglio credi. Al termine, scegli "Salva per sessione corrente" o "Salva per sessioni future".


17

Se stai usando la modalità js2 (che è più potente IMHO), il comando è:

(setq-default js2-basic-offset 2)

Fonte.


11

Potresti anche voler impostare emacs per usare gli spazi invece delle tabulazioni

(setq-default indent-tabs-mode nil)

Questo è più un commento che una risposta effettiva. Guadagna più reputazione per poter commentare.
jcubic

2

Nel mio file javascript.el (/ usr / share / emacs / site-lisp) ho trovato

javascript-indent-level 4

Quindi se stai usando la stessa modalità lisp puoi cambiarla eseguendo

(setq javascript-indent-level 2)

2

Puoi anche usare

M-x customize-variable

e digita

js-indent-level

( js-[TAB] mostra un elenco di opzioni). Quindi modificare Js Indent Levelcome desiderato e fare clic [State:]e salvare.


2

Anche l'uso di EditorConfig potrebbe essere una buona idea. E, naturalmente, Emacs aveva una modalità per esso editorconfig-emacs .

È anche disponibile nel gestore di pacchetti ( M-x package-list-packages) tramite Melpa o Marmalade.


2

Se vuoi cambiarlo per file, mettilo all'inizio del tuo file:

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

0

Nessuna di queste soluzioni ha funzionato per me dopo l'aggiornamento a Emacs 26 (avevo già js-indent-levelimpostato a 2 ma la larghezza della mia scheda è tornata a 8), ma ciò che ha funzionato è stato impostare la tab-widthvariabile su 2, che sembra sostituire la vecchia default-tab-widthvariabile.

L'ho trovato M-x customizecercando tab width.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.