2011-09-13 78 views
15

請原諒我的emacs新手在這裏,但有誰知道如何解決這個問題?當在emacs中進行編碼時,在ruby模式下,它縮進到所有關鍵字(例如def,class,,begin等)之後的正確級別(即2個空格),但是當跨越多行分割參數列表時,它縮進到看似隨機的位置,如40列左右。Emacs ruby​​-mode,在括號內瘋狂縮進?

我一直在讀周圍emacs的選項卡設置,似乎只是在兜圈子,並沒有得到對我要找的信息,所以我想我會在這裏提問。

下面是將光標放置在參數列表中的屏幕截圖。我嘗試在花括號內部縮進(例如,對於塊或哈希),並且工作正常,這是括號將它搞亂了。

Bug

回答

17

http://compgroups.net/comp.emacs/Ruby-mode-indentation-of-continuation-lines

(setq ruby-deep-indent-paren nil) 

或暫時,在當前會話中:

的Mx設置可變RET紅寶石深縮進括號RETRET

在圓括號內部,現在它會像其他地方一樣縮進。在我上面發佈的內容中,仍有一個小問題錯誤。它比我想要的更多地縮進2個空格,因爲我將它與({的組合混淆。

+2

一個小缺陷仍然存在:關閉的括號/括號仍然錯誤地與內容齊平,而不是t han與打開列表的表達齊平。 – mcandre

+0

@mcandre你有沒有想過如何解決這個問題? – fennec

+0

不,可悲。我會盡快發佈修補程序。 – mcandre

0

基本上它試圖排隊ARGS中的括號內的參數多行列表,如:

function_call (arg1, 
       arg2); 

設置ruby-deep-indent-paren爲零如上改變behvaior煩人的雙縮進混合括號,例如:

if (cond) then 
    do_stuff 
end 
function_call (&proc { 
    do_stuff 
    }) 

縮進的奇怪是真的困擾我。我編輯了Mats的原始ruby-mode.el代碼,嘗試更加理性地縮進。但我無法清理它爲我的生活。

1

ruby-deep-indent-paren和相關的增值稅對我沒有影響,因爲ruby-use-smiet。如果二者都是nil似乎並沒有幫助任何:-(

但切換到enh-ruby-mode,它的工作!

  • 設置enh-ruby-deep-indent-parennil了影響。
  • 設置enh-ruby-bounce-deep-indentt讓我再次按下Tab以切換樣式!