public override ParsedDocument Parse(bool storeAst, string fileName, System.IO.TextReader content, Project project = null) { currentDocument = openDocuments.FirstOrDefault(d => d != null && d.FileName == fileName); // We need document and project to be loaded to correctly initialize Razor Host. this.project = project as DotNetProject; if (currentDocument == null && !TryAddDocument(fileName)) { return(new RazorCSharpParsedDocument(fileName, new RazorCSharpPageInfo())); } this.aspProject = project as AspNetAppProject; EnsureParserInitializedFor(fileName); var errors = new List <Error> (); using (var source = new SeekableTextReader(content)) { var textChange = CreateTextChange(source); var parseResult = editorParser.CheckForStructureChanges(textChange); if (parseResult == PartialParseResult.Rejected) { parseComplete.WaitOne(); if (!capturedArgs.GeneratorResults.Success) { GetRazorErrors(errors); } } } ParseHtmlDocument(errors); CreateCSharpParsedDocument(); ClearLastChange(); RazorHostKind kind = RazorHostKind.WebPage; if (editorParser.Host is WebCodeRazorHost) { kind = RazorHostKind.WebCode; } else if (editorParser.Host is MonoDevelop.AspNet.Razor.Generator.PreprocessedRazorHost) { kind = RazorHostKind.Template; } var pageInfo = new RazorCSharpPageInfo() { HtmlRoot = htmlParsedDocument, GeneratorResults = capturedArgs.GeneratorResults, Spans = editorParser.CurrentParseTree.Flatten(), CSharpParsedFile = parsedCodeFile, CSharpCode = csharpCode, Errors = errors, FoldingRegions = GetFoldingRegions(), Comments = comments, Compilation = CreateCompilation(), HostKind = kind, }; return(new RazorCSharpParsedDocument(fileName, pageInfo)); }