[ruby/reline] Support custom bg color

https://github.com/ruby/reline/commit/cd0cbf53d5
This commit is contained in:
aycabta 2021-08-28 02:10:51 +09:00
Родитель 7ea46c1ef2
Коммит acd15a39d2
2 изменённых файлов: 8 добавлений и 4 удалений

Просмотреть файл

@ -211,7 +211,7 @@ module Reline
cursor_pos_to_render = Reline::CursorPos.new(x, y)
context.clear
context.push(cursor_pos_to_render, result, pointer)
[cursor_pos_to_render, result, pointer]
[cursor_pos_to_render, result, pointer, nil]
}
require 'rdoc'
@ -247,7 +247,7 @@ module Reline
formatter.width = 40
str = doc.accept(formatter)
[Reline::CursorPos.new(cursor_pos_to_render.x + 40, cursor_pos_to_render.y + pointer), str.split("\n"), nil]
[Reline::CursorPos.new(cursor_pos_to_render.x + 40, cursor_pos_to_render.y + pointer), str.split("\n"), nil, '40']
}
def readmultiline(prompt = '', add_hist = false, &confirm_multiline_termination)

Просмотреть файл

@ -560,7 +560,7 @@ class Reline::LineEditor
return
end
dialog.set_cursor_pos(cursor_column, @first_line_started_from + @started_from)
pos, result, pointer = dialog.call
pos, result, pointer, bg = dialog.call
old_dialog_contents = dialog.contents
old_dialog_column = dialog.column
old_dialog_vertical_offset = dialog.vertical_offset
@ -604,9 +604,13 @@ class Reline::LineEditor
dialog.contents.each_with_index do |item, i|
if i == pointer
bg_color = '45'
else
if bg
bg_color = bg
else
bg_color = '46'
end
end
@output.write "\e[#{bg_color}m%-#{DIALOG_WIDTH}s\e[49m" % item.slice(0, DIALOG_WIDTH)
Reline::IOGate.move_cursor_column(dialog.column)
move_cursor_down(1) if i < (dialog.contents.size - 1)