Skip to content

Commit 8f3a6eb

Browse files
tompngmatzbot
authored andcommitted
[ruby/reline] Drop loading terminfo, remove fiddle dependency in
non-windows environment. (ruby/reline#769) Reline works perfectly in most major terminal emulators without terminfo. In minor/old terminal emulator, we used to get key bindings from terminfo, but I think it is not used so much. ruby/reline@3ceba3bff7
1 parent 4074c6b commit 8f3a6eb

File tree

6 files changed

+8
-382
lines changed

6 files changed

+8
-382
lines changed

lib/reline.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
require 'reline/key_stroke'
77
require 'reline/line_editor'
88
require 'reline/history'
9-
require 'reline/terminfo'
109
require 'reline/io'
1110
require 'reline/face'
1211
require 'rbconfig'

lib/reline/io/ansi.rb

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ class Reline::ANSI < Reline::IO
2929
'H' => [:ed_move_to_beg, {}],
3030
}
3131

32-
if Reline::Terminfo.enabled?
33-
Reline::Terminfo.setupterm(0, 2)
34-
end
35-
3632
def initialize
3733
@input = STDIN
3834
@output = STDOUT
@@ -44,14 +40,10 @@ def encoding
4440
@input.external_encoding || Encoding.default_external
4541
end
4642

47-
def set_default_key_bindings(config, allow_terminfo: true)
43+
def set_default_key_bindings(config)
4844
set_bracketed_paste_key_bindings(config)
4945
set_default_key_bindings_ansi_cursor(config)
50-
if allow_terminfo && Reline::Terminfo.enabled?
51-
set_default_key_bindings_terminfo(config)
52-
else
53-
set_default_key_bindings_comprehensive_list(config)
54-
end
46+
set_default_key_bindings_comprehensive_list(config)
5547
{
5648
[27, 91, 90] => :completion_journey_up, # S-Tab
5749
}.each_pair do |key, func|
@@ -98,23 +90,6 @@ def set_default_key_bindings_ansi_cursor(config)
9890
end
9991
end
10092

101-
def set_default_key_bindings_terminfo(config)
102-
key_bindings = CAPNAME_KEY_BINDINGS.map do |capname, key_binding|
103-
begin
104-
key_code = Reline::Terminfo.tigetstr(capname)
105-
[ key_code.bytes, key_binding ]
106-
rescue Reline::Terminfo::TerminfoError
107-
# capname is undefined
108-
end
109-
end.compact.to_h
110-
111-
key_bindings.each_pair do |key, func|
112-
config.add_default_key_binding_by_keymap(:emacs, key, func)
113-
config.add_default_key_binding_by_keymap(:vi_insert, key, func)
114-
config.add_default_key_binding_by_keymap(:vi_command, key, func)
115-
end
116-
end
117-
11893
def set_default_key_bindings_comprehensive_list(config)
11994
{
12095
# xterm
@@ -281,27 +256,11 @@ def move_cursor_down(x)
281256
end
282257

283258
def hide_cursor
284-
seq = "\e[?25l"
285-
if Reline::Terminfo.enabled? && Reline::Terminfo.term_supported?
286-
begin
287-
seq = Reline::Terminfo.tigetstr('civis')
288-
rescue Reline::Terminfo::TerminfoError
289-
# civis is undefined
290-
end
291-
end
292-
@output.write seq
259+
@output.write "\e[?25l"
293260
end
294261

295262
def show_cursor
296-
seq = "\e[?25h"
297-
if Reline::Terminfo.enabled? && Reline::Terminfo.term_supported?
298-
begin
299-
seq = Reline::Terminfo.tigetstr('cnorm')
300-
rescue Reline::Terminfo::TerminfoError
301-
# cnorm is undefined
302-
end
303-
end
304-
@output.write seq
263+
@output.write "\e[?25h"
305264
end
306265

307266
def erase_after_cursor

lib/reline/terminfo.rb

Lines changed: 0 additions & 158 deletions
This file was deleted.

test/reline/test_ansi_without_terminfo.rb renamed to test/reline/test_ansi.rb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
require_relative 'helper'
22
require 'reline'
33

4-
class Reline::ANSI::WithoutTerminfoTest < Reline::TestCase
4+
class Reline::ANSITest < Reline::TestCase
55
def setup
66
Reline.send(:test_mode, ansi: true)
77
@config = Reline::Config.new
8-
Reline.core.io_gate.set_default_key_bindings(@config, allow_terminfo: false)
8+
Reline.core.io_gate.set_default_key_bindings(@config)
99
end
1010

1111
def teardown
@@ -50,7 +50,7 @@ def test_left_arrow
5050
assert_key_binding("\eOD", :ed_prev_char)
5151
end
5252

53-
# Ctrl+arrow and Meta+arrow; always mapped regardless of terminfo enabled or not
53+
# Ctrl+arrow and Meta+arrow
5454
def test_extended
5555
assert_key_binding("\e[1;5C", :em_next_word) # Ctrl+→
5656
assert_key_binding("\e[1;5D", :ed_prev_word) # Ctrl+←
@@ -60,12 +60,11 @@ def test_extended
6060
assert_key_binding("\e\e[D", :ed_prev_word) # Meta+←
6161
end
6262

63-
# Shift-Tab; always mapped regardless of terminfo enabled or not
6463
def test_shift_tab
6564
assert_key_binding("\e[Z", :completion_journey_up, [:emacs, :vi_insert])
6665
end
6766

68-
# A few emacs bindings that are always mapped regardless of terminfo enabled or not
67+
# A few emacs bindings that are always mapped
6968
def test_more_emacs
7069
assert_key_binding("\e ", :em_set_mark, [:emacs])
7170
assert_key_binding("\C-x\C-x", :em_exchange_mark, [:emacs])

test/reline/test_ansi_with_terminfo.rb

Lines changed: 0 additions & 112 deletions
This file was deleted.

0 commit comments

Comments
 (0)