Emacs ruby​​ 模式缩进自定义 case..when 和来自 if..else 的赋值?

d11*_*wtq 3 ruby emacs

在 Emacs 中,使用 ruby​​ 模式,我找不到阻止这种情况发生的方法:

foo = if something?
        42
      else
        7
      end
Run Code Online (Sandbox Code Playgroud)

当我们的内部会议是:

foo = if something?
  42
else
  7
end
Run Code Online (Sandbox Code Playgroud)

(同样适用于begin..endcase..when)。

另外,虽然这不那么麻烦,但我们的惯例case..when是缩进每个when.

case whatever
  when foo
    "a"
  when bar
    "b"
  else
    "c"
end
Run Code Online (Sandbox Code Playgroud)

我知道人们通常说你应该when与保持一致case,但这不是我们公司的惯例,所以有人知道如何定制它吗?我发现 ruby​​ 模式的定制很少。我唯一真正能够自定义的是括号内的缩进。

Dmi*_*try 5

在 Emacs 24.4 及更高版本中,您可以设置ruby-align-to-stmt-keywords'(if begin case)或简单地设置为t来解决问题的第一部分。

但它不会改变 的缩进偏移量when。那必须是一个不同的选择。