mirror of
https://github.com/golang/go
synced 2024-11-18 16:44:43 -07:00
f7bb6f12f0
We only need one implementation of this, it must cope with all inputs, and it has no freedom in it's results, so it does not need to be pluggable. Change-Id: I6fec0c339eb288649a670fc3e2cb00c726467e20 Reviewed-on: https://go-review.googlesource.com/c/tools/+/198377 Run-TryBot: Ian Cottrell <iancottrell@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
32 lines
859 B
Go
32 lines
859 B
Go
// Copyright 2019 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Package diff supports a pluggable diff algorithm.
|
|
package diff
|
|
|
|
import (
|
|
"sort"
|
|
|
|
"golang.org/x/tools/internal/span"
|
|
)
|
|
|
|
// TextEdit represents a change to a section of a document.
|
|
// The text within the specified span should be replaced by the supplied new text.
|
|
type TextEdit struct {
|
|
Span span.Span
|
|
NewText string
|
|
}
|
|
|
|
var (
|
|
ComputeEdits func(uri span.URI, before, after string) []TextEdit
|
|
ToUnified func(from, to string, before string, edits []TextEdit) string
|
|
)
|
|
|
|
func SortTextEdits(d []TextEdit) {
|
|
// Use a stable sort to maintain the order of edits inserted at the same position.
|
|
sort.SliceStable(d, func(i int, j int) bool {
|
|
return span.Compare(d[i].Span, d[j].Span) < 0
|
|
})
|
|
}
|