protected override void ReplaceFieldDeclaration(ICSharpCode.TextEditor.Document.IDocument document, IField oldField, string newFieldDeclaration) { // In VB, the field region begins at the start of the declaration // and ends on the first column of the line following the declaration. int startOffset = document.PositionToOffset(new TextLocation(0, oldField.Region.BeginLine - 1)); int endOffset = document.PositionToOffset(new TextLocation(0, oldField.Region.EndLine - 1)); document.Replace(startOffset, endOffset - startOffset, tabs + newFieldDeclaration + Environment.NewLine); }
public static void ModifyDocument(List<Modification> modifications, ICSharpCode.TextEditor.Document.IDocument doc, int offset, int length, string newName) { doc.UndoStack.StartUndoGroup(); foreach (Modification m in modifications) { if (m.Document == doc) { if (m.Offset < offset) offset += m.LengthDifference; } } int lengthDifference = newName.Length - length; doc.Replace(offset, length, newName); if (lengthDifference != 0) { for (int i = 0; i < modifications.Count; ++i) { Modification m = modifications[i]; if (m.Document == doc) { if (m.Offset > offset) { m.Offset += lengthDifference; modifications[i] = m; // Modification is a value type } } } modifications.Add(new Modification(doc, offset, lengthDifference)); } doc.UndoStack.EndUndoGroup(); }