diff --git a/IDE/src/ui/SourceEditWidgetContent.bf b/IDE/src/ui/SourceEditWidgetContent.bf index b977d064..371c4149 100644 --- a/IDE/src/ui/SourceEditWidgetContent.bf +++ b/IDE/src/ui/SourceEditWidgetContent.bf @@ -3833,6 +3833,17 @@ namespace IDE.ui bool isEndingChar = (keyChar >= (char8)32) && !keyChar.IsLetterOrDigit && (keyChar != '_') && (keyChar != '~') && (keyChar != '=') && (keyChar != '!') && (keyChar != ':'); + if ((mAutoComplete != null) && (mAutoComplete.mAutoCompleteListWidget != null) && (!mAutoComplete.mAutoCompleteListWidget.mEntryList.IsEmpty)) + { + var entry = mAutoComplete.mAutoCompleteListWidget.mEntryList[mAutoComplete.mAutoCompleteListWidget.mSelectIdx]; + char8 endC = entry.mEntryDisplay[entry.mEntryDisplay.Length - 1]; + if ((endC == ':') && + (keyChar == endC)) + { + isEndingChar = true; + } + } + if (gApp.mSettings.mEditorSettings.mAutoCompleteRequireTab) { doAutocomplete = isCompletionChar; @@ -3954,7 +3965,7 @@ namespace IDE.ui else mAutoComplete.CloseListWindow(); - if ((keyChar == '\t') || (keyChar == '\r')) // Let other chars besides explicit-insert chrars pass through + if ((keyChar == '\t') || (keyChar == '\r') || (keyChar == ':')) // Let other chars besides explicit-insert chrars pass through { allowChar = false; } diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index 94e4082b..d3c10975 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -8172,9 +8172,25 @@ void BfCompiler::GenerateAutocompleteInfo() { if (methodMatchInfo->mInstanceList.size() > 0) { + if (autoComplete->mIdentifierUsed != NULL) + { + String filter; + if (autoComplete->mIdentifierUsed != NULL) + autoComplete->mIdentifierUsed->ToString(filter); + + auto& bestInstance = methodMatchInfo->mInstanceList[methodMatchInfo->mBestIdx]; + auto bestMethodDef = bestInstance.mMethodDef; + for (int paramIdx = 0; paramIdx < bestMethodDef->mParams.mSize; paramIdx++) + { + if ((paramIdx == 0) && (bestMethodDef->mMethodType == BfMethodType_Extension)) + continue; + autoComplete->AddEntry(AutoCompleteEntry("param", bestMethodDef->mParams[paramIdx]->mName + ":"), filter); + } + } + String invokeInfoText; invokeInfoText += StrFormat("%d", methodMatchInfo->mBestIdx); - for (int srcPosIdx = 0; srcPosIdx < (int) methodMatchInfo->mSrcPositions.size(); srcPosIdx++) + for (int srcPosIdx = 0; srcPosIdx < (int)methodMatchInfo->mSrcPositions.size(); srcPosIdx++) invokeInfoText += StrFormat(" %d", methodMatchInfo->mSrcPositions[srcPosIdx]); autoCompleteResultString += "invokeInfo\t"; autoCompleteResultString += invokeInfoText; @@ -9063,7 +9079,7 @@ String BfCompiler::GetTypeDefMatches(const StringImpl& searchStr, bool includeLo { if (BfNodeIsA(fieldDef->mFieldDeclaration)) continue; - + matchHelper.ClearResults(); bool hasMatch = false; @@ -9254,7 +9270,7 @@ String BfCompiler::GetTypeDefMatches(const StringImpl& searchStr, bool includeLo result += "c"; else result += "v"; - + if (includeLocation) { result += typeName + "\t";