{-# LANGUAGE DuplicateRecordFields  #-}
{-# LANGUAGE TemplateHaskell        #-}

module Language.LSP.Types.ClientCapabilities where

import           Data.Aeson.TH
import qualified Data.Aeson as A
import Data.Default
import Data.Text (Text)

import Language.LSP.Types.CallHierarchy
import Language.LSP.Types.CodeAction
import Language.LSP.Types.CodeLens
import Language.LSP.Types.Command
import Language.LSP.Types.Completion
import Language.LSP.Types.Configuration
import Language.LSP.Types.Diagnostic
import Language.LSP.Types.Declaration
import Language.LSP.Types.Definition
import Language.LSP.Types.DocumentColor
import Language.LSP.Types.DocumentHighlight
import Language.LSP.Types.DocumentLink
import Language.LSP.Types.DocumentSymbol
import Language.LSP.Types.FoldingRange
import Language.LSP.Types.Formatting
import Language.LSP.Types.Hover
import Language.LSP.Types.Implementation
import Language.LSP.Types.References
import Language.LSP.Types.Rename
import Language.LSP.Types.SelectionRange
import Language.LSP.Types.SemanticTokens
import Language.LSP.Types.SignatureHelp
import Language.LSP.Types.TextDocument
import Language.LSP.Types.TypeDefinition
import Language.LSP.Types.Utils
import Language.LSP.Types.WatchedFiles
import Language.LSP.Types.WorkspaceEdit
import Language.LSP.Types.WorkspaceSymbol
import Language.LSP.Types.MarkupContent (MarkdownClientCapabilities)
import Language.LSP.Types.Common (List)


data WorkspaceClientCapabilities =
  WorkspaceClientCapabilities
    { -- | The client supports applying batch edits to the workspace by supporting
      -- the request 'workspace/applyEdit'
      WorkspaceClientCapabilities -> Maybe Bool
_applyEdit :: Maybe Bool

      -- | Capabilities specific to `WorkspaceEdit`s
    , WorkspaceClientCapabilities
-> Maybe WorkspaceEditClientCapabilities
_workspaceEdit :: Maybe WorkspaceEditClientCapabilities

      -- | Capabilities specific to the `workspace/didChangeConfiguration` notification.
    , WorkspaceClientCapabilities
-> Maybe DidChangeConfigurationClientCapabilities
_didChangeConfiguration :: Maybe DidChangeConfigurationClientCapabilities

       -- | Capabilities specific to the `workspace/didChangeWatchedFiles` notification.
    , WorkspaceClientCapabilities
-> Maybe DidChangeWatchedFilesClientCapabilities
_didChangeWatchedFiles :: Maybe DidChangeWatchedFilesClientCapabilities

      -- | Capabilities specific to the `workspace/symbol` request.
    , WorkspaceClientCapabilities
-> Maybe WorkspaceSymbolClientCapabilities
_symbol :: Maybe WorkspaceSymbolClientCapabilities

      -- | Capabilities specific to the `workspace/executeCommand` request.
    , WorkspaceClientCapabilities
-> Maybe ExecuteCommandClientCapabilities
_executeCommand :: Maybe ExecuteCommandClientCapabilities

      -- | The client has support for workspace folders.
    , WorkspaceClientCapabilities -> Maybe Bool
_workspaceFolders :: Maybe Bool

      -- | The client supports `workspace/configuration` requests.
    , WorkspaceClientCapabilities -> Maybe Bool
_configuration :: Maybe Bool

      -- | Capabilities specific to the semantic token requests scoped to the
      -- workspace.
      --
      -- @since 3.16.0
    , WorkspaceClientCapabilities
-> Maybe SemanticTokensWorkspaceClientCapabilities
_semanticTokens :: Maybe SemanticTokensWorkspaceClientCapabilities
    } deriving (Int -> WorkspaceClientCapabilities -> ShowS
[WorkspaceClientCapabilities] -> ShowS
WorkspaceClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WorkspaceClientCapabilities] -> ShowS
$cshowList :: [WorkspaceClientCapabilities] -> ShowS
show :: WorkspaceClientCapabilities -> String
$cshow :: WorkspaceClientCapabilities -> String
showsPrec :: Int -> WorkspaceClientCapabilities -> ShowS
$cshowsPrec :: Int -> WorkspaceClientCapabilities -> ShowS
Show, ReadPrec [WorkspaceClientCapabilities]
ReadPrec WorkspaceClientCapabilities
Int -> ReadS WorkspaceClientCapabilities
ReadS [WorkspaceClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [WorkspaceClientCapabilities]
$creadListPrec :: ReadPrec [WorkspaceClientCapabilities]
readPrec :: ReadPrec WorkspaceClientCapabilities
$creadPrec :: ReadPrec WorkspaceClientCapabilities
readList :: ReadS [WorkspaceClientCapabilities]
$creadList :: ReadS [WorkspaceClientCapabilities]
readsPrec :: Int -> ReadS WorkspaceClientCapabilities
$creadsPrec :: Int -> ReadS WorkspaceClientCapabilities
Read, WorkspaceClientCapabilities -> WorkspaceClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WorkspaceClientCapabilities -> WorkspaceClientCapabilities -> Bool
$c/= :: WorkspaceClientCapabilities -> WorkspaceClientCapabilities -> Bool
== :: WorkspaceClientCapabilities -> WorkspaceClientCapabilities -> Bool
$c== :: WorkspaceClientCapabilities -> WorkspaceClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''WorkspaceClientCapabilities

instance Default WorkspaceClientCapabilities where
  def :: WorkspaceClientCapabilities
def = Maybe Bool
-> Maybe WorkspaceEditClientCapabilities
-> Maybe DidChangeConfigurationClientCapabilities
-> Maybe DidChangeWatchedFilesClientCapabilities
-> Maybe WorkspaceSymbolClientCapabilities
-> Maybe ExecuteCommandClientCapabilities
-> Maybe Bool
-> Maybe Bool
-> Maybe SemanticTokensWorkspaceClientCapabilities
-> WorkspaceClientCapabilities
WorkspaceClientCapabilities forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def

-- -------------------------------------

data TextDocumentClientCapabilities =
  TextDocumentClientCapabilities
    { TextDocumentClientCapabilities
-> Maybe TextDocumentSyncClientCapabilities
_synchronization :: Maybe TextDocumentSyncClientCapabilities

      -- | Capabilities specific to the `textDocument/completion`
    , TextDocumentClientCapabilities
-> Maybe CompletionClientCapabilities
_completion :: Maybe CompletionClientCapabilities

      -- | Capabilities specific to the `textDocument/hover`
    , TextDocumentClientCapabilities -> Maybe HoverClientCapabilities
_hover :: Maybe HoverClientCapabilities

      -- | Capabilities specific to the `textDocument/signatureHelp`
    , TextDocumentClientCapabilities
-> Maybe SignatureHelpClientCapabilities
_signatureHelp :: Maybe SignatureHelpClientCapabilities

      -- | Capabilities specific to the `textDocument/references`
    , TextDocumentClientCapabilities
-> Maybe ReferencesClientCapabilities
_references :: Maybe ReferencesClientCapabilities

      -- | Capabilities specific to the `textDocument/documentHighlight`
    , TextDocumentClientCapabilities
-> Maybe DocumentHighlightClientCapabilities
_documentHighlight :: Maybe DocumentHighlightClientCapabilities

      -- | Capabilities specific to the `textDocument/documentSymbol`
    , TextDocumentClientCapabilities
-> Maybe DocumentSymbolClientCapabilities
_documentSymbol :: Maybe DocumentSymbolClientCapabilities

      -- | Capabilities specific to the `textDocument/formatting`
    , TextDocumentClientCapabilities
-> Maybe DocumentFormattingClientCapabilities
_formatting :: Maybe DocumentFormattingClientCapabilities

      -- | Capabilities specific to the `textDocument/rangeFormatting`
    , TextDocumentClientCapabilities
-> Maybe DocumentRangeFormattingClientCapabilities
_rangeFormatting :: Maybe DocumentRangeFormattingClientCapabilities

      -- | Capabilities specific to the `textDocument/onTypeFormatting`
    , TextDocumentClientCapabilities
-> Maybe DocumentOnTypeFormattingClientCapabilities
_onTypeFormatting :: Maybe DocumentOnTypeFormattingClientCapabilities

      -- | Capabilities specific to the `textDocument/declaration` request.
      --
      -- Since LSP 3.14.0
    , TextDocumentClientCapabilities
-> Maybe DeclarationClientCapabilities
_declaration :: Maybe DeclarationClientCapabilities

      -- | Capabilities specific to the `textDocument/definition`
    , TextDocumentClientCapabilities
-> Maybe DefinitionClientCapabilities
_definition :: Maybe DefinitionClientCapabilities

      -- | Capabilities specific to the `textDocument/typeDefinition`
    , TextDocumentClientCapabilities
-> Maybe TypeDefinitionClientCapabilities
_typeDefinition :: Maybe TypeDefinitionClientCapabilities

      -- | Capabilities specific to the `textDocument/implementation`
    , TextDocumentClientCapabilities
-> Maybe ImplementationClientCapabilities
_implementation :: Maybe ImplementationClientCapabilities

      -- | Capabilities specific to the `textDocument/codeAction`
    , TextDocumentClientCapabilities
-> Maybe CodeActionClientCapabilities
_codeAction :: Maybe CodeActionClientCapabilities

      -- | Capabilities specific to the `textDocument/codeLens`
    , TextDocumentClientCapabilities -> Maybe CodeLensClientCapabilities
_codeLens :: Maybe CodeLensClientCapabilities

      -- | Capabilities specific to the `textDocument/documentLink`
    , TextDocumentClientCapabilities
-> Maybe DocumentLinkClientCapabilities
_documentLink :: Maybe DocumentLinkClientCapabilities

      -- | Capabilities specific to the `textDocument/documentColor` and the
      -- `textDocument/colorPresentation` request
    , TextDocumentClientCapabilities
-> Maybe DocumentColorClientCapabilities
_colorProvider :: Maybe DocumentColorClientCapabilities

      -- | Capabilities specific to the `textDocument/rename`
    , TextDocumentClientCapabilities -> Maybe RenameClientCapabilities
_rename :: Maybe RenameClientCapabilities

      -- | Capabilities specific to `textDocument/publishDiagnostics`
    , TextDocumentClientCapabilities
-> Maybe PublishDiagnosticsClientCapabilities
_publishDiagnostics :: Maybe PublishDiagnosticsClientCapabilities

      -- | Capabilities specific to the `textDocument/foldingRange` request.
      -- Since LSP 3.10.
      --
      -- @since 0.7.0.0
    , TextDocumentClientCapabilities
-> Maybe FoldingRangeClientCapabilities
_foldingRange :: Maybe FoldingRangeClientCapabilities

      -- | Capabilities specific to the `textDocument/selectionRange` request.
      -- Since LSP 3.15.0
    , TextDocumentClientCapabilities
-> Maybe SelectionRangeClientCapabilities
_selectionRange :: Maybe SelectionRangeClientCapabilities

      -- | Call hierarchy specific to the `textDocument/prepareCallHierarchy` request.
      -- Since LSP 3.16.0
    , TextDocumentClientCapabilities
-> Maybe CallHierarchyClientCapabilities
_callHierarchy :: Maybe CallHierarchyClientCapabilities

    -- | Capabilities specific to the various semantic token requests.
    --
    -- @since 3.16.0
    , TextDocumentClientCapabilities
-> Maybe SemanticTokensClientCapabilities
_semanticTokens :: Maybe SemanticTokensClientCapabilities
    } deriving (Int -> TextDocumentClientCapabilities -> ShowS
[TextDocumentClientCapabilities] -> ShowS
TextDocumentClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TextDocumentClientCapabilities] -> ShowS
$cshowList :: [TextDocumentClientCapabilities] -> ShowS
show :: TextDocumentClientCapabilities -> String
$cshow :: TextDocumentClientCapabilities -> String
showsPrec :: Int -> TextDocumentClientCapabilities -> ShowS
$cshowsPrec :: Int -> TextDocumentClientCapabilities -> ShowS
Show, ReadPrec [TextDocumentClientCapabilities]
ReadPrec TextDocumentClientCapabilities
Int -> ReadS TextDocumentClientCapabilities
ReadS [TextDocumentClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TextDocumentClientCapabilities]
$creadListPrec :: ReadPrec [TextDocumentClientCapabilities]
readPrec :: ReadPrec TextDocumentClientCapabilities
$creadPrec :: ReadPrec TextDocumentClientCapabilities
readList :: ReadS [TextDocumentClientCapabilities]
$creadList :: ReadS [TextDocumentClientCapabilities]
readsPrec :: Int -> ReadS TextDocumentClientCapabilities
$creadsPrec :: Int -> ReadS TextDocumentClientCapabilities
Read, TextDocumentClientCapabilities
-> TextDocumentClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TextDocumentClientCapabilities
-> TextDocumentClientCapabilities -> Bool
$c/= :: TextDocumentClientCapabilities
-> TextDocumentClientCapabilities -> Bool
== :: TextDocumentClientCapabilities
-> TextDocumentClientCapabilities -> Bool
$c== :: TextDocumentClientCapabilities
-> TextDocumentClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''TextDocumentClientCapabilities

instance Default TextDocumentClientCapabilities where
  def :: TextDocumentClientCapabilities
def = Maybe TextDocumentSyncClientCapabilities
-> Maybe CompletionClientCapabilities
-> Maybe HoverClientCapabilities
-> Maybe SignatureHelpClientCapabilities
-> Maybe ReferencesClientCapabilities
-> Maybe DocumentHighlightClientCapabilities
-> Maybe DocumentSymbolClientCapabilities
-> Maybe DocumentFormattingClientCapabilities
-> Maybe DocumentRangeFormattingClientCapabilities
-> Maybe DocumentOnTypeFormattingClientCapabilities
-> Maybe DeclarationClientCapabilities
-> Maybe DefinitionClientCapabilities
-> Maybe TypeDefinitionClientCapabilities
-> Maybe ImplementationClientCapabilities
-> Maybe CodeActionClientCapabilities
-> Maybe CodeLensClientCapabilities
-> Maybe DocumentLinkClientCapabilities
-> Maybe DocumentColorClientCapabilities
-> Maybe RenameClientCapabilities
-> Maybe PublishDiagnosticsClientCapabilities
-> Maybe FoldingRangeClientCapabilities
-> Maybe SelectionRangeClientCapabilities
-> Maybe CallHierarchyClientCapabilities
-> Maybe SemanticTokensClientCapabilities
-> TextDocumentClientCapabilities
TextDocumentClientCapabilities forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def
                                       forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def
                                       forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def

-- ---------------------------------------------------------------------

-- | Capabilities specific to the `MessageActionItem` type.
data MessageActionItemClientCapabilities =
  MessageActionItemClientCapabilities
    {
      -- | Whether the client supports additional attributes which
      -- are preserved and sent back to the server in the
      -- request's response.
      MessageActionItemClientCapabilities -> Maybe Bool
_additionalPropertiesSupport :: Maybe Bool
    } deriving (Int -> MessageActionItemClientCapabilities -> ShowS
[MessageActionItemClientCapabilities] -> ShowS
MessageActionItemClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageActionItemClientCapabilities] -> ShowS
$cshowList :: [MessageActionItemClientCapabilities] -> ShowS
show :: MessageActionItemClientCapabilities -> String
$cshow :: MessageActionItemClientCapabilities -> String
showsPrec :: Int -> MessageActionItemClientCapabilities -> ShowS
$cshowsPrec :: Int -> MessageActionItemClientCapabilities -> ShowS
Show, ReadPrec [MessageActionItemClientCapabilities]
ReadPrec MessageActionItemClientCapabilities
Int -> ReadS MessageActionItemClientCapabilities
ReadS [MessageActionItemClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageActionItemClientCapabilities]
$creadListPrec :: ReadPrec [MessageActionItemClientCapabilities]
readPrec :: ReadPrec MessageActionItemClientCapabilities
$creadPrec :: ReadPrec MessageActionItemClientCapabilities
readList :: ReadS [MessageActionItemClientCapabilities]
$creadList :: ReadS [MessageActionItemClientCapabilities]
readsPrec :: Int -> ReadS MessageActionItemClientCapabilities
$creadsPrec :: Int -> ReadS MessageActionItemClientCapabilities
Read, MessageActionItemClientCapabilities
-> MessageActionItemClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageActionItemClientCapabilities
-> MessageActionItemClientCapabilities -> Bool
$c/= :: MessageActionItemClientCapabilities
-> MessageActionItemClientCapabilities -> Bool
== :: MessageActionItemClientCapabilities
-> MessageActionItemClientCapabilities -> Bool
$c== :: MessageActionItemClientCapabilities
-> MessageActionItemClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''MessageActionItemClientCapabilities

-- | Show message request client capabilities
data ShowMessageRequestClientCapabilities =
  ShowMessageRequestClientCapabilities
    { -- | Capabilities specific to the `MessageActionItem` type.
      ShowMessageRequestClientCapabilities
-> Maybe MessageActionItemClientCapabilities
_messageActionItem :: Maybe MessageActionItemClientCapabilities
    } deriving (Int -> ShowMessageRequestClientCapabilities -> ShowS
[ShowMessageRequestClientCapabilities] -> ShowS
ShowMessageRequestClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ShowMessageRequestClientCapabilities] -> ShowS
$cshowList :: [ShowMessageRequestClientCapabilities] -> ShowS
show :: ShowMessageRequestClientCapabilities -> String
$cshow :: ShowMessageRequestClientCapabilities -> String
showsPrec :: Int -> ShowMessageRequestClientCapabilities -> ShowS
$cshowsPrec :: Int -> ShowMessageRequestClientCapabilities -> ShowS
Show, ReadPrec [ShowMessageRequestClientCapabilities]
ReadPrec ShowMessageRequestClientCapabilities
Int -> ReadS ShowMessageRequestClientCapabilities
ReadS [ShowMessageRequestClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ShowMessageRequestClientCapabilities]
$creadListPrec :: ReadPrec [ShowMessageRequestClientCapabilities]
readPrec :: ReadPrec ShowMessageRequestClientCapabilities
$creadPrec :: ReadPrec ShowMessageRequestClientCapabilities
readList :: ReadS [ShowMessageRequestClientCapabilities]
$creadList :: ReadS [ShowMessageRequestClientCapabilities]
readsPrec :: Int -> ReadS ShowMessageRequestClientCapabilities
$creadsPrec :: Int -> ReadS ShowMessageRequestClientCapabilities
Read, ShowMessageRequestClientCapabilities
-> ShowMessageRequestClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ShowMessageRequestClientCapabilities
-> ShowMessageRequestClientCapabilities -> Bool
$c/= :: ShowMessageRequestClientCapabilities
-> ShowMessageRequestClientCapabilities -> Bool
== :: ShowMessageRequestClientCapabilities
-> ShowMessageRequestClientCapabilities -> Bool
$c== :: ShowMessageRequestClientCapabilities
-> ShowMessageRequestClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''ShowMessageRequestClientCapabilities

-- | Client capabilities for the show document request.
--
-- @since 3.16.0
data ShowDocumentClientCapabilities =
  ShowDocumentClientCapabilities
    { -- | The client has support for the show document request
      ShowDocumentClientCapabilities -> Bool
_support :: Bool
    } deriving (Int -> ShowDocumentClientCapabilities -> ShowS
[ShowDocumentClientCapabilities] -> ShowS
ShowDocumentClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ShowDocumentClientCapabilities] -> ShowS
$cshowList :: [ShowDocumentClientCapabilities] -> ShowS
show :: ShowDocumentClientCapabilities -> String
$cshow :: ShowDocumentClientCapabilities -> String
showsPrec :: Int -> ShowDocumentClientCapabilities -> ShowS
$cshowsPrec :: Int -> ShowDocumentClientCapabilities -> ShowS
Show, ReadPrec [ShowDocumentClientCapabilities]
ReadPrec ShowDocumentClientCapabilities
Int -> ReadS ShowDocumentClientCapabilities
ReadS [ShowDocumentClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ShowDocumentClientCapabilities]
$creadListPrec :: ReadPrec [ShowDocumentClientCapabilities]
readPrec :: ReadPrec ShowDocumentClientCapabilities
$creadPrec :: ReadPrec ShowDocumentClientCapabilities
readList :: ReadS [ShowDocumentClientCapabilities]
$creadList :: ReadS [ShowDocumentClientCapabilities]
readsPrec :: Int -> ReadS ShowDocumentClientCapabilities
$creadsPrec :: Int -> ReadS ShowDocumentClientCapabilities
Read, ShowDocumentClientCapabilities
-> ShowDocumentClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ShowDocumentClientCapabilities
-> ShowDocumentClientCapabilities -> Bool
$c/= :: ShowDocumentClientCapabilities
-> ShowDocumentClientCapabilities -> Bool
== :: ShowDocumentClientCapabilities
-> ShowDocumentClientCapabilities -> Bool
$c== :: ShowDocumentClientCapabilities
-> ShowDocumentClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''ShowDocumentClientCapabilities

-- | Window specific client capabilities.
data WindowClientCapabilities =
  WindowClientCapabilities
    { -- | Whether client supports handling progress notifications.
      --
      -- @since 3.15.0
      WindowClientCapabilities -> Maybe Bool
_workDoneProgress :: Maybe Bool
      -- | Capabilities specific to the showMessage request
      --
      -- @since 3.16.0
    , WindowClientCapabilities
-> Maybe ShowMessageRequestClientCapabilities
_showMessage :: Maybe ShowMessageRequestClientCapabilities
      -- | Capabilities specific to the showDocument request
      --
      -- @since 3.16.0
    , WindowClientCapabilities -> Maybe ShowDocumentClientCapabilities
_showDocument :: Maybe ShowDocumentClientCapabilities
    } deriving (Int -> WindowClientCapabilities -> ShowS
[WindowClientCapabilities] -> ShowS
WindowClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WindowClientCapabilities] -> ShowS
$cshowList :: [WindowClientCapabilities] -> ShowS
show :: WindowClientCapabilities -> String
$cshow :: WindowClientCapabilities -> String
showsPrec :: Int -> WindowClientCapabilities -> ShowS
$cshowsPrec :: Int -> WindowClientCapabilities -> ShowS
Show, ReadPrec [WindowClientCapabilities]
ReadPrec WindowClientCapabilities
Int -> ReadS WindowClientCapabilities
ReadS [WindowClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [WindowClientCapabilities]
$creadListPrec :: ReadPrec [WindowClientCapabilities]
readPrec :: ReadPrec WindowClientCapabilities
$creadPrec :: ReadPrec WindowClientCapabilities
readList :: ReadS [WindowClientCapabilities]
$creadList :: ReadS [WindowClientCapabilities]
readsPrec :: Int -> ReadS WindowClientCapabilities
$creadsPrec :: Int -> ReadS WindowClientCapabilities
Read, WindowClientCapabilities -> WindowClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WindowClientCapabilities -> WindowClientCapabilities -> Bool
$c/= :: WindowClientCapabilities -> WindowClientCapabilities -> Bool
== :: WindowClientCapabilities -> WindowClientCapabilities -> Bool
$c== :: WindowClientCapabilities -> WindowClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''WindowClientCapabilities

instance Default WindowClientCapabilities where
  def :: WindowClientCapabilities
def = Maybe Bool
-> Maybe ShowMessageRequestClientCapabilities
-> Maybe ShowDocumentClientCapabilities
-> WindowClientCapabilities
WindowClientCapabilities forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def

-- ---------------------------------------------------------------------

-- | Client capability that signals how the client
-- handles stale requests (e.g. a request
-- for which the client will not process the response
-- anymore since the information is outdated).
-- @since 3.17.0
data StaleRequestClientCapabilities =
  StaleRequestClientCapabilities
    { StaleRequestClientCapabilities -> Bool
_cancel :: Bool
    , StaleRequestClientCapabilities -> List Text
_retryOnContentModified :: List Text
    } deriving (Int -> StaleRequestClientCapabilities -> ShowS
[StaleRequestClientCapabilities] -> ShowS
StaleRequestClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StaleRequestClientCapabilities] -> ShowS
$cshowList :: [StaleRequestClientCapabilities] -> ShowS
show :: StaleRequestClientCapabilities -> String
$cshow :: StaleRequestClientCapabilities -> String
showsPrec :: Int -> StaleRequestClientCapabilities -> ShowS
$cshowsPrec :: Int -> StaleRequestClientCapabilities -> ShowS
Show, ReadPrec [StaleRequestClientCapabilities]
ReadPrec StaleRequestClientCapabilities
Int -> ReadS StaleRequestClientCapabilities
ReadS [StaleRequestClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StaleRequestClientCapabilities]
$creadListPrec :: ReadPrec [StaleRequestClientCapabilities]
readPrec :: ReadPrec StaleRequestClientCapabilities
$creadPrec :: ReadPrec StaleRequestClientCapabilities
readList :: ReadS [StaleRequestClientCapabilities]
$creadList :: ReadS [StaleRequestClientCapabilities]
readsPrec :: Int -> ReadS StaleRequestClientCapabilities
$creadsPrec :: Int -> ReadS StaleRequestClientCapabilities
Read, StaleRequestClientCapabilities
-> StaleRequestClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StaleRequestClientCapabilities
-> StaleRequestClientCapabilities -> Bool
$c/= :: StaleRequestClientCapabilities
-> StaleRequestClientCapabilities -> Bool
== :: StaleRequestClientCapabilities
-> StaleRequestClientCapabilities -> Bool
$c== :: StaleRequestClientCapabilities
-> StaleRequestClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''StaleRequestClientCapabilities

-- | Client capabilities specific to the used markdown parser.
-- @since 3.16.0
data RegularExpressionsClientCapabilities =
  RegularExpressionsClientCapabilities
    { RegularExpressionsClientCapabilities -> Text
_engine :: Text
    , RegularExpressionsClientCapabilities -> Maybe Text
_version :: Maybe Text
    } deriving (Int -> RegularExpressionsClientCapabilities -> ShowS
[RegularExpressionsClientCapabilities] -> ShowS
RegularExpressionsClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RegularExpressionsClientCapabilities] -> ShowS
$cshowList :: [RegularExpressionsClientCapabilities] -> ShowS
show :: RegularExpressionsClientCapabilities -> String
$cshow :: RegularExpressionsClientCapabilities -> String
showsPrec :: Int -> RegularExpressionsClientCapabilities -> ShowS
$cshowsPrec :: Int -> RegularExpressionsClientCapabilities -> ShowS
Show, ReadPrec [RegularExpressionsClientCapabilities]
ReadPrec RegularExpressionsClientCapabilities
Int -> ReadS RegularExpressionsClientCapabilities
ReadS [RegularExpressionsClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RegularExpressionsClientCapabilities]
$creadListPrec :: ReadPrec [RegularExpressionsClientCapabilities]
readPrec :: ReadPrec RegularExpressionsClientCapabilities
$creadPrec :: ReadPrec RegularExpressionsClientCapabilities
readList :: ReadS [RegularExpressionsClientCapabilities]
$creadList :: ReadS [RegularExpressionsClientCapabilities]
readsPrec :: Int -> ReadS RegularExpressionsClientCapabilities
$creadsPrec :: Int -> ReadS RegularExpressionsClientCapabilities
Read, RegularExpressionsClientCapabilities
-> RegularExpressionsClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RegularExpressionsClientCapabilities
-> RegularExpressionsClientCapabilities -> Bool
$c/= :: RegularExpressionsClientCapabilities
-> RegularExpressionsClientCapabilities -> Bool
== :: RegularExpressionsClientCapabilities
-> RegularExpressionsClientCapabilities -> Bool
$c== :: RegularExpressionsClientCapabilities
-> RegularExpressionsClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''RegularExpressionsClientCapabilities

-- | General client capabilities.
-- @since 3.16.0
data GeneralClientCapabilities =
  GeneralClientCapabilities
    {
      GeneralClientCapabilities -> Maybe StaleRequestClientCapabilities
_staleRequestSupport :: Maybe StaleRequestClientCapabilities
      -- | Client capabilities specific to regular expressions.
      -- @since 3.16.0
    , GeneralClientCapabilities
-> Maybe RegularExpressionsClientCapabilities
_regularExpressions :: Maybe RegularExpressionsClientCapabilities
      -- | Client capabilities specific to the client's markdown parser.
      -- @since 3.16.0
    , GeneralClientCapabilities -> Maybe MarkdownClientCapabilities
_markdown :: Maybe MarkdownClientCapabilities
    } deriving (Int -> GeneralClientCapabilities -> ShowS
[GeneralClientCapabilities] -> ShowS
GeneralClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GeneralClientCapabilities] -> ShowS
$cshowList :: [GeneralClientCapabilities] -> ShowS
show :: GeneralClientCapabilities -> String
$cshow :: GeneralClientCapabilities -> String
showsPrec :: Int -> GeneralClientCapabilities -> ShowS
$cshowsPrec :: Int -> GeneralClientCapabilities -> ShowS
Show, ReadPrec [GeneralClientCapabilities]
ReadPrec GeneralClientCapabilities
Int -> ReadS GeneralClientCapabilities
ReadS [GeneralClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GeneralClientCapabilities]
$creadListPrec :: ReadPrec [GeneralClientCapabilities]
readPrec :: ReadPrec GeneralClientCapabilities
$creadPrec :: ReadPrec GeneralClientCapabilities
readList :: ReadS [GeneralClientCapabilities]
$creadList :: ReadS [GeneralClientCapabilities]
readsPrec :: Int -> ReadS GeneralClientCapabilities
$creadsPrec :: Int -> ReadS GeneralClientCapabilities
Read, GeneralClientCapabilities -> GeneralClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GeneralClientCapabilities -> GeneralClientCapabilities -> Bool
$c/= :: GeneralClientCapabilities -> GeneralClientCapabilities -> Bool
== :: GeneralClientCapabilities -> GeneralClientCapabilities -> Bool
$c== :: GeneralClientCapabilities -> GeneralClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''GeneralClientCapabilities

instance Default GeneralClientCapabilities where
  def :: GeneralClientCapabilities
def = Maybe StaleRequestClientCapabilities
-> Maybe RegularExpressionsClientCapabilities
-> Maybe MarkdownClientCapabilities
-> GeneralClientCapabilities
GeneralClientCapabilities forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def

-- ---------------------------------------------------------------------

data ClientCapabilities =
  ClientCapabilities
    { -- | Workspace specific client capabilities
      ClientCapabilities -> Maybe WorkspaceClientCapabilities
_workspace    :: Maybe WorkspaceClientCapabilities
      -- | Text document specific client capabilities
    , ClientCapabilities -> Maybe TextDocumentClientCapabilities
_textDocument :: Maybe TextDocumentClientCapabilities
      -- | Window specific client capabilities.
    , ClientCapabilities -> Maybe WindowClientCapabilities
_window :: Maybe WindowClientCapabilities
      -- | General client capabilities.
      -- @since 3.16.0
    , ClientCapabilities -> Maybe GeneralClientCapabilities
_general :: Maybe GeneralClientCapabilities
      -- | Experimental client capabilities.
    , ClientCapabilities -> Maybe Object
_experimental :: Maybe A.Object
    } deriving (Int -> ClientCapabilities -> ShowS
[ClientCapabilities] -> ShowS
ClientCapabilities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ClientCapabilities] -> ShowS
$cshowList :: [ClientCapabilities] -> ShowS
show :: ClientCapabilities -> String
$cshow :: ClientCapabilities -> String
showsPrec :: Int -> ClientCapabilities -> ShowS
$cshowsPrec :: Int -> ClientCapabilities -> ShowS
Show, ReadPrec [ClientCapabilities]
ReadPrec ClientCapabilities
Int -> ReadS ClientCapabilities
ReadS [ClientCapabilities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ClientCapabilities]
$creadListPrec :: ReadPrec [ClientCapabilities]
readPrec :: ReadPrec ClientCapabilities
$creadPrec :: ReadPrec ClientCapabilities
readList :: ReadS [ClientCapabilities]
$creadList :: ReadS [ClientCapabilities]
readsPrec :: Int -> ReadS ClientCapabilities
$creadsPrec :: Int -> ReadS ClientCapabilities
Read, ClientCapabilities -> ClientCapabilities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ClientCapabilities -> ClientCapabilities -> Bool
$c/= :: ClientCapabilities -> ClientCapabilities -> Bool
== :: ClientCapabilities -> ClientCapabilities -> Bool
$c== :: ClientCapabilities -> ClientCapabilities -> Bool
Eq)

deriveJSON lspOptions ''ClientCapabilities

instance Default ClientCapabilities where
  def :: ClientCapabilities
def = Maybe WorkspaceClientCapabilities
-> Maybe TextDocumentClientCapabilities
-> Maybe WindowClientCapabilities
-> Maybe GeneralClientCapabilities
-> Maybe Object
-> ClientCapabilities
ClientCapabilities forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def forall a. Default a => a
def