Emacs ruby-mode, дико выраженный в круглых скобках?

Извините мою новичку emacs здесь, но кто-нибудь знает, как обойти это? При кодировании в emacs в рубиновом режиме он отступает до правильного уровня (т.е. На 2 пробела) после всех ключевых слов, таких как def, class, module, begin и т.д., Но при нарушении списков параметров по нескольким строкам он отступает до кажущейся случайной позиции, например, около 40 столбцов.

Я читаю настройки вкладки emacs и, кажется, просто обойдусь кругами и не получаю информацию, которую ищу, поэтому я решил, что спрошу здесь.

Вот скриншот, где он помещает курсор в список параметров. Я пробовал отступы внутри фигурных скобок (например, для блока или хэша), и это работает нормально, это скобки, которые испортили его.

Bug

Ответ 1

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 пробела дальше, чем я хочу, потому что я смешиваю его с комбинацией ( и {.

Ответ 2

ruby-deep-indent-paren и связанные с ними вары не влияют на меня, потому что ruby-use-smie - t. Установка на nil не помогла: - (

Но переключение на улучшающий рубиновый режим, он работает!

  • Значение enh-ruby-deep-indent-paren до nil имело эффект.
  • Настройка enh-ruby-bounce-deep-indent на t позволяет мне снова нажать Tab для переключения между стилями!

Ответ 3

В основном он пытается выровнять аргументы в многострочном списке аргументов в скобках, например:

function_call (arg1,
               arg2);

Установка значения ruby-deep-indent-paren на ноль, как указано выше, изменяет поведение до раздражающего двойного отступа для смешанных фигурных скобок, например:

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

Отступная странность действительно беспокоит меня. Я отредактировал оригинальный код ruby-mode.el Mats, чтобы попробовать и сделать отступ более здоровым. Но я не могу очистить его от жизни.