diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2022-10-31 11:25:43 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2022-11-05 14:35:57 +0900 |
commit | 4d1faefa10518ada452d5a85f4e43a8bfda847cc (patch) | |
tree | 3e5fc6ecec52f78be423d0b0182e7a691fcef96d /lib | |
parent | ad92236d245b791d14fd78bcb5a0a0789aa169c0 (diff) |
Merge reline-0.3.1
Diffstat (limited to 'lib')
-rw-r--r-- | lib/reline/key_actor/emacs.rb | 2 | ||||
-rw-r--r-- | lib/reline/terminfo.rb | 39 | ||||
-rw-r--r-- | lib/reline/version.rb | 2 | ||||
-rw-r--r-- | lib/reline/windows.rb | 2 |
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 |