From a previous post I got Ruby mode working in emacs. This is working great.
Setting up .emacs file for mac ruby development
Our company uses 4 spaces for indents though instead of the default 2. I am having difficulty getting this to work.
Here is my .emacs file
(add-to-list 'load-path "~/rdoc-mode.el")
(require 'ruby-mode)
(setq indent-tabs-mode nil) ; always replace tabs with spaces
(setq-default tab-width 4) ; set tab width to 4 for all buffers
Does anyone see what I am doing wrong?
Thanks!
There's a way to do it without touching .emacs. You can put a special comment block at the end of every Ruby file that sets "file variables" specific to that file. Any emacs or xemacs editing that file will use the mode, tab settings, & etc in that comment block.
As an example, here is the "file variables" block we use for Ruby development:
The other posters have provided the correct answer, so I'll mention here how to figure out the answer to this kind of question.
First of all, since you correctly assumed that the indent width would be configurable, the first thing to try is:
And sure enough, one of the customization options there is "Ruby Indent Level". You can set it and save the changes. Done!
Alternatively, you can look at ruby-mode itself:
Then search (with C-s) for 'indent'. There you'll find a variable definition:
When you find a variable like that, you can set it in your .emacs (or ~/.emacs.d/init.el) with setq:
You could also discover that variable using apropos:
That's why emacs is described as "self-documenting"!
The
tab-width
setting only controls the width of a tab character, i.e. how many spaces a tab character is equivalent to when displayed in your buffer. It does not affect the number of spaces (or tabs) used for indenting your code.For Ruby code, the indentation is controlled by the
ruby-indent-level
variable: