请原谅我的emacs newbiness,但是有人知道怎么解决这个问题吗?在emacs中进行编码时,在ruby模式下,它会在所有关键字后缩进到正确的级别(即2个空格),例如def
,class
,module
,{{1}等等,但是当在多行中打破参数列表时,它会缩进到一个看似随机的位置,就像40个左右的列一样。
我一直在阅读emacs标签设置,似乎只是绕圈而不是找到我正在寻找的信息,所以我想我会在这里问。
以下是将光标放在参数列表中的屏幕截图。我已经尝试在花括号内缩进(例如,对于一个块或一个哈希),这样做正常,这是弄乱它的括号。
答案 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-smie
是t
。将两者都设置为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代码,试图更加理智地缩进。但我无法为我的生活清理它。