From dd3a7f739d1250cf27e7ed936d4c65cf9a31d2c9 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Tue, 23 Apr 2013 14:03:54 +0200 Subject: [PATCH] FlagLines: do not create a new local option in window if the option comes from the buffer --- src/highlighters.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/highlighters.cc b/src/highlighters.cc index b50ca98a..fefee345 100644 --- a/src/highlighters.cc +++ b/src/highlighters.cc @@ -378,13 +378,16 @@ public: if (new_lines == 0) return; - auto lines = m_window.options()[m_option_name].get>(); + const Option& opt = m_window.options()[m_option_name]; + if (&opt.manager() == &GlobalOptions::instance()) + return; + auto lines = opt.get>(); for (auto& line : lines) { if (std::get<0>(line) > begin.line()) std::get<0>(line) += new_lines; } - m_window.options().get_local_option(m_option_name).set(lines); + opt.manager().get_local_option(m_option_name).set(lines); } void on_erase(const BufferIterator& begin, const BufferIterator& end) override @@ -393,13 +396,17 @@ public: if (removed_lines == 0) return; - auto lines = m_window.options()[m_option_name].get>(); + const Option& opt = m_window.options()[m_option_name]; + // only update + if (&opt.manager() == &GlobalOptions::instance()) + return; + auto lines = opt.get>(); for (auto& line : lines) { if (std::get<0>(line) > begin.line()) std::get<0>(line) -= removed_lines; } - m_window.options().get_local_option(m_option_name).set(lines); + opt.manager().get_local_option(m_option_name).set(lines); } private: