1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 19:35:08 +00:00

HackStudio: Always re-match curlies/parens after a re-highlight

While you are typing in HackStudio, we re-lex the C++ as you type,
so this means we also need to keep re-checking for matching curlies and
parentheses at the cursor.

Fixes #769 (although it's not optional, because it's too cool. :^)
This commit is contained in:
Andreas Kling 2019-11-18 19:21:18 +01:00
parent d5afc58744
commit 15fb341eb4
3 changed files with 24 additions and 10 deletions

View file

@ -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();
}