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

170 Коммитов

Автор SHA1 Сообщение Дата
tomoya ishida f567633a16 [ruby/reline] Refactor input key reading
(https://github.com/ruby/reline/pull/712)

* Add key binding matching status :matching_matched

* Simplify read_2nd_character

* Add a comment of matching status and EOF

* Matching status to a constant

* Expand complicated ternary operators to case-when

https://github.com/ruby/reline/commit/64deec100b
2024-06-05 04:04:09 +00:00
Takashi Kokubun 5ea843f9b2 Revert "Revert "[ruby/reline] Reline::ANSI is general io. Reline::GeneralIO is not.""
This reverts commit 6e84ac2359.

Now that the rubygems spec change has been merged, let's try reverting
this and fixing it with tompng's new patch.
2024-06-04 11:33:12 -07:00
Takashi Kokubun 6e84ac2359 Revert "[ruby/reline] Reline::ANSI is general io. Reline::GeneralIO is not."
This reverts commit ba01d15cf5.

It seems to be failing test-bundler-parallel. Reverting it to normalize
the CI. We should revert this revert once we figure it out.
2024-06-03 16:11:54 -07:00
tomoya ishida ba01d15cf5 [ruby/reline] Reline::ANSI is general io. Reline::GeneralIO is not.
(https://github.com/ruby/reline/pull/659)

Reline::ANSI has a partial non-tty supporting code. It should be a general io.
Reline::Dumb should be only used in testing.

https://github.com/ruby/reline/commit/2d6828473d
2024-06-03 14:28:33 +00:00
tomoya ishida 91d4a7ae0c [ruby/reline] Improve key binding match/matching check
(https://github.com/ruby/reline/pull/709)

* Improve key binding match/matching check

* Rename key_actors to default_key_bindings

* Make key_stroke.expand always return a value

* Update add_default_key_binding to use a add_default_key_binding_by_keymap internally

Co-authored-by: Stan Lo <stan001212@gmail.com>

---------

https://github.com/ruby/reline/commit/353ec236e2

Co-authored-by: Stan Lo <stan001212@gmail.com>
2024-06-03 13:15:05 +00:00
Stan Lo cda69b5910 [ruby/reline] Overhaul io gate structure
(https://github.com/ruby/reline/pull/666)

* Overhaul IO gate structure

1. Move IO related classes to `lib/reline/io/` directory.
2. Rename `GeneralIO` to `Dumb`.
3. Use IO classes as instances instead of classes.

* Update lib/reline/io/ansi.rb

Co-authored-by: tomoya ishida <tomoyapenguin@gmail.com>

---------

https://github.com/ruby/reline/commit/dc1518e1ac

Co-authored-by: tomoya ishida <tomoyapenguin@gmail.com>
2024-06-01 10:28:08 +00:00
tomoya ishida 26446cccc9 [ruby/reline] Implement bracketed paste insert
(https://github.com/ruby/reline/pull/655)

https://github.com/ruby/reline/commit/e92dcbf514
2024-05-08 16:00:30 +00:00
tomoya ishida c78cebb469 [ruby/reline] Fix default and additional key bindings vanish bug
(https://github.com/ruby/reline/pull/697)

https://github.com/ruby/reline/commit/fc9b4d2274
2024-05-02 14:41:07 +00:00
Mari Imaizumi fdf88a2c10 [ruby/reline] Avoid reading .inputrc repeatedly
(https://github.com/ruby/reline/pull/694)

https://github.com/ruby/reline/commit/c8d4802a0f
2024-05-02 05:50:08 +00:00
tomoya ishida 614187f8c2 [ruby/reline] Fix completion dialog position when completed part is
wordwrapped
(https://github.com/ruby/reline/pull/692)

https://github.com/ruby/reline/commit/2d9acd16fe
2024-04-30 16:51:25 +00:00
tomoya ishida 4e48d2724e
[ruby/reline] Thread safe readline
(https://github.com/ruby/reline/pull/669)

Block until other Reline.readline or Reline.readmultiline finish

https://github.com/ruby/reline/commit/ebab2875f1
2024-04-05 09:34:28 +09:00
tomoya ishida 4cbe4e49c7
[ruby/reline] Always call finalize and deprep
(https://github.com/ruby/reline/pull/668)

https://github.com/ruby/reline/commit/91b030caa4
2024-04-05 09:34:28 +09:00
tomoya ishida 8088c88d01
[ruby/reline] Handle INT signal correctly, remove handle_cleared
because clear(C-l) is not a signal
(https://github.com/ruby/reline/pull/646)

https://github.com/ruby/reline/commit/3debb0ae2f
2024-04-04 17:18:47 +09:00
tomoya ishida a531cac335 [ruby/reline] Refactor completion
(https://github.com/ruby/reline/pull/647)

* Refactor completion: split autocompletion and tabcompletion logic and state

* Move completion candidate listup logic from dialog proc to LineEditor

https://github.com/ruby/reline/commit/c3c09ac9c2
2024-04-01 18:12:27 +00:00
tomoya ishida 74593613ea [ruby/reline] Disable dialog proc if TERM=dumb
(https://github.com/ruby/reline/pull/663)

https://github.com/ruby/reline/commit/4928e06a24
2024-03-24 13:04:33 +00:00
tomoya ishida d7bc6f0eff [ruby/reline] Reline 0.5.0.pre
(https://github.com/ruby/reline/pull/614)

* Re-architecture LineEditor's internal state and rendering

* Fix test related to LineEditor re-architecture

* Bump to 0.5.0.pre.1

* Hide cursor only when updating screen. Frequent hide&show makes cursor flickering.

* Simplify rerender call from reline.rb

* Simplify handle_cleared

It only need to clear screen. line_editor.rerender will be called later.

* Add description of updating pasting_state inserts continuous_insertion_buffer

* Use meaningful block parameter

Co-authored-by: Stan Lo <stan001212@gmail.com>

* Fix use of `@cursor_y`

Fix bug updating `@cursor_y`. Do not use `@cursor_y` while updating dialog because it is not current cursor position but cursor position at last rendered time.

* Remove useless instance_variable_set in test

These instance variables are already removed from LineEditor

* Always initialize instance variables to avoid ruby 2.7 warning, remove unused instance variable

* Call update_dialogs from reline.rb before first render

* Combine state representing rendered screen information into `@rendered_screen`

* Rename editor_cursor_ to wrapped_cursor

It represents cursor position of word wrapped whole content

* Remove unused code, tweak, add comment

---------

https://github.com/ruby/reline/commit/3fa376217d

Co-authored-by: Stan Lo <stan001212@gmail.com>
2024-03-19 14:17:26 +00:00
HASUMI Hitoshi 16403f41ab [ruby/reline] Introduce a new class Reline::Face to configure
character attributes
(https://github.com/ruby/reline/pull/552)

* Reine::Face

* fix test_yamatanooroti

* Define singleton methods to make accessors to attributes of a face

* s/display/foreground/

* s/default/default_style/ && s/normal_line/default/ && s/enhanced_line/enhanced/

* fix typo

* FaceConfig.new now takes keyword arguments

* Update lib/reline/face.rb

Co-authored-by: Stan Lo <stan001212@gmail.com>

* Update test/reline/test_face.rb

Co-authored-by: Stan Lo <stan001212@gmail.com>

* Fix to correspond to frozen_string_literal

* Face::FaceConfig -> Face::Config

* ref https://github.com/ruby/reline/pull/552#pullrequestreview-1677282576

* delete unused ivar

* ref https://github.com/ruby/reline/pull/552#discussion_r1358783723

* insert "\e[0m" into all SGR

* tiny fix

* ESSENTIAL_DEFINE_NAMES

ref https://github.com/ruby/reline/pull/552#discussion_r1367722247

* Change to Hash-accessor style

- Reline::Face[:completion_dialog].enhanced ->
  Reline::Face[:completion_dialog][:enhanced]
- Reline::Face.configs shows all defined values

* Cache array method call in local variable

* Tests for Face configuration variations

* resolve https://github.com/ruby/reline/pull/552#pullrequestreview-1710938154

* amend  to

* check invalid SGR parameter in :style

* The order of define values should be preserved

* Update test/reline/test_face.rb

Co-authored-by: Stan Lo <stan001212@gmail.com>

* Update test/reline/test_face.rb

Co-authored-by: Stan Lo <stan001212@gmail.com>

* Add methods: load_initial_config and reset_to_initial_config. And teardown in tests

* omission in amending "style: :default" to "style: :reset"

* refs https://github.com/ruby/reline/issues/598

* Fix link

* amend method name

* Update lib/reline/face.rb

Co-authored-by: ima1zumi <52617472+ima1zumi@users.noreply.github.com>

---------

https://github.com/ruby/reline/commit/fdc1d3b1e5

Co-authored-by: Stan Lo <stan001212@gmail.com>
Co-authored-by: ima1zumi <52617472+ima1zumi@users.noreply.github.com>
2023-11-06 14:40:42 +00:00
tomoya ishida 405c295a21 [ruby/reline] Use fdiv for keyseq_timeout msec to sec conversion
(https://github.com/ruby/reline/pull/583)

https://github.com/ruby/reline/commit/a6504acd63
2023-08-20 17:03:32 +00:00
Stan Lo 7c226291d3 [ruby/reline] Remove Timeout usage
(https://github.com/ruby/reline/pull/580)

Timeout's implementation relies on Thread, which would conflict with
`ruby/debug`'s thread-freezing implementation and has casued issues like

- ruby/debug#877
- ruby/debug#934
- ruby/debug#1000

This commit avoids the issue by completely removing the use of Timeout.

https://github.com/ruby/reline/commit/d4f0cd3fe1
2023-08-20 10:40:55 +00:00
Stan Lo 24d9e21f84 [ruby/reline] Reduce direct references to `Reline::IOGate`
(https://github.com/ruby/reline/pull/566)

* Avoid referencing IOGate from IOGate classes

The only time those classes being used is when themselves being the IOGate.
So when referencing to IOGate, it's better to use `self` instead.

* Avoid referencing to IOGate from LineEditor directly

* Avoid referencing to IOGate from Core directly

* Reference to Reline.core directly

* Replace Reline::IOGate with Reline.core.io_gate
2023-07-07 17:27:25 +00:00
tomoya ishida 6f9d1b4b0f [ruby/reline] Update Relin::IOGate dinamically when it is needed
(https://github.com/ruby/reline/pull/560)

https://github.com/ruby/reline/commit/4680d1c9e0
2023-07-05 20:21:13 +00:00
Stan Lo 0a8b5cac66 [ruby/reline] Refactor Reline::Core
(https://github.com/ruby/reline/pull/561)

* Use Reline::Core.encoding instead of directly referencing IOGate

* Set input/output based on the IOGate's interface
2023-07-04 13:52:31 +00:00
Yuta Kusuno 9ce6e09637 [ruby/reline] Omit constant under Struct
(https://github.com/ruby/reline/pull/554)

https://github.com/ruby/reline/commit/8761a11fa5
2023-06-20 14:02:58 +00:00
tomoya ishida 5d137a7f77 [ruby/reline] Use appropriate dialog height and reduce screen pushup
problem
(https://github.com/ruby/reline/pull/542)

* Provide preferred_dialog_height for dialog positioning

* Fix rendering test
2023-05-27 14:48:50 +00:00
tomoya ishida 19aa30d5d5 [ruby/reline] Change Reline.add_dialog_proc(name, nil) to properly
remove dialog_proc
(https://github.com/ruby/reline/pull/532)

https://github.com/ruby/reline/commit/43283b2f37
2023-04-15 09:32:05 +00:00
tomoya ishida 92ed8e6f3f [ruby/reline] Fix the cause of test_yamatanooroti randomly failing
(https://github.com/ruby/reline/pull/474)

* Add repeated input-delete test that fails on HEAD

* Use raw mode while readmultiline
2023-02-27 08:44:02 +00:00
ima1zumi 8fc69a0a7e [ruby/reline] Add comment for unused constants
FILENAME_COMPLETION_PROC and USERNAME_COMPLETION_PROC are not used by Reline.
However, they were added for compatibility with the rb-readline gem.
These constants have been retained and comments added.

https://github.com/ruby/reline/commit/98fdbd3f18
2023-02-07 12:49:51 +00:00
Stan Lo 16b2e03014 [ruby/reline] Remove unapproved color setting APIs
These APIs/configs are not approved by the Ruby core, so they can't be
released to the public. This means having them in the codebase will
block other fixes/features from being released as well.

So this commit removes those exposed interfaces to unblock the release.

Hopefully when https://bugs.ruby-lang.org/issues/18996 is approved we
can re-implement better APIs.

https://github.com/ruby/reline/commit/f7a961c550
2022-12-05 03:14:55 +00:00
Nobuyoshi Nakada 59e8569cf9 [ruby/reline] Support dumb terminal
The "dumb" terminal is considered only on MSys tty now.  However, the
`TERM` feature has been used on many Unix-like systems for decades,
not MSys specific.

https://github.com/ruby/reline/commit/53fd51ab62
2022-09-01 16:36:16 +09:00
st0012 b3be030740 [ruby/reline] Rename dialog_pointer_* to dialog_highlight_*
"Pointer" is not what we usually use to describe a selected item.

"Highlight" is a more common word for the scenario so we should use it instead.

https://github.com/ruby/reline/commit/b4279d1557
2022-07-22 23:34:49 +09:00
st0012 36ca0e58b6 [ruby/reline] Use color name instead of code (integer) in dialog color APIs
As pointed out in the
[comment](https://github.com/ruby/reline/pull/413#issuecomment-1168033973),
the code is actually a control sequence and not only for colors.

To make the dialog color APIs safer to use, we should restrict its
usages and extract away the bg/fg concept from the input.

So in this commit, I made these changes:

1. The dialog_*_bg/fg_color APIs only takes and returns color names (symbol):
  - :black
  - :red
  - :green
  - :yellow
  - :blue
  - :magenta
  - :cyan
  - :white
2. Add additional dialog_*_bg/fg_color_sequence APIs to access the raw code.

https://github.com/ruby/reline/commit/b32a977766
2022-07-16 02:30:23 +09:00
pocari 8c6c3e30f3 [ruby/reline] Enable to change the background color of dialogs. (https://github.com/ruby/reline/pull/413)
https://github.com/ruby/reline/commit/bd49537964
2022-06-27 22:28:49 +09:00
Nobuyoshi Nakada d9ccb6b372 [ruby/reline] Check the ambiguous char width only on tty
It sent the char to check even to non-tty, e.g., pipe.
This causes `unknown command: "\xE2\x96\xBDstart ` warnings on
ruby's parallel test on Windows, where non-standard FDs cannot be
passed to child processes.

https://github.com/ruby/reline/commit/0d373647fb
2022-06-13 12:17:04 +09:00
aycabta 37aea9d798 [ruby/reline] Finalize when exception occurred
https://github.com/ruby/reline/commit/1f8a3aee43

Co-authored-by: Alex Gittemeier <me@a.lexg.dev>
2021-12-21 00:49:03 +09:00
aycabta c3a3f65b45 [ruby/reline] Split off set_signal_handler method
In some tests, the LineEditor#reset method is always called, but doesn't
need to set the signal handlers there, so cuts it out to a separate
method.

https://github.com/ruby/reline/commit/b143c4f5f9
2021-12-21 00:13:19 +09:00
aycabta 145c1e0691 [ruby/reline] Add support for overwriting dialog proc with the same name
https://github.com/ruby/reline/commit/16aa20c380
2021-12-20 14:54:42 +09:00
aycabta c462e07a5c [ruby/reline] Add Reline.dialog_proc(name_sym)
https://github.com/ruby/reline/commit/7e5dbe4750
2021-12-20 14:54:42 +09:00
aycabta 6f41cab704 [ruby/reline] Suppress warning, "instance variable @ambiguous_width not initialized"
https://github.com/ruby/reline/commit/368f7e2f78
2021-10-11 16:24:45 +09:00
manga_osyo b8327fb8b1 [ruby/reline] Refactoring Reline::Key.match? and add test.
https://github.com/ruby/reline/commit/90e8999ae4
2021-10-02 19:58:41 +09:00
aycabta 5dc753df47 [ruby/reline] Move #pointer from DialogRenderInfo to Dialog
https://github.com/ruby/reline/commit/92dbac0bff
2021-09-10 11:38:54 +09:00
aycabta 30203a6fd9 [ruby/reline] Use Symbol for method names
https://github.com/ruby/reline/commit/479eee5393
2021-09-07 02:42:49 +09:00
aycabta 966ed206a6 [ruby/reline] Limit number of chars only when completion source text (pointer == -1)
https://github.com/ruby/reline/commit/1d7b603811
2021-09-06 22:50:11 +09:00
aycabta 348bb62331 [ruby/reline] Cut out read_2nd_character_of_key_sequence
https://github.com/ruby/reline/commit/92518d1dee
2021-09-06 05:24:15 +09:00
aycabta 7de2c9a966 [ruby/reline] Use combined_key if it exists when comparing Reline::Key and Integer
https://github.com/ruby/reline/commit/8fca5f6f9c
2021-09-06 05:23:36 +09:00
aycabta 3773296bfc [ruby/reline] Allow Reline::KeyStroke to compare raw and meta-key processed key sequences
https://github.com/ruby/reline/commit/731103f9c9
2021-09-06 05:23:27 +09:00
aycabta 56ab22ab3d [ruby/reline] Support for key bindings result Symbol in Reline::Key
https://github.com/ruby/reline/commit/cf78a38064
2021-09-06 05:23:18 +09:00
aycabta bbb3162dd2 [ruby/reline] Add Reline::Key#== as an alias to Reline::Key#match?
https://github.com/ruby/reline/commit/1fc3276c01
2021-09-06 05:23:11 +09:00
aycabta bb6d45cfee [ruby/reline] Reline::Key supports the comparison with Integer
https://github.com/ruby/reline/commit/ebc3e0f673
2021-09-06 05:23:01 +09:00
aycabta ec36ceb072 [ruby/reline] Implement scrollbar
https://github.com/ruby/reline/commit/4c7fc42151
2021-09-04 21:40:12 +09:00
aycabta f445d34c25 [ruby/reline] Show even if it's only one candidate until a perfect match
https://github.com/ruby/reline/commit/fe7e34e79f
2021-09-04 02:16:28 +09:00