[cfe-commits] [PATCH] New libclang API function, clang_codeCompleteGetContexts

Frits van Bommel fvbommel at gmail.com
Thu Jul 7 05:52:03 PDT 2011


On 6 July 2011 23:16, Connor Wakamo <cwakamo at apple.com> wrote:
>> +    case CodeCompletionContext::CCC_MacroName:
>>
>> This maps to CXCompletionContext_MacroName?
>
> Actually, it doesn't.  It might be a case where the value names are a bit confusing, and let me know if I should change it, but CCC_MacroName means that code completion is occurring where a macro is being defined and it needs a name.  (At least, that's what the comment says in Sema/CodeCompleteConsumer.h.)  I've mapped it to CXCompletionContext_Unknown, as I don't think it would be possible to suggest completions for a new name.  (Correct me if I'm wrong on that.)

There are some case where it's theoretically possible to suggest a
sensible name for a new macro. For example:
  #if USE_SOMETHING
    #define FOO __attribute__((use_something))
  #else
    #define |
  //...
(Where '|' is the cursor position for code completion)
You might be able to assume the user is trying to conditionally define
FOO here, so 'FOO' would be a sensible completion option. (As well as
any other macro defined in other #if(def) branches than the current
one)

Another case might be to suggest the name of a macro that has been
#undef'ed (in the current file?) but not yet redefined.

However, this would probably be a bit too much work, especially if it
would mean the compiler can no longer quickly skip unused #if
branches.



By the way, maybe 'CCC_NewMacroName' would be a better name for it?
It's less ambiguous.




More information about the cfe-commits mailing list