Serenity Operating System
at portability 37 lines 1.0 kB view raw
1#include <LibGUI/SyntaxHighlighter.h> 2#include <LibGUI/TextEditor.h> 3 4namespace GUI { 5 6SyntaxHighlighter::~SyntaxHighlighter() 7{ 8} 9 10void SyntaxHighlighter::attach(TextEditor& editor) 11{ 12 ASSERT(!m_editor); 13 m_editor = editor.make_weak_ptr(); 14} 15 16void SyntaxHighlighter::detach() 17{ 18 ASSERT(m_editor); 19 m_editor = nullptr; 20} 21 22void SyntaxHighlighter::cursor_did_change() 23{ 24 ASSERT(m_editor); 25 auto& document = m_editor->document(); 26 if (m_has_brace_buddies) { 27 if (m_brace_buddies[0].index >= 0 && m_brace_buddies[0].index < static_cast<int>(document.spans().size())) 28 document.set_span_at_index(m_brace_buddies[0].index, m_brace_buddies[0].span_backup); 29 if (m_brace_buddies[1].index >= 0 && m_brace_buddies[1].index < static_cast<int>(document.spans().size())) 30 document.set_span_at_index(m_brace_buddies[1].index, m_brace_buddies[1].span_backup); 31 m_has_brace_buddies = false; 32 m_editor->update(); 33 } 34 highlight_matching_token_pair(); 35} 36 37}