Readline tab completion -- the whole line?

Recently, a thread about tab completion showed me
Readline.completion_proc = Proc new {|prefix| … }

and while that is an improvement for my little apps, I wonder whether
block can get more than the current word on the line, i.e.
little> save lo[TAB]
gives me the prefix (passed as param to the block) “lo”, not e.g. “save
or [“save”, “lo”] so basically I can not use the context in a nice way
“localfile” in this case, not “load”).

I figured I can do
Readline.basic_word_break_characters = “”
after which I get the entire line (which I can then #split by hand).

Am I missing something? Is readline (despite its weight) so primitive?


Currently, completion_proc seems to only be able to handle the current
“word” being processed. You could hack basic_word_break_characters so
that the whole line is fed into completion_proc, and do any string
massaging in there, as you stated.

There is somewhere in the ruby-talk archives a patch to have a
two-argument version of completion_proc, but it doesn’t seem to have
gotten to the official distribution. It would have given both the
current line and the current word.

So yes, I guess your last judgment isn’t completely wrong.