internal void InitializeExtensionChain(DocumentContext documentContext)
        {
            if (documentContext == null)
            {
                throw new ArgumentNullException(nameof(documentContext));
            }
            DetachExtensionChain();
            var extensions    = ExtensionContext.GetExtensionNodes("/MonoDevelop/Ide/TextEditorExtensions", typeof(TextEditorExtensionNode));
            var mimetypeChain = DesktopService.GetMimeTypeInheritanceChainForFile(FileName).ToArray();
            var newExtensions = new List <TextEditorExtension> ();

            foreach (TextEditorExtensionNode extNode in extensions)
            {
                if (!extNode.Supports(FileName, mimetypeChain))
                {
                    continue;
                }
                TextEditorExtension ext;
                try {
                    var instance = extNode.CreateInstance();
                    ext = instance as TextEditorExtension;
                    if (ext != null)
                    {
                        newExtensions.Add(ext);
                    }
                } catch (Exception e) {
                    LoggingService.LogError("Error while creating text editor extension :" + extNode.Id + "(" + extNode.Type + ")", e);
                    continue;
                }
            }
            SetExtensionChain(documentContext, newExtensions);
        }
Esempio n. 2
0
 internal static IEnumerable <ProjectModelExtensionNode> GetModelExtensions(ExtensionContext ctx)
 {
     if (ctx != null)
     {
         return(Runtime.RunInMainThread(() => ctx.GetExtensionNodes(ProjectService.ProjectModelExtensionsPath)).Result.Cast <ProjectModelExtensionNode> ().Concat(customNodes).ToArray());
     }
     else
     {
         if (modelExtensions == null)
         {
             Runtime.RunInMainThread((Action)InitExtensions).Wait();
         }
         return(modelExtensions);
     }
 }
 internal IEnumerable <TypeExtensionNode <ExportDocumentControllerExtensionAttribute> > GetModelExtensions(ExtensionContext ctx)
 {
     return(ctx.GetExtensionNodes <TypeExtensionNode <ExportDocumentControllerExtensionAttribute> > (DocumentController.DocumentControllerExtensionsPath).Concat(customExtensionNodes));
 }