mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-25 17:11:59 +00:00
.ccls: add %objective-c %objective-cpp
Also allow multiple directives on a line, e.g. %c %cpp -DFOO
This commit is contained in:
parent
46d3f075dc
commit
e27a5eaff9
@ -90,15 +90,24 @@ struct ProjectProcessor {
|
||||
args.reserve(entry.args.size() + g_config->clang.extraArgs.size() + 1);
|
||||
const LanguageId lang = lookupExtension(entry.filename).first;
|
||||
for (const char *arg : entry.args) {
|
||||
if (strncmp(arg, "%c ", 3) == 0) {
|
||||
if (lang == LanguageId::C)
|
||||
args.push_back(arg + 3);
|
||||
} else if (strncmp(arg, "%cpp ", 5) == 0) {
|
||||
if (lang == LanguageId::Cpp)
|
||||
args.push_back(arg + 5);
|
||||
} else if (strcmp(arg, "%clang") == 0) {
|
||||
args.push_back(lang == LanguageId::Cpp ? "clang++" : "clang");
|
||||
} else if (!excludeArgs.count(arg)) {
|
||||
StringRef A(arg);
|
||||
if (A[0] == '%') {
|
||||
bool ok = false;
|
||||
for (;;) {
|
||||
if (A.consume_front("%c "))
|
||||
ok |= lang == LanguageId::C;
|
||||
else if (A.consume_front("%cpp "))
|
||||
ok |= lang == LanguageId::Cpp;
|
||||
else if (A.consume_front("%objective-c "))
|
||||
ok |= lang == LanguageId::ObjC;
|
||||
else if (A.consume_front("%objective-cpp "))
|
||||
ok |= lang == LanguageId::ObjCpp;
|
||||
else
|
||||
break;
|
||||
}
|
||||
if (ok)
|
||||
args.push_back(A.data());
|
||||
} else if (!excludeArgs.count(A)) {
|
||||
args.push_back(arg);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user