cuelang.org/go@v0.10.1/internal/golangorgx/gopls/work/format.go (about) 1 // Copyright 2022 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package work 6 7 import ( 8 "context" 9 10 "cuelang.org/go/internal/golangorgx/gopls/cache" 11 "cuelang.org/go/internal/golangorgx/gopls/file" 12 "cuelang.org/go/internal/golangorgx/gopls/protocol" 13 "cuelang.org/go/internal/golangorgx/tools/diff" 14 "cuelang.org/go/internal/golangorgx/tools/event" 15 "golang.org/x/mod/modfile" 16 ) 17 18 func Format(ctx context.Context, snapshot *cache.Snapshot, fh file.Handle) ([]protocol.TextEdit, error) { 19 ctx, done := event.Start(ctx, "work.Format") 20 defer done() 21 22 pw, err := snapshot.ParseWork(ctx, fh) 23 if err != nil { 24 return nil, err 25 } 26 formatted := modfile.Format(pw.File.Syntax) 27 // Calculate the edits to be made due to the change. 28 diffs := diff.Bytes(pw.Mapper.Content, formatted) 29 return protocol.EditsFromDiffEdits(pw.Mapper, diffs) 30 }