2

Emacs 24 ruby​​-mode 坚持使用以下方式缩进 if 表达式:

    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 块应该相对于 if 表达式开始的行缩进一个级别。有什么办法可以做到这一点?

4

2 回答 2

3

如果您的 Emacs 足够新(24.4+)并且您正在使用 SMIE 缩进引擎(ruby-use-smie非零),您可以使用ruby-align-to-stmt-keywords

(add-to-list 'ruby-align-to-stmt-keywords 'if)
于 2016-03-16T14:23:50.543 回答
0

我猜你的意思实际上是说 Emacs 将 与 对齐ifend这在 Ruby 中实际上是非常惯用的(以及由RuboCop等工具强制执行的样式)。第二种缩进样式在带有块的方法类中很流行,但对于像if/unless/case.

目前有办法改变这种行为。未来计划在 ruby​​ 模式中引入更灵活的缩进方案,但这不会在下一个 Emacs 版本中发生。

无论如何-这不是错误,而是功能:-)

于 2013-07-23T09:40:51.243 回答