How to change the indentation width in emacs javascript mode

JavascriptEmacsIndentation

Javascript Problem Overview


I'd like to use 2 spaces for my indents instead of 4. I can change the default behavior of C mode using:

(setq c-basic-offset 2)

How do I change this in javascript mode?

Javascript Solutions


Solution 1 - Javascript

js-indent-level can be used in the default javascript-mode, which is included by default starting in emacs 23.2.

(setq js-indent-level 2)

should do what you're looking for. If you're using an older version of emacs, you may be in java-mode. I think this mode responds to c-basic-offset, however I may be wrong.

Solution 2 - Javascript

I wish someone had told me about Custom a lot sooner! Perhaps this will help another mere mortal like me ;)

Invoke Custom:

M-x customize

Then, choose "Programming," and then "Languages," and then select a language/mode to customize. Edit the options as you see fit. When done, choose either "Save for current session" or "Save for future sessions."

Solution 3 - Javascript

If you're using js2-mode (which is more powerful IMHO), then the command is:

(setq-default js2-basic-offset 2)

Source.

Solution 4 - Javascript

You might also want to set emacs to use spaces instead of tabs

(setq-default indent-tabs-mode nil)

Solution 5 - Javascript

You can also use

M-x customize-variable

and type

js-indent-level

(js- [TAB] shows a list of options). Then change the Js Indent Level as wanted and click [State:] and save.

Solution 6 - Javascript

In my javascript.el file (/usr/share/emacs/site-lisp) I found

javascript-indent-level 4

So if you are using the same lisp-mode you can change it by running

(setq javascript-indent-level 2)

Solution 7 - Javascript

Using EditorConfig could be a good idea too. And of course, Emacs had a mode for it editorconfig-emacs.

It's also available in the package manager (M-x package-list-packages) through Melpa or Marmalade.

Solution 8 - Javascript

If you want to change it on a per-file basis, put this at the top of your file:

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

Solution 9 - Javascript

None of these solutions worked for me after upgrading to Emacs 26 (I already had js-indent-level set to 2 but my tab width went back to 8), but what did work was setting the tab-width variable to 2, which seems to replace the old default-tab-width variable.

I found this in M-x customize by searching for tab width.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmksuthView Question on Stackoverflow
Solution 1 - JavascriptWilli BallenthinView Answer on Stackoverflow
Solution 2 - JavascriptwprlView Answer on Stackoverflow
Solution 3 - JavascriptmetakermitView Answer on Stackoverflow
Solution 4 - JavascriptTylerView Answer on Stackoverflow
Solution 5 - JavascriptkwarnkeView Answer on Stackoverflow
Solution 6 - JavascriptHelgeView Answer on Stackoverflow
Solution 7 - Javascriptuser6556626View Answer on Stackoverflow
Solution 8 - JavascriptMatthewDView Answer on Stackoverflow
Solution 9 - JavascriptMalvineousView Answer on Stackoverflow