summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-03-01 19:21:06 +0100
committerMaxime Coste <frrrwww@gmail.com>2013-03-01 19:31:14 +0100
commita36befd6535d0334f91606f157afb3c1cbf80c3c (patch)
tree093f1ece9653f33184735012101461a590b489a3 /src
parentd23694e31fe4837cd9cfe6e8d529d91bd078c327 (diff)
Use colors instead of underline to highlight selections
Diffstat (limited to 'src')
-rw-r--r--src/highlighters.cc23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/highlighters.cc b/src/highlighters.cc
index 5c58abe9..b406ab08 100644
--- a/src/highlighters.cc
+++ b/src/highlighters.cc
@@ -265,19 +265,20 @@ void show_line_numbers(DisplayBuffer& display_buffer)
void highlight_selections(const SelectionList& selections, DisplayBuffer& display_buffer)
{
- for (auto& sel : selections)
+ for (size_t i = 0; i < selections.size(); ++i)
{
- highlight_range(display_buffer, sel.begin(), sel.end(), false,
- [](DisplayAtom& atom) { atom.attribute |= Attributes::Underline; });
-
- const BufferIterator& last = sel.last();
- highlight_range(display_buffer, last, utf8::next(last), false,
- [](DisplayAtom& atom) { atom.attribute |= Attributes::Reverse;
- atom.attribute &= ~Attributes::Underline; });
+ auto& sel = selections[i];
+ const bool forward = sel.first() <= sel.last();
+ BufferIterator begin = forward ? sel.first() : utf8::next(sel.last());
+ BufferIterator end = forward ? sel.last() : utf8::next(sel.first());
+
+ Color fg_color = (i == selections.size() - 1) ? Color::Cyan : Color::Black;
+ Color bg_color = (i == selections.size() - 1) ? Color::Blue : Color::Blue;
+ highlight_range(display_buffer, begin, end, false,
+ [&](DisplayAtom& atom) { atom.fg_color = fg_color; atom.bg_color = bg_color; });
+ highlight_range(display_buffer, sel.last(), utf8::next(sel.last()), false,
+ [](DisplayAtom& atom) { atom.fg_color = Color::Black; atom.bg_color = Color::White; });
}
- const Selection& back = selections.back();
- highlight_range(display_buffer, back.begin(), back.end(), false,
- [](DisplayAtom& atom) { atom.attribute |= Attributes::Bold; });
}
void expand_unprintable(DisplayBuffer& display_buffer)