Optimal settings for parsing and reparsing the translation unit in libclang

Hey everyone!

I’m having trouble finding the optimal performance settings for parsing/reparsing the translation unit. At this moment I’m using CXTranslationUnit_None for both parsing and reparsing the translation unit, because it seems that as soon as I turn on default settings for parse/reparse (clang_defaultEditingTranslationUnitOptions and clang_defaultReparseOptions respectively) code completion stops giving me the right results. Sure I could keep using CXTranslationUnit_None but as soon as I include additional headers to my source file, the whole thing becomes too slow.

Is this a bug or is this how It’s supposed to work? Please give me some guidance.

Thanks in advance,
Klemen

Hey everyone!

I'm having trouble finding the optimal performance settings for parsing/reparsing the translation unit. At this moment I'm using CXTranslationUnit_None for both parsing and reparsing the translation unit, because it seems that as soon as I turn on default settings for parse/reparse (clang_defaultEditingTranslationUnitOptions and clang_defaultReparseOptions respectively) code completion stops giving me the right results. Sure I could keep using CXTranslationUnit_None but as soon as I include additional headers to my source file, the whole thing becomes too slow.

Are you saving the tu then reloading it, or parsing it from scratch everytime?

Nope, I parse the first time, and then reparse everytime something changes in my text buffer (because I syntax color based on what libclang gives me). And it worked fine (and fast) with clang_defaultEditingTranslationUnitOptions for clang_parseTranslationUnit and clang_defaultReparseOptions for clang_reparseTranslationUnit. Until I saw that clang_codeCompleteAt doesnt work with anything else than CXTranslationUnit_None.

Nope, I parse the first time, and then reparse everytime something changes in my text buffer (because I syntax color based on what libclang gives me). And it worked fine (and fast) with clang_defaultEditingTranslationUnitOptions for clang_parseTranslationUnit and clang_defaultReparseOptions for clang_reparseTranslationUnit. Until I saw that clang_codeCompleteAt doesnt work with anything else than CXTranslationUnit_None.

Well, at least you don’t crash.

I’ve found that if I try to reload a saved tu file where the underlying source has changed, it’ll crash – so I don’t reuse them between runs.

take care…
don