MonoDevelop.VersionControl.Views.EditorCompareWidgetBase.UndoChange C# (CSharp) Method

UndoChange() protected method

protected UndoChange ( MonoTextEditor fromEditor, MonoTextEditor toEditor, Hunk hunk ) : void
fromEditor MonoTextEditor
toEditor MonoTextEditor
hunk Hunk
return void
		protected virtual void UndoChange (MonoTextEditor fromEditor, MonoTextEditor toEditor, Hunk hunk)
		{
			using (var undo = toEditor.OpenUndoGroup ()) {
				var start = toEditor.Document.GetLine (hunk.InsertStart);
				int toOffset = start != null ? start.Offset : toEditor.Document.TextLength;

				int replaceLength = 0;
				if (start != null && hunk.Inserted > 0) {
					int line = Math.Min (hunk.InsertStart + hunk.Inserted - 1, toEditor.Document.LineCount);
					var end = toEditor.Document.GetLine (line);
					replaceLength = end.EndOffsetIncludingDelimiter - start.Offset;
				}
	
				if (hunk.Removed > 0) {
					start = fromEditor.Document.GetLine (Math.Min (hunk.RemoveStart, fromEditor.Document.LineCount));
					int line = Math.Min (hunk.RemoveStart + hunk.Removed - 1, fromEditor.Document.LineCount);
					var end = fromEditor.Document.GetLine (line);
					toEditor.Replace (
						toOffset,
						replaceLength,
						fromEditor.Document.GetTextBetween (start.Offset, end.EndOffsetIncludingDelimiter)
					);
				} else if (replaceLength > 0) {
					toEditor.Remove (toOffset, replaceLength);
				}
			}
		}

Usage Example

Exemplo n.º 1
0
 protected override bool OnButtonPressEvent(EventButton evnt)
 {
     if (evnt.Button == 1 && !selectedHunk.IsEmpty)
     {
         widget.UndoChange(fromEditor, toEditor, selectedHunk);
     }
     return(base.OnButtonPressEvent(evnt));
 }
All Usage Examples Of MonoDevelop.VersionControl.Views.EditorCompareWidgetBase::UndoChange