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表达式开始的行只缩进一级。有什么方法可以做到这一点吗?
发布于 2013-07-23 17:40:51
我猜您实际上是想说Emacs将if与end对齐,这在Ruby语言中是非常惯用的(也是RuboCop等工具强制执行的风格)。第二种缩进样式适用于带有块的方法类,但不适用于像if/unless/case这样的表达式。
目前,有办法改变这一行为。未来有计划在ruby模式中引入更灵活的缩进方案,但这不会在下一个Emacs版本中实现。
无论如何,这不是一个bug,而是一个特性:-)
发布于 2016-03-16 22:23:51
如果您的Emacs足够新(24.4+),并且您使用的是SMIE缩进引擎(ruby-use-smie不是nil),那么您可以使用ruby-align-to-stmt-keywords
(add-to-list 'ruby-align-to-stmt-keywords 'if)https://stackoverflow.com/questions/17786563
复制相似问题