Project

General

Profile

Actions

Bug #17680

closed

tab completion no longer works on irb3.0

Added by simondedeo (Simon DeDeo) about 3 years ago. Updated 10 months ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin16]
[ruby-core:102778]

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 3 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 3 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) 10 months 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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0