2013-07-22 75 views
2

的Emacs 24紅寶石模式堅持如果表達式如下方式縮進:Emacs的紅寶石模式下,如果表達式壓痕

before1 = if params[:before] 
      Time.zone.at(params[:before].to_i) 
    end 

我覺得這是完全錯誤的。預期的行爲應該是:

before1 = if params[:before] 
     Time.zone.at(params[:before].to_i) 
    end 

也就是說 - if塊應該由恰好一個水平相對於在其中表達,如果開頭的行縮進。有什麼辦法可以做到這一點?

+2

更明確的區別,特別是當它是關於白色字符。 – sawa

+0

請參閱我對此問題的更全面版本的回覆:http://stackoverflow.com/a/20733875/615245 – Dmitry

回答

-1

我猜你其實意思是說,Emacs的對齊ifend,這實際上是在Ruby中非常地道(和工具,如RuboCop實施的樣式)。第二種縮進樣式適用於帶方塊類的方法,但不適用於像if/unless/case這樣的表達式。

目前現在有辦法改變這種行爲。有計劃在未來推出更靈活的ruby模式縮進方案,但這在下一個Emacs版本中不會發生。

無論如何 - 它不是一個錯誤,這是:-)

2

一個功能。如果您的Emacs足夠近(24.4+)和您使用的SMIE壓痕機(ruby-use-smie是非零)你可以使用ruby-align-to-stmt-keywords

(add-to-list 'ruby-align-to-stmt-keywords 'if)