public ProjectHost(MarkdownCodeProject hierarchy) { this.hierarchy = hierarchy; }
public void AddIntellisenseProjectLanguage(LanguageProjectionBuffer projectionBuffer, Guid intellisenseGuid) { var contentType = projectionBuffer.IProjectionBuffer.ContentType; if (languageBridges.ContainsKey(contentType)) { return; } Guid iid_vsip = typeof(IVsIntellisenseProject).GUID; // Needed so that webprj.dll can load var shell = (IVsShell)ServiceProvider.GlobalProvider.GetService(typeof(SVsShell)); Guid otherPackage = new Guid("{39c9c826-8ef8-4079-8c95-428f5b1c323f}"); IVsPackage package; shell.LoadPackage(ref otherPackage, out package); var project = (IVsIntellisenseProject)EditorExtensionsPackage.Instance.CreateInstance(ref intellisenseGuid, ref iid_vsip, typeof(IVsIntellisenseProject)); string fileName = projectionBuffer.IProjectionBuffer.GetFileName(); var displayName = contentType.DisplayName; if (displayName == "CSharp") { displayName = "C#"; } if (displayName == "Basic") { displayName = "VB"; } var hierarchy = new MarkdownCodeProject(fileName, displayName + " code in " + Path.GetFileName(fileName), WorkspaceItem.Hierarchy); project.Init(new ProjectHost(hierarchy)); project.StartIntellisenseEngine(); project.AddAssemblyReference(typeof(object).Assembly.Location); project.AddAssemblyReference(typeof(Uri).Assembly.Location); project.AddAssemblyReference(typeof(Enumerable).Assembly.Location); project.AddAssemblyReference(typeof(System.Net.Http.HttpClient).Assembly.Location); project.AddAssemblyReference(typeof(System.Net.Http.Formatting.JsonMediaTypeFormatter).Assembly.Location); project.AddAssemblyReference(typeof(System.Xml.Linq.XElement).Assembly.Location); project.AddAssemblyReference(typeof(System.Web.HttpContextBase).Assembly.Location); project.AddAssemblyReference(typeof(System.Windows.Forms.Form).Assembly.Location); project.AddAssemblyReference(typeof(System.Windows.Window).Assembly.Location); project.AddAssemblyReference(typeof(System.Data.DataSet).Assembly.Location); int needsFile; if (ErrorHandler.Succeeded(project.IsWebFileRequiredByProject(out needsFile)) && needsFile != 0) { project.AddFile(fileName, MarkdownCodeProject.FileItemId); } IVsContainedLanguageFactory factory; project.WaitForIntellisenseReady(); project.GetContainedLanguageFactory(out factory); if (factory == null) { Logger.Log("Markdown: Couldn't create IVsContainedLanguageFactory for " + contentType); project.Close(); return; } LanguageBridge bridge = new LanguageBridge(this, projectionBuffer, factory, hierarchy); bridge.Disposing += delegate { project.Close(); }; languageBridges.Add(contentType, bridge); }
public void AddIntellisenseProjectLanguage(LanguageProjectionBuffer projectionBuffer, Guid intellisenseGuid) { var contentType = projectionBuffer.IProjectionBuffer.ContentType; if (languageBridges.ContainsKey(contentType)) return; Guid iid_vsip = typeof(IVsIntellisenseProject).GUID; // Needed so that webprj.dll can load var shell = (IVsShell)ServiceProvider.GlobalProvider.GetService(typeof(SVsShell)); Guid otherPackage = new Guid("{39c9c826-8ef8-4079-8c95-428f5b1c323f}"); IVsPackage package; shell.LoadPackage(ref otherPackage, out package); var project = (IVsIntellisenseProject)WebEssentialsPackage.Instance.CreateInstance(ref intellisenseGuid, ref iid_vsip, typeof(IVsIntellisenseProject)); string fileName = projectionBuffer.IProjectionBuffer.GetFileName(); var displayName = contentType.DisplayName; if (displayName == "CSharp") displayName = "C#"; if (displayName == "Basic") displayName = "VB"; var hierarchy = new MarkdownCodeProject(fileName, displayName + " code in " + Path.GetFileName(fileName), WorkspaceItem.Hierarchy); project.Init(new ProjectHost(hierarchy)); project.StartIntellisenseEngine(); project.AddAssemblyReference(typeof(object).Assembly.Location); project.AddAssemblyReference(typeof(Uri).Assembly.Location); project.AddAssemblyReference(typeof(Enumerable).Assembly.Location); project.AddAssemblyReference(typeof(System.Net.Http.HttpClient).Assembly.Location); project.AddAssemblyReference(typeof(System.Net.Http.Formatting.JsonMediaTypeFormatter).Assembly.Location); project.AddAssemblyReference(typeof(System.Xml.Linq.XElement).Assembly.Location); project.AddAssemblyReference(typeof(System.Web.HttpContextBase).Assembly.Location); project.AddAssemblyReference(typeof(System.Windows.Forms.Form).Assembly.Location); project.AddAssemblyReference(typeof(System.Windows.Window).Assembly.Location); project.AddAssemblyReference(typeof(System.Data.DataSet).Assembly.Location); int needsFile; if (ErrorHandler.Succeeded(project.IsWebFileRequiredByProject(out needsFile)) && needsFile != 0) project.AddFile(fileName, MarkdownCodeProject.FileItemId); IVsContainedLanguageFactory factory; project.WaitForIntellisenseReady(); project.GetContainedLanguageFactory(out factory); if (factory == null) { Logger.Log("Markdown: Couldn't create IVsContainedLanguageFactory for " + contentType); project.Close(); return; } LanguageBridge bridge = new LanguageBridge(this, projectionBuffer, factory, hierarchy); bridge.Disposing += delegate { project.Close(); }; languageBridges.Add(contentType, bridge); }