# codegen: do not edit defmodule GenLSP.Structures.CodeActionClientCapabilities do @moduledoc """ The Client Capabilities of a {@link CodeActionRequest}. """ import Schematic, warn: false use TypedStruct @doc """ ## Fields * dynamic_registration: Whether code action supports dynamic registration. * code_action_literal_support: The client support code action literals of type `CodeAction` as a valid response of the `textDocument/codeAction` request. If the property is not set the request can only return `Command` literals. @since 3.8.0 * is_preferred_support: Whether code action supports the `isPreferred` property. @since 3.15.0 * disabled_support: Whether code action supports the `disabled` property. @since 3.16.0 * data_support: Whether code action supports the `data` property which is preserved between a `textDocument/codeAction` and a `codeAction/resolve` request. @since 3.16.0 * resolve_support: Whether the client supports resolving additional code action properties via a separate `codeAction/resolve` request. @since 3.16.0 * honors_change_annotations: Whether the client honors the change annotations in text edits and resource operations returned via the `CodeAction#edit` property by for example presenting the workspace edit in the user interface and asking for confirmation. @since 3.16.0 """ @derive Jason.Encoder typedstruct do field :dynamic_registration, boolean() field :code_action_literal_support, map() field :is_preferred_support, boolean() field :disabled_support, boolean() field :data_support, boolean() field :resolve_support, map() field :honors_change_annotations, boolean() end @doc false @spec schematic() :: Schematic.t() def schematic() do schema(__MODULE__, %{ optional({"dynamicRegistration", :dynamic_registration}) => bool(), optional({"codeActionLiteralSupport", :code_action_literal_support}) => map(%{ {"codeActionKind", :code_action_kind} => map(%{ {"valueSet", :value_set} => list(GenLSP.Enumerations.CodeActionKind.schematic()) }) }), optional({"isPreferredSupport", :is_preferred_support}) => bool(), optional({"disabledSupport", :disabled_support}) => bool(), optional({"dataSupport", :data_support}) => bool(), optional({"resolveSupport", :resolve_support}) => map(%{ {"properties", :properties} => list(str()) }), optional({"honorsChangeAnnotations", :honors_change_annotations}) => bool() }) end end