Spacemacs set tab width

Catsy picture Catsy · Apr 19, 2016 · Viewed 21.4k times · Source

I just migrated from VIM to Spacemacs and would like to change the tab width from default (\t?) to only 2 spaces. I found commands like

(setq-default indent-tabs-mode nil)

and

(setq tab-width 4) ; or any other preferred value
(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'cperl-indent-level 'tab-width)

My problem is that I don't know if they are correct, where in the .spacemacs file I should insert them, and what they even mean.

Answer

Catsy picture Catsy · Apr 19, 2016

I found this article: http://blog.binchen.org/posts/easy-indentation-setup-in-emacs-for-web-development.html

I added this part of the code into my .spacemacs file outside of any function (but before (defun dotspacemacs/user-init () ... )):

(defun my-setup-indent (n)
  ;; java/c/c++
  (setq c-basic-offset n)
  ;; web development
  (setq coffee-tab-width n) ; coffeescript
  (setq javascript-indent-level n) ; javascript-mode
  (setq js-indent-level n) ; js-mode
  (setq js2-basic-offset n) ; js2-mode, in latest js2-mode, it's alias of js-indent-level
  (setq web-mode-markup-indent-offset n) ; web-mode, html tag in html file
  (setq web-mode-css-indent-offset n) ; web-mode, css in html file
  (setq web-mode-code-indent-offset n) ; web-mode, js code in html file
  (setq css-indent-offset n) ; css-mode
  )

and added the line

(my-setup-indent 2) ; indent 2 spaces width

into the (defun dotspacemacs/user-init () ... ) like this:

(defun dotspacemacs/user-init ()
  "Initialization function for user code.
It is called immediately after `dotspacemacs/init', before layer configuration
executes.
 This function is mostly useful for variables that need to be set
before packages are loaded. If you are unsure, you should try in setting them in
`dotspacemacs/user-config' first."
  (my-setup-indent 2) ; indent 2 spaces width
  )