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 static ITextView CurrentTextView(this ITextBuffer viewBuffer) { ITextView textView = null; if (viewBuffer != null) { TextViewData textViewData = TextViewConnectionListener.GetTextViewDataForBuffer(viewBuffer); if (textViewData != null) { textView = textViewData.LastActiveView; } } return textView; }
/// <summary> /// Retrieves document instance from text buffer /// </summary> public static IEditorDocument TryFromTextBuffer(ITextBuffer textBuffer) { IEditorDocument document = ServiceManager.GetService <IEditorDocument>(textBuffer); if (document == null) { TextViewData viewData = TextViewConnectionListener.GetTextViewDataForBuffer(textBuffer); if (viewData != null && viewData.LastActiveView != null) { MdMainController controller = MdMainController.FromTextView(viewData.LastActiveView); if (controller != null && controller.TextBuffer != null) { document = ServiceManager.GetService <MdEditorDocument>(controller.TextBuffer); } } } return(document); }
private TextViewData GetOrAddTextViewData(IWpfTextView textView) { lock (syncRoot) { if (!TextSnapshotTeXCommentBlocks.SupportedContentTypes.Contains(textView.TextBuffer.ContentType.TypeName)) { return(null); } if (!textViews.TryGetValue(textView, out TextViewData textViewData)) { textView.Closed += TextView_Closed; textViewData = new TextViewData(); textViewData.RegisterTextViewData(new TeXCommentAdornmentTagger(textView, renderingManager, BufferTagAggregatorFactoryService.CreateTagAggregator <TeXCommentTag>(textView.TextBuffer))); textViews.Add(textView, textViewData); } return(textViewData); } }
public static T TryFromTextBuffer <T>(ITextBuffer textBuffer, string contentType) where T : class, IEditorDocument { var document = ServiceManager.GetService <T>(textBuffer); if (document == null) { document = FindInProjectedBuffers <T>(textBuffer, contentType); if (document == null) { TextViewData viewData = TextViewConnectionListener.GetTextViewDataForBuffer(textBuffer); if (viewData != null && viewData.LastActiveView != null) { var controller = ViewController.FromTextView(viewData.LastActiveView); if (controller != null && controller.TextBuffer != null) { document = ServiceManager.GetService <T>(controller.TextBuffer); } } } } return(document); }