summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2022-10-31 11:25:43 +0900
committernagachika <nagachika@ruby-lang.org>2022-11-05 14:35:57 +0900
commit4d1faefa10518ada452d5a85f4e43a8bfda847cc (patch)
tree3e5fc6ecec52f78be423d0b0182e7a691fcef96d /lib
parentad92236d245b791d14fd78bcb5a0a0789aa169c0 (diff)
Merge reline-0.3.1
Diffstat (limited to 'lib')
-rw-r--r--lib/reline/key_actor/emacs.rb2
-rw-r--r--lib/reline/terminfo.rb39
-rw-r--r--lib/reline/version.rb2
-rw-r--r--lib/reline/windows.rb2
4 files changed, 41 insertions, 4 deletions
diff --git a/lib/reline/key_actor/emacs.rb b/lib/reline/key_actor/emacs.rb
index 86e39b705c..a561feee57 100644
--- a/lib/reline/key_actor/emacs.rb
+++ b/lib/reline/key_actor/emacs.rb
@@ -43,7 +43,7 @@ class Reline::KeyActor::Emacs < Reline::KeyActor::Base
# 20 ^T
:ed_transpose_chars,
# 21 ^U
- :ed_kill_line,
+ :unix_line_discard,
# 22 ^V
:ed_quoted_insert,
# 23 ^W
diff --git a/lib/reline/terminfo.rb b/lib/reline/terminfo.rb
index b4d1d735f8..95ff082172 100644
--- a/lib/reline/terminfo.rb
+++ b/lib/reline/terminfo.rb
@@ -74,7 +74,22 @@ module Reline::Terminfo
#extern 'char *tparm(const char *str, ...)'
@tiparm = Fiddle::Function.new(curses_dl['tparm'], [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VARIADIC], Fiddle::TYPE_VOIDP)
end
- # TODO: add int tigetflag(char *capname) and int tigetnum(char *capname)
+ begin
+ #extern 'int tigetflag(char *str)'
+ @tigetflag = Fiddle::Function.new(curses_dl['tigetflag'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT)
+ rescue Fiddle::DLError
+ # OpenBSD lacks tigetflag
+ #extern 'int tgetflag(char *str)'
+ @tigetflag = Fiddle::Function.new(curses_dl['tgetflag'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT)
+ end
+ begin
+ #extern 'int tigetnum(char *str)'
+ @tigetnum = Fiddle::Function.new(curses_dl['tigetnum'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT)
+ rescue Fiddle::DLError
+ # OpenBSD lacks tigetnum
+ #extern 'int tgetnum(char *str)'
+ @tigetnum = Fiddle::Function.new(curses_dl['tgetnum'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT)
+ end
def self.setupterm(term, fildes)
errret_int = String.new("\x00" * 8, encoding: 'ASCII-8BIT')
@@ -122,6 +137,28 @@ module Reline::Terminfo
@tiparm.(str, *new_args).to_s
end
+ def self.tigetflag(capname)
+ flag = @tigetflag.(capname).to_i
+ case flag
+ when -1
+ raise TerminfoError, "not boolean capability: #{capname}"
+ when 0
+ raise TerminfoError, "can't find capability: #{capname}"
+ end
+ flag
+ end
+
+ def self.tigetnum(capname)
+ num = @tigetnum.(capname).to_i
+ case num
+ when -2
+ raise TerminfoError, "not numeric capability: #{capname}"
+ when -1
+ raise TerminfoError, "can't find capability: #{capname}"
+ end
+ num
+ end
+
def self.enabled?
true
end
diff --git a/lib/reline/version.rb b/lib/reline/version.rb
index 3cc4318390..1bb1c02f3d 100644
--- a/lib/reline/version.rb
+++ b/lib/reline/version.rb
@@ -1,3 +1,3 @@
module Reline
- VERSION = '0.3.0'
+ VERSION = '0.3.1'
end
diff --git a/lib/reline/windows.rb b/lib/reline/windows.rb
index f46ebd2109..f064472ce7 100644
--- a/lib/reline/windows.rb
+++ b/lib/reline/windows.rb
@@ -386,7 +386,7 @@ class Reline::Windows
def self.scroll_down(val)
return if val < 0
return unless csbi = get_console_screen_buffer_info
- buffer_width, x, y, buffer_lines, attributes, window_left, window_top, window_bottom = csbi.unpack('ssssSssx2s')
+ buffer_width, buffer_lines, x, y, attributes, window_left, window_top, window_bottom = csbi.unpack('ssssSssx2s')
screen_height = window_bottom - window_top + 1
val = screen_height if val > screen_height