How can I set Emacs tab settings by file type?
emacs
Solution
In emacs each mode has it's own indentation style. The main command to indent (bound to TAB) is `indent-for-tab-command`. This command calls mode specific indentation function found in the variable `indent-line-function`. So each mode has it's own way of doing it.
For Ruby (for my emacs 2 is a default):
(setq ruby-indent-level 2)
For CSS (again, default is 4 for me):
(setq css-indent-offset 4)
Unfortunately SGML mode (on which HTML mode is based) has a very simple indentation mechanism and apparently the level is not configurable. See the source code of `sgml-calculate-indent` function.
I personally find it weird. I am not writing HTML, but you can try to modify the `sgml-calculate-indent` function yourself :). Learn some lisp.
I am using js2 mode, and it indents perfectly by default. For js you have to search for js-indent-level or something similar.
Cheers.
Problem
I need to be able to set the tab settings for the following file types: - .rb: 2 soft spaces - .css, .html.erb: 4 space tabs I have tried the following, but none of it seems to alter my default tab settings for each of the file types. ``` ;; js-mode-hook has also been tried (add-hook 'javascript-mode-hook '(lambda() (setq tab-width 4))) (add-hook 'css-mode-hook '(lambda() (setq tab-width 4))) (add-hook 'html-mode-hook '(lambda() (setq tab-width 8))) ``` I am pretty new to emacs so my knowledge of configuration is pretty low.