private GetDiffCodes ( int &codeCounter, int>.Dictionary |
||
codeCounter | int | |
codeDictionary | int>.Dictionary | |
includeEol | bool | |
return | int[] |
int[] GetDiffCodes (ref int codeCounter, Dictionary<string, int> codeDictionary, bool includeEol)
{
int i = 0;
var result = new int[LineCount];
foreach (DocumentLine line in Lines) {
string lineText = buffer.ToString (line.Offset, includeEol ? line.LengthIncludingDelimiter : line.Length);
int curCode;
if (!codeDictionary.TryGetValue (lineText, out curCode)) {
codeDictionary[lineText] = curCode = ++codeCounter;
}
result[i] = curCode;
i++;
}
return result;
}
public IEnumerable<Hunk> Diff (TextDocument changedDocument, bool includeEol = true) { var codeDictionary = new Dictionary<string, int> (); int codeCounter = 0; return Mono.TextEditor.Utils.Diff.GetDiff<int> (this.GetDiffCodes (ref codeCounter, codeDictionary, includeEol), changedDocument.GetDiffCodes (ref codeCounter, codeDictionary, includeEol)); }