SyntaxHighlighter.h 725 B

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