/// <summary> /// 取得光标位置的可用智能感知项目 /// </summary> /// <param name="bodytext">代码</param> /// <param name="logic">对应项目</param> /// <param name="index">光标所在位置</param> /// <returns>可能智能感知项目</returns> public IEnumerable <ISymbol> GetRecommendedSymbolsAtPositionAsync(string bodytext, IDocumentProvider logic, int index) { if (logic is IPartCodeProvider) { var doc = Documents[logic.GetDocumentGuid()]; bodytext = (logic as IPartCodeProvider).ReplaceNewCode(doc.GetTextAsync().Result.ToString(), bodytext); //var doc = Documents[method.BusinessObject.Oid]; //var newText = method.ReplaceNewCode(doc.GetTextAsync().Result.ToString(), bodytext); //UpdateText(newText, method.BusinessObject); //var semanticModel = SemanticModels[method.BusinessObject.Oid]; //return Recommender.GetRecommendedSymbolsAtPositionAsync(semanticModel, pos, Workspace).Result; } UpdateText(bodytext, logic); if (logic is IPartCodeProvider) { var define = (logic as IPartCodeProvider).DefaultLocation; index = bodytext.IndexOf(define) + define.Length + index + 1; } var semanticModel = SemanticModels[logic.GetDocumentGuid()]; return(Recommender.GetRecommendedSymbolsAtPositionAsync(semanticModel, index, Workspace).Result); }
private void CreateDocument(IDocumentProvider documentProvider) { var doc = Workspace.AddDocument(ModuleProject.Id, documentProvider.GetFileName() + ".cs", SourceText.From(documentProvider.GetCode(), Encoding.UTF8)); var updated = Workspace.TryApplyChanges(doc.Project.Solution); Debug.WriteLine("Updated:" + updated); Documents.Add(documentProvider.GetDocumentGuid(), doc); SemanticModels.Add(documentProvider.GetDocumentGuid(), doc.GetSemanticModelAsync().Result); }
public IEnumerable <Diagnostic> GetDiagnostics(string text, IDocumentProvider method) { if (method is IPartCodeProvider) { var doc = Documents[method.GetDocumentGuid()]; text = (method as IPartCodeProvider).ReplaceNewCode(doc.GetTextAsync().Result.ToString(), text); } UpdateText(text, method); var rst = SemanticModels[method.GetDocumentGuid()].GetDiagnostics(); return(rst); }
private void UpdateText(string text, IDocumentProvider doc) { SourceText sourceText = SourceText.From(text, Encoding.UTF8); var document = Documents[doc.GetDocumentGuid()]; document = document.WithText(sourceText); var rs = Workspace.TryApplyChanges(document.Project.Solution); Debug.WriteLine("enter updated:" + rs); //重要:当更改了项目后,文档实例被变化了,必须重新保存 document = this.ModuleProject.Documents.First(x => x.Id == document.Id); Documents[doc.GetDocumentGuid()] = document; SemanticModels[doc.GetDocumentGuid()] = document.GetSemanticModelAsync().Result; }
public string GetText(IDocumentProvider doc) { return(Documents[doc.GetDocumentGuid()].GetTextAsync().Result.ToString()); }
private void UpdateText(string text, IDocumentProvider doc) { SourceText sourceText = SourceText.From(text,Encoding.UTF8); var document = Documents[doc.GetDocumentGuid()]; document = document.WithText(sourceText); var rs = Workspace.TryApplyChanges(document.Project.Solution); Debug.WriteLine("enter updated:" + rs); //��Ҫ������������Ŀ���ĵ�ʵ�����仯�ˣ��������±��� document = this.ModuleProject.Documents.First(x => x.Id == document.Id); Documents[doc.GetDocumentGuid()] = document; SemanticModels[doc.GetDocumentGuid()] = document.GetSemanticModelAsync().Result; }
private void CreateDocument(IDocumentProvider documentProvider) { var doc = Workspace.AddDocument(ModuleProject.Id, documentProvider.GetFileName() + ".cs", SourceText.From(documentProvider.GetCode(),Encoding.UTF8)); var updated = Workspace.TryApplyChanges(doc.Project.Solution); Debug.WriteLine("Updated:" + updated); Documents.Add(documentProvider.GetDocumentGuid(), doc); SemanticModels.Add(documentProvider.GetDocumentGuid(), doc.GetSemanticModelAsync().Result); }
public string GetText(IDocumentProvider doc) { return Documents[doc.GetDocumentGuid()].GetTextAsync().Result.ToString(); }
/// <summary> /// ȡ�ù��λ�õĿ������ܸ�֪��Ŀ /// </summary> /// <param name="bodytext">����</param> /// <param name="logic">��Ӧ��Ŀ</param> /// <param name="index">�������λ��</param> /// <returns>�������ܸ�֪��Ŀ</returns> public IEnumerable<ISymbol> GetRecommendedSymbolsAtPositionAsync(string bodytext, IDocumentProvider logic, int index) { if (logic is IPartCodeProvider) { var doc = Documents[logic.GetDocumentGuid()]; bodytext = (logic as IPartCodeProvider).ReplaceNewCode(doc.GetTextAsync().Result.ToString(), bodytext); //var doc = Documents[method.BusinessObject.Oid]; //var newText = method.ReplaceNewCode(doc.GetTextAsync().Result.ToString(), bodytext); //UpdateText(newText, method.BusinessObject); //var semanticModel = SemanticModels[method.BusinessObject.Oid]; //return Recommender.GetRecommendedSymbolsAtPositionAsync(semanticModel, pos, Workspace).Result; } UpdateText(bodytext, logic); if (logic is IPartCodeProvider) { var define = (logic as IPartCodeProvider).DefaultLocation; index = bodytext.IndexOf(define) + define.Length + index + 1; } var semanticModel = SemanticModels[logic.GetDocumentGuid()]; return Recommender.GetRecommendedSymbolsAtPositionAsync(semanticModel, index, Workspace).Result; }
public IEnumerable<Diagnostic> GetDiagnostics(string text, IDocumentProvider method) { if (method is IPartCodeProvider) { var doc = Documents[method.GetDocumentGuid()]; text = (method as IPartCodeProvider).ReplaceNewCode(doc.GetTextAsync().Result.ToString(), text); } UpdateText(text, method); var rst = SemanticModels[method.GetDocumentGuid()].GetDiagnostics(); return rst; }