Comment changer la largeur d'indentation en mode javascript emacs


120

Je voudrais utiliser 2 espaces pour mes retraits au lieu de 4. Je peux changer le comportement par défaut du mode C en utilisant:

(setq c-basic-offset 2)

Comment changer cela en mode javascript?

Réponses:


198

js-indent-level peut être utilisé dans le mode javascript par défaut, qui est inclus par défaut à partir d'emacs 23.2.

(setq js-indent-level 2)

devrait faire ce que vous cherchez. Si vous utilisez une ancienne version d'emacs, vous êtes peut-être en mode java. Je pense que ce mode répond c-basic-offset, mais je me trompe peut-être.


2
(setq default-tab-width 2) serait le paramètre de largeur de tabulation correspondant pour le mode java
Fergie

En utilisant ce mécanisme, la largeur de l'onglet reste à 8 et donc les tabulations ne sont utilisées que si le niveau de retrait est 4 (2x4 = 8) ou plus. Comment définir la largeur de tabulation sur 2 ou 4 pour que des tabulations au lieu d'espaces soient utilisées? J'ai essayé un tas de paramètres, par exemple (setq tab-width 4) mais en vain. Mon objectif: utiliser la largeur de tabulation 4, et n'utiliser que des caractères de tabulation (pas d'espaces comme substitut).
jdp

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

Utilisez js-mode-hook, comme ceci:(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
Est-ce documenté quelque part? Existait-il un moyen de trouver ces informations sans stackoverflow? J'ai regardé en M-x hmode js, mais je n'ai rien trouvé là-bas.
Charles Holbrow

75

J'aurais aimé que quelqu'un m'ait parlé de Custom beaucoup plus tôt! Peut-être que cela aidera un autre simple mortel comme moi;)

Invoquer personnalisé:

M-x customize

Ensuite, choisissez «Programmation», puis «Langues», puis sélectionnez une langue / un mode à personnaliser. Modifiez les options comme bon vous semble. Une fois terminé, choisissez «Enregistrer pour la session actuelle» ou «Enregistrer pour les sessions futures».


17

Si vous utilisez le mode js2 (qui est plus puissant à mon humble avis), la commande est:

(setq-default js2-basic-offset 2)

La source.


11

Vous pouvez également configurer emacs pour utiliser des espaces au lieu des tabulations

(setq-default indent-tabs-mode nil)

Ceci est plus un commentaire qu'une réponse réelle. Gagnez plus de réputation pour pouvoir commenter.
jcubic

2

Dans mon fichier javascript.el (/ usr / share / emacs / site-lisp) j'ai trouvé

javascript-indent-niveau 4

Donc, si vous utilisez le même mode lisp, vous pouvez le changer en exécutant

(setq javascript-indent-level 2)

2

Vous pouvez aussi utiliser

M-x customize-variable

et tapez

js-indent-level

( js-[TAB] affiche une liste d'options). Puis changez le Js Indent Levelcomme vous le souhaitez et cliquez [State:]et enregistrez.


2

Utiliser EditorConfig pourrait également être une bonne idée. Et bien sûr, Emacs avait un mode pour lui editorconfig-emacs .

Il est également disponible dans le gestionnaire de packages ( M-x package-list-packages) via Melpa ou Marmalade.


2

Si vous souhaitez le modifier par fichier, placez-le en haut de votre fichier:

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

0

Aucune de ces solutions n'a fonctionné pour moi après la mise à niveau vers Emacs 26 (j'avais déjà js-indent-leveldéfini sur 2 mais la largeur de mon onglet est revenue à 8), mais ce qui a fonctionné était de définir la tab-widthvariable sur 2, ce qui semble remplacer l'ancienne default-tab-widthvariable.

J'ai trouvé cela en M-x customizecherchant tab width.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.