Bug #17680
closedtab completion no longer works on irb3.0
Description
in irb2.5:
rb(main):001:0> source 'li [then I hit tab...]
linking.rb list_load.rb list_load_OLD.rb
irb(main):001:0> source 'lis [then I hit tab again...]
list_load.rb list_load_OLD.rb
irb(main):001:0> source 'list_load.rb' [then I hit tab again...]
in irb3.0, hitting tab after typing "source 'li" gives.
irb(main):001:0' source 'li'
Here are my version numbers:
ayerie:simon$ irb3.0 -v
irb 1.3.0 (2020-12-25)
ayerie:CHLOE simon$ ruby3.0 -v
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin16]
ayerie:simon$
Updated by crocarneiro (Carlos Carneiro) about 4 years ago
I could not reproduce the old version behaviour. I got back to irb 1.1.0 and the autocomplete behaviour is the same as the version 1.3.4. My steps:
$ touch linking.rb
$ touch list_load.rb
$ touch list_load_OLD.rb
$ irb
2.5.0 :001 > source 'li
Hitting tab gives me:
2.5.0 :001 > source 'li'
irb -v: irb 1.1.0 (2019-11-21)
ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
OS: Ubuntu 20.04.1 LTS
How you achieved that behaviour in the old version? How was your "~/.irbrc" file?
Updated by xtkoba (Tee KOBAYASHI) about 4 years ago
What is confusing is that the behavior of IRB changes drastically with readline.so
. I suppose that Ruby 2.5 of the main issue is the case when readline.so
is installed, and that the rest (Ruby 3.0 of the main issue and Ruby 2.5 of #note-1) are when it is not installed.
My observation is as follows. For Ruby 2.5.8:
/$ ruby --version
ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-linux]
/$ irb --version
irb 0.9.6(09/06/30)
/$ [Make sure that readline.so exists]
/$ irb
irb(main):001:0> "[Press Tab twice]
bin/ dev/ home/ lib64/ mnt/ proc/ run/ sys/ usr/
boot/ etc/ lib/ media/ opt/ root/ sbin/ tmp/ var/
[Terminate IRB]
/$ [Remove readline.so]
/$ irb
irb(main):001:0> "[Press Tab here, and ...]
irb(main):001:0> " [<- "\t" is shown]
For Ruby 2.7.2:
/$ ruby --version
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
/$ irb --version
irb 1.2.6 (2020-09-14)
/$ [Make sure that readline.so exists]
/$ irb
irb(main):001:0> "[Nothing happens when Tab is pressed many times]
[Terminate IRB]
/$ [Remove readline.so]
/$ irb
irb(main):001:0> "[Press Tab here, and ...]
irb(main):001:0> ""
As you can see above, there are four patterns of Tab behavior depending on the version of IRB/Ruby and the existence of readline.so
.
Updated by jeremyevans0 (Jeremy Evans) almost 2 years ago
- Status changed from Open to Closed
This change from 2.5 is expected due to differences between reline and readline. As readline has been removed from stdlib, reline's behavior is now the only available behavior. Behavior is the same on JRuby. It's possible a pull request to reline to have tab completion behavior more compatible to readline may be considered, but that would be up to the reline maintainer.