Readline.completion_append_character не работает для irb

Я построил свой рубин так:

brew install readline
rvm install ruby-1.9.2-head -C --with-readline-dir=/usr/local/Cellar/readline/6.2.1/

Когда я делаю завершение табуляции, после всего добавляется пробел. Я нашел в документах, что есть переменная с именем completion_append_character. Он установлен в пробел. Если я установлю его на ноль или любой другой символ, он все равно добавит пробел. Как заставить его прекратить добавлять пробел после завершения?


person chrismealy    schedule 08.08.2011    source источник


Ответы (2)


Эта проблема решена в последней версии Ruby 1.9.3-p125, как вы можете видеть в Журнал изменений:

Ср, 8 фев, 10:34:59 2012 ТАКАО Кодзи

  • ext/readline/readline.c (readline_attempted_completion_function): в модуле Readline с случаем GNU Readline 6 модуль Readline сбрасывает символ завершения_дополнения до " " после выполнения завершения. Таким образом, модуль Readline хранит завершение_append_character, а модуль Readline всегда устанавливает его после того, как модуль Readline выполняет завершение. [ruby-dev:43456] [Функция № 4635]
person Arash Badie Modiri    schedule 28.02.2012

Я только что сам столкнулся с этой проблемой, и я считаю, что поздний ответ лучше, чем отсутствие ответа. После некоторых исследований это ошибка в самом Ruby или Readline, и кажется, что она присутствует в каждой версии Ruby, которую я смог найти, что заставляет меня думать, что это Readline. Я смог решить проблему с помощью

gem install rb-readline

а потом

require 'rb-readline'

в моем сценарии. Rb-readline (Ruby Readline) является заменой, чистой реализацией Ruby для Readline и не зависит от расширения C, а переменная Readline.completion_append_character является функциональной.

person Eugene    schedule 23.12.2011