{- 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.SignatureHelpOptions 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.Aeson as Aeson
import qualified Data.Row.Hashable as Hashable
import qualified Data.Text
import qualified Language.LSP.Protocol.Types.Common

{-|
Server Capabilities for a `SignatureHelpRequest`.
-}
data SignatureHelpOptions = SignatureHelpOptions 
  { {-|

  -}
  SignatureHelpOptions -> Maybe Bool
_workDoneProgress :: (Maybe Bool)
  , {-|
  List of characters that trigger signature help automatically.
  -}
  SignatureHelpOptions -> Maybe [Text]
_triggerCharacters :: (Maybe [Data.Text.Text])
  , {-|
  List of characters that re-trigger signature help.

  These trigger characters are only active when signature help is already showing. All trigger characters
  are also counted as re-trigger characters.

  @since 3.15.0
  -}
  SignatureHelpOptions -> Maybe [Text]
_retriggerCharacters :: (Maybe [Data.Text.Text])
  }
  deriving stock (Int -> SignatureHelpOptions -> ShowS
[SignatureHelpOptions] -> ShowS
SignatureHelpOptions -> String
(Int -> SignatureHelpOptions -> ShowS)
-> (SignatureHelpOptions -> String)
-> ([SignatureHelpOptions] -> ShowS)
-> Show SignatureHelpOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SignatureHelpOptions -> ShowS
showsPrec :: Int -> SignatureHelpOptions -> ShowS
$cshow :: SignatureHelpOptions -> String
show :: SignatureHelpOptions -> String
$cshowList :: [SignatureHelpOptions] -> ShowS
showList :: [SignatureHelpOptions] -> ShowS
Show, SignatureHelpOptions -> SignatureHelpOptions -> Bool
(SignatureHelpOptions -> SignatureHelpOptions -> Bool)
-> (SignatureHelpOptions -> SignatureHelpOptions -> Bool)
-> Eq SignatureHelpOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
== :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
$c/= :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
/= :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
Eq, Eq SignatureHelpOptions
Eq SignatureHelpOptions =>
(SignatureHelpOptions -> SignatureHelpOptions -> Ordering)
-> (SignatureHelpOptions -> SignatureHelpOptions -> Bool)
-> (SignatureHelpOptions -> SignatureHelpOptions -> Bool)
-> (SignatureHelpOptions -> SignatureHelpOptions -> Bool)
-> (SignatureHelpOptions -> SignatureHelpOptions -> Bool)
-> (SignatureHelpOptions
    -> SignatureHelpOptions -> SignatureHelpOptions)
-> (SignatureHelpOptions
    -> SignatureHelpOptions -> SignatureHelpOptions)
-> Ord SignatureHelpOptions
SignatureHelpOptions -> SignatureHelpOptions -> Bool
SignatureHelpOptions -> SignatureHelpOptions -> Ordering
SignatureHelpOptions
-> SignatureHelpOptions -> SignatureHelpOptions
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 :: SignatureHelpOptions -> SignatureHelpOptions -> Ordering
compare :: SignatureHelpOptions -> SignatureHelpOptions -> Ordering
$c< :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
< :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
$c<= :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
<= :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
$c> :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
> :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
$c>= :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
>= :: SignatureHelpOptions -> SignatureHelpOptions -> Bool
$cmax :: SignatureHelpOptions
-> SignatureHelpOptions -> SignatureHelpOptions
max :: SignatureHelpOptions
-> SignatureHelpOptions -> SignatureHelpOptions
$cmin :: SignatureHelpOptions
-> SignatureHelpOptions -> SignatureHelpOptions
min :: SignatureHelpOptions
-> SignatureHelpOptions -> SignatureHelpOptions
Ord, (forall x. SignatureHelpOptions -> Rep SignatureHelpOptions x)
-> (forall x. Rep SignatureHelpOptions x -> SignatureHelpOptions)
-> Generic SignatureHelpOptions
forall x. Rep SignatureHelpOptions x -> SignatureHelpOptions
forall x. SignatureHelpOptions -> Rep SignatureHelpOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SignatureHelpOptions -> Rep SignatureHelpOptions x
from :: forall x. SignatureHelpOptions -> Rep SignatureHelpOptions x
$cto :: forall x. Rep SignatureHelpOptions x -> SignatureHelpOptions
to :: forall x. Rep SignatureHelpOptions x -> SignatureHelpOptions
Generic)
  deriving anyclass (SignatureHelpOptions -> ()
(SignatureHelpOptions -> ()) -> NFData SignatureHelpOptions
forall a. (a -> ()) -> NFData a
$crnf :: SignatureHelpOptions -> ()
rnf :: SignatureHelpOptions -> ()
NFData, Eq SignatureHelpOptions
Eq SignatureHelpOptions =>
(Int -> SignatureHelpOptions -> Int)
-> (SignatureHelpOptions -> Int) -> Hashable SignatureHelpOptions
Int -> SignatureHelpOptions -> Int
SignatureHelpOptions -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> SignatureHelpOptions -> Int
hashWithSalt :: Int -> SignatureHelpOptions -> Int
$chash :: SignatureHelpOptions -> Int
hash :: SignatureHelpOptions -> Int
Hashable)
  deriving (forall ann. SignatureHelpOptions -> Doc ann)
-> (forall ann. [SignatureHelpOptions] -> Doc ann)
-> Pretty SignatureHelpOptions
forall ann. [SignatureHelpOptions] -> Doc ann
forall ann. SignatureHelpOptions -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. SignatureHelpOptions -> Doc ann
pretty :: forall ann. SignatureHelpOptions -> Doc ann
$cprettyList :: forall ann. [SignatureHelpOptions] -> Doc ann
prettyList :: forall ann. [SignatureHelpOptions] -> Doc ann
Pretty via (ViaJSON SignatureHelpOptions)

instance Aeson.ToJSON SignatureHelpOptions where
  toJSON :: SignatureHelpOptions -> Value
toJSON (SignatureHelpOptions Maybe Bool
arg0 Maybe [Text]
arg1 Maybe [Text]
arg2) = [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
"workDoneProgress" 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
"triggerCharacters" String -> Maybe [Text] -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe [Text]
arg1
    ,String
"retriggerCharacters" String -> Maybe [Text] -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe [Text]
arg2]

instance Aeson.FromJSON SignatureHelpOptions where
  parseJSON :: Value -> Parser SignatureHelpOptions
parseJSON = String
-> (Object -> Parser SignatureHelpOptions)
-> Value
-> Parser SignatureHelpOptions
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"SignatureHelpOptions" ((Object -> Parser SignatureHelpOptions)
 -> Value -> Parser SignatureHelpOptions)
-> (Object -> Parser SignatureHelpOptions)
-> Value
-> Parser SignatureHelpOptions
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Maybe Bool -> Maybe [Text] -> Maybe [Text] -> SignatureHelpOptions
SignatureHelpOptions (Maybe Bool
 -> Maybe [Text] -> Maybe [Text] -> SignatureHelpOptions)
-> Parser (Maybe Bool)
-> Parser (Maybe [Text] -> Maybe [Text] -> SignatureHelpOptions)
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
"workDoneProgress" Parser (Maybe [Text] -> Maybe [Text] -> SignatureHelpOptions)
-> Parser (Maybe [Text])
-> Parser (Maybe [Text] -> SignatureHelpOptions)
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 [Text])
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"triggerCharacters" Parser (Maybe [Text] -> SignatureHelpOptions)
-> Parser (Maybe [Text]) -> Parser SignatureHelpOptions
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 [Text])
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"retriggerCharacters"