blob: fcbcbc63c2d09c2300496dfc44ddf1a8a9a448a7 [file]
// Copyright 2026 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 command
import "context"
// An Action is a side effect a command returns instead of performing: talking
// to the client, or changing the workspace. The caller performs it once the
// computation has succeeded, so a command can be run for its result alone
// without taking effect.
//
// The snapshot is gone by then, so an Action must hold values, not the means
// to recompute them.
//
// Examples:
//
// applyEdits{changes} // change the user's files
// showDocument{uri, &rng} // reveal a location
// showMessage{protocol.Info, msg} // tell the user something
// actions{applyEdits{…}, showDocument{…}} // perform in order
//
// A nil Action means the command has no effect.
type Action interface {
Perform(context.Context) error
}