MCPcopy Create free account
hub / github.com/cogentcore/core / DiffStrings

Method DiffStrings

texteditor/diffeditor.go:322–425  ·  view source on GitHub ↗

DiffStrings computes differences between two lines-of-strings and displays in DiffEditor.

(astr, bstr []string)

Source from the content-addressed store, hash-verified

320// DiffStrings computes differences between two lines-of-strings and displays in
321// DiffEditor.
322func (dv *DiffEditor) DiffStrings(astr, bstr []string) {
323 dv.setFilenames()
324 dv.diffs.SetStringLines(astr, bstr)
325
326 dv.bufferA.LineColors = nil
327 dv.bufferB.LineColors = nil
328 del := colors.Scheme.Error.Base
329 ins := colors.Scheme.Success.Base
330 chg := colors.Scheme.Primary.Base
331
332 nd := len(dv.diffs.Diffs)
333 dv.alignD = make(text.Diffs, nd)
334 var ab, bb [][]byte
335 absln := 0
336 bspc := []byte(" ")
337 for i, df := range dv.diffs.Diffs {
338 switch df.Tag {
339 case 'r':
340 di := df.I2 - df.I1
341 dj := df.J2 - df.J1
342 mx := max(di, dj)
343 ad := df
344 ad.I1 = absln
345 ad.I2 = absln + di
346 ad.J1 = absln
347 ad.J2 = absln + dj
348 dv.alignD[i] = ad
349 for i := 0; i < mx; i++ {
350 dv.bufferA.SetLineColor(absln+i, chg)
351 dv.bufferB.SetLineColor(absln+i, chg)
352 blen := 0
353 alen := 0
354 if i < di {
355 aln := []byte(astr[df.I1+i])
356 alen = len(aln)
357 ab = append(ab, aln)
358 }
359 if i < dj {
360 bln := []byte(bstr[df.J1+i])
361 blen = len(bln)
362 bb = append(bb, bln)
363 } else {
364 bb = append(bb, bytes.Repeat(bspc, alen))
365 }
366 if i >= di {
367 ab = append(ab, bytes.Repeat(bspc, blen))
368 }
369 }
370 absln += mx
371 case 'd':
372 di := df.I2 - df.I1
373 ad := df
374 ad.I1 = absln
375 ad.I2 = absln + di
376 ad.J1 = absln
377 ad.J2 = absln + di
378 dv.alignD[i] = ad
379 for i := 0; i < di; i++ {

Callers 2

DiffEditorDialogFunction · 0.95
ViewDiffMethod · 0.95

Calls 6

setFilenamesMethod · 0.95
tagWordDiffsMethod · 0.95
SetLineColorMethod · 0.80
SetTextLinesMethod · 0.80
ReMarkupMethod · 0.80
SetStringLinesMethod · 0.45

Tested by

no test coverage detected