private ActiveTextEditor ToActiveTextEditor(IWpfTextView wpfTextView, IVirtualTextDocument virtualTextDocument) { return(new ActiveTextEditor(wpfTextView, virtualTextDocument.FileName, virtualTextDocument.Uri, wpfTextView.TextSnapshot.LineCount)); }
protected CodemarkSuggestedActionBase(IComponentModel componentModel, IWpfTextView wpfTextView, IVirtualTextDocument virtualTextDocument, EditorState textSelection) { ComponentModel = componentModel; _wpfTextView = wpfTextView; _virtualTextDocument = virtualTextDocument; _textSelection = textSelection; }
public CreateReviewSuggestedAction(IComponentModel componentModel, IWpfTextView wpfTextView, IVirtualTextDocument virtualTextDocument, EditorState textSelection) { _componentModel = componentModel; _virtualTextDocument = virtualTextDocument; _textSelection = textSelection; }
public void Add(IVirtualTextDocument key, IWpfTextView wpfTextView) { lock (Locker) { if (!Items.TryGetValue(key.Id, out List <IWpfTextView> textViews)) { textViews = new List <IWpfTextView>(); Items.Add(key.Id, textViews); } textViews.Add(wpfTextView); } }
/// <summary> /// SubjectBuffersConnected happens first /// </summary> /// <param name="wpfTextView"></param> /// <param name="reason"></param> /// <param name="subjectBuffers"></param> public void SubjectBuffersConnected(IWpfTextView wpfTextView, ConnectionReason reason, Collection <ITextBuffer> subjectBuffers) { try { var logPrefix = $"{nameof(SubjectBuffersConnected)}"; using (var metrics = Log.WithMetrics($"{logPrefix} ")) { if (wpfTextView == null || !wpfTextView.HasValidDocumentRoles()) { return; } IVirtualTextDocument virtualTextDocument = null; if (!TextDocumentExtensions.TryGetTextDocument(TextDocumentFactoryService, wpfTextView, out virtualTextDocument)) { Log.Warning($"{logPrefix} Could not create virtualTextDocument"); return; } Log.Verbose($"{logPrefix} pre-Lock"); lock (WeakTableLock) { Log.Verbose($"{logPrefix} in-Lock"); foreach (var buffer in subjectBuffers) { if (!TextBufferTable.TryGetValue(buffer, out HashSet <IWpfTextView> textViews)) { textViews = new HashSet <IWpfTextView>(); TextBufferTable.Add(buffer, textViews); } textViews.Add(wpfTextView); } using (metrics.Measure($"{logPrefix} Building properties")) { if (virtualTextDocument.SupportsMarkers) { wpfTextView.Properties.GetOrCreateSingletonProperty(PropertyNames.DocumentMarkerManager, () => new DocumentMarkerManager(CodeStreamAgentServiceFactory.Create(), wpfTextView, virtualTextDocument)); } wpfTextView.Properties.GetOrCreateSingletonProperty(PropertyNames.TextViewDocument, () => virtualTextDocument); wpfTextView.Properties.GetOrCreateSingletonProperty(PropertyNames.TextViewState, () => new TextViewState()); #if DEBUG if (TextViewCache == null) { System.Diagnostics.Debugger.Break(); } #endif } TextViewCache.Add(virtualTextDocument, wpfTextView); } Log.Verbose($"{logPrefix} Uri={virtualTextDocument.Uri}"); } } catch (Exception ex) { Log.Error(ex, nameof(SubjectBuffersConnected)); } }
public CodemarkSuggestedActionsSource(IComponentModel componentModel, ITextView textView, ITextBuffer textBuffer, IVirtualTextDocument virtualTextDocument) { _componentModel = componentModel; _textBuffer = textBuffer; _textView = textView; _virtualTextDocument = virtualTextDocument; _sessionService = _componentModel.GetService <ISessionService>(); }
public void Remove(IVirtualTextDocument key, IWpfTextView wpfTextView) { lock (Locker) { if (Items.TryGetValue(key.Id, out List <IWpfTextView> textViews)) { textViews.Remove(wpfTextView); if (!textViews.Any()) { Items.Remove(key.Id); } } } }
public ActiveTextEditor CreateActiveTextEditor(IVirtualTextDocument textDocument, IWpfTextView wpfTextView) { try { if (textDocument == null || wpfTextView == null) { return(null); } return(new ActiveTextEditor(wpfTextView, textDocument.FileName, textDocument.Uri, wpfTextView.TextSnapshot.LineCount)); } catch (Exception ex) { Log.Error(ex, nameof(GetActiveTextEditor)); } return(null); }
public bool TryGetValue(IVirtualTextDocument key, out IWpfTextView wpfTextView) { lock (Locker) { if (Items.TryGetValue(key.Id, out List <IWpfTextView> textViews)) { if (textViews.Count() == 1) { wpfTextView = textViews[0]; } else { wpfTextView = textViews.FirstOrDefault(_ => _.HasAggregateFocus || _.IsMouseOverViewOrAdornments) ?? textViews.FirstOrDefault(); } return(wpfTextView != null); } wpfTextView = null; return(false); } }
public DocumentMarkerManager(ICodeStreamAgentService agentService, IWpfTextView wpfTextView, IVirtualTextDocument virtualTextDocument) { _agentService = agentService; _wpfTextView = wpfTextView; _virtualTextDocument = virtualTextDocument; }
protected CodemarkSuggestedActionBase(IComponentModel componentModel, IWpfTextView wpfTextView, IVirtualTextDocument virtualTextDocument) { ComponentModel = componentModel; _wpfTextView = wpfTextView; _virtualTextDocument = virtualTextDocument; }
public CreateReviewSuggestedAction(IComponentModel componentModel, IWpfTextView wpfTextView, IVirtualTextDocument virtualTextDocument) { _componentModel = componentModel; _wpfTextView = wpfTextView; _virtualTextDocument = virtualTextDocument; }
public CodemarkPermalinkSuggestedAction(IComponentModel componentModel, IWpfTextView wpfTextView, IVirtualTextDocument textDocument) : base(componentModel, wpfTextView, textDocument) { }
/// <summary> /// Don't get a textDocument if our secret LSP file is trying to be opened /// </summary> /// <param name="textDocumentFactoryService"></param> /// <param name="textBuffer"></param> /// <param name="textDocument"></param> /// <returns></returns> public static bool TryGetTextDocument(this ITextDocumentFactoryService textDocumentFactoryService, ITextBuffer textBuffer, out IVirtualTextDocument textDocument) { textDocument = null; if (!textDocumentFactoryService.TryGetTextDocument(textBuffer, out ITextDocument td)) { return(false); } textDocument = VirtualTextDocument.FromTextDocument(td); if (textDocument == null) { return(false); } return(!td.FilePath.EndsWithIgnoreCase(Core.Constants.CodeStreamCodeStream)); }
public CodemarkPermalinkSuggestedAction(IComponentModel componentModel, IWpfTextView wpfTextView, IVirtualTextDocument textDocument, EditorState textSelection) : base(componentModel, wpfTextView, textDocument, textSelection) { }
public static bool TryGetTextDocument(this ITextDocumentFactoryService textDocumentFactoryService, IWpfTextView textView, out IVirtualTextDocument textDocument) { textDocument = null; try { if (textView.Properties.TryGetProperty(PropertyNames.TextViewDocument, out textDocument)) { return(textDocument != null); } // get all the buffers and try to find one that is attached to a document var subjectBuffers = textView?.BufferGraph.GetTextBuffers(_ => true); if (subjectBuffers == null) { if (!TryGetTextDocument(textDocumentFactoryService, textView.TextBuffer, out textDocument)) { return(false); } } else { if (subjectBuffers.Count == 1 && subjectBuffers[0] == textView.TextBuffer) { if (!TryGetTextDocument(textDocumentFactoryService, textView.TextBuffer, out textDocument)) { return(false); } } else { foreach (var buffer in subjectBuffers) { if (TryGetTextDocument(textDocumentFactoryService, buffer, out textDocument)) { break; } } } } return(textDocument != null); } catch (Exception) { return(false); } }