2010-01-21 95 views
8

從上一篇文章中,我得到了Ruby模式在emacs中的工作。這很好。將emacs ruby​​-mode縮進更改爲4個空格

Setting up .emacs file for mac ruby development

公司採用4個空格的縮進,雖然,而不是默認2.我有困難得到這個工作。

這裏是我的.emacs文件

(添加到列表 '負載路徑 「〜/ RDoc的-mode.el」)

(需要' 紅寶石模式)

(setq indent-tabs-mode nil);總是用空格替換標籤

(setq-default tab-width 4);將標籤寬度設置爲4,適用於所有緩衝區

有沒有人看到我在做什麼錯?

謝謝!

+0

選項卡寬度僅控制選項卡 - >空間擴展,而不幸的是​​-模式縮進。 – 2010-01-21 16:55:47

回答

17

tab-width設置僅控制製表符的寬度,即製表符在緩衝區中顯示時等同於多少個空格。它不會影響用於縮進代碼的空格(或製表符)的數量。

對於Ruby代碼,縮進由ruby-indent-level變量控制:

(setq ruby-indent-level 4) 
+0

工作!非常感謝。 – Poul 2010-01-21 16:57:47

+0

貴公司很奇怪,其他所有Ruby公司都使用2個空格:) – horseyguy 2013-09-24 19:46:35

3

有一個辦法做到這一點不接觸的.emacs。您可以在每個爲該文件設置"file variables"的Ruby文件末尾放置一個特殊註釋塊。任何編輯該文件的emacs或xemacs將在該註釋塊中使用模式,選項卡設置,&等。

作爲一個例子,這裏是「文件變量」塊中,我們使用Ruby開發:

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

其他海報提供了正確的答案,所以我會在這裏提到如何找出答案到這種問題。

首先,因爲你正確地認爲壓痕寬度是可配置的,嘗試的第一件事就是:

M-x customize-group RET ruby-mode RET 

果然,的自定義選項中的一個有「紅寶石縮進層次」 。您可以設置它並保存更改。完成!

或者,你可以看看紅寶石模式本身:

M-x find-library RET ruby-mode RET 

然後搜索(用C-S)的 '縮進'。當你發現一個這樣的變量,你可以將它設置在你的.emacs(或者〜/ .emacs.d /初始化

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

:在那裏,你會發現一個變量定義。EL)與setq:

(setq ruby-indent-level 4) 

你也可以使用中肯發現變量:

M-x apropos RET indent ruby RET 

這就是爲什麼emacs的被描述爲 「自我記錄」!

相關問題