Emacs ruby​​-mode,在括号内疯狂缩进?

时间:2011-09-13 15:54:02

标签: ruby emacs

请原谅我的emacs newbiness,但是有人知道怎么解决这个问题吗?在emacs中进行编码时,在ruby模式下,它会在所有关键字后缩进到正确的级别(即2个空格),例如defclassmodule,{{1}等等,但是当在多行中打破参数列表时,它会缩进到一个看似随机的位置,就像40个左右的列一样。

我一直在阅读emacs标签设置,似乎只是绕圈而不是找到我正在寻找的信息,所以我想我会在这里问。

以下是将光标放在参数列表中的屏幕截图。我已经尝试在花括号内缩进(例如,对于一个块或一个哈希),这样做正常,这是弄乱它的括号。

Bug

3 个答案:

答案 0 :(得分:17)

http://compgroups.net/comp.emacs/Ruby-mode-indentation-of-continuation-lines

(setq ruby-deep-indent-paren nil)

暂时,在当前会话中:

M-x set-variable RET ruby​​-deep-indent-paren RET nil RET

在括号内,它现在会像其他地方一样缩进。在我上面发布的内容中,仍然存在次要错误。它比我想要的更进一步缩进2个空格,因为我将它与({的组合混淆。

答案 1 :(得分:1)

ruby-deep-indent-paren及相关变量对我没有影响因为ruby-use-smiet。将两者都设置为nil似乎也没有帮助: - (

但切换到enh-ruby-mode,它正在运作!

  • enh-ruby-deep-indent-paren设置为nil会产生影响。
  • enh-ruby-bounce-deep-indent设置为t,我可以再次按Tab键切换样式!

答案 2 :(得分:0)

基本上它试图在带括号的参数的多行列表中排列args,例如:

function_call (arg1,
               arg2);

如上所述将ruby-deep-indent-paren设置为nil会将behvaior更改为混合括号的令人讨厌的双缩进,例如:

if (cond) then
  do_stuff
end
function_call (&proc {
    do_stuff
  })

缩进的诡计真让我烦恼。我编辑了Mats的原始ruby-mode.el代码,试图更加理智地缩进。但我无法为我的生活清理它。