public OpenTextBufferManager(
                InlineRenameSession session,
                ITextBuffer subjectBuffer,
                Workspace workspace,
                IEnumerable<Document> documents,
                ITextBufferFactoryService textBufferFactoryService)
            {
                _session = session;
                _subjectBuffer = subjectBuffer;
                _baseDocuments = documents;
                _textBufferFactoryService = textBufferFactoryService;
                _subjectBuffer.ChangedLowPriority += OnTextBufferChanged;

                foreach (var view in session._textBufferAssociatedViewService.GetAssociatedTextViews(_subjectBuffer))
                {
                    ConnectToView(view);
                }

                session.UndoManager.CreateStartRenameUndoTransaction(workspace, subjectBuffer, session);

                _isBufferReadOnly = new DynamicReadOnlyRegionQuery((isEdit) => !_session._isApplyingEdit);
                UpdateReadOnlyRegions();
            }
            public OpenTextBufferManager(
                InlineRenameSession session,
                ITextBuffer subjectBuffer,
                Workspace workspace,
                ITextBufferFactoryService textBufferFactoryService)
                : base(session.ThreadingContext)
            {
                _session                           = session;
                _subjectBuffer                     = subjectBuffer;
                _baseDocuments                     = subjectBuffer.GetRelatedDocuments();
                _textBufferFactoryService          = textBufferFactoryService;
                _subjectBuffer.ChangedLowPriority += OnTextBufferChanged;

                foreach (var view in session._textBufferAssociatedViewService.GetAssociatedTextViews(_subjectBuffer))
                {
                    ConnectToView(view);
                }

                session.UndoManager.CreateStartRenameUndoTransaction(workspace, subjectBuffer, session);

                _isBufferReadOnly = new DynamicReadOnlyRegionQuery(isEdit => !_session._isApplyingEdit);
                UpdateReadOnlyRegions();
            }
Ejemplo n.º 3
0
            public IReadOnlyRegion CreateDynamicReadOnlyRegion(Span span, SpanTrackingMode trackingMode, EdgeInsertionMode edgeInsertionMode, DynamicReadOnlyRegionQuery callback)
            {
                ReadOnlyRegion readOnlyRegion = new ReadOnlyRegion(this.baseBuffer.CurrentVersion, span, trackingMode, edgeInsertionMode, callback);

                readOnlyRegionsToAdd.Add(readOnlyRegion);

                this.aggregateStart = Math.Min(this.aggregateStart, span.Start);
                this.aggregateEnd   = Math.Max(this.aggregateEnd, span.End);

                return(readOnlyRegion);
            }
Ejemplo n.º 4
0
 /// <summary>
 /// Creates a ReadOnlyRegionHandle for the given buffer and span.
 /// </summary>
 /// <param name="version">
 /// The <see cref="TextVersion"/> with which this read only region is associated.
 /// </param>
 /// <param name="span">
 /// The span of interest.
 /// </param>
 /// <param name="trackingMode">
 /// Specifies the tracking behavior of the read only region.
 /// </param>
 /// <param name="edgeInsertionMode">
 /// Specifies if insertions should be allowed at the edges
 /// </param>
 /// <remarks>
 /// Don't call this constructor with invalid parameters.  It doesn't verify all of them.
 /// </remarks>
 internal ReadOnlyRegion(TextVersion version, Span span, SpanTrackingMode trackingMode, EdgeInsertionMode edgeInsertionMode, DynamicReadOnlyRegionQuery callback)
 {
     _edgeInsertionMode = edgeInsertionMode;
     // TODO: change to simple forward tracking text span
     _trackingSpan = new ForwardFidelityTrackingSpan(version, span, trackingMode);
     QueryCallback = callback;
 }