Exemplo n.º 1
0
        CSharpTextEditorCompletion CreateCompletion(MonoDevelop.Ide.Gui.Document document, DocumentInfo info,
                                                    LocalDocumentInfo localInfo, ProjectDom dom, out CodeCompletionContext codeCompletionContext)
        {
            var doc = new Mono.TextEditor.Document()
            {
                Text = localInfo.LocalDocument,
            };
            var documentLocation = doc.OffsetToLocation(localInfo.CaretPosition);

            codeCompletionContext = new CodeCompletionContext()
            {
                TriggerOffset     = localInfo.CaretPosition,
                TriggerLine       = documentLocation.Line + 1,
                TriggerLineOffset = documentLocation.Column + 1,
            };

            var r = new System.IO.StringReader(localInfo.LocalDocument);

            using (var parser = ICSharpCode.NRefactory.ParserFactory.CreateParser(SupportedLanguage.CSharp, r)) {
                parser.Parse();
                return(new CSharpTextEditorCompletion(document)
                {
                    ParsedUnit = parser.CompilationUnit,
                    Dom = dom,
                });
            }
        }
Exemplo n.º 2
0
        public LocalDocumentInfo BuildLocalDocument(DocumentInfo info, TextEditorData data,
                                                    string expressionText, string textAfterCaret, bool isExpression)
        {
            var sb = new StringBuilder();

            WriteUsings(info.Imports, sb);
            WriteClassDeclaration(info, sb);
            sb.AppendLine("{");
            var result = new LocalDocumentInfo();

            if (isExpression)
            {
                sb.AppendLine("void Generated ()");
                sb.AppendLine("{");
                //Console.WriteLine ("start:" + location.BeginLine  +"/" +location.BeginColumn);
                foreach (var node in info.XExpressions)
                {
                    bool isBlock = node is WebFormsRenderBlock;

                    if (node.Region.Begin.Line > data.Caret.Line || node.Region.Begin.Line == data.Caret.Line && node.Region.Begin.Column > data.Caret.Column - 5)
                    {
                        continue;
                    }
                    //Console.WriteLine ("take xprt:" + expressions.Key.BeginLine  +"/" +expressions.Key.BeginColumn);

                    var start = data.Document.LocationToOffset(node.Region.Begin.Line, node.Region.Begin.Column) + 2;
                    var end   = data.Document.LocationToOffset(node.Region.End.Line, node.Region.End.Column) - 2;

                    if (!isBlock)
                    {
                        sb.Append("WriteLine (");
                        start += 1;
                    }

                    string expr = data.GetTextBetween(start, end);
                    result.AddTextPosition(start, end, expr.Length);
                    sb.Append(expr);

                    if (!isBlock)
                    {
                        sb.Append(");");
                    }
                }
            }
            sb.Append(expressionText);
            int caretPosition = sb.Length;

            sb.Append(textAfterCaret);

            sb.AppendLine();
            sb.AppendLine("}");
            sb.AppendLine("}");

            result.LocalDocument         = sb.ToString();
            result.CaretPosition         = caretPosition;
            result.OriginalCaretPosition = data.Caret.Offset;
            result.ParsedLocalDocument   = Parse(info.AspNetDocument.FileName, sb.ToString());
            return(result);
        }
Exemplo n.º 3
0
        public IParameterDataProvider HandleParameterCompletion(MonoDevelop.Ide.Gui.Document document,
                                                                DocumentInfo info, LocalDocumentInfo localInfo, ProjectDom dom, char completionChar)
        {
            CodeCompletionContext codeCompletionContext;

            using (var completion = CreateCompletion(document, info, localInfo, dom, out codeCompletionContext)) {
                return(completion.HandleParameterCompletion(codeCompletionContext, completionChar));
            }
        }
Exemplo n.º 4
0
        public ICompletionDataList HandleCompletion(MonoDevelop.Ide.Gui.Document document, DocumentInfo info,
                                                    LocalDocumentInfo localInfo, ProjectDom dom, char currentChar, ref int triggerWordLength)
        {
            CodeCompletionContext codeCompletionContext;

            using (var completion = CreateCompletion(document, info, localInfo, dom, out codeCompletionContext)) {
                return(completion.HandleCodeCompletion(codeCompletionContext, currentChar, ref triggerWordLength));
            }
        }
Exemplo n.º 5
0
        public ICompletionDataList HandlePopupCompletion(MonoDevelop.Ide.Gui.Document document, DocumentInfo info,
                                                         LocalDocumentInfo localInfo, ProjectDom dom)
        {
            CodeCompletionContext codeCompletionContext;

            using (var completion = CreateCompletion(document, info, localInfo, dom, out codeCompletionContext)) {
                return(completion.CodeCompletionCommand(codeCompletionContext));
            }
        }
Exemplo n.º 6
0
        public LocalDocumentInfo BuildLocalDocument(DocumentInfo info, TextEditorData data,
                                                    string expressionText, string textAfterCaret, bool isExpression)
        {
            var sb = new StringBuilder();

            WriteUsings(info.Imports, sb);
            WriteClassDeclaration(info, sb);
            sb.AppendLine("{");
            var result = new LocalDocumentInfo();

            if (isExpression)
            {
                sb.AppendLine("void Generated ()");
                sb.AppendLine("{");
                //Console.WriteLine ("start:" + location.BeginLine  +"/" +location.BeginColumn);
                foreach (var expression in info.Expressions)
                {
                    if (expression.Location.BeginLine > data.Caret.Line || expression.Location.BeginLine == data.Caret.Line && expression.Location.BeginColumn > data.Caret.Column - 5)
                    {
                        continue;
                    }
                    //Console.WriteLine ("take xprt:" + expressions.Key.BeginLine  +"/" +expressions.Key.BeginColumn);
                    if (expression.IsExpression)
                    {
                        sb.Append("WriteLine (");
                    }
                    string expr = expression.Expression.Trim('=');
                    result.AddTextPosition(data.Document.LocationToOffset(expression.Location.BeginLine, expression.Location.BeginColumn), sb.Length, expr.Length);
                    sb.Append(expr);
                    if (expression.IsExpression)
                    {
                        sb.Append(");");
                    }
                }
            }
            sb.Append(expressionText);
            int caretPosition = sb.Length;

            sb.Append(textAfterCaret);

            sb.AppendLine();
            sb.AppendLine("}");
            sb.AppendLine("}");

            result.LocalDocument         = sb.ToString();
            result.CaretPosition         = caretPosition;
            result.OriginalCaretPosition = data.Caret.Offset;
            result.ParsedLocalDocument   = Parse(info.Dom, info.AspNetDocument.FileName, sb.ToString());
            return(result);
        }
Exemplo n.º 7
0
 public AspCompletionWidget(Document realDocument, LocalDocumentInfo localInfo)
 {
     this.realDocument = realDocument;
     this.localInfo    = localInfo;
 }
Exemplo n.º 8
0
        CSharpCompletionTextEditorExtension CreateCompletion(Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo, out CodeCompletionContext codeCompletionContext)
        {
            var doc = new TextDocument()
            {
                Text = localInfo.LocalDocument,
            };
            var documentLocation = doc.OffsetToLocation(localInfo.CaretPosition);

            codeCompletionContext = new CodeCompletionContext()
            {
                TriggerOffset     = localInfo.CaretPosition,
                TriggerLine       = documentLocation.Line,
                TriggerLineOffset = documentLocation.Column - 1
            };

            return(new CSharpCompletionTextEditorExtension(localInfo.HiddenDocument)
            {
                CompletionWidget = CreateCompletionWidget(realDocument, localInfo)
            });
        }
Exemplo n.º 9
0
 public ICompletionWidget CreateCompletionWidget(Document realDocument, LocalDocumentInfo localInfo)
 {
     return(new AspCompletionWidget(realDocument, localInfo));
 }
Exemplo n.º 10
0
        public bool GetParameterCompletionCommandOffset(Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo, out int cpos)
        {
            CodeCompletionContext codeCompletionContext;

            using (var completion = CreateCompletion(realDocument, info, localInfo, out codeCompletionContext)) {
                return(completion.GetParameterCompletionCommandOffset(out cpos));
            }
        }
Exemplo n.º 11
0
        public ParameterDataProvider HandleParameterCompletion(Document realDocument, CodeCompletionContext completionContext, DocumentInfo info, LocalDocumentInfo localInfo, char completionChar)
        {
            CodeCompletionContext ccc;

            using (var completion = CreateCompletion(realDocument, info, localInfo, out ccc)) {
                return(completion.HandleParameterCompletion(completionContext, completionChar));
            }
        }
Exemplo n.º 12
0
        public ICompletionDataList HandleCompletion(Document realDocument, CodeCompletionContext completionContext, DocumentInfo info, LocalDocumentInfo localInfo, char currentChar, ref int triggerWordLength)
        {
            CodeCompletionContext ccc;

            using (var completion = CreateCompletion(realDocument, info, localInfo, out ccc)) {
                return(completion.HandleCodeCompletion(completionContext, currentChar, ref triggerWordLength));
            }
        }
Exemplo n.º 13
0
        public ICompletionDataList HandlePopupCompletion(Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo)
        {
            CodeCompletionContext codeCompletionContext;

            using (var completion = CreateCompletion(realDocument, info, localInfo, out codeCompletionContext)) {
                return(completion.CodeCompletionCommand(codeCompletionContext));
            }
        }
Exemplo n.º 14
0
 public AspCompletionWidget(MonoDevelop.Ide.Gui.Document realDocument, LocalDocumentInfo localInfo)
 {
     this.realDocument = realDocument;
     this.localInfo    = localInfo;
 }
Exemplo n.º 15
0
 public ICompletionWidget CreateCompletionWidget(MonoDevelop.Ide.Gui.Document realDocument, LocalDocumentInfo localInfo)
 {
     return(new AspCompletionWidget(realDocument, localInfo));
 }
Exemplo n.º 16
0
		CSharpTextEditorCompletion CreateCompletion (MonoDevelop.Ide.Gui.Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo, out CodeCompletionContext codeCompletionContext)
		{
			var doc = new Mono.TextEditor.Document () {
				Text = localInfo.LocalDocument,
			};
			var documentLocation = doc.OffsetToLocation (localInfo.CaretPosition);
			
			codeCompletionContext = new CodeCompletionContext () {
				TriggerOffset = localInfo.CaretPosition,
				TriggerLine = documentLocation.Line,
				TriggerLineOffset = documentLocation.Column - 1
			};
			
			var r = new System.IO.StringReader (localInfo.LocalDocument);
			using (var parser = ICSharpCode.OldNRefactory.ParserFactory.CreateParser (SupportedLanguage.CSharp, r)) {
				parser.Parse ();
				return new CSharpTextEditorCompletion (localInfo.HiddenDocument) {
					ParsedUnit = parser.CompilationUnit,
					CompletionWidget = CreateCompletionWidget (realDocument, localInfo),
					Dom = localInfo.HiddenDocument.Dom
				};
			}
		}