{-# OPTIONS_GHC -Wno-unused-imports #-}
{-# OPTIONS_GHC -Wno-unused-matches #-}
{-# OPTIONS_GHC -Wno-deprecations #-}
module Language.LSP.Protocol.Internal.Types.ClientCapabilities where
import Control.DeepSeq
import Data.Hashable
import GHC.Generics
import Language.LSP.Protocol.Utils.Misc
import Prettyprinter
import qualified Data.Aeson
import qualified Data.Aeson as Aeson
import qualified Data.Row.Aeson as Aeson
import qualified Data.Row.Hashable as Hashable
import qualified Language.LSP.Protocol.Internal.Types.GeneralClientCapabilities
import qualified Language.LSP.Protocol.Internal.Types.NotebookDocumentClientCapabilities
import qualified Language.LSP.Protocol.Internal.Types.TextDocumentClientCapabilities
import qualified Language.LSP.Protocol.Internal.Types.WindowClientCapabilities
import qualified Language.LSP.Protocol.Internal.Types.WorkspaceClientCapabilities
import qualified Language.LSP.Protocol.Types.Common
data ClientCapabilities = ClientCapabilities
{
ClientCapabilities -> Maybe WorkspaceClientCapabilities
_workspace :: (Maybe Language.LSP.Protocol.Internal.Types.WorkspaceClientCapabilities.WorkspaceClientCapabilities)
,
ClientCapabilities -> Maybe TextDocumentClientCapabilities
_textDocument :: (Maybe Language.LSP.Protocol.Internal.Types.TextDocumentClientCapabilities.TextDocumentClientCapabilities)
,
ClientCapabilities -> Maybe NotebookDocumentClientCapabilities
_notebookDocument :: (Maybe Language.LSP.Protocol.Internal.Types.NotebookDocumentClientCapabilities.NotebookDocumentClientCapabilities)
,
ClientCapabilities -> Maybe WindowClientCapabilities
_window :: (Maybe Language.LSP.Protocol.Internal.Types.WindowClientCapabilities.WindowClientCapabilities)
,
ClientCapabilities -> Maybe GeneralClientCapabilities
_general :: (Maybe Language.LSP.Protocol.Internal.Types.GeneralClientCapabilities.GeneralClientCapabilities)
,
ClientCapabilities -> Maybe Value
_experimental :: (Maybe Data.Aeson.Value)
}
deriving stock (Int -> ClientCapabilities -> ShowS
[ClientCapabilities] -> ShowS
ClientCapabilities -> String
(Int -> ClientCapabilities -> ShowS)
-> (ClientCapabilities -> String)
-> ([ClientCapabilities] -> ShowS)
-> Show ClientCapabilities
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ClientCapabilities -> ShowS
showsPrec :: Int -> ClientCapabilities -> ShowS
$cshow :: ClientCapabilities -> String
show :: ClientCapabilities -> String
$cshowList :: [ClientCapabilities] -> ShowS
showList :: [ClientCapabilities] -> ShowS
Show, ClientCapabilities -> ClientCapabilities -> Bool
(ClientCapabilities -> ClientCapabilities -> Bool)
-> (ClientCapabilities -> ClientCapabilities -> Bool)
-> Eq ClientCapabilities
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ClientCapabilities -> ClientCapabilities -> Bool
== :: ClientCapabilities -> ClientCapabilities -> Bool
$c/= :: ClientCapabilities -> ClientCapabilities -> Bool
/= :: ClientCapabilities -> ClientCapabilities -> Bool
Eq, Eq ClientCapabilities
Eq ClientCapabilities =>
(ClientCapabilities -> ClientCapabilities -> Ordering)
-> (ClientCapabilities -> ClientCapabilities -> Bool)
-> (ClientCapabilities -> ClientCapabilities -> Bool)
-> (ClientCapabilities -> ClientCapabilities -> Bool)
-> (ClientCapabilities -> ClientCapabilities -> Bool)
-> (ClientCapabilities -> ClientCapabilities -> ClientCapabilities)
-> (ClientCapabilities -> ClientCapabilities -> ClientCapabilities)
-> Ord ClientCapabilities
ClientCapabilities -> ClientCapabilities -> Bool
ClientCapabilities -> ClientCapabilities -> Ordering
ClientCapabilities -> ClientCapabilities -> ClientCapabilities
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 :: ClientCapabilities -> ClientCapabilities -> Ordering
compare :: ClientCapabilities -> ClientCapabilities -> Ordering
$c< :: ClientCapabilities -> ClientCapabilities -> Bool
< :: ClientCapabilities -> ClientCapabilities -> Bool
$c<= :: ClientCapabilities -> ClientCapabilities -> Bool
<= :: ClientCapabilities -> ClientCapabilities -> Bool
$c> :: ClientCapabilities -> ClientCapabilities -> Bool
> :: ClientCapabilities -> ClientCapabilities -> Bool
$c>= :: ClientCapabilities -> ClientCapabilities -> Bool
>= :: ClientCapabilities -> ClientCapabilities -> Bool
$cmax :: ClientCapabilities -> ClientCapabilities -> ClientCapabilities
max :: ClientCapabilities -> ClientCapabilities -> ClientCapabilities
$cmin :: ClientCapabilities -> ClientCapabilities -> ClientCapabilities
min :: ClientCapabilities -> ClientCapabilities -> ClientCapabilities
Ord, (forall x. ClientCapabilities -> Rep ClientCapabilities x)
-> (forall x. Rep ClientCapabilities x -> ClientCapabilities)
-> Generic ClientCapabilities
forall x. Rep ClientCapabilities x -> ClientCapabilities
forall x. ClientCapabilities -> Rep ClientCapabilities x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ClientCapabilities -> Rep ClientCapabilities x
from :: forall x. ClientCapabilities -> Rep ClientCapabilities x
$cto :: forall x. Rep ClientCapabilities x -> ClientCapabilities
to :: forall x. Rep ClientCapabilities x -> ClientCapabilities
Generic)
deriving anyclass (ClientCapabilities -> ()
(ClientCapabilities -> ()) -> NFData ClientCapabilities
forall a. (a -> ()) -> NFData a
$crnf :: ClientCapabilities -> ()
rnf :: ClientCapabilities -> ()
NFData, Eq ClientCapabilities
Eq ClientCapabilities =>
(Int -> ClientCapabilities -> Int)
-> (ClientCapabilities -> Int) -> Hashable ClientCapabilities
Int -> ClientCapabilities -> Int
ClientCapabilities -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> ClientCapabilities -> Int
hashWithSalt :: Int -> ClientCapabilities -> Int
$chash :: ClientCapabilities -> Int
hash :: ClientCapabilities -> Int
Hashable)
deriving (forall ann. ClientCapabilities -> Doc ann)
-> (forall ann. [ClientCapabilities] -> Doc ann)
-> Pretty ClientCapabilities
forall ann. [ClientCapabilities] -> Doc ann
forall ann. ClientCapabilities -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. ClientCapabilities -> Doc ann
pretty :: forall ann. ClientCapabilities -> Doc ann
$cprettyList :: forall ann. [ClientCapabilities] -> Doc ann
prettyList :: forall ann. [ClientCapabilities] -> Doc ann
Pretty via (ViaJSON ClientCapabilities)
instance Aeson.ToJSON ClientCapabilities where
toJSON :: ClientCapabilities -> Value
toJSON (ClientCapabilities Maybe WorkspaceClientCapabilities
arg0 Maybe TextDocumentClientCapabilities
arg1 Maybe NotebookDocumentClientCapabilities
arg2 Maybe WindowClientCapabilities
arg3 Maybe GeneralClientCapabilities
arg4 Maybe Value
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
"workspace" String -> Maybe WorkspaceClientCapabilities -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe WorkspaceClientCapabilities
arg0
,String
"textDocument" String -> Maybe TextDocumentClientCapabilities -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe TextDocumentClientCapabilities
arg1
,String
"notebookDocument" String -> Maybe NotebookDocumentClientCapabilities -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe NotebookDocumentClientCapabilities
arg2
,String
"window" String -> Maybe WindowClientCapabilities -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe WindowClientCapabilities
arg3
,String
"general" String -> Maybe GeneralClientCapabilities -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe GeneralClientCapabilities
arg4
,String
"experimental" String -> Maybe Value -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe Value
arg5]
instance Aeson.FromJSON ClientCapabilities where
parseJSON :: Value -> Parser ClientCapabilities
parseJSON = String
-> (Object -> Parser ClientCapabilities)
-> Value
-> Parser ClientCapabilities
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"ClientCapabilities" ((Object -> Parser ClientCapabilities)
-> Value -> Parser ClientCapabilities)
-> (Object -> Parser ClientCapabilities)
-> Value
-> Parser ClientCapabilities
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Maybe WorkspaceClientCapabilities
-> Maybe TextDocumentClientCapabilities
-> Maybe NotebookDocumentClientCapabilities
-> Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Value
-> ClientCapabilities
ClientCapabilities (Maybe WorkspaceClientCapabilities
-> Maybe TextDocumentClientCapabilities
-> Maybe NotebookDocumentClientCapabilities
-> Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Value
-> ClientCapabilities)
-> Parser (Maybe WorkspaceClientCapabilities)
-> Parser
(Maybe TextDocumentClientCapabilities
-> Maybe NotebookDocumentClientCapabilities
-> Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Value
-> ClientCapabilities)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser (Maybe WorkspaceClientCapabilities)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"workspace" Parser
(Maybe TextDocumentClientCapabilities
-> Maybe NotebookDocumentClientCapabilities
-> Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Value
-> ClientCapabilities)
-> Parser (Maybe TextDocumentClientCapabilities)
-> Parser
(Maybe NotebookDocumentClientCapabilities
-> Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Value
-> ClientCapabilities)
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 TextDocumentClientCapabilities)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"textDocument" Parser
(Maybe NotebookDocumentClientCapabilities
-> Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Value
-> ClientCapabilities)
-> Parser (Maybe NotebookDocumentClientCapabilities)
-> Parser
(Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Value
-> ClientCapabilities)
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 NotebookDocumentClientCapabilities)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"notebookDocument" Parser
(Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Value
-> ClientCapabilities)
-> Parser (Maybe WindowClientCapabilities)
-> Parser
(Maybe GeneralClientCapabilities
-> Maybe Value -> ClientCapabilities)
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 WindowClientCapabilities)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"window" Parser
(Maybe GeneralClientCapabilities
-> Maybe Value -> ClientCapabilities)
-> Parser (Maybe GeneralClientCapabilities)
-> Parser (Maybe Value -> ClientCapabilities)
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 GeneralClientCapabilities)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"general" Parser (Maybe Value -> ClientCapabilities)
-> Parser (Maybe Value) -> Parser ClientCapabilities
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 Value)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"experimental"