Exemple #1
0
        public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
        {
            WindowHelpers.WaitFor(delegate
            {
                // Make sure we don't set up ContainedLanguages until the buffer is ready
                // When loading lots of Markdown files on solution load, we might need to
                // wait for multiple idle cycles.
                var doc = ServiceManager.GetService <HtmlEditorDocument>(editorBuffer);
                if (doc == null)
                {
                    return(false);
                }
                if (doc.PrimaryView == null)
                {
                    return(false);
                }

                Guid guid = FindGuid();
                if (guid != Guid.Empty)
                {
                    ContainedLanguageAdapter.ForBuffer(editorBuffer).AddIntellisenseProjectLanguage(projectionBuffer, guid);
                }
                return(true);
            });
        }
        public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
        {
            EventHandler <EventArgs> h = null;

            h = delegate
            {
                // Make sure we don't set up ContainedLanguages until the buffer is ready
                // When loading lots of Markdown files on solution load, we might need to
                // wait for multiple idle cycles.
                var doc = ServiceManager.GetService <HtmlEditorDocument>(editorBuffer);
                if (doc == null)
                {
                    return;
                }
                if (doc.PrimaryView == null)
                {
                    return;
                }

                WebEditor.OnIdle -= h;
                Guid guid = FindGuid();
                if (guid != Guid.Empty)
                {
                    ContainedLanguageAdapter.ForBuffer(editorBuffer).AddIntellisenseProjectLanguage(projectionBuffer, guid);
                }
            };
            WebEditor.OnIdle += h;
        }
Exemple #3
0
        public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
        {
            WindowHelpers.WaitFor(delegate
            {
                var textView = TextViewConnectionListener.GetFirstViewForBuffer(editorBuffer);
                if (textView == null)
                {
                    return(false);
                }
                // Add the inner buffer's EditorDocument to the outer buffer before
                // broken editor code tries to create a new EditorDocument from the
                // outer buffer.
                var editorDocument = JSONEditorDocument.FromTextBuffer(projectionBuffer.IProjectionBuffer);
                ServiceManager.AddService(editorDocument, textView.TextBuffer);
                editorDocument.Closing += delegate { ServiceManager.RemoveService <JSONEditorDocument>(textView.TextBuffer); };

                // JSONIndenter uses TextView.TextBuffer, and therefore operates on the
                // entire Markdown buffer, breaking everything.  I manually force it to
                // use the inner projection buffer instead. Beware that this breaks its
                // ViewCaret property, and I can't fix that unless I mock its TextView.
                var indenter = ServiceManager.GetService <ISmartIndent>(textView);
                indenter.GetType().GetField("_textBuffer", BindingFlags.Instance | BindingFlags.NonPublic)
                .SetValue(indenter, projectionBuffer.IProjectionBuffer);
                return(true);
            });
        }
Exemple #4
0
 private void EnsureLanguageProjectionBuffer()
 {
     if (_languageProjectionBuffer == null)
     {
         ProjectionBufferManager service = ServiceManager.GetService <ProjectionBufferManager>(_viewBuffer);
         if (service != null)
         {
             if (Path.GetExtension(_fullPath) == ".vbhtml")
             {
                 _languageProjectionBuffer = (service.GetProjectionBuffer(".vb") as LanguageProjectionBuffer);
             }
             else
             {
                 _languageProjectionBuffer = (service.GetProjectionBuffer(".cs") as LanguageProjectionBuffer);
             }
         }
     }
     if (_linePragmaReader == null)
     {
         if (Path.GetExtension(_fullPath) == ".vbhtml")
         {
             _linePragmaReader = EmbeddedLanguageLinePragmaReaderFactory.Create("vb");
             return;
         }
         _linePragmaReader = EmbeddedLanguageLinePragmaReaderFactory.Create("c#");
     }
 }
Exemple #5
0
        public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
        {
            var componentModel = (IComponentModel)ServiceProvider.GetService(typeof(SComponentModel));

            var workspace = editorBuffer.Properties.GetOrCreateSingletonProperty(() =>
                                                                                 new MarkdownWorkspace(MefV1HostServices.Create(componentModel.DefaultExportProvider))
                                                                                 );

            var contentType = projectionBuffer.IProjectionBuffer.ContentType.DisplayName;
            var projectId   = editorBuffer.Properties.GetOrCreateSingletonProperty(contentType, () =>
            {
                var newProject = workspace.CurrentSolution
                                 .AddProject(contentType + " Markdown Project", "Markdown", contentTypeLanguages[contentType])
                                 .AddMetadataReferences(
                    DefaultReferences.Select(name => VSWorkspace.CreatePortableExecutableReference(
                                                 Path.Combine(referenceAssemblyPath, name + ".dll"),
                                                 MetadataReferenceProperties.Assembly
                                                 ))
                    );
                workspace.TryApplyChanges(newProject.Solution);
                return(newProject.Id);
            });

            workspace.CreateDocument(projectId, projectionBuffer.IProjectionBuffer);
            WindowHelpers.WaitFor(delegate
            {
                var textView = TextViewConnectionListener.GetFirstViewForBuffer(editorBuffer);
                if (textView == null)
                {
                    return(false);
                }
                InstallCommandTarget(textView, projectionBuffer.IProjectionBuffer);
                return(true);
            });
        }
 public LanguageBridge(ContainedLanguageAdapter owner, LanguageProjectionBuffer projectionBuffer, IVsContainedLanguageFactory languageFactory, IVsHierarchy hierarchy)
 {
     this.owner           = owner;
     this.languageFactory = languageFactory;
     ProjectionBuffer     = projectionBuffer;
     this.hierarchy       = hierarchy;
     InitContainedLanguage();
 }
 public LanguageBridge(ContainedLanguageAdapter owner, LanguageProjectionBuffer projectionBuffer, IVsContainedLanguageFactory languageFactory, IVsHierarchy hierarchy)
 {
     this.owner = owner;
     this.languageFactory = languageFactory;
     ProjectionBuffer = projectionBuffer;
     this.hierarchy = hierarchy;
     InitContainedLanguage();
 }
Exemple #8
0
        internal void Create(HtmlEditorDocument document, IVsContainedLanguage containedLanguage, IVsTextBufferCoordinator bufferCoordinator, LanguageProjectionBuffer languageBuffer, out IVsTextViewFilter containedLanguageViewfilter)
        {
            containedLanguageViewfilter = null;
            TextViewData textViewDataForBuffer = TextViewConnectionListener.GetTextViewDataForBuffer(document.TextBuffer);

            if (textViewDataForBuffer == null || textViewDataForBuffer.LastActiveView == null)
            {
                return;
            }
            TextView = textViewDataForBuffer.LastActiveView;
            IVsTextViewIntellisenseHostProvider vsTextViewIntellisenseHostProvider = TextView.QueryInterface <IVsTextViewIntellisenseHostProvider>();

            if (vsTextViewIntellisenseHostProvider == null)
            {
                return;
            }

            Guid   gUID = typeof(IVsTextViewIntellisenseHost).GUID;
            IntPtr intPtr;

            vsTextViewIntellisenseHostProvider.CreateIntellisenseHost(bufferCoordinator, ref gUID, out intPtr);
            if (intPtr == IntPtr.Zero)
            {
                return;
            }

            IVsTextViewIntellisenseHost vsTextViewIntellisenseHost = Marshal.GetObjectForIUnknown(intPtr) as IVsTextViewIntellisenseHost;

            Marshal.Release(intPtr);
            if (vsTextViewIntellisenseHost == null)
            {
                return;
            }

            HtmlMainController htmlMainController = HtmlMainController.FromTextView(TextView);
            ICommandTarget     chainedController  = htmlMainController.ChainedController;

            if (chainedController == null)
            {
                return;
            }

            OleToCommandTargetShim oleToCommandTargetShim = chainedController as OleToCommandTargetShim;

            if (containedLanguage.GetTextViewFilter(vsTextViewIntellisenseHost, oleToCommandTargetShim.OleTarget, out containedLanguageViewfilter) != 0)
            {
                return;
            }

            IOleCommandTarget      oleTarget = containedLanguageViewfilter as IOleCommandTarget;
            OleToCommandTargetShim containedLanguageTarget = new OleToCommandTargetShim(TextView, oleTarget);

            ContainedLanguageTarget = containedLanguageTarget;

            _languageBuffer = languageBuffer;
            _languageBuffer.MappingsChanged += OnMappingsChanged;
        }
Exemple #9
0
 public VsLegacyContainedLanguageHost(HtmlEditorDocument vsDocument, LanguageProjectionBuffer secondaryBuffer, IVsHierarchy hierarchy)
 {
     _modernContainedLanguageHost = (ContainedLanguageHost.GetHost(vsDocument.PrimaryView, secondaryBuffer.IProjectionBuffer) as IWebContainedLanguageHost);
     _secondaryBuffer             = secondaryBuffer;
     this.hierarchy = hierarchy;
     _vsDocument    = vsDocument;
     _vsDocument.OnDocumentClosing    += OnDocumentClosing;
     secondaryBuffer.MappingsChanging += OnMappingsChanging;
     secondaryBuffer.MappingsChanged  += OnMappingsChanged;
 }
Exemple #10
0
 private void OnMappingsChanged(object sender, MappingsChangedEventArgs e)
 {
     if (e.Mappings.Count > 0)
     {
         _languageBuffer.MappingsChanged -= OnMappingsChanged;
         IContainedLanguageHost host = ContainedLanguageHost.GetHost(TextView, _languageBuffer.IProjectionBuffer);
         host.SetContainedCommandTarget(TextView, ContainedLanguageTarget);
         ContainedLanguageTarget = null;
         TextView        = null;
         _languageBuffer = null;
     }
 }
 public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
 {
     WindowHelpers.WaitFor(delegate
     {
         var textView = TextViewConnectionListener.GetFirstViewForBuffer(editorBuffer);
         if (textView == null)
         {
             return(false);
         }
         // Attach the inner buffer's Document to the outer
         // buffer so that it can be found from the TextView
         var editorDocument = JSONEditorDocument.FromTextBuffer(projectionBuffer.IProjectionBuffer)
                              ?? JSONEditorDocument.Attach(projectionBuffer.IProjectionBuffer);
         ServiceManager.AddService(editorDocument, editorBuffer);
         editorDocument.Closing += delegate { ServiceManager.RemoveService <JSONEditorDocument>(textView.TextBuffer); };
         return(true);
     });
 }
        internal void Create(HtmlEditorDocument document, IVsContainedLanguage containedLanguage, IVsTextBufferCoordinator bufferCoordinator, LanguageProjectionBuffer languageBuffer, out IVsTextViewFilter containedLanguageViewfilter)
        {
            containedLanguageViewfilter = null;
            TextViewData textViewDataForBuffer = TextViewConnectionListener.GetTextViewDataForBuffer(document.TextBuffer);
            if (textViewDataForBuffer == null || textViewDataForBuffer.LastActiveView == null)
                return;
            TextView = textViewDataForBuffer.LastActiveView;
            IVsTextViewIntellisenseHostProvider vsTextViewIntellisenseHostProvider = TextView.QueryInterface<IVsTextViewIntellisenseHostProvider>();
            if (vsTextViewIntellisenseHostProvider == null)
                return;

            Guid gUID = typeof(IVsTextViewIntellisenseHost).GUID;
            IntPtr intPtr;
            vsTextViewIntellisenseHostProvider.CreateIntellisenseHost(bufferCoordinator, ref gUID, out intPtr);
            if (intPtr == IntPtr.Zero)
                return;

            IVsTextViewIntellisenseHost vsTextViewIntellisenseHost = Marshal.GetObjectForIUnknown(intPtr) as IVsTextViewIntellisenseHost;
            Marshal.Release(intPtr);
            if (vsTextViewIntellisenseHost == null)
                return;

            HtmlMainController htmlMainController = HtmlMainController.FromTextView(TextView);
            ICommandTarget chainedController = htmlMainController.ChainedController;
            if (chainedController == null)
                return;

            OleToCommandTargetShim oleToCommandTargetShim = chainedController as OleToCommandTargetShim;
            if (containedLanguage.GetTextViewFilter(vsTextViewIntellisenseHost, oleToCommandTargetShim.OleTarget, out containedLanguageViewfilter) != 0)
                return;

            IOleCommandTarget oleTarget = containedLanguageViewfilter as IOleCommandTarget;
            OleToCommandTargetShim containedLanguageTarget = new OleToCommandTargetShim(TextView, oleTarget);
            ContainedLanguageTarget = containedLanguageTarget;

            _languageBuffer = languageBuffer;
            _languageBuffer.MappingsChanged += OnMappingsChanged;
        }
        public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
        {
            var componentModel = (IComponentModel)ServiceProvider.GetService(typeof(SComponentModel));

            var workspace = editorBuffer.Properties.GetOrCreateSingletonProperty(() =>
                new MarkdownWorkspace(MefV1HostServices.Create(componentModel.DefaultExportProvider))
            );

            var contentType = projectionBuffer.IProjectionBuffer.ContentType.DisplayName;
            var project = editorBuffer.Properties.GetOrCreateSingletonProperty(contentType, () =>
            {
                var newProject = workspace.AddProject(
                    "Sample " + contentType + " Project",
                    contentTypeLanguages[contentType]
                );
                workspace.TryApplyChanges(workspace.CurrentSolution.AddMetadataReferences(
                    newProject.Id,
                    DefaultReferences.Select(name => VSWorkspace.CreatePortableExecutableReference(
                        Path.Combine(referenceAssemblyPath, name + ".dll"),
                        MetadataReferenceProperties.Assembly
                    ))
                ));
                return newProject;
            });
            workspace.CreateDocument(project.Id, projectionBuffer.IProjectionBuffer);

            WindowHelpers.WaitFor(delegate
            {
                var textView = TextViewConnectionListener.GetFirstViewForBuffer(editorBuffer);
                if (textView == null) return false;
                InstallCommandTarget(textView, projectionBuffer.IProjectionBuffer);
                return true;
            });
        }
 public VsLegacyContainedLanguageHost(HtmlEditorDocument vsDocument, LanguageProjectionBuffer secondaryBuffer, IVsHierarchy hierarchy)
 {
     _modernContainedLanguageHost = (ContainedLanguageHost.GetHost(vsDocument.PrimaryView, secondaryBuffer.IProjectionBuffer) as IWebContainedLanguageHost);
     _secondaryBuffer = secondaryBuffer;
     this.hierarchy = hierarchy;
     _vsDocument = vsDocument;
     _vsDocument.OnDocumentClosing += OnDocumentClosing;
     secondaryBuffer.MappingsChanging += OnMappingsChanging;
     secondaryBuffer.MappingsChanged += OnMappingsChanged;
 }
        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 OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
 {
 }
		private void EnsureLanguageProjectionBuffer()
		{
			if (_languageProjectionBuffer == null)
			{
				ProjectionBufferManager service = ServiceManager.GetService<ProjectionBufferManager>(_viewBuffer);
				if (service != null)
				{
					if (Path.GetExtension(_fullPath) == ".vbhtml")
					{
						_languageProjectionBuffer = (service.GetProjectionBuffer(".vb") as LanguageProjectionBuffer);
					}
					else
					{
						_languageProjectionBuffer = (service.GetProjectionBuffer(".cs") as LanguageProjectionBuffer);
					}
				}
			}
			if (_linePragmaReader == null)
			{
				if (Path.GetExtension(_fullPath) == ".vbhtml")
				{
					_linePragmaReader = EmbeddedLanguageLinePragmaReaderFactory.Create("vb");
					return;
				}
				_linePragmaReader = EmbeddedLanguageLinePragmaReaderFactory.Create("c#");
			}
		}
 private void OnMappingsChanged(object sender, MappingsChangedEventArgs e)
 {
     if (e.Mappings.Count > 0)
     {
         _languageBuffer.MappingsChanged -= OnMappingsChanged;
         IContainedLanguageHost host = ContainedLanguageHost.GetHost(TextView, _languageBuffer.IProjectionBuffer);
         host.SetContainedCommandTarget(TextView, ContainedLanguageTarget);
         ContainedLanguageTarget = null;
         TextView = null;
         _languageBuffer = null;
     }
 }
 public void Dispose()
 {
     _languageBuffer = null;
     ContainedLanguageTarget = null;
     TextView = null;
 }
        public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
        {
            WindowHelpers.WaitFor(delegate
            {
                var textView = TextViewConnectionListener.GetFirstViewForBuffer(editorBuffer);
                if (textView == null)
                    return false;
                // Add the inner buffer's EditorDocument to the outer buffer before
                // broken editor code tries to create a new EditorDocument from the
                // outer buffer.
                var editorDocument = JSONEditorDocument.FromTextBuffer(projectionBuffer.IProjectionBuffer);
                ServiceManager.AddService(editorDocument, textView.TextBuffer);
                editorDocument.Closing += delegate { ServiceManager.RemoveService<JSONEditorDocument>(textView.TextBuffer); };

                // JSONIndenter uses TextView.TextBuffer, and therefore operates on the
                // entire Markdown buffer, breaking everything.  I manually force it to
                // use the inner projection buffer instead. Beware that this breaks its
                // ViewCaret property, and I can't fix that unless I mock its TextView.
                var indenter = ServiceManager.GetService<ISmartIndent>(textView);
                indenter.GetType().GetField("_textBuffer", BindingFlags.Instance | BindingFlags.NonPublic)
                    .SetValue(indenter, projectionBuffer.IProjectionBuffer);
                return true;
            });
        }
Exemple #21
0
 public void Dispose()
 {
     _languageBuffer         = null;
     ContainedLanguageTarget = null;
     TextView = null;
 }
        public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
        {
            EventHandler<EventArgs> h = null;
            h = delegate
            {
                // Make sure we don't set up ContainedLanguages until the buffer is ready
                // When loading lots of Markdown files on solution load, we might need to
                // wait for multiple idle cycles.
                var doc = ServiceManager.GetService<HtmlEditorDocument>(editorBuffer);
                if (doc == null) return;
                if (doc.PrimaryView == null) return;

                WebEditor.OnIdle -= h;
                Guid guid = FindGuid();
                if (guid != Guid.Empty)
                    ContainedLanguageAdapter.ForBuffer(editorBuffer).AddIntellisenseProjectLanguage(projectionBuffer, guid);
            };
            WebEditor.OnIdle += h;
        }
        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);
        }
		public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer) { }
 public void OnBlockCreated(ITextBuffer editorBuffer, LanguageProjectionBuffer projectionBuffer)
 {
     EventHandler<EventArgs> h = null;
     h = delegate
     {
         // Make sure we don't set up ContainedLanguages until the buffer is ready
         WebEditor.OnIdle -= h;
         ContainedLanguageAdapter.ForBuffer(editorBuffer).AddIntellisenseProjectLanguage(projectionBuffer, FindGuid());
     };
     WebEditor.OnIdle += h;
 }