LibGUI: Add AutocompleteProvider::TokenInfo::type_to_string()

This commit is contained in:
Itamar 2022-03-31 19:05:51 +03:00 committed by Andreas Kling
parent 3ab7388754
commit 53c6c36fba
2 changed files with 38 additions and 17 deletions

View file

@ -940,6 +940,7 @@ Vector<GUI::AutocompleteProvider::TokenInfo> CppComprehensionEngine::get_tokens_
tokens_info.append({ get_token_semantic_type(document, token),
token.start().line, token.start().column, token.end().line, token.end().column });
++i;
dbgln_if(CPP_LANGUAGE_SERVER_DEBUG, "{}: {}", token.text(), GUI::AutocompleteProvider::TokenInfo::type_to_string(tokens_info.last().type));
}
return tokens_info;
}

View file

@ -69,30 +69,50 @@ public:
virtual void provide_completions(Function<void(Vector<Entry>)>) = 0;
#define FOR_EACH_SEMANTIC_TYPE \
__SEMANTIC(Unknown) \
__SEMANTIC(Regular) \
__SEMANTIC(Keyword) \
__SEMANTIC(Type) \
__SEMANTIC(Identifier) \
__SEMANTIC(String) \
__SEMANTIC(Number) \
__SEMANTIC(IncludePath) \
__SEMANTIC(PreprocessorStatement) \
__SEMANTIC(Comment) \
__SEMANTIC(Whitespace) \
__SEMANTIC(Function) \
__SEMANTIC(Variable) \
__SEMANTIC(CustomType) \
__SEMANTIC(Namespace) \
__SEMANTIC(Member) \
__SEMANTIC(Parameter) \
__SEMANTIC(PreprocessorMacro)
struct TokenInfo {
enum class SemanticType : u32 {
Unknown,
Regular,
Keyword,
Type,
Identifier,
String,
Number,
IncludePath,
PreprocessorStatement,
Comment,
Whitespace,
Function,
Variable,
CustomType,
Namespace,
Member,
Parameter,
#define __SEMANTIC(x) x,
FOR_EACH_SEMANTIC_TYPE
#undef __SEMANTIC
} type { SemanticType::Unknown };
size_t start_line { 0 };
size_t start_column { 0 };
size_t end_line { 0 };
size_t end_column { 0 };
static constexpr const char* type_to_string(SemanticType t)
{
switch (t) {
#define __SEMANTIC(x) \
case SemanticType::x: \
return #x;
FOR_EACH_SEMANTIC_TYPE
#undef __SEMANTIC
}
VERIFY_NOT_REACHED();
};
};
void attach(TextEditor& editor)