Отмена авто-отступа - PullRequest
       8

Отмена авто-отступа

8 голосов
/ 21 мая 2011

Когда вы используете irb с режимом автоматического отступа, операторы end получают отступ на один уровень дополнительно

 def foo
   ...
   end

вместо обычного отступа:

def foo
  ...
end

потому что вы не можете сказать irb заранее, что вы собираетесь покинуть один уровень в следующей строке. Этот вопрос был рассмотрен в другом месте, например, здесь или здесь , но ни один из них не дает удовлетворительного ответа. Они просто предлагают сдаться.

Однако, если мы можем минимально перезаписать некоторые методы irb, чтобы автоматический отступ вставлял пробелы не в области приглашения, а в начале вводимой строки, то по умолчанию irb по-прежнему будет вставлять пробелы, но мы сможет стереть некоторые пробелы с Backspace. Это возможно?

Или, если это нереально, можно ли заставить irb стереть последнюю строку с экрана и заново отобразить ее с правильным отступом сразу после нажатия клавиши Enter на строке, включающей end?

1 Ответ

5 голосов
/ 22 мая 2011

Перезапись последней строки возможна.Делать это в irb сложно из-за отсутствия документации и API в разных версиях.Альтернатива irb, ripl , уже решила эту проблему самостоятельно с помощью плагина auto-indent .Если вы хотите попробовать ripl и его авто-отступ:

$ gem install ripl-auto_indent
$ echo "require 'ripl/auto_indent'" >> ~/.riplrc

# Auto-indent away
$ ripl
>> def foo
>>   puts "it's auto-magic!"
>> end
...