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;
 }
Exemplo n.º 3
0
        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();
        }