summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-03-19 14:04:24 +0100
committerMaxime Coste <frrrwww@gmail.com>2013-03-19 14:04:24 +0100
commit42fae293917e2b64c9d7dcb87f2acfd07f42268e (patch)
tree06389d751d7a76c4173d6f251742ac63827ae248 /src
parentf0baf35117c97250801e2b7cae4b626aa9caf3f5 (diff)
Add an 'insert_hide_sel' option, which hides selection when inserting
Diffstat (limited to 'src')
-rw-r--r--src/highlighters.cc18
-rw-r--r--src/option_manager.cc1
-rw-r--r--src/window.cc2
3 files changed, 13 insertions, 8 deletions
diff --git a/src/highlighters.cc b/src/highlighters.cc
index c02255fb..7c9de93d 100644
--- a/src/highlighters.cc
+++ b/src/highlighters.cc
@@ -259,20 +259,24 @@ void show_line_numbers(DisplayBuffer& display_buffer)
}
}
-void highlight_selections(const Editor& editor, DisplayBuffer& display_buffer)
+void highlight_selections(const Window& window, DisplayBuffer& display_buffer)
{
- for (size_t i = 0; i < editor.selections().size(); ++i)
+ const bool only_cursor = window.is_editing() and window.options()["insert_hide_sel"].get<bool>();
+ for (size_t i = 0; i < window.selections().size(); ++i)
{
- auto& sel = editor.selections()[i];
+ auto& sel = window.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());
- const bool primary = (i == editor.main_selection_index());
- ColorPair sel_colors = ColorRegistry::instance()[primary ? "PrimarySelection" : "SecondarySelection"];
+ const bool primary = (i == window.main_selection_index());
+ if (not only_cursor)
+ {
+ ColorPair sel_colors = ColorRegistry::instance()[primary ? "PrimarySelection" : "SecondarySelection"];
+ highlight_range(display_buffer, begin, end, false,
+ [&](DisplayAtom& atom) { atom.colors = sel_colors; });
+ }
ColorPair cur_colors = ColorRegistry::instance()[primary ? "PrimaryCursor" : "SecondaryCursor"];
- highlight_range(display_buffer, begin, end, false,
- [&](DisplayAtom& atom) { atom.colors = sel_colors; });
highlight_range(display_buffer, sel.last(), utf8::next(sel.last()), false,
[&](DisplayAtom& atom) { atom.colors = cur_colors; });
}
diff --git a/src/option_manager.cc b/src/option_manager.cc
index f561d685..e866b6f5 100644
--- a/src/option_manager.cc
+++ b/src/option_manager.cc
@@ -260,6 +260,7 @@ GlobalOptions::GlobalOptions()
declare_option<String>("filetype", "");
declare_option<std::vector<String>>("completions", {});
declare_option<std::vector<String>>("path", { "./", "/usr/include" });
+ declare_option<bool>("insert_hide_sel", false);
}
template<typename T>
diff --git a/src/window.cc b/src/window.cc
index 56ac12f3..4abcab75 100644
--- a/src/window.cc
+++ b/src/window.cc
@@ -12,7 +12,7 @@ namespace Kakoune
{
// Implementation in highlighters.cc
-void highlight_selections(const Editor& editor, DisplayBuffer& display_buffer);
+void highlight_selections(const Window& window, DisplayBuffer& display_buffer);
void expand_tabulations(const OptionManager& options, DisplayBuffer& display_buffer);
void expand_unprintable(DisplayBuffer& display_buffer);