本文整理汇总了C++中clCodeCompletionEvent类的典型用法代码示例。如果您正苦于以下问题:C++ clCodeCompletionEvent类的具体用法?C++ clCodeCompletionEvent怎么用?C++ clCodeCompletionEvent使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了clCodeCompletionEvent类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnFunctionCallTip
void PHPCodeCompletion::OnFunctionCallTip(clCodeCompletionEvent& e)
{
e.Skip();
if(PHPWorkspace::Get()->IsOpen()) {
if(!CanCodeComplete(e)) return;
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(editor) {
// we handle only .php files
if(IsPHPFile(editor)) {
// this is our to complete
e.Skip(false);
// get the position
PHPEntityBase::Ptr_t resolved = DoGetPHPEntryUnderTheAtPos(editor, editor->GetCurrentPosition(), true);
if(resolved) {
// In PHP there is no overloading, so there can be only one signature for a function
// so we simply place our match into TagEntryPtrVector_t structure and pass it to the editor
TagEntryPtrVector_t tags;
tags.push_back(DoPHPEntityToTagEntry(resolved));
clCallTipPtr callTip(new clCallTip(tags));
editor->ShowCalltip(callTip);
}
}
}
}
}
示例2: OnCodeCompletionGetTagComment
void PHPCodeCompletion::OnCodeCompletionGetTagComment(clCodeCompletionEvent& e)
{
if(PHPWorkspace::Get()->IsOpen()) {
TagEntryPtr tag = e.GetTagEntry();
void* data = tag->GetUserData();
if(data) {
PHPCCUserData* userData = reinterpret_cast<PHPCCUserData*>(data);
wxString comment, docComment;
docComment = userData->entry->GetDocComment();
if(docComment.IsEmpty() == false) {
docComment.Trim().Trim(false); // The Doc comment
comment << docComment << wxT("\n<hr>"); // HLine
}
wxFileName fn(userData->entry->GetFilename());
fn.MakeRelativeTo(PHPWorkspace::Get()->GetFilename().GetPath());
comment << fn.GetFullName() << wxT(" : ") << userData->entry->GetLine();
e.SetTooltip(comment);
}
} else {
e.Skip();
}
}
示例3: CanCodeComplete
/* static */
bool PHPCodeCompletion::CanCodeComplete(clCodeCompletionEvent& e)
{
int pos = e.GetPosition();
if(pos) pos -= 1;
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(!editor) return false;
// we can get style 0 if we added chars and they were not styled just yet
// sd we use the first style near our position (backward)
int lineNumber = editor->LineFromPos(pos);
int lineStartPos = editor->PosFromLine(lineNumber);
if(lineStartPos > pos) return false;
int styleAt(0);
int retryLeft(pos - lineStartPos + 2);
while((styleAt == 0) && retryLeft && pos > 0) {
styleAt = editor->GetStyleAtPos(pos);
if(styleAt == 0) {
--pos;
}
--retryLeft;
}
return (editor && !e.IsInsideCommentOrString() && IsPHPSection(styleAt) && !IsPHPCommentOrString(styleAt));
}
示例4: OnCodeComplete
void WebTools::OnCodeComplete(clCodeCompletionEvent& event)
{
event.Skip();
IEditor* editor = m_mgr->GetActiveEditor();
if(editor && m_jsCodeComplete && IsJavaScriptFile(editor)) {
event.Skip(false);
if(InsideJSComment(editor) || InsideJSString(editor)) {
// User the word completion plugin instead
m_jsCodeComplete->TriggerWordCompletion();
} else {
m_jsCodeComplete->CodeComplete(editor);
}
} else if(editor && m_xmlCodeComplete && editor->GetCtrl()->GetLexer() == wxSTC_LEX_XML) {
// an XML file
event.Skip(false);
m_xmlCodeComplete->XmlCodeComplete(editor);
} else if(editor && m_xmlCodeComplete && IsHTMLFile(editor)) {
// Html code completion
event.Skip(false);
m_xmlCodeComplete->HtmlCodeComplete(editor);
} else if(editor && m_cssCodeComplete && IsCSSFile(editor)) {
// CSS code completion
event.Skip(false);
m_cssCodeComplete->CssCodeComplete(editor);
}
}
示例5: OnQuickJump
void PHPCodeCompletion::OnQuickJump(clCodeCompletionEvent& e)
{
e.Skip();
if(PHPWorkspace::Get()->IsOpen()) {
e.Skip(false);
GotoDefinition(m_manager->GetActiveEditor(), e.GetInt());
}
}
示例6: OnFindSymbol
void WebTools::OnFindSymbol(clCodeCompletionEvent& event)
{
event.Skip();
IEditor* editor = m_mgr->GetActiveEditor();
if(editor && m_jsCodeComplete && IsJavaScriptFile(editor) && !InsideJSComment(editor)) {
event.Skip(false);
m_jsCodeComplete->FindDefinition(editor);
}
}
示例7: OnCodeCompleteFunctionCalltip
void WebTools::OnCodeCompleteFunctionCalltip(clCodeCompletionEvent& event)
{
event.Skip();
IEditor* editor = m_mgr->GetActiveEditor();
if(editor && m_jsCodeComplete && IsJavaScriptFile(editor) && !InsideJSComment(editor)) {
event.Skip(false);
m_jsCodeComplete->CodeComplete(editor);
}
}
示例8: OnAbbrevSelected
void AbbreviationPlugin::OnAbbrevSelected(clCodeCompletionEvent& e)
{
if(e.GetEventObject() != this) {
e.Skip();
return;
}
wxString wordAtCaret = e.GetWord();
InsertExpansion( wordAtCaret );
}
示例9: OnCodeComplete
void PHPCodeCompletion::OnCodeComplete(clCodeCompletionEvent& e)
{
e.Skip(true);
if(PHPWorkspace::Get()->IsOpen()) {
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(editor && IsPHPFile(editor)) {
e.Skip(false);
// Update the settings
TagsOptionsData d;
clConfig ccConfig("code-completion.conf");
ccConfig.ReadItem(&d);
m_lookupTable.SetSizeLimit(d.GetCcNumberOfDisplayItems());
// Check if the code completion was triggered due to user
// typing '(', in this case, call OnFunctionCallTip()
wxChar charAtPos = editor->GetCharAtPos(editor->GetCurrentPosition() - 1);
if(charAtPos == '(') {
OnFunctionCallTip(e);
} else {
// Perform the code completion here
PHPExpression::Ptr_t expr(new PHPExpression(editor->GetTextRange(0, e.GetPosition())));
bool isExprStartsWithOpenTag = expr->IsExprStartsWithOpenTag();
PHPEntityBase::Ptr_t entity = expr->Resolve(m_lookupTable, editor->GetFileName().GetFullPath());
if(entity) {
// Suggets members for the resolved entity
PHPEntityBase::List_t matches;
expr->Suggest(entity, m_lookupTable, matches);
if(!expr->GetFilter().IsEmpty() && (expr->GetCount() == 0)) {
// Word completion
PHPEntityBase::List_t keywords = PhpKeywords(expr->GetFilter());
// Preprend the keywords
matches.insert(matches.end(), keywords.begin(), keywords.end());
// Did user typed "<?ph" or "<?php" ??
// If so, clear the matches
if(isExprStartsWithOpenTag && (expr->GetFilter() == "ph" || expr->GetFilter() == "php")) {
matches.clear();
}
}
// Remove duplicates from the list
if(!matches.empty()) {
// Show the code completion box
DoShowCompletionBox(matches, expr);
}
}
}
}
}
}
示例10: OnCodeComplete
void XMLCodeCompletion::OnCodeComplete(clCodeCompletionEvent& event)
{
event.Skip();
IEditor* editor = dynamic_cast<IEditor*>(event.GetEditor());
if(editor && editor->GetCtrl()->GetLexer() == wxSTC_LEX_XML) {
// an XML file
event.Skip(false);
XmlCodeComplete(editor);
} else if(editor && m_plugin->IsHTMLFile(editor)) {
// Html code completion
event.Skip(false);
HtmlCodeComplete(editor);
}
}
示例11: OnShowQuickOutline
void PhpPlugin::OnShowQuickOutline(clCodeCompletionEvent& e)
{
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(editor) {
// we handle only .php files
if(!IsPHPFile(editor)) {
// get the position
e.Skip();
return;
}
PHPQuickOutlineDlg dlg(m_mgr->GetTheApp()->GetTopWindow(), editor, m_mgr);
dlg.ShowModal();
CallAfter(&PhpPlugin::SetEditorActive, editor);
}
}
示例12: OnFindSymbol
void PHPCodeCompletion::OnFindSymbol(clCodeCompletionEvent& e)
{
if(PHPWorkspace::Get()->IsOpen()) {
if(!CanCodeComplete(e)) return;
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(editor) {
PHPEntityBase::Ptr_t resolved = GetPHPEntryUnderTheAtPos(editor, editor->GetCurrentPosition());
if(resolved) {
m_manager->OpenFile(resolved->GetFilename().GetFullPath(), "", resolved->GetLine());
}
}
} else {
e.Skip();
}
}
示例13: OnTypeinfoTip
void PHPCodeCompletion::OnTypeinfoTip(clCodeCompletionEvent& e)
{
if(PHPWorkspace::Get()->IsOpen()) {
if(!CanCodeComplete(e)) return;
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(editor) {
// we handle only .php files
if(IsPHPFile(editor)) {
// FIXME: implement this using the new method
return;
}
}
} else {
e.Skip();
}
}
示例14: OnFindSymbol
void PHPCodeCompletion::OnFindSymbol(clCodeCompletionEvent& e)
{
e.Skip();
if(PHPWorkspace::Get()->IsOpen()) {
if(!CanCodeComplete(e)) return;
e.Skip(false);
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(editor) {
wxString word = editor->GetWordAtCaret();
if(word.IsEmpty()) return;
PHPEntityBase::List_t symbols = m_lookupTable.FindSymbol(word);
if(symbols.size() == 1) {
PHPEntityBase::Ptr_t match = *symbols.begin();
DoOpenEditorForEntry(match);
} else {
// Convert the matches to clSelectSymbolDialogEntry::List_t
clSelectSymbolDialogEntry::List_t entries;
std::for_each(symbols.begin(), symbols.end(), [&](PHPEntityBase::Ptr_t entry) {
TagEntryPtr tag = DoPHPEntityToTagEntry(entry);
wxBitmap bmp = wxCodeCompletionBox::GetBitmap(tag);
clSelectSymbolDialogEntry m;
m.bmp = bmp;
m.name = entry->GetFullName();
m.clientData = new PHPFindSymbol_ClientData(entry);
m.help = tag->GetKind();
entries.push_back(m);
});
// Show selection dialog
clSelectSymbolDialog dlg(EventNotifier::Get()->TopFrame(), entries);
if(dlg.ShowModal() != wxID_OK) return;
PHPFindSymbol_ClientData* cd = dynamic_cast<PHPFindSymbol_ClientData*>(dlg.GetSelection());
if(cd) {
DoOpenEditorForEntry(cd->m_ptr);
}
}
}
}
}
示例15: OnTypeinfoTip
void PHPCodeCompletion::OnTypeinfoTip(clCodeCompletionEvent& e)
{
if(PHPWorkspace::Get()->IsOpen()) {
if(!CanCodeComplete(e)) return;
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(editor) {
if(IsPHPFile(editor)) {
PHPEntityBase::Ptr_t entity = GetPHPEntityAtPos(editor, e.GetPosition());
if(entity) {
e.SetTooltip(entity->ToTooltip());
}
return;
}
}
} else {
e.Skip();
}
}