Пример #1
0
        public static string GetDoc(XAssembly asm, IXSymbol symbol)
        {
            var    file = XSharpXMLDocTools.GetXmlDocFile(asm, null);
            string key  = null;

            if (symbol is IXTypeSymbol type)
            {
                key = type.XMLSignature;
            }
            else if (symbol is IXMemberSymbol member)
            {
                key = member.XMLSignature;
            }
            if (file == null)
            {
                return(null);
            }
            if (!string.IsNullOrEmpty(key))
            {
                uint   id  = 0;
                string xml = "";
                return(ThreadHelper.JoinableTaskFactory.Run(async delegate
                {
                    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
                    StringBuilder sb = new StringBuilder();

                    var result = file.ParseMemberSignature(key, out id);
                    result = file.GetMemberXML(id, out xml);
                    var summary = GetSummary(xml, out var returns, out var remarks);
                    if (!string.IsNullOrWhiteSpace(summary))
                    {
                        sb.Append(addXml("summary", summary));
                    }
                    if (symbol is IXMemberSymbol member && member.Parameters.Count > 0)
                    {
                        var names = new List <string>();
                        var desc = new List <string>();
                        GetParameterInfo(file, xml, names, desc);
                        if (names.Count > 0 && desc.Count > 0 && names.Count == desc.Count)
                        {
                            for (int i = 0; i < names.Count; i++)
                            {
                                var temp = addXml("param", desc[i]);
                                temp = temp.Replace("<param>", $"<param name=\"{names[i]}\">");
                                sb.Append(temp);
                            }
                        }
                    }
                    if (!String.IsNullOrWhiteSpace(returns))
                    {
                        sb.Append(addXml("returns", returns));
                    }
                    if (!String.IsNullOrWhiteSpace(remarks))
                    {
                        sb.Append(addXml("remarks", remarks));
                    }
                    return sb.ToString();
                }));
Пример #2
0
        protected override async System.Threading.Tasks.Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress)
        {
            instance = this;
            ModelScannerEvents.Start();

            await base.InitializeAsync(cancellationToken, progress);

            _txtManager = await GetServiceAsync(typeof(SVsTextManager)) as IVsTextManager4;

            Assumes.Present(_txtManager);

            // register property changed event handler
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            XSharpXMLDocTools.Initialize();
            var shell = await this.GetServiceAsync(typeof(SVsShell)) as IVsShell;

            if (shell != null)
            {
                shell.AdviseShellPropertyChanges(this, out shellCookie);
            }

            IServiceContainer           serviceContainer = this as IServiceContainer;
            XSharpLegacyLanguageService languageService  = new XSharpLegacyLanguageService(serviceContainer);

            languageService.SetSite(this);

            serviceContainer.AddService(typeof(XSharpLegacyLanguageService),
                                        languageService,
                                        true);
            //if (!XSettings.DisableClassViewObjectView)
            //{
            //    ServiceCreatorCallback callback = new ServiceCreatorCallback(CreateLibraryService);
            //    serviceContainer.AddService(typeof(IXSharpLibraryManager), callback, true);
            //}

            RegisterDebuggerEvents();
            addOurFileExtensionsForDiffAndPeek("Diff\\SupportedContentTypes");
            addOurFileExtensionsForDiffAndPeek("Peek\\SupportedContentTypes");


            // Register a timer to call several services
            // idle periods.
            _oleComponentManager = await GetServiceAsync(typeof(SOleComponentManager)) as IOleComponentManager;

            if (m_componentID == 0 && _oleComponentManager != null)
            {
                OLECRINFO[] crinfo = new OLECRINFO[1];
                crinfo[0].cbSize = (uint)Marshal.SizeOf(typeof(OLECRINFO));
                crinfo[0].grfcrf = (uint)_OLECRF.olecrfNeedIdleTime |
                                   (uint)_OLECRF.olecrfNeedPeriodicIdleTime;
                crinfo[0].grfcadvf = (uint)_OLECADVF.olecadvfModal |
                                     (uint)_OLECADVF.olecadvfRedrawOff |
                                     (uint)_OLECADVF.olecadvfWarningsOff;
                crinfo[0].uIdleTimeInterval = 1000;

                int hr = _oleComponentManager.FRegisterComponent(this, crinfo, out m_componentID);
            }
            GetIntellisenseSettings();
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            XSettings.LanguageService = this;
        }
Пример #3
0
 private void SolutionEvents_OnAfterCloseSolution()
 {
     XSolution.Close();
     XSharpXMLDocTools.Close();
     XSolution.IsClosing = false;
 }