diff --git a/Userland/DevTools/HackStudio/AutoCompleteResponse.h b/Userland/DevTools/HackStudio/AutoCompleteResponse.h index de46cf741b..9a567568be 100644 --- a/Userland/DevTools/HackStudio/AutoCompleteResponse.h +++ b/Userland/DevTools/HackStudio/AutoCompleteResponse.h @@ -96,4 +96,31 @@ inline ErrorOr decode(Decoder& decoder, Cpp::Parser::TodoEntry& entry) return {}; } +template<> +inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::TokenInfo& location) +{ + encoder << (u32)location.type; + static_assert(sizeof(location.type) == sizeof(u32)); + encoder << location.start_line; + encoder << location.start_column; + encoder << location.end_line; + encoder << location.end_column; + return true; +} + +template<> +inline ErrorOr decode(Decoder& decoder, GUI::AutocompleteProvider::TokenInfo& entry) +{ + u32 semantic_type { 0 }; + static_assert(sizeof(semantic_type) == sizeof(entry.type)); + + TRY(decoder.decode(semantic_type)); + entry.type = static_cast(semantic_type); + TRY(decoder.decode(entry.start_line)); + TRY(decoder.decode(entry.start_column)); + TRY(decoder.decode(entry.end_line)); + TRY(decoder.decode(entry.end_column)); + return {}; +} + } diff --git a/Userland/Libraries/LibGUI/AutocompleteProvider.h b/Userland/Libraries/LibGUI/AutocompleteProvider.h index 7d045bc067..4bdebc7a2d 100644 --- a/Userland/Libraries/LibGUI/AutocompleteProvider.h +++ b/Userland/Libraries/LibGUI/AutocompleteProvider.h @@ -69,6 +69,32 @@ public: virtual void provide_completions(Function)>) = 0; + struct TokenInfo { + enum class SemanticType : u32 { + Unknown, + Regular, + Keyword, + Type, + Identifier, + String, + Number, + IncludePath, + PreprocessorStatement, + Comment, + Whitespace, + Function, + Variable, + CustomType, + Namespace, + Member, + Parameter, + } type { SemanticType::Unknown }; + size_t start_line { 0 }; + size_t start_column { 0 }; + size_t end_line { 0 }; + size_t end_column { 0 }; + }; + void attach(TextEditor& editor) { VERIFY(!m_editor);