Пример #1
0
void CodeCompletionManager::WordCompletion(LEditor *editor, const wxString& expr, const wxString& word)
{
    wxString expression = expr;
    wxString tmp;

    DoUpdateOptions();

    // Trim whitespace from right and left
    static wxString trimString(wxT("!<>=(){};\r\n\t\v "));

    expression = expression.erase(0, expression.find_first_not_of(trimString));
    expression = expression.erase(expression.find_last_not_of(trimString)+1);

    if(expression.EndsWith(word, &tmp)) {
        expression = tmp;
    }


    if((GetOptions() & CC_CLANG_ENABLED) && (GetOptions() & CC_CLANG_FIRST)) {
        DoClangWordCompletion(editor);

    } else {
        if(!DoCtagsWordCompletion(editor, expr, word) && (GetOptions() & CC_CLANG_ENABLED)) {
            DoClangWordCompletion(editor);
        }
    }
}
void CodeCompletionManager::GotoImpl(clEditor* editor)
{
    DoUpdateOptions();
    bool res = false;
    if(GetOptions() & CC_CTAGS_ENABLED) { res = DoCtagsGotoImpl(editor); }
    if(!res && (GetOptions() & CC_CLANG_ENABLED)) { DoClangGotoImpl(editor); }
}
void CodeCompletionManager::CodeComplete(clEditor* editor, int line, const wxString& expr, const wxString& text)
{
    bool res(false);
    DoUpdateOptions();
    if(GetOptions() & CC_CTAGS_ENABLED) { res = DoCtagsCodeComplete(editor, line, expr, text); }

    if(!res && (GetOptions() & CC_CLANG_ENABLED)) { DoClangCodeComplete(editor); }
}
void CodeCompletionManager::DoClangCalltip(clEditor* editor)
{
#if HAS_LIBCLANG
    DoUpdateOptions();
    if(GetOptions() & CC_CLANG_ENABLED) ClangCodeCompletion::Instance()->Calltip(editor);
#else
    wxUnusedVar(editor);
#endif
}
void CodeCompletionManager::Calltip(clEditor* editor, int line, const wxString& expr, const wxString& text,
                                    const wxString& word)
{
    bool res(false);
    DoUpdateOptions();

    if(::IsCppKeyword(word)) return;

    if(GetOptions() & CC_CTAGS_ENABLED) { res = DoCtagsCalltip(editor, line, expr, text, word); }

    if(!res && (GetOptions() & CC_CLANG_ENABLED)) { DoClangCalltip(editor); }
}