Skip to content

Commit 8f1db0a

Browse files
committed
Use background color instead of border frame
1 parent 74a6124 commit 8f1db0a

File tree

1 file changed

+24
-30
lines changed

1 file changed

+24
-30
lines changed

lib/reline/line_editor.rb

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -563,31 +563,22 @@ def dialog_proc=(p)
563563
@dialog_vertical_offset = 1
564564
end
565565
reset_dialog(old_dialog_contents, old_dialog_contents_width, old_dialog_column, old_dialog_vertical_offset, old_dialog_updown)
566-
ue = ?/ + ?~ * (DIALOG_WIDTH - 2) + ?\\
567-
sita = ?\\ + ?_ * (DIALOG_WIDTH - 2) + ?/
568-
yoko = ?:
569566
case @dialog_updown
570567
when :down
571568
move_cursor_down(1)
572569
when :up
573570
end
574571
Reline::IOGate.move_cursor_column(@dialog_column)
575-
@output.write ue
576-
Reline::IOGate.move_cursor_column(@dialog_column)
577-
@dialog_contents = @dialog_contents[0...(DIALOG_HEIGHT - 2)] if @dialog_contents.size > (DIALOG_HEIGHT - 2)
578-
@dialog_contents.each do |item|
579-
move_cursor_down(1)
580-
@output.write yoko
581-
@output.write "%-#{DIALOG_WIDTH - 2}s" % item.slice(0, DIALOG_WIDTH - 2)
582-
@output.write yoko
572+
@dialog_contents = @dialog_contents[0...DIALOG_HEIGHT] if @dialog_contents.size > DIALOG_HEIGHT
573+
@dialog_contents.each_with_index do |item, i|
574+
@output.write "\e[46m%-#{DIALOG_WIDTH}s\e[49m" % item.slice(0, DIALOG_WIDTH)
583575
Reline::IOGate.move_cursor_column(@dialog_column)
576+
move_cursor_down(1) if i < (@dialog_contents.size - 1)
584577
end
585-
move_cursor_down(1)
586-
@output.write sita
587578
Reline::IOGate.move_cursor_column(cursor_column)
588579
case @dialog_updown
589580
when :down
590-
move_cursor_up(@dialog_contents.size + 2)
581+
move_cursor_up(@dialog_contents.size)
591582
when :up
592583
end
593584
@dialog_lines_backup = {
@@ -617,37 +608,37 @@ def dialog_proc=(p)
617608
line_num = @dialog_vertical_offset - old_dialog_vertical_offset
618609
line_num.times do |i|
619610
Reline::IOGate.move_cursor_column(0)
620-
@output.write visual_lines[start + i]
611+
@output.write "\e[39m\e[49m#{visual_lines[start + i]}\e[39m\e[49m"
621612
Reline::IOGate.erase_after_cursor
622613
move_cursor_down(1) if i < (line_num - 1)
623614
end
624615
move_cursor_up(old_dialog_vertical_offset + line_num - 1)
625616
end
626-
if (old_dialog_vertical_offset + old_dialog_contents.size + 2) > (@dialog_vertical_offset + @dialog_contents.size + 2)
627-
move_cursor_down(@dialog_vertical_offset + @dialog_contents.size + 2)
628-
start = visual_start + @dialog_vertical_offset + @dialog_contents.size + 2
629-
line_num = (old_dialog_vertical_offset + old_dialog_contents.size + 2) - (@dialog_vertical_offset + @dialog_contents.size + 2)
617+
if (old_dialog_vertical_offset + old_dialog_contents.size) > (@dialog_vertical_offset + @dialog_contents.size)
618+
move_cursor_down(@dialog_vertical_offset + @dialog_contents.size)
619+
start = visual_start + @dialog_vertical_offset + @dialog_contents.size
620+
line_num = (old_dialog_vertical_offset + old_dialog_contents.size) - (@dialog_vertical_offset + @dialog_contents.size)
630621
line_num.times do |i|
631622
Reline::IOGate.move_cursor_column(0)
632-
@output.write visual_lines[start + i]
623+
@output.write "\e[39m\e[49m#{visual_lines[start + i]}\e[39m\e[49m"
633624
Reline::IOGate.erase_after_cursor
634625
move_cursor_down(1) if i < (line_num - 1)
635626
end
636-
move_cursor_up(@dialog_vertical_offset + @dialog_contents.size + 2 + line_num - 1)
627+
move_cursor_up(@dialog_vertical_offset + @dialog_contents.size + line_num - 1)
637628
end
638629
if old_dialog_column < @dialog_column
639630
move_cursor_down(old_dialog_vertical_offset)
640631
width = @dialog_column - old_dialog_column
641632
start = visual_start + old_dialog_vertical_offset
642-
line_num = old_dialog_contents.size + 2
633+
line_num = old_dialog_contents.size
643634
line_num.times do |i|
644635
Reline::IOGate.move_cursor_column(old_dialog_column)
645636
if visual_lines[start + i].nil?
646637
s = ' ' * width
647638
else
648639
s = Reline::Unicode.take_range(visual_lines[start + i], old_dialog_column, width)
649640
end
650-
@output.write "%-#{width}s" % s
641+
@output.write "\e[39m\e[49m%-#{width}s\e[39m\e[49m" % s
651642
move_cursor_down(1) if i < (line_num - 1)
652643
end
653644
move_cursor_up(old_dialog_vertical_offset + line_num - 1)
@@ -656,15 +647,15 @@ def dialog_proc=(p)
656647
move_cursor_down(old_dialog_vertical_offset)
657648
width = (old_dialog_column + DIALOG_WIDTH) - (@dialog_column + DIALOG_WIDTH)
658649
start = visual_start + old_dialog_vertical_offset
659-
line_num = old_dialog_contents.size + 2
650+
line_num = old_dialog_contents.size
660651
line_num.times do |i|
661652
Reline::IOGate.move_cursor_column(old_dialog_column + DIALOG_WIDTH)
662653
if visual_lines[start + i].nil?
663654
s = ' ' * width
664655
else
665656
s = Reline::Unicode.take_range(visual_lines[start + i], old_dialog_column + DIALOG_WIDTH, width)
666657
end
667-
@output.write "%-#{width}s" % s
658+
@output.write "\e[39m\e[49m%-#{width}s\e[39m\e[49m" % s
668659
move_cursor_down(1) if i < (line_num - 1)
669660
end
670661
move_cursor_up(old_dialog_vertical_offset + line_num - 1)
@@ -686,20 +677,23 @@ def dialog_proc=(p)
686677
end
687678
visual_lines.concat(vl)
688679
}
689-
visual_lines_under_dialog = visual_lines[visual_start, @dialog_contents.size + 2]
680+
visual_lines_under_dialog = visual_lines[visual_start, @dialog_contents.size]
690681
move_cursor_down(@dialog_vertical_offset)
691-
dialog_vertical_size = @dialog_contents.size + 2
682+
dialog_vertical_size = @dialog_contents.size
692683
dialog_vertical_size.times do |i|
693684
if i < visual_lines_under_dialog.size
694685
Reline::IOGate.move_cursor_column(0)
695-
@output.write visual_lines_under_dialog[i]
686+
@output.write "\e[39m\e[49m%-#{DIALOG_WIDTH}s\e[39m\e[49m" % visual_lines_under_dialog[i]
696687
else
697688
Reline::IOGate.move_cursor_column(@dialog_column)
689+
@output.write "\e[39m\e[49m#{' ' * DIALOG_WIDTH}\e[39m\e[49m"
698690
end
699-
Reline::IOGate.erase_after_cursor
691+
#Reline::IOGate.erase_after_cursor
700692
move_cursor_down(1) if i < (dialog_vertical_size - 1)
701693
end
702-
move_cursor_up(@dialog_contents.size + 2)
694+
move_cursor_up(dialog_vertical_size - 1 + @dialog_vertical_offset)
695+
#Reline::IOGate.move_cursor_column(0)
696+
# @output.write "\e[39m#{visual_lines[@first_line_started_from + @started_from]}\e[39m"
703697
Reline::IOGate.move_cursor_column(prompt_width + @cursor)
704698
end
705699

0 commit comments

Comments
 (0)