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

344 Коммитов

Автор SHA1 Сообщение Дата
aycabta 01235f800f [ruby/reline] Suppress auto indent for adding newlines in pasting
Co-authored-by: Juanito Fatas <me@juanitofatas.com>

https://github.com/ruby/reline/commit/074bb017a7
2021-01-08 13:25:18 +09:00
aycabta 76c9a3c8c6 [ruby/reline] Suppress crashing when dynamic_prompt_proc returns a broken prompt list
Co-authored-by: Juanito Fatas <me@juanitofatas.com>

https://github.com/ruby/reline/commit/558f7be168
2021-01-08 13:25:18 +09:00
aycabta 88af5085db [ruby/reline] Suppress crashing when auto_indent_proc returns broken indent info
Co-authored-by: Juanito Fatas <me@juanitofatas.com>

https://github.com/ruby/reline/commit/7c24276275
2021-01-08 13:25:18 +09:00
aycabta ea75aed98e [ruby/reline] Correct var names in Reline were different from vi-*-mode-string
https://github.com/ruby/reline/commit/8255fc93b9
2021-01-08 13:25:18 +09:00
aycabta 54c1dcba2b [ruby/reline] Update cursor correctly when just cursor moving
This fixes ruby/reline#236 and ruby/reline#239.

https://github.com/ruby/reline/commit/3e3c89d00b
2021-01-08 13:25:18 +09:00
aycabta 523b520b44 [ruby/reline] 0.2.0
https://github.com/ruby/reline/commit/064664c8f9
2020-12-25 01:29:18 +09:00
aycabta 9a7647d9eb [ruby/reline] Doesn't contain terminate spaces by cw
This closes ruby/reline#233.

https://github.com/ruby/reline/commit/4c3f2e2eae
2020-12-24 23:26:22 +09:00
aycabta 78421319d0 [ruby/reline] Use #bytesize for vi_replace_char
This closes ruby/reline#228.

https://github.com/ruby/reline/commit/8205fa0b00
2020-12-24 23:26:22 +09:00
aycabta 0db9842b2c [ruby/reline] Delete the last char of a line by dw
This closes ruby/reline#229.

https://github.com/ruby/reline/commit/3f0ae689c4
2020-12-24 23:26:22 +09:00
aycabta 8d5d139afa [ruby/reline] Suppress crashing when boken prompt_list is given
https://github.com/ruby/reline/commit/922d087e7a
2020-12-24 23:26:22 +09:00
aycabta 634b231f33 [ruby/reline] Discard prompt cache by changing mode icon
https://github.com/ruby/reline/commit/bfeda8a79b
2020-12-24 23:26:22 +09:00
aycabta b52bc4a9c2 [ruby/reline] Support isearch-terminators
https://github.com/ruby/reline/commit/a7922da16b
2020-12-22 23:45:43 +09:00
aycabta 294552ca6c [ruby/reline] Render refreshed prompt just after i-search finished
https://github.com/ruby/reline/commit/0d3188fe34
2020-12-22 23:45:43 +09:00
aycabta a7cacd33cc [ruby/reline] Version 0.1.10
https://github.com/ruby/reline/commit/723c6e191a
2020-12-20 16:23:59 +09:00
aycabta c2a5594e27 [ruby/reline] Use cached prompt list when just moved the cursor
https://github.com/ruby/reline/commit/cfe619460b
2020-12-19 02:12:11 +09:00
aycabta d4257c6152 [ruby/reline] Yank by em-kill-region correctly
This closes ruby/reline#106.

https://github.com/ruby/reline/commit/2549a52e15
2020-12-19 02:12:11 +09:00
aycabta af2c81e10c [ruby/reline] Bind yank-pop correctly
https://github.com/ruby/reline/commit/3c74beac65
2020-12-19 02:12:11 +09:00
aycabta 671f2762fb [ruby/reline] Add Enumerable to KillRing for debugging
https://github.com/ruby/reline/commit/d208874152
2020-12-19 02:12:11 +09:00
Robert Schulze 422e2c7274 [ruby/reline] Use plus operator to create unfrozen string
https://github.com/ruby/reline/commit/ca274b0d37
2020-12-17 20:20:07 +09:00
aycabta cdf2790aa0 [ruby/reline] Support longer than screen height on Windows
https://github.com/ruby/reline/commit/2a97ca9362
2020-12-17 20:17:22 +09:00
aycabta 2b8fa78176 [ruby/reline] Support longer than screen height
https://github.com/ruby/reline/commit/e83a3de9ed
2020-12-17 20:14:59 +09:00
Yale Kozinski d597d7a8b6 Fixing glitchy kill ring behavior in irb
See https://github.com/ruby/irb/issues/85 for details
2020-12-17 20:04:42 +09:00
ima1zumi 68d3952c52 [ruby/reline] Fix breaking to input Emoji with ZWJ.
https://github.com/ruby/reline/commit/f21dfdbb11
2020-12-11 23:08:06 +09:00
aycabta 3bf7b999e5 [ruby/reline] Editing to initial content is not just cursor moving
https://github.com/ruby/reline/commit/0a4f175b0a
2020-12-08 00:08:41 +09:00
Robert Schulze f4386413f1 Cope with frozen-string-literal
When running irb 1.2.1 (2019-12-24) with frozen-string-literal enabled, it crashes in reline with `can't modify frozen String (FrozenError)`

Steps to reproduce: 

`RUBYOPT="--enable-frozen-string-literal" irb`
2020-12-05 03:14:42 +09:00
aycabta 0cf073088e [ruby/reline] Process insertion buffer forcibly
https://github.com/ruby/reline/commit/89d49ec9e0
2020-12-05 02:58:59 +09:00
aycabta c2bd5b84d0 [ruby/reline] Support bracketed paste mode
https://github.com/ruby/reline/commit/d1a6869322
2020-12-05 02:58:59 +09:00
aycabta 7624f52757 [ruby/reline] Forced newline insertion is not just cursor moving
https://github.com/ruby/reline/commit/0e30a49d03
2020-12-05 02:58:59 +09:00
aycabta 37a574b527 [ruby/reline] Drop prompt list cache when num of lines is changed
https://github.com/ruby/reline/commit/1959e22043
2020-12-05 02:58:59 +09:00
aycabta 2910684c45 [ruby/reline] Cache dynamic prompt for 0.5sec
https://github.com/ruby/reline/commit/06b89d0e61
2020-12-05 02:58:59 +09:00
aycabta b763c5cdf0 [ruby/reline] Stop rerendering if the cursor is only moved
https://github.com/ruby/reline/commit/30e8eaf855
2020-12-05 02:58:59 +09:00
aycabta a297565a4e [ruby/reline] Split #rerender method that is too huge
https://github.com/ruby/reline/commit/d0fbc89253
2020-12-05 02:58:59 +09:00
aycabta 493f381c32 [ruby/reline] Version 0.1.9
https://github.com/ruby/reline/commit/0b1b5e77ce
2020-12-05 02:58:59 +09:00
aycabta b545ab219b [ruby/reline] Stop rerendering whole screen when adding newline at end of buffer
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

https://github.com/ruby/reline/commit/496c6a1892
2020-12-05 02:58:59 +09:00
aycabta fb2fda9a27 [ruby/reline] Optimize regexp handling for width
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"

0.47sec -> 0.34sec

  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"

0.11sec -> 0.08sec

  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.40sec -> 0.33sec

Co-authored-by: NARUSE, Yui <naruse@airemix.jp>

https://github.com/ruby/reline/commit/a9e39ddcc4
2020-12-05 02:58:59 +09:00
aycabta 3d0bcf1cc2 [ruby/reline] Optimize ASCII character width calculation
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"

0.73sec -> 0.43sec

  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"

0.15sec -> 0.10sec

  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.59sec -> 0.38sec

Co-authored-by: NARUSE, Yui <naruse@airemix.jp>

https://github.com/ruby/reline/commit/36bc9e3abb
2020-12-05 02:58:59 +09:00
aycabta c85035363f [ruby/reline] Key strokes like 2dl should behave d2l
Key strokes, vi arg, operator, and motion should be treated as operator, vi
arg, and motion.

https://github.com/ruby/reline/commit/d1a7e74aa4
2020-12-05 02:58:58 +09:00
manga_osyo e47e5db889 [ruby/reline] Fix crash to input `é`. refs #174
https://github.com/ruby/reline/commit/ba5e267e5f
2020-12-05 02:58:58 +09:00
aycabta ff4656ee64 [ruby/reline] Version 0.1.8
https://github.com/ruby/reline/commit/e79e402c01
2020-12-05 02:58:58 +09:00
aycabta dbfc1f30d5 [ruby/reline] Add alias vi-movement-mode to vi-command-mode for compatibility
https://github.com/ruby/reline/commit/a79c297567
2020-12-05 02:58:58 +09:00
aycabta 48742614df [ruby/reline] Move alias_method to right after original definition
https://github.com/ruby/reline/commit/b7c8b93fa9
2020-12-05 02:58:58 +09:00
aycabta 9750c27afc [ruby/reline] Call process_insert when the end of pasting plural fullwidth chars
https://github.com/ruby/reline/commit/594484d9f9
2020-12-05 02:58:58 +09:00
aycabta ba8e5f77eb [ruby/reline] Motions e, E, t, f should include a char on cursor if follows operator
https://github.com/ruby/reline/commit/86e9a76499
2020-12-05 02:58:58 +09:00
aycabta 6be3b2da19 [ruby/reline] Implement vi_yank
https://github.com/ruby/reline/commit/164aaf9a5f
2020-12-05 02:58:58 +09:00
aycabta 2dc4aca8d1 [ruby/reline] Operator with arg need to make sure that they take arg to avoid crashing
https://github.com/ruby/reline/commit/1c0c06de1f
2020-12-05 02:58:58 +09:00
aycabta 92b22db6a7 [ruby/reline] Unimplemented vi command should be no-op
https://github.com/ruby/reline/commit/abc90e6867
2020-12-05 02:58:58 +09:00
aycabta faf8f216be [ruby/reline] Keep operator proc as a local variable in the scope
The proc variable will be used later so the instance variable will be changes.

https://github.com/ruby/reline/commit/496c4361f6
2020-12-05 02:58:58 +09:00
aycabta 564aadce62 [ruby/reline] Skip em_exchange_mark without mark
https://github.com/ruby/reline/commit/abb56e5ec3
2020-12-05 02:58:58 +09:00
aycabta e6429ad047 [ruby/reline] Backspace and C-h should be unassigned on vi command mode
https://github.com/ruby/reline/commit/28f4dae020
2020-12-05 02:58:58 +09:00
aycabta 853c176ea7 [ruby/reline] Version 0.1.7
https://github.com/ruby/reline/commit/710ca23427
2020-12-05 02:58:58 +09:00