summaryrefslogtreecommitdiff
path: root/lib/reline/line_editor.rb
AgeCommit message (Collapse)Author
2024-04-15[ruby/reline] Remove not implemented methodMari Imaizumi
(https://github.com/ruby/reline/pull/680) https://github.com/ruby/reline/commit/84762fc588
2024-04-15[ruby/reline] Fix vi_to_column which was brokentomoya ishida
(https://github.com/ruby/reline/pull/679) https://github.com/ruby/reline/commit/9e93ad52e7
2024-04-14[ruby/reline] Refactored Default Key BindingsMari Imaizumi
(https://github.com/ruby/reline/pull/678) * Reduce duplicate method * Configured default key mapping with Readline when the method exists * Remove undefined methods https://github.com/ruby/reline/commit/155f7047bb
2024-04-14[ruby/reline] Refactor waiting_proc and waiting_operator_proctomoya ishida
(https://github.com/ruby/reline/pull/649) * Fix waiting_proc precedence * Fix waiting_operator bugs * Add waiting_proc and vi_waiting_operator test * Fix vi waiting operator arg number vi_arg and vi_waiting_operator_arg should be multiplied * Implement `yy` copies whole line in vi_command mode * Simplify incremental search cancel test * Add complex vi test with waiting_proc and vi_waiting_operator, split test input https://github.com/ruby/reline/commit/777dffae1c
2024-04-14[ruby/reline] Support `menu-complete-backward` command for upwardMichael J. Giarlo
navigation (https://github.com/ruby/reline/pull/677) Fixes https://github.com/ruby/reline/pull/675 This commit extracts the upward navigation condition in `LineEditor#input_key` to a new private method, and adds a new alias. This change allows Reline to support upward navigation in when a user has configured `inputrc` to map Shift-Tab to `menu-complete-backward`, a common setting in Bash (>= 4.x). Instead of special-casing upward navigation in `LineEditor#input_key`, we now allow it to be processed by the branch that calls `process_key`. The extracted method no longer includes the editing mode check since this check is already made by `#wrap_method_call` by the time `#completion_journey_up` (or `#menu_complete_backward`) is called. Since upward navigation is happening in a method other than `#input_key` now, the `completion_occurs` variable that used to be local to `#input_key` is changed to an instance variable so that the new method can change its value. (I see many examples of mutating such instance variables in `LineEditor`, so I assumed this would be an uncontroversial change consistent with the coding practices already in place.) Test coverage of this change has been added to the emacs and vi `KeyActor` tests. Many thanks to @ima1zumi for their very helpful comments on #675 which encouraged me to contribute this work! https://github.com/ruby/reline/commit/2ccdb374a4
2024-04-04[ruby/reline] Handle INT signal correctly, remove handle_clearedtomoya ishida
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[ruby/reline] Fix audoindent including "\v", escape "\v" fortomoya ishida
rendering (https://github.com/ruby/reline/pull/648) https://github.com/ruby/reline/commit/9c51c577ca
2024-04-01[ruby/reline] Refactor completiontomoya ishida
(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[ruby/reline] Align completion menu itemstomoya ishida
(https://github.com/ruby/reline/pull/613) https://github.com/ruby/reline/commit/a622704f62
2024-03-24[ruby/reline] Add mode_string to prompt calculation dependenciestomoya ishida
(https://github.com/ruby/reline/pull/658) * Add mode_string to prompt calculation dependencies * Update vi show-mode-in-prompt test https://github.com/ruby/reline/commit/a0cee06ec5
2024-03-23[ruby/reline] Do not send color reset sequence when GeneralIO istomoya ishida
used (https://github.com/ruby/reline/pull/661) https://github.com/ruby/reline/commit/3719702808
2024-03-20[ruby/reline] Change rendered_screen.lines to non-niltomoya ishida
(https://github.com/ruby/reline/pull/650) https://github.com/ruby/reline/commit/9685db55f1
2024-03-19[ruby/reline] Reline 0.5.0.pretomoya ishida
(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-14[ruby/reline] Ensure compatibility with frozen string literalsJean byroot Boussier
(https://github.com/ruby/reline/pull/643) Ref: https://bugs.ruby-lang.org/issues/20205 Ruby is moving forward with enabling frozen string literals in the future. Reline being part of the ruby-core test suite should work when ruby is ran with `--enable-frozen-string-literal`. https://github.com/ruby/reline/commit/7e2de64cf0 Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
2024-02-13[ruby/reline] C for vi modeOtávio Schwanck dos Santos
(https://github.com/ruby/reline/pull/472) https://github.com/ruby/reline/commit/d197be7c44
2024-01-04[ruby/reline] Fix pasting tab-indented code crashtomoya ishida
(https://github.com/ruby/reline/pull/630) https://github.com/ruby/reline/commit/90155fd0d9
2023-11-06[ruby/reline] Introduce a new class Reline::Face to configureHASUMI Hitoshi
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-07-27[ruby/reline] Add `kill-word` and `backward-kill-word` keymappingosyo-manga
support. (https://github.com/ruby/reline/pull/570) Fix it https://github.com/ruby/reline/issues/558 https://github.com/ruby/reline/commit/0f8000443e Co-authored-by: Stan Lo <stan001212@gmail.com>
2023-07-18[ruby/reline] Fix [nil] is passed to auto_indent_proc when exit withosyo-manga
CTRL+d (https://github.com/ruby/reline/pull/571) * Fix [nil] is passed to auto_indent_proc when exit with CTRL+d Fix it https://github.com/ruby/reline/issues/556 * not call auto_indent_proc when Ctrl+d. see: https://github.com/ruby/reline/pull/571#issuecomment-1637183195 https://github.com/ruby/reline/commit/0924f2a075
2023-07-08[ruby/reline] Ignore unhandled escape sequencestomoya ishida
(https://github.com/ruby/reline/pull/522) * Add unassigned escape sequence matcher to KeyStroke * Do not insert ESC and unassigned ESC+key to input buffer
2023-07-07[ruby/reline] Reduce direct references to `Reline::IOGate`Stan Lo
(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-05[ruby/reline] Fix wrong byte_pointer passed to auto_indent_proctomoya ishida
(https://github.com/ruby/reline/pull/562) https://github.com/ruby/reline/commit/4348354604
2023-06-20[ruby/reline] Omit constant under StructYuta Kusuno
(https://github.com/ruby/reline/pull/554) https://github.com/ruby/reline/commit/8761a11fa5
2023-05-27[ruby/reline] Fix scrolldown condition in dialog renderingtomoya ishida
(https://github.com/ruby/reline/pull/541) https://github.com/ruby/reline/commit/ad6faada3f
2023-05-27[ruby/reline] Use appropriate dialog height and reduce screen pushuptomoya ishida
problem (https://github.com/ruby/reline/pull/542) * Provide preferred_dialog_height for dialog positioning * Fix rendering test
2023-05-07[ruby/reline] Fix dialog corrupts rendering by pushing up input linetomoya ishida
too much (https://github.com/ruby/reline/pull/524) * Do not render dialog where it overflows screen * Dialog rendering should Scroll down only when needed * Refactor screen_y_range calculation Co-authored-by: Stan Lo <stan001212@gmail.com> --------- https://github.com/ruby/reline/commit/bc0e3d1310 Co-authored-by: Stan Lo <stan001212@gmail.com>
2023-05-01[ruby/reline] Rewrite dialog renderingtomoya ishida
(https://github.com/ruby/reline/pull/492) * Rewrite dialog rendering * Fix failing test of dialog with small screen * Add multiple-dialog rendering test * Add description comments for each part of render_dialog_changes
2023-04-24[ruby/reline] Revert #335 (Trap TSTP to handle C-z)Carl Brasic
(https://github.com/ruby/reline/pull/535) This PR was an effort to address #321 (ed_quoted_insert doesn't work properly) but per the reporter it did not work correctly. Moreover, it introduced a major regression: Shell job control stopped working in all applications that use reline, notably IRB. Bash and other shells send SIGTSTP in response to C-z to implement job suspension. Handling SIGSTP opts out of this functionality. For a line oriented terminal program this should be avoided (not to mention, this behavior diverges from readline's) https://github.com/ruby/reline/commit/26383d25b8 Co-authored-by: Carl Brasic <cbrasic@drwholdings.com>
2023-04-05Use `em_delete` in `key_delete` (#504)Étienne Barrié
* Test existing behavior Typing Ctrl-D ends editing but typing <Del> does not. Also renamed a test that is not testing ed_delete_next_char but key_delete. * Check if line empty first in em_delete By distributivity of AND over OR, we can factor out this condition. This will make the next commit simpler. * Use em_delete in key_delete When the editing mode is emacs, use `em_delete` in `key_delete`. We need to add a condition though to `em_delete`, because it implements both `delete-char` and `end-of-file`. We only want the `end-of-file` behavior is the key is really Ctrl-D. This matches the behavior of the <Del> key with readline, i.e. deleting the next character if there is one, but not moving the cursor, while not finishing the editing if there are no characters.
2023-03-29[ruby/reline] Drop Dialog#scrollbar_pos as we can store it in aStan Lo
local variable (https://github.com/ruby/reline/pull/529) https://github.com/ruby/reline/commit/d0139975fd Co-authored-by: tomoya ishida <tomoyapenguin@gmail.com>
2023-03-27[ruby/reline] Fix cursor position overruntomoya ishida
(https://github.com/ruby/reline/pull/515) * Fix cursor position overrun * Remove unnecessary local variable Co-authored-by: Stan Lo <stan001212@gmail.com> --------- https://github.com/ruby/reline/commit/d4ad9b96c8 Co-authored-by: Stan Lo <stan001212@gmail.com>
2023-03-18[ruby/reline] Fix: line longer than terminal width breaks renderingtomoya ishida
(https://github.com/ruby/reline/pull/516) https://github.com/ruby/reline/commit/ae5f9b87ab
2023-03-04[ruby/reline] Fix completion with multilinetomoya ishida
(https://github.com/ruby/reline/pull/513) https://github.com/ruby/reline/commit/d76c482c5f
2023-02-27[ruby/reline] Fix wrong indent number in prompt. whole_lines hastomoya ishida
duplicated line. (https://github.com/ruby/reline/pull/460) * whole_lines should consider prev_line_index, and must not duplicate last_line * Add test for lines passed to dynamic prompt proc * Refactor whole_lines parameters used in test helper * Remove whole_line's arguments
2023-02-27[ruby/reline] Fix the cause of test_yamatanooroti randomly failingtomoya ishida
(https://github.com/ruby/reline/pull/474) * Add repeated input-delete test that fails on HEAD * Use raw mode while readmultiline
2023-02-06[ruby/reline] Fix line rendering when newline is added at the end of the buffertompng
https://github.com/ruby/reline/commit/7d61b3df9a
2023-01-20[ruby/reline] accept new_indent > cursor_maxtompng
https://github.com/ruby/reline/commit/61cc580da4
2023-01-18[ruby/reline] Add constant MINIMUM_SCROLLBAR_HEIGHT for scrollbar rendering ↵tompng
when dialog content is very long https://github.com/ruby/reline/commit/d4c95f89ec
2023-01-18[ruby/reline] Fix dialog scrollbar rendering position and disappearing bugtompng
https://github.com/ruby/reline/commit/e21b69ade4
2023-01-12[ruby/reline] Pass unmodifined lines(that does not include escapetomoya ishida
sequence) to check_multiline_prompt (https://github.com/ruby/reline/pull/458) * pass unmodified lines to check_multiline_prompt * Add test to check that output modified by output_modifier_proc is not passed to prompt_proc
2022-09-22[ruby/reline] PR changesOtávio Schwanck dos Santos
https://github.com/ruby/reline/commit/e8e8d81f47
2022-09-22[ruby/reline] fix vi-operator-argOtávio Schwanck dos Santos
https://github.com/ruby/reline/commit/d42cdb8f91
2022-09-03[ruby/reline] Fix a typo [ci skip]Nobuyoshi Nakada
https://github.com/ruby/reline/commit/33bf80e757
2022-09-02[ruby/reline] Workaround for padding width with Aracritty on macOSHiroshi SHIBATA
https://github.com/ruby/reline/commit/fb4136c8a7
2022-09-01[ruby/reline] Remove loose operation in Dialog#render_each_dialogMau Magnaguagno
https://github.com/ruby/reline/commit/a6d1c917ce
2022-06-27[ruby/reline] Enable to change the background color of dialogs. ↵pocari
(https://github.com/ruby/reline/pull/413) https://github.com/ruby/reline/commit/bd49537964
2022-01-16[ruby/reline] Fix incremental search to work correctly even if not last lineaycabta
https://github.com/ruby/reline/commit/21d75f6d4c
2022-01-16[ruby/reline] Insert newline in the middle of buffer just after dialogaycabta
https://github.com/ruby/reline/commit/0c76631132
2022-01-16[ruby/reline] Combine common logic into oneaycabta
https://github.com/ruby/reline/commit/5db9738f17
2022-01-16[ruby/reline] Clear dialog when adding new line to end of bufferaycabta
https://github.com/ruby/reline/commit/7d38454327