/// <summary> /// Gets the new offset where the specified offset moves after this document change. /// </summary> public override int GetNewOffset(int offset, AnchorMovementType movementType = AnchorMovementType.Default) { if (offsetChangeMap != null) return offsetChangeMap.GetNewOffset(offset, movementType); else return CreateSingleChangeMapEntry().GetNewOffset(offset, movementType); }
/// <summary> /// Gets the new offset where the specified offset moves after this document change. /// </summary> public int GetNewOffset(int offset, AnchorMovementType movementType = AnchorMovementType.Default) { IList <OffsetChangeMapEntry> items = this.Items; int count = items.Count; for (int i = 0; i < count; i++) { offset = items[i].GetNewOffset(offset, movementType); } return(offset); }
/// <summary> /// Gets the new offset where the specified offset moves after this document change. /// </summary> public int GetNewOffset(int offset, AnchorMovementType movementType) { if (offsetChangeMap != null) { return(offsetChangeMap.GetNewOffset(offset, movementType)); } else { return(CreateSingleChangeMapEntry().GetNewOffset(offset, movementType)); } }
public override int GetNewOffset(int offset, AnchorMovementType movementType) { if (offset == this.Offset && movementType == AnchorMovementType.Default) { return(offset); } else { return(base.GetNewOffset(offset, movementType)); } }
/// <summary> /// Inserts text. /// </summary> /// <param name="offset">The offset at which the text is inserted.</param> /// <param name="text">The new text.</param> /// <param name="defaultAnchorMovementType"> /// Anchors positioned exactly at the insertion offset will move according to the anchor's movement type. /// For AnchorMovementType.Default, they will move according to the movement type specified by this parameter. /// The caret will also move according to the <paramref name="defaultAnchorMovementType"/> parameter. /// </param> public void Insert(int offset, ITextSource text, AnchorMovementType defaultAnchorMovementType) { if (defaultAnchorMovementType == AnchorMovementType.BeforeInsertion) { Replace(offset, 0, text, OffsetChangeMappingType.KeepAnchorBeforeInsertion); } else { Replace(offset, 0, text, null); } }
public void Insert(int offset, string text, AnchorMovementType defaultAnchorMovementType) { if (defaultAnchorMovementType == AnchorMovementType.BeforeInsertion) { document.Replace(offset, 0, text, OffsetChangeMappingType.KeepAnchorBeforeInsertion); } else { document.Insert(offset, text); } }
/// <summary> /// Gets the new offset where the specified offset moves after this document change. /// </summary> public virtual int GetNewOffset(int offset, AnchorMovementType movementType = AnchorMovementType.Default) { if (offset >= this.Offset && offset <= this.Offset + this.RemovalLength) { if (movementType == AnchorMovementType.BeforeInsertion) return this.Offset; else return this.Offset + this.InsertionLength; } else if (offset > this.Offset) { return offset + this.InsertionLength - this.RemovalLength; } else { return offset; } }
public int MoveOffsetTo(ITextBufferVersion other, int oldOffset, AnchorMovementType movement) { SnapshotVersion otherVersion = other as SnapshotVersion; if (otherVersion == null) throw new ArgumentException("Does not belong to same document"); switch (movement) { case AnchorMovementType.AfterInsertion: return checkpoint.MoveOffsetTo(otherVersion.checkpoint, oldOffset, ICSharpCode.AvalonEdit.Document.AnchorMovementType.AfterInsertion); case AnchorMovementType.BeforeInsertion: return checkpoint.MoveOffsetTo(otherVersion.checkpoint, oldOffset, ICSharpCode.AvalonEdit.Document.AnchorMovementType.BeforeInsertion); default: throw new NotSupportedException(); } }
/// <inheritdoc/> public void Insert(int offset, string text, AnchorMovementType defaultAnchorMovementType) { if (offset < 0 || offset > this.TextLength) { throw new ArgumentOutOfRangeException("offset"); } if (defaultAnchorMovementType == AnchorMovementType.BeforeInsertion) { PerformChange(new InsertionWithMovementBefore(offset, text)); } else { Replace(offset, 0, text); } }
/// <summary> /// Gets the new offset where the specified offset moves after this document change. /// </summary> public virtual int GetNewOffset(int offset, AnchorMovementType movementType = AnchorMovementType.Default) { if (offset >= Offset && offset <= Offset + RemovalLength) { if (movementType == AnchorMovementType.BeforeInsertion) { return(Offset); } return(Offset + InsertionLength); } if (offset > Offset) { return(offset + InsertionLength - RemovalLength); } return(offset); }
/// <summary> /// Gets the new offset where the specified offset moves after this document change. /// </summary> public int GetNewOffset(int offset, AnchorMovementType movementType) { if (offset >= this.Offset) { if (offset <= this.Offset + this.RemovalLength) { offset = this.Offset; if (movementType == AnchorMovementType.AfterInsertion) { offset += this.InsertionLength; } } else { offset += this.InsertionLength - this.RemovalLength; } } return(offset); }
/// <summary> /// Gets the new offset where the specified offset moves after this document change. /// </summary> public int GetNewOffset(int oldOffset, AnchorMovementType movementType) { int insertionLength = this.InsertionLength; int removalLength = this.RemovalLength; if (!(removalLength == 0 && oldOffset == offset)) { // we're getting trouble (both if statements in here would apply) // if there's no removal and we insert at the offset // -> we'd need to disambiguate by movementType, which is handled after the if // offset is before start of change: no movement if (oldOffset <= offset) { return(oldOffset); } // offset is after end of change: movement by normal delta if (oldOffset >= offset + removalLength) { return(oldOffset + insertionLength - removalLength); } } // we reach this point if // a) the oldOffset is inside the deleted segment // b) there was no removal and we insert at the caret position if (movementType == AnchorMovementType.AfterInsertion) { return(offset + insertionLength); } else if (movementType == AnchorMovementType.BeforeInsertion) { return(offset); } else { return(this.DefaultAnchorMovementIsBeforeInsertion ? offset : offset + insertionLength); } }
public int MoveOffsetTo(ITextSourceVersion other, int oldOffset, AnchorMovementType movement) { int offset = oldOffset; foreach (var e in GetChangesTo(other)) { offset = e.GetNewOffset(offset, movement); } return offset; }
public void Replace(int offset, int length, string newText, AnchorMovementType defaultAnchorMovementType) { document.Replace(offset, length, newText); }
void IDocument.Insert(int offset, string text, AnchorMovementType defaultAnchorMovementType) { throw new NotImplementedException(); }
void ICSharpCode.NRefactory.Editor.IDocument.Insert (int offset, string text, AnchorMovementType anchorMovementType) { Insert (offset, text, anchorMovementType); }
void IDocument.Insert(int offset, ITextSource text, AnchorMovementType defaultAnchorMovementType) { throw new NotImplementedException(); }
public void Insert(int offset, ITextSource text, AnchorMovementType defaultAnchorMovementType) { throw new NotImplementedException(); }
void IDocument.Insert(int offset, ITextSource text, AnchorMovementType defaultAnchorMovementType) { throw new NotSupportedException(); }
public int GetNewOffset(int offset, AnchorMovementType movementType) { //TODO: DocumentChangeEventArgs.GetNewOffset() throw new NotImplementedException(); }
public int MoveOffsetTo(ITextSourceVersion other, int oldOffset, AnchorMovementType movement) { if (this != other) throw new ArgumentException("other belongs to different document"); return oldOffset; }
public DocumentChangeEventArgs (int offset, string removedText, string insertedText, AnchorMovementType anchorMovementType = AnchorMovementType.Default) : base (offset, removedText, insertedText) { AnchorMovementType = anchorMovementType; }
void IDocument.Insert(int offset, string text, AnchorMovementType defaultAnchorMovementType) { throw new NotSupportedException(); }
/// <inheritdoc/> public void Insert(int offset, string text, AnchorMovementType defaultAnchorMovementType) { if (offset < 0 || offset > this.TextLength) throw new ArgumentOutOfRangeException("offset"); if (text == null) throw new ArgumentNullException("text"); if (defaultAnchorMovementType == AnchorMovementType.BeforeInsertion) PerformChange(new InsertionWithMovementBefore(offset, text)); else Replace(offset, 0, text); }
/// <inheritdoc/> public void Insert(int offset, ITextSource text, AnchorMovementType defaultAnchorMovementType) { if (text == null) throw new ArgumentNullException("text"); Insert(offset, text.Text, defaultAnchorMovementType); }
public override int GetNewOffset(int offset, AnchorMovementType movementType) { if (offset == this.Offset && movementType == AnchorMovementType.Default) return offset; else return base.GetNewOffset(offset, movementType); }
/// <summary> /// Calculates where the offset has moved in the other buffer version. /// </summary> /// <remarks>This method is thread-safe.</remarks> /// <exception cref="ArgumentException">Raised if 'other' belongs to a different document than this checkpoint.</exception> public int MoveOffsetTo(ChangeTrackingCheckpoint other, int oldOffset, AnchorMovementType movement) { int offset = oldOffset; foreach (DocumentChangeEventArgs e in GetChangesTo(other)) { offset = e.GetNewOffset(offset, movement); } return offset; }
/// <summary> /// Gets the new offset where the specified offset moves after this document change. /// </summary> public virtual int GetNewOffset(int offset, AnchorMovementType movementType = AnchorMovementType.Default) { if (offset >= Offset && offset <= Offset + RemovalLength) { if (movementType == AnchorMovementType.BeforeInsertion) return Offset; return Offset + InsertionLength; } if (offset > Offset) { return offset + InsertionLength - RemovalLength; } return offset; }
public void Insert(int offset, string text, AnchorMovementType defaultAnchorMovementType) { throw new NotImplementedException(); }
public DocumentChangeEventArgs(int offset, string removedText, string insertedText, AnchorMovementType anchorMovementType = AnchorMovementType.Default) : base(offset, removedText, insertedText) { AnchorMovementType = anchorMovementType; }
public int MoveOffsetTo(ITextSourceVersion other, int oldOffset, AnchorMovementType movement) { return(GetChangesTo(other) .Aggregate(oldOffset, (current, e) => e.GetNewOffset(current, movement))); }