public SnapshotSourceText(ITextBufferCloneService textBufferCloneServiceOpt, ITextImage textImage, Encoding encodingOpt, TextBufferContainer containerOpt) { Contract.ThrowIfNull(textImage); _textBufferCloneServiceOpt = textBufferCloneServiceOpt; this.TextImage = textImage; _encodingOpt = encodingOpt; _containerOpt = containerOpt; }
public EditorTextFactoryService( ITextBufferCloneService textBufferCloneService, ITextBufferFactoryService textBufferFactoryService, IContentTypeRegistryService contentTypeRegistryService) { _textBufferCloneService = textBufferCloneService; _textBufferFactory = textBufferFactoryService; _unknownContentType = contentTypeRegistryService.UnknownContentType; }
private SnapshotSourceText(ITextBufferCloneService textBufferCloneServiceOpt, ITextSnapshot editorSnapshot, TextBufferContainer container) { Contract.ThrowIfNull(editorSnapshot); _textBufferCloneServiceOpt = textBufferCloneServiceOpt; this.TextImage = RecordReverseMapAndGetImage(editorSnapshot); _encodingOpt = editorSnapshot.TextBuffer.GetEncodingOrUTF8(); _containerOpt = container; }
/// <summary> /// This only exist to break circular dependency on creating buffer. nobody except extension itself should use it /// </summary> internal static SourceText From(ITextBufferCloneService textBufferCloneServiceOpt, ITextSnapshot editorSnapshot, TextBufferContainer container) { if (editorSnapshot == null) { throw new ArgumentNullException(nameof(editorSnapshot)); } Contract.ThrowIfFalse(editorSnapshot.TextBuffer == container.GetTextBuffer()); return(s_textSnapshotMap.GetValue(editorSnapshot, s => new SnapshotSourceText(textBufferCloneServiceOpt, s, container))); }
internal static SourceText AsRoslynText( this ITextSnapshot textSnapshot, ITextBufferCloneService textBufferCloneServiceOpt, Encoding?encoding ) => new SnapshotSourceText.ClosedSnapshotSourceText( textBufferCloneServiceOpt, ((ITextSnapshot2)textSnapshot).TextImage, encoding );
public VisualStudioWorkspaceImpl(ExportProvider exportProvider) : base( MefV1HostServices.Create(exportProvider), backgroundWork: WorkspaceBackgroundWork.ParseAndCompile) { _textBufferCloneService = exportProvider.GetExportedValue <ITextBufferCloneService>(); _textBufferFactoryService = exportProvider.GetExportedValue <ITextBufferFactoryService>(); _textBufferFactoryService.TextBufferCreated += AddTextBufferCloneServiceToBuffer; exportProvider.GetExportedValue <PrimaryWorkspace>().Register(this); }
private IEnumerable <InlineRenameReplacement> GetMergedReplacementInfos( IEnumerable <InlineRenameReplacement> relevantReplacements, Document preMergeDocument, Document postMergeDocument, CancellationToken cancellationToken) { AssertIsForeground(); var textDiffService = preMergeDocument.Project.Solution.Workspace.Services.GetService <IDocumentTextDifferencingService>(); var contentType = preMergeDocument.Project.LanguageServices.GetService <IContentTypeLanguageService>().GetDefaultContentType(); // TODO: Track all spans at once ITextBufferCloneService textBufferCloneService = null; SnapshotSpan? snapshotSpanToClone = null; string preMergeDocumentTextString = null; var preMergeDocumentText = preMergeDocument.GetTextAsync(cancellationToken).WaitAndGetResult(cancellationToken); var snapshot = preMergeDocumentText.FindCorrespondingEditorTextSnapshot(); if (snapshot != null) { textBufferCloneService = preMergeDocument.Project.Solution.Workspace.Services.GetService <ITextBufferCloneService>(); if (textBufferCloneService != null) { snapshotSpanToClone = snapshot.GetFullSpan(); } } if (snapshotSpanToClone == null) { preMergeDocumentTextString = preMergeDocument.GetTextAsync(cancellationToken).WaitAndGetResult(cancellationToken).ToString(); } foreach (var replacement in relevantReplacements) { var buffer = snapshotSpanToClone.HasValue ? textBufferCloneService.CloneWithUnknownContentType(snapshotSpanToClone.Value) : _textBufferFactoryService.CreateTextBuffer(preMergeDocumentTextString, contentType); var trackingSpan = buffer.CurrentSnapshot.CreateTrackingSpan(replacement.NewSpan.ToSpan(), SpanTrackingMode.EdgeExclusive, TrackingFidelityMode.Forward); using (var edit = _subjectBuffer.CreateEdit(EditOptions.None, null, s_calculateMergedSpansEditTag)) { foreach (var change in textDiffService.GetTextChangesAsync(preMergeDocument, postMergeDocument, cancellationToken).WaitAndGetResult(cancellationToken)) { buffer.Replace(change.Span.ToSpan(), change.NewText); } edit.ApplyAndLogExceptions(); } yield return(new InlineRenameReplacement(replacement.Kind, replacement.OriginalSpan, trackingSpan.GetSpan(buffer.CurrentSnapshot).Span.ToTextSpan())); } }
public static SourceText From(ITextBufferCloneService textBufferCloneServiceOpt, ITextSnapshot editorSnapshot) { if (editorSnapshot == null) { throw new ArgumentNullException(nameof(editorSnapshot)); } if (!s_textSnapshotMap.TryGetValue(editorSnapshot, out var snapshot)) { // Avoid capturing `textBufferCloneServiceOpt` on the fast path var tempTextBufferCloneServiceOpt = textBufferCloneServiceOpt; snapshot = s_textSnapshotMap.GetValue(editorSnapshot, s => new SnapshotSourceText(tempTextBufferCloneServiceOpt, s)); } return(snapshot); }
public static SourceText From(ITextBufferCloneService textBufferCloneServiceOpt, ITextSnapshot editorSnapshot) { if (editorSnapshot == null) { throw new ArgumentNullException(nameof(editorSnapshot)); } if (!s_textSnapshotMap.TryGetValue(editorSnapshot, out var snapshot)) { // Explicitly obtain the TextBufferContainer before calling GetValue to avoid reentrancy in // ConditionalWeakTable. https://github.com/dotnet/roslyn/issues/28256 var container = TextBufferContainer.From(editorSnapshot.TextBuffer); // Avoid capturing `textBufferCloneServiceOpt` on the fast path var tempTextBufferCloneServiceOpt = textBufferCloneServiceOpt; snapshot = s_textSnapshotMap.GetValue(editorSnapshot, s => new SnapshotSourceText(tempTextBufferCloneServiceOpt, s, container)); } return(snapshot); }
private SnapshotSourceText(ITextBufferCloneService textBufferCloneServiceOpt, ITextSnapshot editorSnapshot) : this(textBufferCloneServiceOpt, editorSnapshot, TextBufferContainer.From(editorSnapshot.TextBuffer)) { }
public ChangedSourceText(ITextBufferCloneService textBufferCloneServiceOpt, SnapshotSourceText baseText, ITextImage baseSnapshot, ITextImage currentSnapshot) : base(textBufferCloneServiceOpt, currentSnapshot, baseText.Encoding, containerOpt: null) { _baseText = baseText; _baseSnapshot = baseSnapshot; }
public ClosedSnapshotSourceText(ITextBufferCloneService textBufferCloneServiceOpt, ITextImage textImage, Encoding encodingOpt) : base(textBufferCloneServiceOpt, textImage, encodingOpt, containerOpt: null) { }
public TextBufferCloneServiceFactory( ITextBufferFactoryService textBufferFactoryService, IContentTypeRegistryService contentTypeRegistry) { _singleton = new TextBufferCloneService((ITextBufferFactoryService3)textBufferFactoryService, contentTypeRegistry.UnknownContentType); }
public TextBufferCloneServiceFactory(ITextBufferCloneService textBufferCloneService) { _singleton = textBufferCloneService; }
public TextBufferCloneServiceFactory( ITextBufferFactoryService textBufferFactoryService, IContentTypeRegistryService contentTypeRegistry) { _singleton = new TextBufferCloneService((ITextBufferFactoryService2)textBufferFactoryService, contentTypeRegistry.UnknownContentType); }