Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix column overflow on ls output #209

Merged
merged 1 commit into from
Mar 21, 2021
Merged

Conversation

k0kubun
Copy link
Member

@k0kubun k0kubun commented Mar 21, 2021

Follow up #203

Before

$ irb
irb(main)[01:0]> ls
Object.methods:
  bindings          cb                chws              conf              context           cws               cwws
  exit              fg                help              inspect           irb_bindings      irb_cb            irb_change_binding
  irb_chws          irb_current_working_binding  irb_cwb           irb_cws           irb_cwws          irb_pop_binding   irb_popb
  irb_popws         irb_print_working_binding  irb_print_working_workspace  irb_push_binding  irb_pushb         irb_pushws        irb_pwb     
  irb_pwws          irb_quit          jobs              kill              ls                measure           popb
  popws             pushb             pushws            pwws              quit              source            to_s
  whereami          workspaces

After

$ irb
irb(main)[01:0]> ls
Object.methods:
  bindings   cb                           chws                         conf              context       cws              cwws
  exit       fg                           help                         inspect           irb_bindings  irb_cb           irb_change_binding
  irb_chws   irb_current_working_binding  irb_cwb                      irb_cws           irb_cwws      irb_pop_binding  irb_popb
  irb_popws  irb_print_working_binding    irb_print_working_workspace  irb_push_binding  irb_pushb     irb_pushws       irb_pwb
  irb_pwws   irb_quit                     jobs                         kill              ls            measure          popb
  popws      pushb                        pushws                       pwws              quit          source           to_s
  whereami   workspaces

@k0kubun k0kubun merged commit fc3c5c5 into ruby:master Mar 21, 2021
@k0kubun k0kubun deleted the fits-on-line branch March 21, 2021 06:19
k0kubun added a commit that referenced this pull request Mar 21, 2021
cols.size was calling Integer#size, which returns 8.

Fixing a bug of #209
matzbot pushed a commit to ruby/ruby that referenced this pull request Mar 21, 2021
cols.size was calling Integer#size, which returns 8.

Fixing a bug of ruby/irb#209

ruby/irb@c93ae4be71

def col_widths(strs, cols:)
cols.times.map do |col|
(col...strs.size).step(cols.size - 1).map do |i|
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙇 c93ae4b

aycabta pushed a commit to aycabta/ruby that referenced this pull request Apr 2, 2021
cols.size was calling Integer#size, which returns 8.

Fixing a bug of ruby/irb#209

ruby/irb@c93ae4be71
aycabta pushed a commit to aycabta/ruby that referenced this pull request Apr 2, 2021
cols.size was calling Integer#size, which returns 8.

Fixing a bug of ruby/irb#209

ruby/irb@c93ae4be71
nurse pushed a commit to ruby/ruby that referenced this pull request Apr 3, 2021
* [ruby/irb] Update help message for next context-mode of 4

While here, fixing tab/space issues in help message, and sync
rdoc for IRB class to match the help message.

ruby/irb@ef8e3901cc

* [ruby/irb] Do not continue line if last expression is an endless range

Fixes [Bug #14824]

ruby/irb@63414f8465

* [ruby/irb] Add a test for not continuing when endless range at eol

ruby/irb@1020ac9c65

* [ruby/irb] Make save-history extension safe for concurrent use

This makes the save-history extension check for modifications to
the history file before saving it.  If the history file was modified
after the history was loaded and before it was saved, append only
the new history lines to the history file.

This can result in more lines in the history file than SAVE_HISTORY
allows.  However, that will be fixed the next time irb is run and
the history is saved.

Fixes [Bug #13654]

ruby/irb@041ef53845

* Fix errors when XDG_CONFIG_HOME points to non-writable directory

`$HOME/.config` is not writable on CI
because I think tests should not corrupt user's data.

And GitHub Actions CI sets `XDG_CONFIG_HOME`
since `Version: 20210309.1`.

https://github.com/ruby/actions/runs/2130811016?check_suite_focus=true#step:16:301
```
Errno::EACCES: Permission denied @ dir_s_mkdir - /home/runner/.config/irb
```

* Try to fix errors in TestIRB::TestHistory too

https://github.com/ruby/actions/runs/2137935523?check_suite_focus=true#step:9:562
```
  1) Error:
TestIRB::TestHistory#test_history_concurrent_use:
Errno::EACCES: Permission denied @ dir_s_mkdir - /home/runner/.config/irb
    /home/runner/work/actions/actions/ruby/lib/fileutils.rb:253:in `mkdir'
    /home/runner/work/actions/actions/ruby/lib/fileutils.rb:253:in `fu_mkdir'
    /home/runner/work/actions/actions/ruby/lib/fileutils.rb:231:in `block (2 levels) in mkdir_p'
    /home/runner/work/actions/actions/ruby/lib/fileutils.rb:229:in `reverse_each'
    /home/runner/work/actions/actions/ruby/lib/fileutils.rb:229:in `block in mkdir_p'
    /home/runner/work/actions/actions/ruby/lib/fileutils.rb:211:in `each'
    /home/runner/work/actions/actions/ruby/lib/fileutils.rb:211:in `mkdir_p'
    /home/runner/work/actions/actions/ruby/lib/irb/init.rb:355:in `rc_file_generators'
    /home/runner/work/actions/actions/ruby/lib/irb/init.rb:330:in `rc_file'
    /home/runner/work/actions/actions/ruby/test/irb/test_history.rb:170:in `block in assert_history'
    /home/runner/work/actions/actions/ruby/lib/tmpdir.rb:96:in `mktmpdir'
    /home/runner/work/actions/actions/ruby/test/irb/test_history.rb:168:in `assert_history'
    /home/runner/work/actions/actions/ruby/test/irb/test_history.rb:133:in `test_history_concurrent_use'
```

* [ruby/irb] Define "measure" command without forced override

ruby/irb@9587ba13b5

* [ruby/irb] Add all lib files automatically

ruby/irb@ecc82336b7

* [ruby/irb] Don't call Ruby 2.4+'s String#pretty_print

ruby/irb@89bcf107be

* [ruby/irb] Implement ls command

ruby/irb@19b6c20604

* [ruby/irb] Add whereami command

ruby/irb@bc822e4aac

* [ruby/irb] Fix column overflow on ls output

ruby/irb@6115754623

* [ruby/irb] Fix step's argument

cols.size was calling Integer#size, which returns 8.

Fixing a bug of ruby/irb#209

ruby/irb@c93ae4be71

* [ruby/irb] Deal with different screen sizes

e.g. http://rubyci.s3.amazonaws.com/centos8/ruby-master/log/20210321T063003Z.fail.html.gz

ruby/irb@ddb3472ba2

* [ruby/irb] Have some right padding

instead of filling out an entire line

ruby/irb@6ac8f45f5f

* Suppress verbose messages

Get rid of warnings in the parallel test.

```
unknown command: "Switch to inspect mode."
```

* [ruby/irb] Change ripper_lex_without_warning to a class method

ruby/irb@d9f8abc17e

* [ruby/irb] Complete require and require_relative

ruby/irb@1c61178b4c

* [ruby/reline] Add Reline.ungetc to control buffer

ruby/reline@43ac03c624

* [ruby/reline] Reline.delete_text removes the current line in multiline

ruby/reline@da90c094a1

* [ruby/reline] Support preposing and postposing for Reline.completion_proc

ruby/reline@1f469de90c

* [ruby/reline] Suppress crashing when completer_{quote,word_break}_characters is empty

ruby/reline@c6f1164942

* [ruby/irb] fix completion test when out-of-place build

* [ruby/irb] Cache completion files to require

ruby/irb@612ebcb311

* [ruby/irb] Always add input method when calling Irb.new in tests

When passes input method as nil to Context.new through Irb.new,
ReidlineInputMethod.new is executed and the global internal state of Reline is
rewritten, therefore other tests are failed in the Ruby repository. This
commit changes to use TestInputMethod.

ruby/irb@010dce9210

* [ruby/irb] Prevent the completion from crashing if rdoc is missing

There are cases where ruby is installed without rdoc and e.g.
lib/irb/cmd/help.rb also handles the LoadError

Here is how to replicate the issue:

```
$ docker run -it alpine:3.13.3 sh

/ # apk add ruby ruby-irb ruby-io-console

/ # irb

irb(main):001:0> Class[TAB][TAB]
```

And you end up with something like:

```
irb(main):001:0> ClassTraceback (most recent call last):
        34: from /usr/bin/irb:23:in `<main>'
        33: from /usr/bin/irb:23:in `load'
        32: from /usr/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>'
        31: from /usr/lib/ruby/2.7.0/irb.rb:400:in `start'
        30: from /usr/lib/ruby/2.7.0/irb.rb:471:in `run'
        29: from /usr/lib/ruby/2.7.0/irb.rb:471:in `catch'
        28: from /usr/lib/ruby/2.7.0/irb.rb:472:in `block in run'
        27: from /usr/lib/ruby/2.7.0/irb.rb:537:in `eval_input'
        26: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `each_top_level_statement'
        25: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `catch'
        24: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `block in each_top_level_statement'
        23: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `loop'
        22: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:154:in `block (2 levels) in each_top_level_statement'
        21: from /usr/lib/ruby/2.7.0/irb/ruby-lex.rb:182:in `lex'
        20: from /usr/lib/ruby/2.7.0/irb.rb:518:in `block in eval_input'
        19: from /usr/lib/ruby/2.7.0/irb.rb:704:in `signal_status'
        18: from /usr/lib/ruby/2.7.0/irb.rb:519:in `block (2 levels) in eval_input'
        17: from /usr/lib/ruby/2.7.0/irb/input-method.rb:294:in `gets'
        16: from /usr/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
        15: from /usr/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
        14: from /usr/lib/ruby/2.7.0/reline.rb:175:in `readmultiline'
        13: from /usr/lib/ruby/2.7.0/reline.rb:238:in `inner_readline'
        12: from /usr/lib/ruby/2.7.0/reline.rb:238:in `loop'
        11: from /usr/lib/ruby/2.7.0/reline.rb:239:in `block in inner_readline'
        10: from /usr/lib/ruby/2.7.0/reline.rb:270:in `read_io'
         9: from /usr/lib/ruby/2.7.0/reline.rb:270:in `loop'
         8: from /usr/lib/ruby/2.7.0/reline.rb:311:in `block in read_io'
         7: from /usr/lib/ruby/2.7.0/reline.rb:240:in `block (2 levels) in inner_readline'
         6: from /usr/lib/ruby/2.7.0/reline.rb:240:in `each'
         5: from /usr/lib/ruby/2.7.0/reline.rb:241:in `block (3 levels) in inner_readline'
         4: from /usr/lib/ruby/2.7.0/reline/line_editor.rb:820:in `input_key'
         3: from /usr/lib/ruby/2.7.0/reline/line_editor.rb:608:in `complete'
         2: from /usr/lib/ruby/2.7.0/irb/completion.rb:269:in `block in <module:InputCompletor>'
         1: from /usr/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
/usr/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- rdoc (LoadError)
```

ruby/irb@a2d299c2ac

* [ruby/irb] Suppress verbose messages in the parallel test

`:VERBOSE` flag needs to be set prior to `IRB::Irb.new`.

ruby/irb@78604682d9

* [ruby/irb] SIGINT should raise Interrupt after IRB session

ruby/irb@5832cfe75b

* [ruby/irb] Colorize `__END__` as keyword

ruby/irb@9b84018311

* [ruby/irb] Add show_source command

ruby/irb@108cb04352

* [ruby/reline] Reset @rest_height when clear screen

ruby/reline@3a7019b0d5

* [ruby/irb] process multi-line pastes as a single entity

this allows pasting leading-dot chained methods correctly:

```ruby
class A
  def a; self; end
  def b; true; end
end

a = A.new

a
 .a
 .b
```

will properly return `true` instead of erroring on the `.a` line:

```
irb(main):001:1*     class A
irb(main):002:1*       def a; self; end
irb(main):003:0>     end
irb(main):004:0*
irb(main):005:0>     a = A.new
irb(main):006:0*
irb(main):007:0>     a
irb(main):008:0>      .a
irb(main):009:0>      .a
=> #<A:0x00007f984211fbe8>
```

ruby/irb@45aeb52575

* [ruby/irb] Add yamatanooroti test example

ruby/irb@279155fcee

* [ruby/irb] Add test for multiline paste

ruby/irb@e93c9cb54d

* [ruby/irb] Evaluate each toplevel statement

ruby/irb@bc1b1d8bc3

* [ruby/irb] Version 1.3.5

ruby/irb@22e2ddf715

* [ruby/reline] Version 0.2.5

ruby/reline@22ce5651e5

Co-authored-by: Jeremy Evans <code@jeremyevans.net>
Co-authored-by: Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Aleksandar Ivanov <aivanov92@gmail.com>
Co-authored-by: Koichi Sasada <ko1@atdot.net>
Co-authored-by: Cody Cutrer <cody@instructure.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant