forked from qt-creator/qt-creator
Clang: Little speedup for code completion
...by ensuring that the precompiled preamble is created. Change-Id: I80784b6a79c40a7e452530e8288783f33f881efc Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
committed by
Nikolai Kosjar
parent
dbe4e32201
commit
f9899c2da8
@@ -163,10 +163,6 @@ void TranslationUnit::removeOutdatedTranslationUnit() const
|
||||
|
||||
void TranslationUnit::createTranslationUnitIfNeeded() const
|
||||
{
|
||||
const auto options = CXTranslationUnit_CacheCompletionResults
|
||||
| CXTranslationUnit_PrecompiledPreamble
|
||||
| CXTranslationUnit_SkipFunctionBodies;
|
||||
|
||||
if (!d->translationUnit) {
|
||||
d->translationUnit = CXTranslationUnit();
|
||||
CXErrorCode errorCode = clang_parseTranslationUnit2(index(),
|
||||
@@ -175,11 +171,15 @@ void TranslationUnit::createTranslationUnitIfNeeded() const
|
||||
d->projectPart.argumentCount(),
|
||||
d->unsavedFiles.cxUnsavedFiles(),
|
||||
d->unsavedFiles.count(),
|
||||
options,
|
||||
defaultOptions(),
|
||||
&d->translationUnit);
|
||||
|
||||
checkTranslationUnitErrorCode(errorCode);
|
||||
|
||||
// We need to reparse to create the precompiled preamble, which will speed up further calls,
|
||||
// e.g. clang_codeCompleteAt() dramatically.
|
||||
reparseTranslationUnit();
|
||||
|
||||
updateLastChangeTimePoint();
|
||||
}
|
||||
}
|
||||
@@ -192,6 +192,21 @@ void TranslationUnit::checkTranslationUnitErrorCode(CXErrorCode errorCode) const
|
||||
}
|
||||
}
|
||||
|
||||
void TranslationUnit::reparseTranslationUnit() const
|
||||
{
|
||||
clang_reparseTranslationUnit(d->translationUnit,
|
||||
d->unsavedFiles.count(),
|
||||
d->unsavedFiles.cxUnsavedFiles(),
|
||||
clang_defaultReparseOptions(d->translationUnit));
|
||||
}
|
||||
|
||||
int TranslationUnit::defaultOptions()
|
||||
{
|
||||
return CXTranslationUnit_CacheCompletionResults
|
||||
| CXTranslationUnit_PrecompiledPreamble
|
||||
| CXTranslationUnit_SkipFunctionBodies;
|
||||
}
|
||||
|
||||
uint TranslationUnit::unsavedFilesCount() const
|
||||
{
|
||||
return d->unsavedFiles.count();
|
||||
|
||||
@@ -91,6 +91,8 @@ private:
|
||||
void removeOutdatedTranslationUnit() const;
|
||||
void createTranslationUnitIfNeeded() const;
|
||||
void checkTranslationUnitErrorCode(CXErrorCode errorCode) const;
|
||||
void reparseTranslationUnit() const;
|
||||
static int defaultOptions();
|
||||
|
||||
private:
|
||||
mutable std::shared_ptr<TranslationUnitData> d;
|
||||
|
||||
Reference in New Issue
Block a user