Serenity Operating System
at portability 37 lines 706 B view raw
1#pragma once 2 3#include <AK/Noncopyable.h> 4#include <AK/WeakPtr.h> 5#include <LibGUI/TextDocument.h> 6 7namespace GUI { 8 9class SyntaxHighlighter { 10 AK_MAKE_NONCOPYABLE(SyntaxHighlighter); 11 AK_MAKE_NONMOVABLE(SyntaxHighlighter); 12 13public: 14 virtual ~SyntaxHighlighter(); 15 16 virtual void rehighlight() = 0; 17 virtual void highlight_matching_token_pair() = 0; 18 19 void attach(TextEditor& editor); 20 void detach(); 21 void cursor_did_change(); 22 23protected: 24 SyntaxHighlighter() {} 25 26 WeakPtr<TextEditor> m_editor; 27 28 struct BuddySpan { 29 int index { -1 }; 30 GUI::TextDocumentSpan span_backup; 31 }; 32 33 bool m_has_brace_buddies { false }; 34 BuddySpan m_brace_buddies[2]; 35}; 36 37}