SyntaxHighlighter.h 706 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include <AK/Noncopyable.h>
  3. #include <AK/WeakPtr.h>
  4. #include <LibGUI/TextDocument.h>
  5. namespace GUI {
  6. class SyntaxHighlighter {
  7. AK_MAKE_NONCOPYABLE(SyntaxHighlighter);
  8. AK_MAKE_NONMOVABLE(SyntaxHighlighter);
  9. public:
  10. virtual ~SyntaxHighlighter();
  11. virtual void rehighlight() = 0;
  12. virtual void highlight_matching_token_pair() = 0;
  13. void attach(TextEditor& editor);
  14. void detach();
  15. void cursor_did_change();
  16. protected:
  17. SyntaxHighlighter() {}
  18. WeakPtr<TextEditor> m_editor;
  19. struct BuddySpan {
  20. int index { -1 };
  21. GUI::TextDocumentSpan span_backup;
  22. };
  23. bool m_has_brace_buddies { false };
  24. BuddySpan m_brace_buddies[2];
  25. };
  26. }