public ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped) { // We can return code-completion items like this: //return new ICompletionData[] { // new DefaultCompletionData("Text", "Description", 1) //}; string targetText; if (CodeCompleteCaretLocationOffset.Line == 0) { targetText = textArea.get_Text(); // textArea.MotherTextEditorControl.Text; } else { var firstMethodOffset = calculateFirstMethodOffset(); targetText = getAdjustedSnippetText(textArea, firstMethodOffset); } var resolver = new NRefactoryResolver(myProjectContent.Language); //ResolveResult rr = resolver.Resolve(FindExpression(textArea), var rr = resolver.Resolve(currentExpression, parseInformation, targetText); var resultList = new List<ICompletionData>(); if (rr.notNull())// && ) { ArrayList completionData = rr.GetCompletionData(this.myProjectContent); /*"[CodeComplete] expression '{0}' was resolved into type: {1} with {2} results".info(currentExpression.Expression, rr.ResolvedType.FullyQualifiedName, completionData.isNull() ? -1 : completionData.Count);*/ "[CodeComplete] expression '{0}' was resolved into: {1} with {2} results".info(currentExpression.Expression, rr.ResolvedType.notNull() ? rr.ResolvedType.FullyQualifiedName : rr.prop("Name").str(), completionData.isNull() ? -1 : completionData.Count); if (completionData != null) { AddCompletionData(resultList, completionData); } } else "[CodeComplete] expression '{0}' could not be resolved".error(currentExpression.Expression); // "In generate completion Data, There were {0} results found".format(resultList.Count).debug(); return resultList.ToArray(); }
public string getAdjustedSnippetText(TextArea textArea, int firstMethodOffset) { var currentText = textArea.get_Text(); ; var size = CodeCompleteTargetText.size(); if (firstMethodOffset < size) { var adjustedSnippeetText = CodeCompleteTargetText.Substring(0, firstMethodOffset); adjustedSnippeetText += currentText.line(); adjustedSnippeetText += "\t}".line() + "}".line(); return adjustedSnippeetText; } return currentText; }
public ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped) { // We can return code-completion items like this: //return new ICompletionData[] { // new DefaultCompletionData("Text", "Description", 1) //}; var targetText = ""; if (CodeCompleteCaretLocationOffset.Line == 0) { targetText = textArea.get_Text(); // textArea.MotherTextEditorControl.Text; } else { var firstMethodOffset = calculateFirstMethodOffset(); targetText = getAdjustedSnippetText(textArea, firstMethodOffset); } NRefactoryResolver resolver = new NRefactoryResolver(this.myProjectContent.Language); //ResolveResult rr = resolver.Resolve(FindExpression(textArea), ResolveResult rr = resolver.Resolve(currentExpression, this.parseInformation, targetText); List<ICompletionData> resultList = new List<ICompletionData>(); if (rr != null) { ArrayList completionData = rr.GetCompletionData(this.myProjectContent); if (completionData != null) { AddCompletionData(resultList, completionData); } } // "In generate completion Data, There were {0} results found".format(resultList.Count).debug(); return resultList.ToArray(); }