Граф коммитов

344 Коммитов

Автор SHA1 Сообщение Дата
aycabta 266ffdde8e [ruby/reline] Continuous insertion buffering
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

https://github.com/ruby/reline/commit/7d87ac5a12
2020-12-05 02:58:58 +09:00
Yusuke Endoh 76cac4c05a [ruby/reline] Improve the performance of `get_mbchar_width`
It is about three times faster to use one big regexp instead of
sequential matching.

https://github.com/ruby/reline/commit/e36f6c0707
2020-12-05 02:58:58 +09:00
aycabta b3e0db8060 [ruby/reline] Version 0.1.6
https://github.com/ruby/reline/commit/20a7806815
2020-12-05 02:58:58 +09:00
Yusuke Endoh 9461cceb8a [ruby/reline] Update the generator script too
https://github.com/ruby/reline/commit/8b0926820a
2020-12-05 02:58:58 +09:00
aycabta 55cc397a87 [ruby/reline] Suppress callbacks in pasting
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.

https://github.com/ruby/reline/commit/beec3399a8
2020-12-05 02:58:58 +09:00
Yusuke Endoh 6a51d393ca [ruby/reline] Improve the regexps for EastAsianWidth
A character class is about three times faster than Regexp alternatives

https://github.com/ruby/reline/commit/57c7955c55
2020-12-05 02:58:58 +09:00
aycabta 4af2e4111b [ruby/reline] Deduplicate completed items
https://github.com/ruby/reline/commit/2dabf0c786
2020-12-05 02:58:58 +09:00
aycabta e16e481385 [ruby/reline] Use yamatanooroti 0.0.6 for supporting startup_message on Windows
https://github.com/ruby/reline/commit/167423b664
2020-12-05 02:58:58 +09:00
aycabta 87f51c7e66 [ruby/reline] Use startup_option instead of startup wait
https://github.com/ruby/reline/commit/a63ce6371c
2020-12-05 02:58:58 +09:00
aycabta d5cf3fcd68 [ruby/reline] Update to Unicode 13.0.0
https://github.com/ruby/reline/commit/d49bb0aa34
2020-12-05 02:58:58 +09:00
aycabta 3a3e933033 [ruby/reline] Version 0.1.5
https://github.com/ruby/reline/commit/c8a419beb5
2020-09-14 02:12:12 +09:00
aycabta ae508633b7 Suppress "assigned but unused variable" warning 2020-09-12 10:07:18 +09:00
aycabta 777d536749 [ruby/reline] Support for word movement escape sequences in iTerm2
https://github.com/ruby/reline/commit/187235f88c
2020-09-12 08:35:52 +09:00
aycabta f36dc2b6de [ruby/reline] Treat prompt correctly when Reline.prompt_proc isn't set
https://github.com/ruby/reline/commit/9c9ba0eff3
2020-09-12 08:35:52 +09:00
aycabta ce389ade45 [ruby/reline] Move cursor to currect vertical pos after rendering a logical line
https://github.com/ruby/reline/commit/9b932df544
2020-09-12 08:35:52 +09:00
aycabta 9baf1bd0a4 [ruby/reline] Stop using chomp option of lines method
https://github.com/ruby/reline/commit/3e2f55c3e0
2020-09-12 08:35:52 +09:00
aycabta 0ec19cc843 [ruby/reline] Stop erasing chars after the cursor at eol
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.

https://github.com/ruby/reline/commit/e96ec97b02
2020-09-12 08:35:52 +09:00
aycabta 2e34b35a0f [ruby/reline] Skip the nil obtained from getc
The nil means there is nothing in the buffer in some systems. Incidentally,
Errno::EIO is raised if the I/O is closed.

https://github.com/ruby/reline/commit/c698634e74
2020-09-12 08:35:52 +09:00
Yoshinao Muramatu a840ef8569 [ruby/reline] not clear scrollback buffer
https://github.com/ruby/reline/commit/ba800f1461
2020-09-12 08:35:51 +09:00
Yoshinao Muramatu 0862744010 [ruby/reline] clear_screen use Windows API
https://github.com/ruby/reline/commit/2c5ee54cb3
2020-09-12 08:35:51 +09:00
aycabta 770e66030a [ruby/reline] Use str.encoding by default for split_by_width
https://github.com/ruby/reline/commit/2d32604c9e
2020-09-12 08:35:51 +09:00
Hiroshi SHIBATA b194973dcd
Revert the related commits about `Tempfile.open` change.
Start with fa21985a7a
  to d7492a0be8
2020-09-09 21:10:48 +09:00
Benoit Daloze 3beecafc2c Fix usages of Tempfile.open(&block) that expected the file to still be there after the block 2020-08-29 12:30:24 +02:00
aycabta 1f09c43628 [ruby/reline] Move width calculator methods to Reline::Unicode
https://github.com/ruby/reline/commit/f348ecd9f5
2020-08-28 11:05:18 +09:00
tompng cdd7d41046 [ruby/reline] fix cursor_pos regexp match
https://github.com/ruby/reline/commit/1dd80ef188
2020-08-28 11:05:18 +09:00
Nobuyoshi Nakada 4f697bcf73
Strip trailing spaces [ci skip] 2020-08-18 20:10:34 +09:00
Nobuyoshi Nakada f2435c1508 [ruby/reline] Get rid of loading pathname unnecessarily
https://github.com/ruby/reline/commit/9bd54b7f1c
2020-08-18 19:09:58 +09:00
Maciej Mensfeld d1b06229fa [ruby/reline] Use the standard SPDX ID for license in gemspec
It is better to use SPDX ID for license field:

https://guides.rubygems.org/specification-reference/#license=

ref: https://spdx.org/licenses/Ruby.html
https://github.com/ruby/reline/commit/8468a727e5
2020-08-18 19:09:43 +09:00
aycabta ad24eaabfd [ruby/reline] Remove duplicated line of code
Co-authored-by: Quentin Sabah <quentin.sabah@gmail.com>

https://github.com/ruby/reline/commit/5526e9f7ee
2020-08-18 19:08:50 +09:00
aycabta 80a7358cfc [ruby/reline] Keep original characters in inputrc
https://github.com/ruby/reline/commit/96583c6336
2020-08-18 19:08:40 +09:00
Mark Delk 44b24ab4c1 [ruby/reline] Support mode icon
Co-authored-by: aycabta <aycabta@gmail.com>

https://github.com/ruby/reline/commit/067b618123
2020-08-18 19:08:32 +09:00
aycabta 568615d395 [ruby/reline] Use single quotes for non-expanded string literals
https://github.com/ruby/reline/commit/3bf7c7d722
2020-08-18 19:08:11 +09:00
aycabta 215fe54777 [ruby/reline] Check Errno::EIO
Catch Errno::EIO what will be occurred if the console terminates I/O before
Reline finishes rendering.

https://github.com/ruby/reline/commit/e51eaa6d43
2020-08-18 19:04:31 +09:00
Tomás Pollak f0d3d4fedb [ruby/reline] Add home/end mapping for urxvt and relatives
https://github.com/ruby/reline/commit/c30b293f1c
2020-08-18 19:03:27 +09:00
aycabta f56e05fa7d [ruby/reline] Remove unnecessary TODO commnet
https://github.com/ruby/reline/commit/23c67fb7b3
2020-05-17 19:26:53 +09:00
aycabta fc2a121c7c [ruby/reline] If history-size isn't numeric, it should be 500
https://tiswww.case.edu/php/chet/readline/readline.html#IDX25

> If an attempt is made to set history-size to a non-numeric value, the maximum
> number of history entries will be set to 500.

https://github.com/ruby/reline/commit/acf0437280
2020-05-17 19:26:53 +09:00
aycabta 7a7854d8c1 Some I/O in test doesn't have "position"
Just returns column 1 for ambiguous width because this I/O is not tty and can't
seek.
2020-05-12 02:53:44 +09:00
aycabta 009092b04c [ruby/reline] Add URL reference of history-size
https://github.com/ruby/reline/commit/13420197b8
2020-04-29 19:13:14 +09:00
aycabta 213ebec7a7 [ruby/reline] Version 0.1.4
https://github.com/ruby/reline/commit/298144b06a
2020-04-29 19:13:14 +09:00
aycabta 4859352df6 [ruby/reline] Negative history_size means unlimited
And unlimited is default.

https://github.com/ruby/reline/commit/f5149c3ca6
2020-04-29 19:13:14 +09:00
aycabta d27fa87418 [ruby/reline] New items to history are dropped if history_size is zero
https://github.com/ruby/reline/commit/9bdbed9cbc
2020-04-29 19:13:14 +09:00
Nobuyoshi Nakada 0ac5009165 [ruby/reline] Ignore non-absolute XDG_CONFIG_HOME
https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
> All paths set in these environment variables must be absolute.
> If an implementation encounters a relative path in any of these
> variables it should consider the path invalid and ignore it.

https://github.com/ruby/reline/commit/45af6eea77
2020-04-29 19:13:14 +09:00
aycabta 9fb20711fd [ruby/reline] Treat home dir correctly
https://github.com/ruby/reline/commit/9b1327d2f4
2020-04-24 16:46:36 +09:00
aycabta 81b0b79197 [ruby/reline] Support XDG_CONFIG_HOME
In the XDG Specification, if ~/.config/readline/inputrc exists, then ~/.inputrc
should not be read, but for compatibility with GNU Readline, if ~/.inputrc
exists, then it is given priority.

https://github.com/ruby/reline/commit/97f1e7db04
2020-04-24 16:45:07 +09:00
aycabta db0d850d4e [ruby/reline] Add ed_search_next_history
https://github.com/ruby/reline/commit/ca750b676b
2020-04-18 23:12:52 +09:00
aycabta bea3e31e5f [ruby/reline] Add ed_search_prev_history
https://github.com/ruby/reline/commit/e9ae288825
2020-04-18 23:12:52 +09:00
aycabta 08c1c3f220 [ruby/reline] Use vi_search_{prev,next} to incremental search
https://github.com/ruby/reline/commit/cab312f584
2020-04-18 23:09:31 +09:00
aycabta afe997857e [ruby/reline] Rename search_history with incremental_search_history
https://github.com/ruby/reline/commit/d563063ea0
2020-04-18 23:09:31 +09:00
aycabta 90913bfabe [ruby/reline] Suppress error in case INPUTRC env is empty
https://github.com/ruby/reline/commit/bce7e7562b
2020-03-26 17:41:21 +09:00
aycabta f245fb1ab8 [ruby/reline] Work with wrong $/ value correctly
https://github.com/ruby/reline/commit/962ebf5a1b
2020-03-26 17:41:21 +09:00
aycabta 12ae7b3369 [ruby/reline] Version 0.1.3
https://github.com/ruby/reline/commit/ea2b182466
2020-02-15 21:52:03 +09:00
aycabta 2efb38e766 [ruby/reline] Use IO#write instead of IO#print
IO#print always adds a string of $\ automatically.

https://github.com/ruby/reline/commit/a93119c847
2020-02-14 22:47:27 +09:00
aycabta 97b583d68b [ruby/reline] Organize special keys escape sequences
https://github.com/ruby/reline/commit/41deb1a3d9
2020-02-09 02:54:41 +09:00
aycabta 06c37fa5b4 [ruby/reline] Bypass cursor down when a char is rendered at eol on Windows
A newline is automatically inserted if a character is rendered at eol on
Windows command prompt.

https://github.com/ruby/reline/commit/4bfea07e4a
2020-02-02 03:28:20 +09:00
aycabta 16d4774da1 [ruby/reline] Fix Reline::Windows#scroll_down
I mistook Right and Bottom.

https://github.com/ruby/reline/commit/8be401c5f5
2020-02-02 03:28:07 +09:00
aycabta 5d124a3b68 [ruby/reline] Support GNOME style Home/End key sequences [Bug #16510]
https://github.com/ruby/reline/commit/788f0df845
2020-01-29 15:11:59 +09:00
aycabta c257d81186 Always use UTF-8 for Reline::GeneralIO on Windows 2020-01-26 12:57:13 +09:00
Lars Kanis d1166c6d39 Reline: Use a more robust detection of MinTTY
The previous detection per get_screen_size fails when stdout is passed
to a pipe. That is the case when running ruby tests in parallel ("-j" switch).
In this case Reline believes that it's running on MinTTY and the tests
are running with ANSI IOGate instead of the Windows adapter on MINGW.
So parallel test results were different to that of a single process.
This commit fixes these differencies.

The code is taken from git sources and translated to ruby.
NtQueryObject() is replaced by GetFileInformationByHandleEx(), because
NtQueryObject() is undocumented and is more difficult to use:
  c5a03b1e29/compat/winansi.c (L558)
2020-01-21 21:26:58 +09:00
aycabta 2943ebd240 [ruby/reline] Implement vi_change_meta
https://github.com/ruby/reline/commit/8538e0e10f
2020-01-21 09:52:32 +09:00
aycabta 3b407abe9b [ruby/reline] Implement vi_prev_char and vi_to_prev_char
https://github.com/ruby/reline/commit/0ad3ee63fa
2020-01-20 19:13:19 +09:00
aycabta b17797a694 [ruby/reline] Implement vi_to_next_char
https://github.com/ruby/reline/commit/066ecb0a21
2020-01-20 19:13:19 +09:00
aycabta 800c2a8e4c Implement vi_insert_at_bol and vi_add_at_eol 2020-01-17 01:37:01 +09:00
aycabta f8ea2860b0 Introduce an abstracted structure about the encoding of Reline
The command prompt on Windows always uses Unicode to take input and print
output but most Reline implementation depends on Encoding.default_external.
This commit introduces an abstracted structure about the encoding of Reline.
2020-01-14 15:40:38 +09:00
aycabta 7392083c2f Support history-size in .inputrc correctly 2020-01-06 21:50:48 +09:00
aycabta 439e1ccd08 Complete indented and quoted string correctly
def foo
    ''.upca[TAB]

This will be completed to be:

  def foo
  ''.upcase

The indent was gone. This commit fixes the bug.
2020-01-06 01:20:24 +09:00
aycabta da028a4fbf Rescue EOFError
If C-d is pressed before IRB is ready, IRB crashes because EOFError occurs.
2020-01-05 22:48:39 +09:00
KOBAYASHI Shuji 9b928fa443 [ruby/reline] Sort completion list
#### Legacy mode:

  ```console
  $ irb --legacy
  irb(main):001:0> l[TAB][TAB]
  lambda           load             local_variables  loop
  ```

#### Before this patch:

  ```console
  $ irb
  irb(main):001:0> l[TAB][TAB]
  local_variables
  loop
  lambda
  load
  ```

#### After this patch:

  ```console
  $ irb
  irb(main):001:0> l[TAB][TAB]
  lambda
  load
  local_variables
  loop
  ```

https://github.com/ruby/reline/commit/6074069c7d
2020-01-05 11:28:01 +09:00
Yusuke Endoh 337ba56aff [ruby/reline] Degenerate the terminal size to [$LINES, $COLUMNS] if it is unknown
This is a workaround for https://github.com/ruby/irb/issues/50

https://github.com/ruby/reline/commit/5725677d1a
2019-12-31 23:32:24 +09:00
aycabta 778634f778 Drop an invalid char as UTF-8 2019-12-27 16:02:30 +09:00
aycabta e1e1d92277 [ruby/reline] Version 0.1.2
https://github.com/ruby/reline/commit/b41024e317
2019-12-25 18:47:47 +09:00
aycabta 8a705245e5 Save last breaking point to complete 2019-12-25 18:45:24 +09:00
aycabta 2462427008 [ruby/reline] Version 0.1.1
https://github.com/ruby/reline/commit/923f97d068
2019-12-25 10:08:39 +09:00
aycabta ed5b4bae6a The behavior of vi_end_of_transmission should be the same of vi_list_or_eof 2019-12-25 09:52:37 +09:00
aycabta 622e47a1db ^D on non-empty line in vi mode behaves like Enter 2019-12-25 09:34:13 +09:00
aycabta 7758849cb5 Remove unused variable 2019-12-24 18:39:48 +09:00
aycabta 42e2a322f1 The delete-char-or-list shows completed list when called at end of line
It doesn't behave the same as the delete-char.
2019-12-24 18:34:43 +09:00
aycabta 5e17834fc9 [ruby/reline] Version 0.1.0
https://github.com/ruby/reline/commit/55d4dfec1e
2019-12-24 09:56:40 +09:00
Nobuyoshi Nakada 679bc4f9cb [ruby/reline] Use IO#raw to read one byte
https://github.com/ruby/reline/commit/be17740e82
2019-12-23 02:11:22 +09:00
Nobuyoshi Nakada efd4a11ada Support multibyte input 2019-12-22 11:46:43 +09:00
Yusuke Endoh fa1bf8ab37 [ruby/reline] Support Ctrl+right as em_next_word, and Ctrl+left as ed_prev_word
https://github.com/ruby/reline/commit/e98ad3b486
2019-12-22 05:35:03 +09:00
aycabta 0835a971ef Remove TODO comment 2019-12-22 01:57:35 +09:00
Yusuke Endoh ec1de789a9 [ruby/reline] Preserve the input buffer across cursor_pos
The old version of cursor_pos discards the input buffer, which made IRB
ignore the input immediately after IRB is invoked.

This change keeps the input before cursor_pos by using ungetc.

https://github.com/ruby/reline/commit/4a8cca331f
2019-12-22 01:57:35 +09:00
Nobuyoshi Nakada 7fd6077d98 [ruby/reline] Consider Reline::ANSI.input at prep
https://github.com/ruby/reline/commit/b111cde3c3
2019-12-22 01:57:35 +09:00
Nobuyoshi Nakada e68999c82c
Fixed misspellings
Fixed misspellings reported at [Bug #16437], for default gems.
2019-12-20 12:19:45 +09:00
aycabta d616926af9 Remove an unnecessary variable 2019-12-17 14:21:07 +09:00
aycabta 4f9a4c1a8f Remove unnecessary branches 2019-12-17 13:59:19 +09:00
Thomas Leitner a1713bedb1 [ruby/reline] Implement completion_append_character
There is already the possibility to set Reline.completion_append_character.
However, it is not used by the line editor.

https://github.com/ruby/reline/commit/ab798931b9
2019-12-17 13:19:37 +09:00
Nobuyoshi Nakada 11db4d3a3b [ruby/reline] Disable any implementation-defined special control characters
Including dsusp, lnext, and so on.

https://github.com/ruby/reline/commit/a44abe586b
2019-12-17 13:19:37 +09:00
aycabta 618d091151 Support change search direction 2019-12-17 13:10:39 +09:00
aycabta a14a0244b4 Support forward-search-history by C-s 2019-12-17 13:07:19 +09:00
aycabta c2dfc6d869 Show a menu before a document
IRB should show a menu first if a completed list has plural items. But just
shows document without menu if a completed list with plural items includes a
perfect matched item. The behavior is a bug. This commit fixes it.
2019-12-13 08:54:22 +09:00
aycabta 7d991a0571 Suppress to crash IRB if completed list has nil 2019-12-12 08:40:50 +09:00
aycabta 6a7af800db Add a message for CompatibilityError 2019-12-11 11:36:40 +09:00
aycabta ec54ac9381 Support Readline.completion_quote_character by Reline 2019-12-11 11:13:05 +09:00
aycabta fe0df7dcfc Change encoding of completion strings 2019-12-10 17:28:09 +09:00
aycabta 6a22b2a091 Support completion with case-insensitive fashion
Reline performs completion in a case-insensitive fashon if
Readline.completion_case_fold or completion-ignore-case of .inputrc are set
"on".
2019-12-10 07:07:43 +09:00
aycabta a14c01441b Fix encoding compatibility checking of completion correctly 2019-12-09 14:21:20 +09:00
aycabta e72ffc55ba [ruby/reline] Support Ruby 2.5 or later for String#grapheme_clusters
https://github.com/ruby/reline/commit/33e8c8f15b
2019-12-07 20:01:53 +09:00
aycabta e3587ed849 Support disable-completion 2019-12-05 09:02:23 +09:00
aycabta ad8fbf444a Fix variable catch 2019-12-05 09:02:23 +09:00