Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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;
        }
Exemple #5
0
 public string GetText(IDocumentProvider doc)
 {
     return(Documents[doc.GetDocumentGuid()].GetTextAsync().Result.ToString());
 }
Exemple #6
0
        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;
        }
Exemple #7
0
        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);
        }
Exemple #8
0
 public string GetText(IDocumentProvider doc)
 {
     return Documents[doc.GetDocumentGuid()].GetTextAsync().Result.ToString();
 }
Exemple #9
0
        /// <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;
        }
Exemple #10
0
 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;
 }