首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs ruby模式if表达式缩排

Emacs ruby模式if表达式缩排
EN

Stack Overflow用户
提问于 2013-07-22 19:35:58
回答 2查看 331关注 0票数 2

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

代码语言:javascript
复制
    before1 = if params[:before]
            Time.zone.at(params[:before].to_i)
    end

我发现这是完全错误的。预期行为应该是:

代码语言:javascript
复制
    before1 = if params[:before]
      Time.zone.at(params[:before].to_i)
    end

也就是说,if块应该相对于if表达式开始的行只缩进一级。有什么方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-23 17:40:51

我猜您实际上是想说Emacs将ifend对齐,这在Ruby语言中是非常惯用的(也是RuboCop等工具强制执行的风格)。第二种缩进样式适用于带有块的方法类,但不适用于像if/unless/case这样的表达式。

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

无论如何,这不是一个bug,而是一个特性:-)

票数 0
EN

Stack Overflow用户

发布于 2016-03-16 22:23:51

如果您的Emacs足够新(24.4+),并且您使用的是SMIE缩进引擎(ruby-use-smie不是nil),那么您可以使用ruby-align-to-stmt-keywords

代码语言:javascript
复制
(add-to-list 'ruby-align-to-stmt-keywords 'if)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17786563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档