mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-26 01:21:57 +00:00
Handle int8_t int16_t uint8_t uint16_t enum constants
Clean up clang_complete
This commit is contained in:
parent
8bb5d47377
commit
0d715e7bcf
@ -160,6 +160,11 @@ void BuildDetailString(CXCompletionString completion_string,
|
||||
std::vector<std::string>* parameters,
|
||||
bool include_snippets) {
|
||||
int num_chunks = clang_getNumCompletionChunks(completion_string);
|
||||
auto append = [&](const char* text) {
|
||||
detail += text;
|
||||
if (do_insert)
|
||||
insert += text;
|
||||
};
|
||||
for (int i = 0; i < num_chunks; ++i) {
|
||||
CXCompletionChunkKind kind =
|
||||
clang_getCompletionChunkKind(completion_string, i);
|
||||
@ -224,71 +229,23 @@ void BuildDetailString(CXCompletionString completion_string,
|
||||
break;
|
||||
}
|
||||
|
||||
case CXCompletionChunk_LeftParen:
|
||||
detail += "(";
|
||||
if (do_insert)
|
||||
insert += "(";
|
||||
break;
|
||||
case CXCompletionChunk_RightParen:
|
||||
detail += ")";
|
||||
if (do_insert)
|
||||
insert += ")";
|
||||
break;
|
||||
case CXCompletionChunk_LeftBracket:
|
||||
detail += "[";
|
||||
if (do_insert)
|
||||
insert += "[";
|
||||
break;
|
||||
case CXCompletionChunk_RightBracket:
|
||||
detail += "]";
|
||||
if (do_insert)
|
||||
insert += "]";
|
||||
break;
|
||||
case CXCompletionChunk_LeftBrace:
|
||||
detail += "{";
|
||||
if (do_insert)
|
||||
insert += "{";
|
||||
break;
|
||||
case CXCompletionChunk_RightBrace:
|
||||
detail += "}";
|
||||
if (do_insert)
|
||||
insert += "}";
|
||||
break;
|
||||
case CXCompletionChunk_LeftAngle:
|
||||
detail += "<";
|
||||
if (do_insert)
|
||||
insert += "<";
|
||||
break;
|
||||
case CXCompletionChunk_RightAngle:
|
||||
detail += ">";
|
||||
if (do_insert)
|
||||
insert += ">";
|
||||
break;
|
||||
case CXCompletionChunk_Comma:
|
||||
detail += ", ";
|
||||
if (do_insert)
|
||||
insert += ", ";
|
||||
break;
|
||||
case CXCompletionChunk_Colon:
|
||||
detail += ":";
|
||||
if (do_insert)
|
||||
insert += ":";
|
||||
break;
|
||||
case CXCompletionChunk_SemiColon:
|
||||
detail += ";";
|
||||
if (do_insert)
|
||||
insert += ";";
|
||||
break;
|
||||
case CXCompletionChunk_Equal:
|
||||
detail += "=";
|
||||
if (do_insert)
|
||||
insert += "=";
|
||||
break;
|
||||
// clang-format off
|
||||
case CXCompletionChunk_LeftParen: append("("); break;
|
||||
case CXCompletionChunk_RightParen: append(")"); break;
|
||||
case CXCompletionChunk_LeftBracket: append("["); break;
|
||||
case CXCompletionChunk_RightBracket: append("]"); break;
|
||||
case CXCompletionChunk_LeftBrace: append("{"); break;
|
||||
case CXCompletionChunk_RightBrace: append("}"); break;
|
||||
case CXCompletionChunk_LeftAngle: append("<"); break;
|
||||
case CXCompletionChunk_RightAngle: append(">"); break;
|
||||
case CXCompletionChunk_Comma: append(", "); break;
|
||||
case CXCompletionChunk_Colon: append(":"); break;
|
||||
case CXCompletionChunk_SemiColon: append(";"); break;
|
||||
case CXCompletionChunk_Equal: append("="); break;
|
||||
// clang-format on
|
||||
case CXCompletionChunk_HorizontalSpace:
|
||||
case CXCompletionChunk_VerticalSpace:
|
||||
detail += " ";
|
||||
if (do_insert)
|
||||
insert += " ";
|
||||
append(" ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -490,13 +490,12 @@ void SetVarDetail(IndexVar* var,
|
||||
CXType enum_type = clang_getCanonicalType(
|
||||
clang_getEnumDeclIntegerType(semanticContainer->cursor));
|
||||
std::string hover = qualified_name + " = ";
|
||||
if (enum_type.kind == CXType_Int || enum_type.kind == CXType_Long ||
|
||||
enum_type.kind == CXType_LongLong)
|
||||
hover += std::to_string(clang_getEnumConstantDeclValue(cursor.cx_cursor));
|
||||
else if (enum_type.kind == CXType_UInt || enum_type.kind == CXType_ULong ||
|
||||
if (enum_type.kind == CXType_UInt || enum_type.kind == CXType_ULong ||
|
||||
enum_type.kind == CXType_ULongLong)
|
||||
hover += std::to_string(
|
||||
clang_getEnumConstantDeclUnsignedValue(cursor.cx_cursor));
|
||||
else
|
||||
hover += std::to_string(clang_getEnumConstantDeclValue(cursor.cx_cursor));
|
||||
def.detailed_name = std::move(qualified_name);
|
||||
def.hover = hover;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user