* [ruby/irb] Suppress error when File::ALT_SEPARATOR is nil
96accf3b95
* [ruby/irb] Suppress colorize on Windows tests
5be9354cf9
* [ruby/irb] The command "irb_info" should show RUBY_PLATFORM
39d1cd874f
* [ruby/irb] Fix inverse separator condition
33f933196f
* [ruby/reline] Return 1 when char width not found
This fixesruby/reline#261.
3cf1213014
* [ruby/reline] Avoid tripping over nil prompt
d4d9d3e3d4
* [ruby/reline] Move script files for yamatanooroti tests
03031b885d
* [ruby/reline] Add a test for suppressing crash when dynamic prompt returns empty
ref. https://github.com/ruby/reline/pull/262b98bc3c329
* [ruby/reline] We still need support new and legacy behavior.
Revert "Support for change in Windows-specific behavior at eol"
This reverts commit cad4de6ee841b43f3f0e441626f9415c3eda0f82.
646587fc2c
* [ruby/reline] check ENABLE_VIRTUAL_TERMINAL_PROCESSING flag and switch eof processing
3535676689
* [ruby/reline] Use UTF-8 only for width calc, rest uses original encoding
I confirmed that libvterm supports only which are UTF-8, US ASCII, UK, and
DEC graphics by reading source code, so can't test this patch by
yamatanoorogi gem through vterm gem for now.
This fixesruby/irb#190.
44596c0cc7
* [ruby/reline] fix Reline::Windows.getconsolemode buffer
use double quotes to properly convert the \000 escape sequence.
236dfe5683
* [ruby/irb] Version 1.3.4
ab9852ccc5
* [ruby/reline] Version 0.2.4
462f971bd3
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Eamonn Webster <eamonn.webster@gmail.com>
Co-authored-by: Yoshinao Muramatu <ysno@ac.auone-net.jp>
Co-authored-by: cremno <cremno@mail.ru>
* [ruby/irb] Stub a screen size for tests
6663057083
* [ruby/irb] Support GitHub Actions
8e9e6c4037
* [ruby/irb] Stub a screen size for test_context
http://ci.rvm.jp/logfiles/brlog.trunk-random1.20210119-074232ea87592d4a
* [ruby/irb] Use a real screen size for pp by default
9b9300dec2
* [ruby/irb] Rescue Errno::EINVAL on IRB pp
20210119T070008Z.log.html.gz
is caused by:
/export/home/chkbuild/chkbuild-gcc/tmp/build/20210119T150010Z/ruby/lib/reline/ansi.rb:157:in `winsize': Invalid argument - <STDIN> (Errno::EINVAL)
from /export/home/chkbuild/chkbuild-gcc/tmp/build/20210119T150010Z/ruby/lib/reline/ansi.rb:157:in `get_screen_size'
from /export/home/chkbuild/chkbuild-gcc/tmp/build/20210119T150010Z/ruby/lib/reline.rb:168:in `get_screen_size'
from /export/home/chkbuild/chkbuild-gcc/tmp/build/20210119T150010Z/ruby/lib/forwardable.rb:238:in `get_screen_size'
from /export/home/chkbuild/chkbuild-gcc/tmp/build/20210119T150010Z/ruby/lib/irb/color_printer.rb:7:in `pp'
from -e:1:in `<main>'
1719514598
* [ruby/irb] Split test files for IRB::Color and IRB::ColorPrinter
d95e8daab3
* [ruby/irb] Undefine unused constants
eea9c16804
* [ruby/irb] Remove pp-specific stub from TestColor
because it was for TestColorPrinter
7569206fd4
* [ruby/irb] Delete a doodle-level memo comment...
fc3e1d9e0c
* [ruby/irb] Indent correctly with keyword "for" and "in"
47c83ea724
* [ruby/irb] Indent correctly with method calling with receiver
e7c68e74a0
* [ruby/irb] add `IRB::FileInputMethod.open` to ensure closing associated File
* tweak some methods not to raise exception after `#close`
* use it in `IRB::IrbLoader#{source_file,load_file}
ec2947acbd
* [ruby/irb] use `RubyLex::TerminateLineInput` appropriately [Bug #17564]
* using the appropriciate exception instead of `break` so that the session
can be continue after the `irb_source` and `irb_load` commands
* suppress extra new line due to one more `#prompt` call
bdefaa7cfd
* [ruby/irb] specify the `VERBOSE` to `false` and fix tests to fit
502c590925
* In test, need to pass a context to IRB::WorkSpace.new explicitly
* Fix absolute path predicate on Windows
A path starts with '/' is not an absolute path on Windows, because
of drive letter or UNC.
* [ruby/irb] follow up the actual line number
7aed8fe3b1
* [ruby/irb] Add info.rb to gemspec
adbba19adf
* [ruby/irb] Allow "measure" command to take block
20f1ca23e9
* [ruby/irb] Enable to reassign a new block with "measure" command
b444573aa2
* [ruby/reline] Cache pasting state in processing a key
Because it's too slow.
The rendering time in IRB has been reduced as follows:
start = Time.now
def each_top_level_statement
initialize_input
catch(:TERM_INPUT) do
loop do
begin
prompt
unless l = lex
throw :TERM_INPUT if @line == ''
else
@line_no += l.count("\n")
next if l == "\n"
@line.concat l
if @code_block_open or @ltype or @continue or @indent > 0
next
end
end
if @line != "\n"
@line.force_encoding(@io.encoding)
yield @line, @exp_line_no
end
break if @io.eof?
@line = ''
@exp_line_no = @line_no
@indent = 0
rescue TerminateLineInput
initialize_input
prompt
end
end
end
end
puts "Duration: #{Time.now - start} seconds"
0.22sec -> 0.14sec
b8b3dd52c0
* [ruby/reline] Initialize uninitialized variables in tests
25af4bb64b
* [ruby/reline] Remove an unused variable
123ea51166
* [ruby/reline] Scroll down when ^C is pressed
6877a7e3f5
* [ruby/reline] Show all lines higher than the screen when finished
On Unix-like OSes, logs prior to the screen are not editable. When the code
is higher than the screen, the code is only shown on the screen until input
is finished, but when it is finished, all lines are outputted.
8cd9132a39
* [ruby/reline] Handle past logs correctly when the code is higher than the screen
f197139b4a
* [ruby/reline] Update cursor info by inserting newline even if not in pasting
92d314f514
* [ruby/reline] Move cursor just after the last line when finished
ba06e4c480
* [ruby/reline] The vi_histedit supports multiline
This closesruby/reline#253.
f131f86d71
* [ruby/reline] Autowrap correctly when inserting chars in the middle of a line
ebaf37255f
* [ruby/reline] Terminate correctly in the middle of lines higher than the screen
e1d9240ada
* [ruby/irb] Version 1.3.3
4c87035b7c
* [ruby/reline] Version 0.2.3
b26c7d60c8
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Co-authored-by: Nobuhiro IMAI <nov@yo.rim.or.jp>
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: ima1zumi <mariimaizumi5@gmail.com>
* Get rid of inconsistent dll linkages against vcpkg readline
* [ruby/irb] Enhance colored inspect output
dffcdb5269
* [ruby/irb] Add color_printer.rb to gemspec
b4df0fd8b2
* [ruby/irb] Fix failing tests
7723ade899
* irb: add more syntax errors colorizing support (#3967)
* [ruby/irb] Do not colorize partially-correct inspect
This is to prevent a yellow-mixed output for ActiveSupport::TimeWithZone.
Follows up https://github.com/ruby/irb/pull/159 and https://github.com/ruby/ruby/pull/3967.
a5804c3560
* [ruby/irb] Remove unnecessary ignore_error in dispatch_seq
Just forgotten in a5804c3560e42e548793
* Increase timeout for reline with --jit-wait
for failures like:
http://ci.rvm.jp/logfiles/brlog.trunk-mjit-wait.20201229-130509http://ci.rvm.jp/logfiles/brlog.trunk-mjit-wait.20201229-165132http://ci.rvm.jp/logfiles/brlog.trunk-mjit-wait.20201228-015519
* [ruby/irb] Stringify when a non-object is passed to PP#text
If a nested object is passed to #pp, it may be sometimes passed to the #text
method as an object without being stringified.
This is fixed on the Ruby main repository;
433a3be86a
but it was a bug of Ripper so still needs this workaround for using irb
as a gem on Ruby 3.0.0 or earlier.
Co-authored-by: k0kubun <takashikkbn@gmail.com>
8d13df22ee
* [ruby/irb] Newline in oneliner def doesn't reset indent
This closesruby/irb#132.
43456dcf5e
* [ruby/irb] Escape invalid byte sequence in Exception
This fixesruby/irb#141.
0815317d42
* [ruby/irb] Handle indentations related to keyword "do" correctly
This fixesruby/irb#158.
964643400b
* [ruby/irb] Heredoc may contain multiple newlines in a single token
Use the start token as the indentation criteria so that it works properly in
heredoc.
ref. https://github.com/ruby/reline/pull/2429704808dfd
* [ruby/irb] Use Ripper::Lexer#scan to take broken tokens
ref. https://github.com/ruby/reline/pull/24254f90cb6c9
* [ruby/irb] Use error tokens if there are no correct tokens in the same place
For example, the broken code "%www" will result in only one error token.
9fa39a7cf3
* [ruby/irb] Ensure to restore $VERBOSE
cef474a76a
* 600x larger timeout for Reline
I didn't notice it's msec. 2.5s is too short.
http://ci.rvm.jp/results/trunk-mjit-wait@phosphorus-docker/3311385
* [ruby/irb] fix typo in `IRB::Irb#convert_invalid_byte_sequence`
d09d3c3d68
* [ruby/irb] do not escape a predicate method for doc namespace
* Fixes#88d431a30af4
* [ruby/irb] refactoring an error handling in `IRB::Inspector`
* moved rescue clause to `#inspect_value` to catch all failures in inspectors
* test with all (currently five kind of) inspect modes
- tweaked the input due to only `Marshal` can inspect(dump) a `BasicObject`
9d112fab8e
* [ruby/irb] Use Exception#full_message to show backtrace in the correct order
[Bug #17466]
1c76845cca
* [ruby/irb] Fix BACK_TRACE_LIMIT logic
30dc5d43fe
* irb: Drop lines from backtrace for tests in Ruby repository
* [ruby/reline] Update cursor correctly when just cursor moving
This fixesruby/reline#236 and ruby/reline#239.
3e3c89d00b
* [ruby/reline] Correct var names in Reline were different from vi-*-mode-string
8255fc93b9
* [ruby/reline] Remove debug print
d7fbaedc6a
* [ruby/reline] Suppress crashing when auto_indent_proc returns broken indent info
Co-authored-by: Juanito Fatas <me@juanitofatas.com>
7c24276275
* [ruby/reline] Suppress crashing when dynamic_prompt_proc returns a broken prompt list
Co-authored-by: Juanito Fatas <me@juanitofatas.com>
558f7be168
* [ruby/reline] Suppress auto indent for adding newlines in pasting
Co-authored-by: Juanito Fatas <me@juanitofatas.com>
074bb017a7
* [ruby/reline] Add acknowledgments and license for rb-readline
19df59b916
* [ruby/irb] Fix comment, irb gem supports 2.5.0 or older
36118015ba
* should use `assert_include` here.
Random ordering test can introduce antoher candidate so it should be
`assert_include`.
* [ruby/irb] Add missing require
This is useful if you want to use IRB::ColorPrinter as a library like:
```
begin
require 'irb/color_printer'
IRB::ColorPrinter.pp(obj)
rescue LoadError
pp(obj)
end
```
f8461691c7
* [ruby/irb] Make IRB::ColorPrinter.pp compatible with PP.pp
The incompatible interface is not helpful, again if you want to use it
as a standalone library, falling it back to PP.
Original PP.pp also ends with `out << "\n"`.
4c74c7d84c
* Suppress constant redefinition warnings
* Fix the failing test with XDG_CONFIG_HOME
* [ruby/irb] Version 1.3.1
c230d08911
* [ruby/reline] Handle ed_search_{prev,next}_history in multiline correctly
The current line was being handled incorrectly when displaying the hit
history, so it has been fixed to be correct.
a3df4343b3
* [ruby/reline] Move the cursor correctly when deleting at eol
This fixesruby/reline#246.
07a73ba601
* [ruby/reline] Version 0.2.1
a3b3c6ee60
* [ruby/reline] Initialize a variable just in case
29b10f6e98
* [ruby/reline] Tests with yamatanooroti don't need chdir
Because of chdir, log files ware created in temporary directries on Windows.
200b469a68
* [ruby/reline] Windows needs more times to wait rendering
53ff2b09c7
* [ruby/reline] Support for change in Windows-specific behavior at eol
The behavior of automatically moving the cursor to the next line when
displaying a char at the eol on Windows suddenly disappeared.
cad4de6ee8
* [ruby/reline] Reline::Windows.erase_after_cursor erases attributes too
68b961dfc7
* [ruby/irb] [ruby/irb] [ruby/reline] Version 0.2.2
dfb710946f1a1cdf9628fe99faf8bd
* [ruby/irb] handle `__ENCODING__` as a keyword as well
a6a33d908f
* [ruby/irb] handle repeated exception separately
fcf6b34bc5
* [ruby/irb] skip a failling test on TruffleRuby
* due to the difference of backtrace pointed out by @aycabta
5e00a0ae61
* [ruby/irb] Version 1.3.2
a7699026cc
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Co-authored-by: Nobuhiro IMAI <nov@yo.rim.or.jp>
Co-authored-by: Koichi Sasada <ko1@atdot.net>
Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>
The rendering time in IRB has been reduced as follows:
start = Time.now
def each_top_level_statement
initialize_input
catch(:TERM_INPUT) do
loop do
begin
prompt
unless l = lex
throw :TERM_INPUT if @line == ''
else
@line_no += l.count("\n")
next if l == "\n"
@line.concat l
if @code_block_open or @ltype or @continue or @indent > 0
next
end
end
if @line != "\n"
@line.force_encoding(@io.encoding)
yield @line, @exp_line_no
end
break if @io.eof?
@line = ''
@exp_line_no = @line_no
@indent = 0
rescue TerminateLineInput
initialize_input
prompt
end
end
end
end
puts "Duration: #{Time.now - start} seconds"
0.33sec -> 0.22sec
496c6a1892
The rendering time in IRB has been reduced as follows:
start = Time.now
[{"_id"=>"5f9072a4589a06d2d74b6028",
"index"=>0,
"guid"=>"6b3051e2-dbc7-4537-bdb9-6cd7bb5358a7",
"isActive"=>true,
"balance"=>"$1,442.84",
"picture"=>"http://placehold.it/32x32",
"age"=>34,
"eyeColor"=>"blue",
"name"=>{"first"=>"Ward", "last"=>"Levy"},
"company"=>"HYPLEX",
"email"=>"ward.levy@hyplex.us",
"phone"=>"+1 (867) 568-3319",
"address"=>"867 Cobek Court, Clara, Maryland, 3254",
"about"=>
"Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing.",
"registered"=>"Monday, May 25, 2015 6:51 AM",
"latitude"=>"16.001127",
"longitude"=>"-72.377848",
"tags"=>["dolore", "nostrud", "occaecat", "cillum", "nisi"],
"range"=>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
"friends"=>
[{"id"=>0, "name"=>"Alison Bryant"},
{"id"=>1, "name"=>"Ester Espinoza"},
{"id"=>2, "name"=>"Sullivan Kane"}],
"greeting"=>"Hello, Ward! You have 7 unread messages.",
"favoriteFruit"=>"apple"}]
puts "Duration: #{Time.now - start} seconds"
2.17sec -> 0.92sec
start = Time.now
"Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing."
puts "Duration: #{Time.now - start} seconds"
1.57sec -> 0.22sec
start = Time.now
def each_top_level_statement
initialize_input
catch(:TERM_INPUT) do
loop do
begin
prompt
unless l = lex
throw :TERM_INPUT if @line == ''
else
@line_no += l.count("\n")
next if l == "\n"
@line.concat l
if @code_block_open or @ltype or @continue or @indent > 0
next
end
end
if @line != "\n"
@line.force_encoding(@io.encoding)
yield @line, @exp_line_no
end
break if @io.eof?
@line = ''
@exp_line_no = @line_no
@indent = 0
rescue TerminateLineInput
initialize_input
prompt
end
end
end
end
puts "Duration: #{Time.now - start} seconds"
0.88sec -> 0.77sec
7d87ac5a12
IRB uses Reline's 3 dynamic real-time callbacks with calling Ripper;
output_modifier_proc, prompt_proc, and auto_indent_proc. These processing
times make the paste time too long.
beec3399a8
When the cursor is at the end of the line and erases characters after the
cursor, some terminals delete the character at the cursor position.
e96ec97b02