summaryrefslogtreecommitdiff
path: root/DevTools/HackStudio
diff options
context:
space:
mode:
Diffstat (limited to 'DevTools/HackStudio')
-rw-r--r--DevTools/HackStudio/Editor.cpp30
-rw-r--r--DevTools/HackStudio/Editor.h3
-rw-r--r--DevTools/HackStudio/main.cpp1
3 files changed, 24 insertions, 10 deletions
diff --git a/DevTools/HackStudio/Editor.cpp b/DevTools/HackStudio/Editor.cpp
index 921416ede0..a999f5bd82 100644
--- a/DevTools/HackStudio/Editor.cpp
+++ b/DevTools/HackStudio/Editor.cpp
@@ -172,17 +172,8 @@ void Editor::mousemove_event(GMouseEvent& event)
GApplication::the().hide_tooltip();
}
-void Editor::cursor_did_change()
+void Editor::highlight_matching_curlies_or_parens()
{
- if (m_has_brace_buddies) {
- if (m_brace_buddies[0].index >= 0 && m_brace_buddies[0].index < document().spans().size())
- document().set_span_at_index(m_brace_buddies[0].index, m_brace_buddies[0].span_backup);
- if (m_brace_buddies[1].index >= 0 && m_brace_buddies[1].index < document().spans().size())
- document().set_span_at_index(m_brace_buddies[1].index, m_brace_buddies[1].span_backup);
- m_has_brace_buddies = false;
- update();
- }
-
enum class Direction {
Forward,
Backward,
@@ -254,3 +245,22 @@ void Editor::cursor_did_change()
}
}
}
+
+void Editor::cursor_did_change()
+{
+ if (m_has_brace_buddies) {
+ if (m_brace_buddies[0].index >= 0 && m_brace_buddies[0].index < document().spans().size())
+ document().set_span_at_index(m_brace_buddies[0].index, m_brace_buddies[0].span_backup);
+ if (m_brace_buddies[1].index >= 0 && m_brace_buddies[1].index < document().spans().size())
+ document().set_span_at_index(m_brace_buddies[1].index, m_brace_buddies[1].span_backup);
+ m_has_brace_buddies = false;
+ update();
+ }
+ highlight_matching_curlies_or_parens();
+}
+
+void Editor::notify_did_rehighlight()
+{
+ m_has_brace_buddies = false;
+ highlight_matching_curlies_or_parens();
+}
diff --git a/DevTools/HackStudio/Editor.h b/DevTools/HackStudio/Editor.h
index 0b67cc788a..52786574cc 100644
--- a/DevTools/HackStudio/Editor.h
+++ b/DevTools/HackStudio/Editor.h
@@ -15,6 +15,8 @@ public:
EditorWrapper& wrapper();
const EditorWrapper& wrapper() const;
+ void notify_did_rehighlight();
+
private:
virtual void focusin_event(CEvent&) override;
virtual void focusout_event(CEvent&) override;
@@ -23,6 +25,7 @@ private:
virtual void cursor_did_change() override;
void show_documentation_tooltip_if_available(const String&, const Point& screen_location);
+ void highlight_matching_curlies_or_parens();
explicit Editor(GWidget* parent);
diff --git a/DevTools/HackStudio/main.cpp b/DevTools/HackStudio/main.cpp
index 3ca86d6c13..eb5ff776e3 100644
--- a/DevTools/HackStudio/main.cpp
+++ b/DevTools/HackStudio/main.cpp
@@ -488,6 +488,7 @@ static void rehighlight()
spans.append(span);
}
current_editor().document().set_spans(spans);
+ static_cast<Editor&>(current_editor()).notify_did_rehighlight();
current_editor().update();
}