将emacs ruby​​-mode缩进更改为4个空格

时间:2010-01-21 16:49:06

标签: ruby-on-rails ruby emacs dot-emacs

从上一篇文章中我得到了Ruby模式在emacs中工作。这很有效。

Setting up .emacs file for mac ruby development

我们公司使用4个空格进行缩进,而不是默认2.我很难让它工作。

这是我的.emacs文件

  

(add-to-list'load-path“〜/ rdoc-mode.el”)

     

(需要'ruby-mode)

     

(setq indent-tabs-mode nil);总是用空格替换标签

     

(setq-default tab-width 4);为所有缓冲区设置标签宽度为4

有人看到我做错了吗?

谢谢!

3 个答案:

答案 0 :(得分:18)

tab-width设置仅控制制表符的宽度,即制表符在缓冲区中显示时等效的空格数。它不会影响用于缩进代码的空格(或制表符)的数量。

对于Ruby代码,缩进由ruby-indent-level变量控制:

(setq ruby-indent-level 4)

答案 1 :(得分:15)

其他海报提供了正确答案,所以我在这里提到如何找出这类问题的答案。

首先,由于您正确地认为缩进宽度是可配置的,因此首先要尝试的是:

M-x customize-group RET ruby-mode RET

果然,其中一个自定义选项是“Ruby Indent Level”。您可以设置它并保存更改。完成!

或者,您可以查看ruby-mode本身:

M-x find-library RET ruby-mode RET

然后搜索(用C-s)'缩进'。在那里你会找到一个变量定义:

(defcustom ruby-indent-level 2 ...)

当你找到这样的变量时,可以使用setq在.emacs(或〜/ .emacs.d / init.el)中设置它:

(setq ruby-indent-level 4)

您还可以使用apropos发现该变量:

M-x apropos RET indent ruby RET

这就是为什么emacs被描述为“自我记录”的原因!

答案 2 :(得分:3)

有一种方法可以在不触及.emacs的情况下完成。您可以在每个Ruby文件的末尾放置一个特殊注释块,该文件设置特定于该文件的"file variables"。编辑该文件的任何emacs或xemacs都将使用模式,选项卡设置和&在该评论栏中等。

作为一个例子,这里是我们用于Ruby开发的“文件变量”块:

# Local Variables:
# mode: ruby
# tab-width: 2
# ruby-indent-level: 2
# indent-tabs-mode: nil
# End: