Emacs Ruby方法参数缩进

时间:2011-11-01 01:14:10

标签: ruby emacs code-formatting

我想让emacs缩进ruby方法调用,如:

foo(
  :blah => 'bar',
  :shibby => 'baz'
)

我能得到的最接近的是:

foo(
  :blah => 'bar',
  :shibby => 'baz'
  )

这是使用ruby-deep-indent-paren,ruby-deep-indent-paren-style,ruby-deep-arglist设置为nil。

哈希缩进我喜欢的方式...如果我可以像哈希那样使方法调用缩进,我会很高兴。有什么想法吗?

3 个答案:

答案 0 :(得分:12)

Dmitry Gutov已使用建议发布this fix,这似乎有效:

(defadvice ruby-indent-line (after unindent-closing-paren activate)
  (let ((column (current-column))
        indent offset)
    (save-excursion
      (back-to-indentation)
      (let ((state (syntax-ppss)))
        (setq offset (- column (current-column)))
        (when (and (eq (char-after) ?\))
                   (not (zerop (car state))))
          (goto-char (cadr state))
          (setq indent (current-indentation)))))
    (when indent
      (indent-line-to indent)
      (when (> offset 0) (forward-char offset)))))

答案 1 :(得分:5)

当前Emacs主干中的Ruby缩进(将被发布为24.4)就像你要求的那样没有任何额外的调整。

答案 2 :(得分:0)

我相信有一个像C-c o这样的关键序列,你可以用光标按下那个显示使用了什么变量的关闭窗口,让你输入一个新值(比如0或+)。试试吧!