Yep, you are right. I forget my personal setting to `tab-width` is 2 spaces.

After some wandering in the Emacs source code. It seem like that most major-mode have it's own `tab-width`. eg(`slim-indent-offset` for `slim-mode`, `ruby-indent-level` for `ruby-mode`, and `tab-width` for `markdown-mode` and more `js-indent-level`, `coffee-tab-width`, `zencoding-indentation` etc)

I also find that the `web-mode` have a ton of code to determine the indentation in the function  `web-mode-indent-line`. Which inspire me we can go this way. But I am not familiar with elisp. 

How about use 2 spaces for shifting width? Since the indentation in most major mode either 4 spaces or 2 spaces.