Отступ параметра метода Emacs Ruby - PullRequest
27 голосов
/ 01 ноября 2011

Я хочу сделать вызовы метода emacs indent 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 ]

12 голосов
/ 26 ноября 2011

Дмитрий Гутов опубликовал это исправление , используя совет, который, кажется, работает:

(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)))))
5 голосов
/ 22 декабря 2013

Отступ Ruby в текущей транке Emacs (будет выпущен как 24.4) работает так, как вы просите, без каких-либо дополнительных настроек.

0 голосов
/ 24 ноября 2011

Я считаю, что есть последовательность клавиш, например C-c o, которую вы можете нажать курсором на закрывающую скобку, чтобы показать, какая переменная используется, и позволить ввести новое значение (например, 0 или +). Попробуйте это!

...