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?
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.
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."
If you're using js2-mode (which is more powerful IMHO), then the command is:
(setq-default js2-basic-offset 2)
You might also want to set emacs to use spaces instead of tabs
(setq-default indent-tabs-mode nil)
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.
M-x describe-variable
+ click on "customize".
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)
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.
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; -*-
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
.
Success story sharing
(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)
.js-mode-hook
, like so:(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)
M-x h
from js-mode, but couldn't find anything there.