Emacs Ruby 方法参数缩进

Posted

技术标签:

【中文标题】Emacs Ruby 方法参数缩进【英文标题】:Emacs Ruby method parameter indentation 【发布时间】:2011-12-19 04:17:06 【问题描述】:

我想让 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。

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

【问题讨论】:

+1,我还没有弄清楚如何修复关闭的paren对齐。 【参考方案1】:

我相信有一个像 C-c o 这样的键序列,你可以用光标在右括号上按下它,它会显示使用的变量并让你输入一个新值(如 0 或 +)。试试看!

【讨论】:

【参考方案2】:

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)))))

【讨论】:

【参考方案3】:

当前 Emacs 主干(将作为 24.4 发布)中的 Ruby 缩进就像您要求的那样工作,无需任何额外的调整。

【讨论】:

以上是关于Emacs Ruby 方法参数缩进的主要内容,如果未能解决你的问题,请参考以下文章

Haskell缩进不会排列函数参数

如何在 java 模式下配置 emacs,使其不会自动对齐方法参数

Resharper:如何使用括号格式化多行方法作为花括号和缩进参数?

在 Ruby 中将方法作为参数传递

方法如何在 Ruby 中使用哈希参数?

为啥这个 Ruby 方法通过引用传递它的参数