# codegen: do not edit defmodule GenLSP.Structures.FoldingRangeClientCapabilities do import Schematic, warn: false use TypedStruct @doc """ ## Fields * dynamic_registration: Whether implementation supports dynamic registration for folding range providers. If this is set to `true` the client supports the new `FoldingRangeRegistrationOptions` return value for the corresponding server capability as well. * range_limit: The maximum number of folding ranges that the client prefers to receive per document. The value serves as a hint, servers are free to follow the limit. * line_folding_only: If set, the client signals that it only supports folding complete lines. If set, client will ignore specified `startCharacter` and `endCharacter` properties in a FoldingRange. * folding_range_kind: Specific options for the folding range kind. @since 3.17.0 * folding_range: Specific options for the folding range. @since 3.17.0 """ @derive Jason.Encoder typedstruct do field :dynamic_registration, boolean() field :range_limit, GenLSP.BaseTypes.uinteger() field :line_folding_only, boolean() field :folding_range_kind, map() field :folding_range, map() end @doc false @spec schema() :: Schematic.t() def schema() do schema(__MODULE__, %{ optional({"dynamicRegistration", :dynamic_registration}) => bool(), optional({"rangeLimit", :range_limit}) => int(), optional({"lineFoldingOnly", :line_folding_only}) => bool(), optional({"foldingRangeKind", :folding_range_kind}) => map(%{ optional({"valueSet", :value_set}) => list(GenLSP.Enumerations.FoldingRangeKind.schema()) }), optional({"foldingRange", :folding_range}) => map(%{ optional({"collapsedText", :collapsed_text}) => bool() }) }) end end