{- ORMOLU_DISABLE -}
{- HLINT ignore -}
-- THIS IS A GENERATED FILE, DO NOT EDIT

{-# OPTIONS_GHC -Wno-unused-imports #-}
{-# OPTIONS_GHC -Wno-unused-matches #-}
{-# OPTIONS_GHC -Wno-deprecations #-}
module Language.LSP.Protocol.Internal.Types.CompletionClientCapabilities where

import Control.DeepSeq
import Data.Hashable
import GHC.Generics
import Language.LSP.Protocol.Utils.Misc
import Prettyprinter
import qualified Data.Aeson as Aeson
import qualified Data.Row as Row
import qualified Data.Row.Aeson as Aeson
import qualified Data.Row.Hashable as Hashable
import qualified Data.Text
import qualified Language.LSP.Protocol.Internal.Types.CompletionItemKind
import qualified Language.LSP.Protocol.Internal.Types.CompletionItemTag
import qualified Language.LSP.Protocol.Internal.Types.InsertTextMode
import qualified Language.LSP.Protocol.Internal.Types.MarkupKind
import qualified Language.LSP.Protocol.Types.Common

{-|
Completion client capabilities
-}
data CompletionClientCapabilities = CompletionClientCapabilities 
  { {-|
  Whether completion supports dynamic registration.
  -}
  CompletionClientCapabilities -> Maybe Bool
_dynamicRegistration :: (Maybe Bool)
  , {-|
  The client supports the following `CompletionItem` specific
  capabilities.
  -}
  CompletionClientCapabilities
-> Maybe
     (Rec
        (("snippetSupport" .== Maybe Bool)
         .+ (("commitCharactersSupport" .== Maybe Bool)
             .+ (("documentationFormat" .== Maybe [MarkupKind])
                 .+ (("deprecatedSupport" .== Maybe Bool)
                     .+ (("preselectSupport" .== Maybe Bool)
                         .+ (("tagSupport"
                              .== Maybe (Rec (("valueSet" .== [CompletionItemTag]) .+ Empty)))
                             .+ (("insertReplaceSupport" .== Maybe Bool)
                                 .+ (("resolveSupport"
                                      .== Maybe (Rec (("properties" .== [Text]) .+ Empty)))
                                     .+ (("insertTextModeSupport"
                                          .== Maybe
                                                (Rec (("valueSet" .== [InsertTextMode]) .+ Empty)))
                                         .+ (("labelDetailsSupport" .== Maybe Bool)
                                             .+ Empty)))))))))))
_completionItem :: (Maybe (Row.Rec ("snippetSupport" Row..== (Maybe Bool) Row..+ ("commitCharactersSupport" Row..== (Maybe Bool) Row..+ ("documentationFormat" Row..== (Maybe [Language.LSP.Protocol.Internal.Types.MarkupKind.MarkupKind]) Row..+ ("deprecatedSupport" Row..== (Maybe Bool) Row..+ ("preselectSupport" Row..== (Maybe Bool) Row..+ ("tagSupport" Row..== (Maybe (Row.Rec ("valueSet" Row..== [Language.LSP.Protocol.Internal.Types.CompletionItemTag.CompletionItemTag] Row..+ Row.Empty))) Row..+ ("insertReplaceSupport" Row..== (Maybe Bool) Row..+ ("resolveSupport" Row..== (Maybe (Row.Rec ("properties" Row..== [Data.Text.Text] Row..+ Row.Empty))) Row..+ ("insertTextModeSupport" Row..== (Maybe (Row.Rec ("valueSet" Row..== [Language.LSP.Protocol.Internal.Types.InsertTextMode.InsertTextMode] Row..+ Row.Empty))) Row..+ ("labelDetailsSupport" Row..== (Maybe Bool) Row..+ Row.Empty))))))))))))
  , {-|

  -}
  CompletionClientCapabilities
-> Maybe
     (Rec (("valueSet" .== Maybe [CompletionItemKind]) .+ Empty))
_completionItemKind :: (Maybe (Row.Rec ("valueSet" Row..== (Maybe [Language.LSP.Protocol.Internal.Types.CompletionItemKind.CompletionItemKind]) Row..+ Row.Empty)))
  , {-|
  Defines how the client handles whitespace and indentation
  when accepting a completion item that uses multi line
  text in either `insertText` or `textEdit`.

  @since 3.17.0
  -}
  CompletionClientCapabilities -> Maybe InsertTextMode
_insertTextMode :: (Maybe Language.LSP.Protocol.Internal.Types.InsertTextMode.InsertTextMode)
  , {-|
  The client supports to send additional context information for a
  `textDocument/completion` request.
  -}
  CompletionClientCapabilities -> Maybe Bool
_contextSupport :: (Maybe Bool)
  , {-|
  The client supports the following `CompletionList` specific
  capabilities.

  @since 3.17.0
  -}
  CompletionClientCapabilities
-> Maybe (Rec (("itemDefaults" .== Maybe [Text]) .+ Empty))
_completionList :: (Maybe (Row.Rec ("itemDefaults" Row..== (Maybe [Data.Text.Text]) Row..+ Row.Empty)))
  }
  deriving stock (Int -> CompletionClientCapabilities -> ShowS
[CompletionClientCapabilities] -> ShowS
CompletionClientCapabilities -> String
(Int -> CompletionClientCapabilities -> ShowS)
-> (CompletionClientCapabilities -> String)
-> ([CompletionClientCapabilities] -> ShowS)
-> Show CompletionClientCapabilities
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CompletionClientCapabilities -> ShowS
showsPrec :: Int -> CompletionClientCapabilities -> ShowS
$cshow :: CompletionClientCapabilities -> String
show :: CompletionClientCapabilities -> String
$cshowList :: [CompletionClientCapabilities] -> ShowS
showList :: [CompletionClientCapabilities] -> ShowS
Show, CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
(CompletionClientCapabilities
 -> CompletionClientCapabilities -> Bool)
-> (CompletionClientCapabilities
    -> CompletionClientCapabilities -> Bool)
-> Eq CompletionClientCapabilities
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
== :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
$c/= :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
/= :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
Eq, Eq CompletionClientCapabilities
Eq CompletionClientCapabilities =>
(CompletionClientCapabilities
 -> CompletionClientCapabilities -> Ordering)
-> (CompletionClientCapabilities
    -> CompletionClientCapabilities -> Bool)
-> (CompletionClientCapabilities
    -> CompletionClientCapabilities -> Bool)
-> (CompletionClientCapabilities
    -> CompletionClientCapabilities -> Bool)
-> (CompletionClientCapabilities
    -> CompletionClientCapabilities -> Bool)
-> (CompletionClientCapabilities
    -> CompletionClientCapabilities -> CompletionClientCapabilities)
-> (CompletionClientCapabilities
    -> CompletionClientCapabilities -> CompletionClientCapabilities)
-> Ord CompletionClientCapabilities
CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
CompletionClientCapabilities
-> CompletionClientCapabilities -> Ordering
CompletionClientCapabilities
-> CompletionClientCapabilities -> CompletionClientCapabilities
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Ordering
compare :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Ordering
$c< :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
< :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
$c<= :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
<= :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
$c> :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
> :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
$c>= :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
>= :: CompletionClientCapabilities
-> CompletionClientCapabilities -> Bool
$cmax :: CompletionClientCapabilities
-> CompletionClientCapabilities -> CompletionClientCapabilities
max :: CompletionClientCapabilities
-> CompletionClientCapabilities -> CompletionClientCapabilities
$cmin :: CompletionClientCapabilities
-> CompletionClientCapabilities -> CompletionClientCapabilities
min :: CompletionClientCapabilities
-> CompletionClientCapabilities -> CompletionClientCapabilities
Ord, (forall x.
 CompletionClientCapabilities -> Rep CompletionClientCapabilities x)
-> (forall x.
    Rep CompletionClientCapabilities x -> CompletionClientCapabilities)
-> Generic CompletionClientCapabilities
forall x.
Rep CompletionClientCapabilities x -> CompletionClientCapabilities
forall x.
CompletionClientCapabilities -> Rep CompletionClientCapabilities x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
CompletionClientCapabilities -> Rep CompletionClientCapabilities x
from :: forall x.
CompletionClientCapabilities -> Rep CompletionClientCapabilities x
$cto :: forall x.
Rep CompletionClientCapabilities x -> CompletionClientCapabilities
to :: forall x.
Rep CompletionClientCapabilities x -> CompletionClientCapabilities
Generic)
  deriving anyclass (CompletionClientCapabilities -> ()
(CompletionClientCapabilities -> ())
-> NFData CompletionClientCapabilities
forall a. (a -> ()) -> NFData a
$crnf :: CompletionClientCapabilities -> ()
rnf :: CompletionClientCapabilities -> ()
NFData, Eq CompletionClientCapabilities
Eq CompletionClientCapabilities =>
(Int -> CompletionClientCapabilities -> Int)
-> (CompletionClientCapabilities -> Int)
-> Hashable CompletionClientCapabilities
Int -> CompletionClientCapabilities -> Int
CompletionClientCapabilities -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> CompletionClientCapabilities -> Int
hashWithSalt :: Int -> CompletionClientCapabilities -> Int
$chash :: CompletionClientCapabilities -> Int
hash :: CompletionClientCapabilities -> Int
Hashable)
  deriving (forall ann. CompletionClientCapabilities -> Doc ann)
-> (forall ann. [CompletionClientCapabilities] -> Doc ann)
-> Pretty CompletionClientCapabilities
forall ann. [CompletionClientCapabilities] -> Doc ann
forall ann. CompletionClientCapabilities -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. CompletionClientCapabilities -> Doc ann
pretty :: forall ann. CompletionClientCapabilities -> Doc ann
$cprettyList :: forall ann. [CompletionClientCapabilities] -> Doc ann
prettyList :: forall ann. [CompletionClientCapabilities] -> Doc ann
Pretty via (ViaJSON CompletionClientCapabilities)

instance Aeson.ToJSON CompletionClientCapabilities where
  toJSON :: CompletionClientCapabilities -> Value
toJSON (CompletionClientCapabilities Maybe Bool
arg0 Maybe
  (Rec
     (("snippetSupport" .== Maybe Bool)
      .+ (("commitCharactersSupport" .== Maybe Bool)
          .+ (("documentationFormat" .== Maybe [MarkupKind])
              .+ (("deprecatedSupport" .== Maybe Bool)
                  .+ (("preselectSupport" .== Maybe Bool)
                      .+ (("tagSupport"
                           .== Maybe (Rec (("valueSet" .== [CompletionItemTag]) .+ Empty)))
                          .+ (("insertReplaceSupport" .== Maybe Bool)
                              .+ (("resolveSupport"
                                   .== Maybe (Rec (("properties" .== [Text]) .+ Empty)))
                                  .+ (("insertTextModeSupport"
                                       .== Maybe (Rec (("valueSet" .== [InsertTextMode]) .+ Empty)))
                                      .+ (("labelDetailsSupport" .== Maybe Bool) .+ Empty)))))))))))
arg1 Maybe (Rec (("valueSet" .== Maybe [CompletionItemKind]) .+ Empty))
arg2 Maybe InsertTextMode
arg3 Maybe Bool
arg4 Maybe (Rec (("itemDefaults" .== Maybe [Text]) .+ Empty))
arg5) = [Pair] -> Value
Aeson.object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ [[Pair]] -> [Pair]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[Pair]] -> [Pair]) -> [[Pair]] -> [Pair]
forall a b. (a -> b) -> a -> b
$  [String
"dynamicRegistration" String -> Maybe Bool -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe Bool
arg0
    ,String
"completionItem" String
-> Maybe
     (Rec
        ('R
           '["commitCharactersSupport" ':-> Maybe Bool,
             "deprecatedSupport" ':-> Maybe Bool,
             "documentationFormat" ':-> Maybe [MarkupKind],
             "insertReplaceSupport" ':-> Maybe Bool,
             "insertTextModeSupport"
             ':-> Maybe (Rec ('R '["valueSet" ':-> [InsertTextMode]])),
             "labelDetailsSupport" ':-> Maybe Bool,
             "preselectSupport" ':-> Maybe Bool,
             "resolveSupport" ':-> Maybe (Rec ('R '["properties" ':-> [Text]])),
             "snippetSupport" ':-> Maybe Bool,
             "tagSupport"
             ':-> Maybe (Rec ('R '["valueSet" ':-> [CompletionItemTag]]))]))
-> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe
  (Rec
     (("snippetSupport" .== Maybe Bool)
      .+ (("commitCharactersSupport" .== Maybe Bool)
          .+ (("documentationFormat" .== Maybe [MarkupKind])
              .+ (("deprecatedSupport" .== Maybe Bool)
                  .+ (("preselectSupport" .== Maybe Bool)
                      .+ (("tagSupport"
                           .== Maybe (Rec (("valueSet" .== [CompletionItemTag]) .+ Empty)))
                          .+ (("insertReplaceSupport" .== Maybe Bool)
                              .+ (("resolveSupport"
                                   .== Maybe (Rec (("properties" .== [Text]) .+ Empty)))
                                  .+ (("insertTextModeSupport"
                                       .== Maybe (Rec (("valueSet" .== [InsertTextMode]) .+ Empty)))
                                      .+ (("labelDetailsSupport" .== Maybe Bool) .+ Empty)))))))))))
Maybe
  (Rec
     ('R
        '["commitCharactersSupport" ':-> Maybe Bool,
          "deprecatedSupport" ':-> Maybe Bool,
          "documentationFormat" ':-> Maybe [MarkupKind],
          "insertReplaceSupport" ':-> Maybe Bool,
          "insertTextModeSupport"
          ':-> Maybe (Rec ('R '["valueSet" ':-> [InsertTextMode]])),
          "labelDetailsSupport" ':-> Maybe Bool,
          "preselectSupport" ':-> Maybe Bool,
          "resolveSupport" ':-> Maybe (Rec ('R '["properties" ':-> [Text]])),
          "snippetSupport" ':-> Maybe Bool,
          "tagSupport"
          ':-> Maybe (Rec ('R '["valueSet" ':-> [CompletionItemTag]]))]))
arg1
    ,String
"completionItemKind" String
-> Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]]))
-> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe (Rec (("valueSet" .== Maybe [CompletionItemKind]) .+ Empty))
Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]]))
arg2
    ,String
"insertTextMode" String -> Maybe InsertTextMode -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe InsertTextMode
arg3
    ,String
"contextSupport" String -> Maybe Bool -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe Bool
arg4
    ,String
"completionList" String
-> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]])) -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe (Rec (("itemDefaults" .== Maybe [Text]) .+ Empty))
Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
arg5]

instance Aeson.FromJSON CompletionClientCapabilities where
  parseJSON :: Value -> Parser CompletionClientCapabilities
parseJSON = String
-> (Object -> Parser CompletionClientCapabilities)
-> Value
-> Parser CompletionClientCapabilities
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"CompletionClientCapabilities" ((Object -> Parser CompletionClientCapabilities)
 -> Value -> Parser CompletionClientCapabilities)
-> (Object -> Parser CompletionClientCapabilities)
-> Value
-> Parser CompletionClientCapabilities
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Maybe Bool
-> Maybe
     (Rec
        (("snippetSupport" .== Maybe Bool)
         .+ (("commitCharactersSupport" .== Maybe Bool)
             .+ (("documentationFormat" .== Maybe [MarkupKind])
                 .+ (("deprecatedSupport" .== Maybe Bool)
                     .+ (("preselectSupport" .== Maybe Bool)
                         .+ (("tagSupport"
                              .== Maybe (Rec (("valueSet" .== [CompletionItemTag]) .+ Empty)))
                             .+ (("insertReplaceSupport" .== Maybe Bool)
                                 .+ (("resolveSupport"
                                      .== Maybe (Rec (("properties" .== [Text]) .+ Empty)))
                                     .+ (("insertTextModeSupport"
                                          .== Maybe
                                                (Rec (("valueSet" .== [InsertTextMode]) .+ Empty)))
                                         .+ (("labelDetailsSupport" .== Maybe Bool)
                                             .+ Empty)))))))))))
-> Maybe
     (Rec (("valueSet" .== Maybe [CompletionItemKind]) .+ Empty))
-> Maybe InsertTextMode
-> Maybe Bool
-> Maybe (Rec (("itemDefaults" .== Maybe [Text]) .+ Empty))
-> CompletionClientCapabilities
Maybe Bool
-> Maybe
     (Rec
        ('R
           '["commitCharactersSupport" ':-> Maybe Bool,
             "deprecatedSupport" ':-> Maybe Bool,
             "documentationFormat" ':-> Maybe [MarkupKind],
             "insertReplaceSupport" ':-> Maybe Bool,
             "insertTextModeSupport"
             ':-> Maybe (Rec ('R '["valueSet" ':-> [InsertTextMode]])),
             "labelDetailsSupport" ':-> Maybe Bool,
             "preselectSupport" ':-> Maybe Bool,
             "resolveSupport" ':-> Maybe (Rec ('R '["properties" ':-> [Text]])),
             "snippetSupport" ':-> Maybe Bool,
             "tagSupport"
             ':-> Maybe (Rec ('R '["valueSet" ':-> [CompletionItemTag]]))]))
-> Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]]))
-> Maybe InsertTextMode
-> Maybe Bool
-> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
-> CompletionClientCapabilities
CompletionClientCapabilities (Maybe Bool
 -> Maybe
      (Rec
         ('R
            '["commitCharactersSupport" ':-> Maybe Bool,
              "deprecatedSupport" ':-> Maybe Bool,
              "documentationFormat" ':-> Maybe [MarkupKind],
              "insertReplaceSupport" ':-> Maybe Bool,
              "insertTextModeSupport"
              ':-> Maybe (Rec ('R '["valueSet" ':-> [InsertTextMode]])),
              "labelDetailsSupport" ':-> Maybe Bool,
              "preselectSupport" ':-> Maybe Bool,
              "resolveSupport" ':-> Maybe (Rec ('R '["properties" ':-> [Text]])),
              "snippetSupport" ':-> Maybe Bool,
              "tagSupport"
              ':-> Maybe (Rec ('R '["valueSet" ':-> [CompletionItemTag]]))]))
 -> Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]]))
 -> Maybe InsertTextMode
 -> Maybe Bool
 -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
 -> CompletionClientCapabilities)
-> Parser (Maybe Bool)
-> Parser
     (Maybe
        (Rec
           ('R
              '["commitCharactersSupport" ':-> Maybe Bool,
                "deprecatedSupport" ':-> Maybe Bool,
                "documentationFormat" ':-> Maybe [MarkupKind],
                "insertReplaceSupport" ':-> Maybe Bool,
                "insertTextModeSupport"
                ':-> Maybe (Rec ('R '["valueSet" ':-> [InsertTextMode]])),
                "labelDetailsSupport" ':-> Maybe Bool,
                "preselectSupport" ':-> Maybe Bool,
                "resolveSupport" ':-> Maybe (Rec ('R '["properties" ':-> [Text]])),
                "snippetSupport" ':-> Maybe Bool,
                "tagSupport"
                ':-> Maybe (Rec ('R '["valueSet" ':-> [CompletionItemTag]]))]))
      -> Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]]))
      -> Maybe InsertTextMode
      -> Maybe Bool
      -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
      -> CompletionClientCapabilities)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser (Maybe Bool)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"dynamicRegistration" Parser
  (Maybe
     (Rec
        ('R
           '["commitCharactersSupport" ':-> Maybe Bool,
             "deprecatedSupport" ':-> Maybe Bool,
             "documentationFormat" ':-> Maybe [MarkupKind],
             "insertReplaceSupport" ':-> Maybe Bool,
             "insertTextModeSupport"
             ':-> Maybe (Rec ('R '["valueSet" ':-> [InsertTextMode]])),
             "labelDetailsSupport" ':-> Maybe Bool,
             "preselectSupport" ':-> Maybe Bool,
             "resolveSupport" ':-> Maybe (Rec ('R '["properties" ':-> [Text]])),
             "snippetSupport" ':-> Maybe Bool,
             "tagSupport"
             ':-> Maybe (Rec ('R '["valueSet" ':-> [CompletionItemTag]]))]))
   -> Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]]))
   -> Maybe InsertTextMode
   -> Maybe Bool
   -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
   -> CompletionClientCapabilities)
-> Parser
     (Maybe
        (Rec
           ('R
              '["commitCharactersSupport" ':-> Maybe Bool,
                "deprecatedSupport" ':-> Maybe Bool,
                "documentationFormat" ':-> Maybe [MarkupKind],
                "insertReplaceSupport" ':-> Maybe Bool,
                "insertTextModeSupport"
                ':-> Maybe (Rec ('R '["valueSet" ':-> [InsertTextMode]])),
                "labelDetailsSupport" ':-> Maybe Bool,
                "preselectSupport" ':-> Maybe Bool,
                "resolveSupport" ':-> Maybe (Rec ('R '["properties" ':-> [Text]])),
                "snippetSupport" ':-> Maybe Bool,
                "tagSupport"
                ':-> Maybe (Rec ('R '["valueSet" ':-> [CompletionItemTag]]))])))
-> Parser
     (Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]]))
      -> Maybe InsertTextMode
      -> Maybe Bool
      -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
      -> CompletionClientCapabilities)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
arg Object
-> Key
-> Parser
     (Maybe
        (Rec
           ('R
              '["commitCharactersSupport" ':-> Maybe Bool,
                "deprecatedSupport" ':-> Maybe Bool,
                "documentationFormat" ':-> Maybe [MarkupKind],
                "insertReplaceSupport" ':-> Maybe Bool,
                "insertTextModeSupport"
                ':-> Maybe (Rec ('R '["valueSet" ':-> [InsertTextMode]])),
                "labelDetailsSupport" ':-> Maybe Bool,
                "preselectSupport" ':-> Maybe Bool,
                "resolveSupport" ':-> Maybe (Rec ('R '["properties" ':-> [Text]])),
                "snippetSupport" ':-> Maybe Bool,
                "tagSupport"
                ':-> Maybe (Rec ('R '["valueSet" ':-> [CompletionItemTag]]))])))
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"completionItem" Parser
  (Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]]))
   -> Maybe InsertTextMode
   -> Maybe Bool
   -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
   -> CompletionClientCapabilities)
-> Parser
     (Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]])))
-> Parser
     (Maybe InsertTextMode
      -> Maybe Bool
      -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
      -> CompletionClientCapabilities)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
arg Object
-> Key
-> Parser
     (Maybe (Rec ('R '["valueSet" ':-> Maybe [CompletionItemKind]])))
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"completionItemKind" Parser
  (Maybe InsertTextMode
   -> Maybe Bool
   -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
   -> CompletionClientCapabilities)
-> Parser (Maybe InsertTextMode)
-> Parser
     (Maybe Bool
      -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
      -> CompletionClientCapabilities)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
arg Object -> Key -> Parser (Maybe InsertTextMode)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"insertTextMode" Parser
  (Maybe Bool
   -> Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
   -> CompletionClientCapabilities)
-> Parser (Maybe Bool)
-> Parser
     (Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
      -> CompletionClientCapabilities)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
arg Object -> Key -> Parser (Maybe Bool)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"contextSupport" Parser
  (Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]]))
   -> CompletionClientCapabilities)
-> Parser (Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]])))
-> Parser CompletionClientCapabilities
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
arg Object
-> Key
-> Parser (Maybe (Rec ('R '["itemDefaults" ':-> Maybe [Text]])))
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"completionList"