# codegen: do not edit
defmodule GenLSP.Structures.CodeLens do
@moduledoc """
A code lens represents a {@link Command command} that should be shown along with
source text, like the number of references, a way to run tests, etc.
A code lens is _unresolved_ when no command is associated to it. For performance
reasons the creation of a code lens and resolving should be done in two stages.
"""
import Schematic, warn: false
use TypedStruct
@doc """
## Fields
* range: The range in which this code lens is valid. Should only span a single line.
* command: The command this code lens represents.
* data: A data entry field that is preserved on a code lens item between
a {@link CodeLensRequest} and a [CodeLensResolveRequest]
(#CodeLensResolveRequest)
"""
@derive Jason.Encoder
typedstruct do
field :range, GenLSP.Structures.Range.t(), enforce: true
field :command, GenLSP.Structures.Command.t()
field :data, GenLSP.TypeAlias.LSPAny.t()
end
@doc false
@spec schematic() :: Schematic.t()
def schematic() do
schema(__MODULE__, %{
{"range", :range} => GenLSP.Structures.Range.schematic(),
optional({"command", :command}) => GenLSP.Structures.Command.schematic(),
optional({"data", :data}) => GenLSP.TypeAlias.LSPAny.schematic()
})
end
end