{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}

module Language.LSP.Protocol.Capabilities (
  fullCaps,
  LSPVersion (..),
  capsForVersion,
  dynamicRegistrationSupported,
) where

import Control.Lens
import Data.Maybe
import Data.Row
import Data.Set qualified as Set
import Language.LSP.Protocol.Lens qualified as L
import Language.LSP.Protocol.Message
import Language.LSP.Protocol.Types
import Prelude hiding (min)

{-
TODO: this is out-of-date/needs an audit
TODO: can we generate this? process the 'since' annotations in the metamodel?
-}

-- | Capabilities for full conformance to the current LSP specification.
fullCaps :: ClientCapabilities
fullCaps :: ClientCapabilities
fullCaps = LSPVersion -> ClientCapabilities
capsForVersion (Int -> Int -> LSPVersion
LSPVersion forall a. Bounded a => a
maxBound forall a. Bounded a => a
maxBound)

-- | A specific version of the LSP specification.
data LSPVersion = LSPVersion Int Int

-- | Capabilities for full conformance to the LSP specification up until a version.
capsForVersion :: LSPVersion -> ClientCapabilities
capsForVersion :: LSPVersion -> ClientCapabilities
capsForVersion (LSPVersion Int
maj Int
min) = ClientCapabilities
caps
 where
  caps :: ClientCapabilities
caps =
    ClientCapabilities
      { $sel:_workspace:ClientCapabilities :: Maybe WorkspaceClientCapabilities
_workspace = forall a. a -> Maybe a
Just WorkspaceClientCapabilities
w
      , $sel:_textDocument:ClientCapabilities :: Maybe TextDocumentClientCapabilities
_textDocument = forall a. a -> Maybe a
Just TextDocumentClientCapabilities
td
      , $sel:_window:ClientCapabilities :: Maybe WindowClientCapabilities
_window = forall a. a -> Maybe a
Just WindowClientCapabilities
window
      , $sel:_general:ClientCapabilities :: Maybe GeneralClientCapabilities
_general = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 GeneralClientCapabilities
general
      , $sel:_notebookDocument:ClientCapabilities :: Maybe NotebookDocumentClientCapabilities
_notebookDocument = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 forall a b. (a -> b) -> a -> b
$ NotebookDocumentSyncClientCapabilities
-> NotebookDocumentClientCapabilities
NotebookDocumentClientCapabilities forall a b. (a -> b) -> a -> b
$ Maybe Bool -> Maybe Bool -> NotebookDocumentSyncClientCapabilities
NotebookDocumentSyncClientCapabilities Maybe Bool
dynamicReg (forall a. a -> Maybe a
Just Bool
True)
      , $sel:_experimental:ClientCapabilities :: Maybe Value
_experimental = forall a. Maybe a
Nothing
      }
  w :: WorkspaceClientCapabilities
w =
    WorkspaceClientCapabilities
      { $sel:_applyEdit:WorkspaceClientCapabilities :: Maybe Bool
_applyEdit = forall a. a -> Maybe a
Just Bool
True
      , $sel:_workspaceEdit:WorkspaceClientCapabilities :: Maybe WorkspaceEditClientCapabilities
_workspaceEdit =
          forall a. a -> Maybe a
Just
            ( Maybe Bool
-> Maybe [ResourceOperationKind]
-> Maybe FailureHandlingKind
-> Maybe Bool
-> Maybe (Rec (("groupsOnLabel" .== Maybe Bool) .+ 'R '[]))
-> WorkspaceEditClientCapabilities
WorkspaceEditClientCapabilities
                (forall a. a -> Maybe a
Just Bool
True)
                (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
13 [ResourceOperationKind]
resourceOperations)
                forall a. Maybe a
Nothing
                (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True)
                (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (forall a. IsLabel "groupsOnLabel" a => a
#groupsOnLabel forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just Bool
True))
            )
      , $sel:_didChangeConfiguration:WorkspaceClientCapabilities :: Maybe DidChangeConfigurationClientCapabilities
_didChangeConfiguration = forall a. a -> Maybe a
Just (Maybe Bool -> DidChangeConfigurationClientCapabilities
DidChangeConfigurationClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_didChangeWatchedFiles:WorkspaceClientCapabilities :: Maybe DidChangeWatchedFilesClientCapabilities
_didChangeWatchedFiles = forall a. a -> Maybe a
Just (Maybe Bool -> Maybe Bool -> DidChangeWatchedFilesClientCapabilities
DidChangeWatchedFilesClientCapabilities Maybe Bool
dynamicReg (forall a. a -> Maybe a
Just Bool
True))
      , $sel:_symbol:WorkspaceClientCapabilities :: Maybe WorkspaceSymbolClientCapabilities
_symbol = forall a. a -> Maybe a
Just WorkspaceSymbolClientCapabilities
symbolCapabilities
      , $sel:_executeCommand:WorkspaceClientCapabilities :: Maybe ExecuteCommandClientCapabilities
_executeCommand = forall a. a -> Maybe a
Just (Maybe Bool -> ExecuteCommandClientCapabilities
ExecuteCommandClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_codeLens:WorkspaceClientCapabilities :: Maybe CodeLensWorkspaceClientCapabilities
_codeLens = forall a. a -> Maybe a
Just (Maybe Bool -> CodeLensWorkspaceClientCapabilities
CodeLensWorkspaceClientCapabilities forall a b. (a -> b) -> a -> b
$ forall a. a -> Maybe a
Just Bool
True)
      , $sel:_workspaceFolders:WorkspaceClientCapabilities :: Maybe Bool
_workspaceFolders = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
6 Bool
True
      , $sel:_configuration:WorkspaceClientCapabilities :: Maybe Bool
_configuration = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
6 Bool
True
      , $sel:_semanticTokens:WorkspaceClientCapabilities :: Maybe SemanticTokensWorkspaceClientCapabilities
_semanticTokens = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (Maybe Bool -> SemanticTokensWorkspaceClientCapabilities
SemanticTokensWorkspaceClientCapabilities forall a b. (a -> b) -> a -> b
$ forall a. a -> Maybe a
Just Bool
True)
      , $sel:_inlayHint:WorkspaceClientCapabilities :: Maybe InlayHintWorkspaceClientCapabilities
_inlayHint = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (Maybe Bool -> InlayHintWorkspaceClientCapabilities
InlayHintWorkspaceClientCapabilities forall a b. (a -> b) -> a -> b
$ forall a. a -> Maybe a
Just Bool
True)
      , $sel:_fileOperations:WorkspaceClientCapabilities :: Maybe FileOperationClientCapabilities
_fileOperations = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 FileOperationClientCapabilities
fileOperations
      , $sel:_inlineValue:WorkspaceClientCapabilities :: Maybe InlineValueWorkspaceClientCapabilities
_inlineValue = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (Maybe Bool -> InlineValueWorkspaceClientCapabilities
InlineValueWorkspaceClientCapabilities forall a b. (a -> b) -> a -> b
$ forall a. a -> Maybe a
Just Bool
True)
      , $sel:_diagnostics:WorkspaceClientCapabilities :: Maybe DiagnosticWorkspaceClientCapabilities
_diagnostics = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (Maybe Bool -> DiagnosticWorkspaceClientCapabilities
DiagnosticWorkspaceClientCapabilities forall a b. (a -> b) -> a -> b
$ forall a. a -> Maybe a
Just Bool
True)
      }

  resourceOperations :: [ResourceOperationKind]
resourceOperations =
    [ ResourceOperationKind
ResourceOperationKind_Create
    , ResourceOperationKind
ResourceOperationKind_Delete
    , ResourceOperationKind
ResourceOperationKind_Rename
    ]

  fileOperations :: FileOperationClientCapabilities
fileOperations =
    Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> FileOperationClientCapabilities
FileOperationClientCapabilities
      Maybe Bool
dynamicReg
      (forall a. a -> Maybe a
Just Bool
True)
      (forall a. a -> Maybe a
Just Bool
True)
      (forall a. a -> Maybe a
Just Bool
True)
      (forall a. a -> Maybe a
Just Bool
True)
      (forall a. a -> Maybe a
Just Bool
True)
      (forall a. a -> Maybe a
Just Bool
True)

  symbolCapabilities :: WorkspaceSymbolClientCapabilities
symbolCapabilities =
    Maybe Bool
-> Maybe (Rec (("valueSet" .== Maybe [SymbolKind]) .+ 'R '[]))
-> Maybe (Rec (("valueSet" .== [SymbolTag]) .+ 'R '[]))
-> Maybe (Rec (("properties" .== [Text]) .+ 'R '[]))
-> WorkspaceSymbolClientCapabilities
WorkspaceSymbolClientCapabilities
      Maybe Bool
dynamicReg
      (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
4 (forall a. IsLabel "valueSet" a => a
#valueSet forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just [SymbolKind]
sKs))
      (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (forall a. IsLabel "valueSet" a => a
#valueSet forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== [SymbolTag
SymbolTag_Deprecated]))
      (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (forall a. IsLabel "properties" a => a
#properties forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== []))

  sKs :: [SymbolKind]
sKs
    | Int
maj forall a. Ord a => a -> a -> Bool
>= Int
3 Bool -> Bool -> Bool
&& Int
min forall a. Ord a => a -> a -> Bool
>= Int
4 = [SymbolKind]
oldSKs forall a. [a] -> [a] -> [a]
++ [SymbolKind]
newSKs
    | Bool
otherwise = [SymbolKind]
oldSKs

  oldSKs :: [SymbolKind]
oldSKs =
    [ SymbolKind
SymbolKind_File
    , SymbolKind
SymbolKind_Module
    , SymbolKind
SymbolKind_Namespace
    , SymbolKind
SymbolKind_Package
    , SymbolKind
SymbolKind_Class
    , SymbolKind
SymbolKind_Method
    , SymbolKind
SymbolKind_Property
    , SymbolKind
SymbolKind_Field
    , SymbolKind
SymbolKind_Constructor
    , SymbolKind
SymbolKind_Enum
    , SymbolKind
SymbolKind_Interface
    , SymbolKind
SymbolKind_Function
    , SymbolKind
SymbolKind_Variable
    , SymbolKind
SymbolKind_Constant
    , SymbolKind
SymbolKind_String
    , SymbolKind
SymbolKind_Number
    , SymbolKind
SymbolKind_Boolean
    , SymbolKind
SymbolKind_Array
    ]

  newSKs :: [SymbolKind]
newSKs =
    [ SymbolKind
SymbolKind_Object
    , SymbolKind
SymbolKind_Key
    , SymbolKind
SymbolKind_Null
    , SymbolKind
SymbolKind_EnumMember
    , SymbolKind
SymbolKind_Struct
    , SymbolKind
SymbolKind_Event
    , SymbolKind
SymbolKind_Operator
    , SymbolKind
SymbolKind_TypeParameter
    ]

  -- Only one token format for now, just list it here
  tfs :: [TokenFormat]
tfs = [TokenFormat
TokenFormat_Relative]

  semanticTokensCapabilities :: SemanticTokensClientCapabilities
semanticTokensCapabilities =
    SemanticTokensClientCapabilities
      { $sel:_dynamicRegistration:SemanticTokensClientCapabilities :: Maybe Bool
_dynamicRegistration = forall a. a -> Maybe a
Just Bool
True
      , $sel:_requests:SemanticTokensClientCapabilities :: Rec
  (Extend "range" (Maybe (Bool |? Rec ('R '[]))) ('R '[])
   .+ (("full"
        .== Maybe (Bool |? Rec (("delta" .== Maybe Bool) .+ 'R '[])))
       .+ 'R '[]))
_requests = forall a. IsLabel "range" a => a
#range forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just (forall a b. a -> a |? b
InL Bool
True) forall (l :: Row (*)) (r :: Row (*)).
FreeForall l =>
Rec l -> Rec r -> Rec (l .+ r)
.+ forall a. IsLabel "full" a => a
#full forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just (forall a b. b -> a |? b
InR (forall a. IsLabel "delta" a => a
#delta forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just Bool
True))
      , $sel:_tokenTypes:SemanticTokensClientCapabilities :: [Text]
_tokenTypes = forall a. LspEnum a => a -> EnumBaseType a
toEnumBaseType forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Set a -> [a]
Set.toList (forall a. LspEnum a => Set a
knownValues @SemanticTokenTypes)
      , $sel:_tokenModifiers:SemanticTokensClientCapabilities :: [Text]
_tokenModifiers = forall a. LspEnum a => a -> EnumBaseType a
toEnumBaseType forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Set a -> [a]
Set.toList (forall a. LspEnum a => Set a
knownValues @SemanticTokenModifiers)
      , $sel:_formats:SemanticTokensClientCapabilities :: [TokenFormat]
_formats = [TokenFormat]
tfs
      , $sel:_overlappingTokenSupport:SemanticTokensClientCapabilities :: Maybe Bool
_overlappingTokenSupport = forall a. a -> Maybe a
Just Bool
True
      , $sel:_multilineTokenSupport:SemanticTokensClientCapabilities :: Maybe Bool
_multilineTokenSupport = forall a. a -> Maybe a
Just Bool
True
      , $sel:_serverCancelSupport:SemanticTokensClientCapabilities :: Maybe Bool
_serverCancelSupport = forall a. a -> Maybe a
Just Bool
True
      , $sel:_augmentsSyntaxTokens:SemanticTokensClientCapabilities :: Maybe Bool
_augmentsSyntaxTokens = forall a. a -> Maybe a
Just Bool
True
      }

  td :: TextDocumentClientCapabilities
td =
    TextDocumentClientCapabilities
      { $sel:_synchronization:TextDocumentClientCapabilities :: Maybe TextDocumentSyncClientCapabilities
_synchronization = forall a. a -> Maybe a
Just TextDocumentSyncClientCapabilities
sync
      , $sel:_completion:TextDocumentClientCapabilities :: Maybe CompletionClientCapabilities
_completion = forall a. a -> Maybe a
Just CompletionClientCapabilities
completionCapability
      , $sel:_hover:TextDocumentClientCapabilities :: Maybe HoverClientCapabilities
_hover = forall a. a -> Maybe a
Just HoverClientCapabilities
hoverCapability
      , $sel:_signatureHelp:TextDocumentClientCapabilities :: Maybe SignatureHelpClientCapabilities
_signatureHelp = forall a. a -> Maybe a
Just SignatureHelpClientCapabilities
signatureHelpCapability
      , $sel:_references:TextDocumentClientCapabilities :: Maybe ReferenceClientCapabilities
_references = forall a. a -> Maybe a
Just (Maybe Bool -> ReferenceClientCapabilities
ReferenceClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_documentHighlight:TextDocumentClientCapabilities :: Maybe DocumentHighlightClientCapabilities
_documentHighlight = forall a. a -> Maybe a
Just (Maybe Bool -> DocumentHighlightClientCapabilities
DocumentHighlightClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_documentSymbol:TextDocumentClientCapabilities :: Maybe DocumentSymbolClientCapabilities
_documentSymbol = forall a. a -> Maybe a
Just DocumentSymbolClientCapabilities
documentSymbolCapability
      , $sel:_formatting:TextDocumentClientCapabilities :: Maybe DocumentFormattingClientCapabilities
_formatting = forall a. a -> Maybe a
Just (Maybe Bool -> DocumentFormattingClientCapabilities
DocumentFormattingClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_rangeFormatting:TextDocumentClientCapabilities :: Maybe DocumentRangeFormattingClientCapabilities
_rangeFormatting = forall a. a -> Maybe a
Just (Maybe Bool -> DocumentRangeFormattingClientCapabilities
DocumentRangeFormattingClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_onTypeFormatting:TextDocumentClientCapabilities :: Maybe DocumentOnTypeFormattingClientCapabilities
_onTypeFormatting = forall a. a -> Maybe a
Just (Maybe Bool -> DocumentOnTypeFormattingClientCapabilities
DocumentOnTypeFormattingClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_declaration:TextDocumentClientCapabilities :: Maybe DeclarationClientCapabilities
_declaration = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
14 (Maybe Bool -> Maybe Bool -> DeclarationClientCapabilities
DeclarationClientCapabilities Maybe Bool
dynamicReg (forall a. a -> Maybe a
Just Bool
True))
      , $sel:_definition:TextDocumentClientCapabilities :: Maybe DefinitionClientCapabilities
_definition = forall a. a -> Maybe a
Just (Maybe Bool -> Maybe Bool -> DefinitionClientCapabilities
DefinitionClientCapabilities Maybe Bool
dynamicReg (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
14 Bool
True))
      , $sel:_typeDefinition:TextDocumentClientCapabilities :: Maybe TypeDefinitionClientCapabilities
_typeDefinition = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
6 (Maybe Bool -> Maybe Bool -> TypeDefinitionClientCapabilities
TypeDefinitionClientCapabilities Maybe Bool
dynamicReg (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
14 Bool
True))
      , $sel:_implementation:TextDocumentClientCapabilities :: Maybe ImplementationClientCapabilities
_implementation = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
6 (Maybe Bool -> Maybe Bool -> ImplementationClientCapabilities
ImplementationClientCapabilities Maybe Bool
dynamicReg (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
14 Bool
True))
      , $sel:_codeAction:TextDocumentClientCapabilities :: Maybe CodeActionClientCapabilities
_codeAction = forall a. a -> Maybe a
Just CodeActionClientCapabilities
codeActionCapability
      , $sel:_codeLens:TextDocumentClientCapabilities :: Maybe CodeLensClientCapabilities
_codeLens = forall a. a -> Maybe a
Just (Maybe Bool -> CodeLensClientCapabilities
CodeLensClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_documentLink:TextDocumentClientCapabilities :: Maybe DocumentLinkClientCapabilities
_documentLink = forall a. a -> Maybe a
Just (Maybe Bool -> Maybe Bool -> DocumentLinkClientCapabilities
DocumentLinkClientCapabilities Maybe Bool
dynamicReg (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
15 Bool
True))
      , $sel:_colorProvider:TextDocumentClientCapabilities :: Maybe DocumentColorClientCapabilities
_colorProvider = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
6 (Maybe Bool -> DocumentColorClientCapabilities
DocumentColorClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_rename:TextDocumentClientCapabilities :: Maybe RenameClientCapabilities
_rename = forall a. a -> Maybe a
Just (Maybe Bool
-> Maybe Bool
-> Maybe PrepareSupportDefaultBehavior
-> Maybe Bool
-> RenameClientCapabilities
RenameClientCapabilities Maybe Bool
dynamicReg (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
12 Bool
True) (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 PrepareSupportDefaultBehavior
PrepareSupportDefaultBehavior_Identifier) (forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True))
      , $sel:_publishDiagnostics:TextDocumentClientCapabilities :: Maybe PublishDiagnosticsClientCapabilities
_publishDiagnostics = forall a. a -> Maybe a
Just PublishDiagnosticsClientCapabilities
publishDiagnosticsCapabilities
      , $sel:_foldingRange:TextDocumentClientCapabilities :: Maybe FoldingRangeClientCapabilities
_foldingRange = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
10 FoldingRangeClientCapabilities
foldingRangeCapability
      , $sel:_selectionRange:TextDocumentClientCapabilities :: Maybe SelectionRangeClientCapabilities
_selectionRange = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
5 (Maybe Bool -> SelectionRangeClientCapabilities
SelectionRangeClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_callHierarchy:TextDocumentClientCapabilities :: Maybe CallHierarchyClientCapabilities
_callHierarchy = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (Maybe Bool -> CallHierarchyClientCapabilities
CallHierarchyClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_semanticTokens:TextDocumentClientCapabilities :: Maybe SemanticTokensClientCapabilities
_semanticTokens = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 SemanticTokensClientCapabilities
semanticTokensCapabilities
      , $sel:_linkedEditingRange:TextDocumentClientCapabilities :: Maybe LinkedEditingRangeClientCapabilities
_linkedEditingRange = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (Maybe Bool -> LinkedEditingRangeClientCapabilities
LinkedEditingRangeClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_moniker:TextDocumentClientCapabilities :: Maybe MonikerClientCapabilities
_moniker = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (Maybe Bool -> MonikerClientCapabilities
MonikerClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_inlayHint:TextDocumentClientCapabilities :: Maybe InlayHintClientCapabilities
_inlayHint = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 InlayHintClientCapabilities
inlayHintCapabilities
      , $sel:_typeHierarchy:TextDocumentClientCapabilities :: Maybe TypeHierarchyClientCapabilities
_typeHierarchy = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (Maybe Bool -> TypeHierarchyClientCapabilities
TypeHierarchyClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_inlineValue:TextDocumentClientCapabilities :: Maybe InlineValueClientCapabilities
_inlineValue = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (Maybe Bool -> InlineValueClientCapabilities
InlineValueClientCapabilities Maybe Bool
dynamicReg)
      , $sel:_diagnostic:TextDocumentClientCapabilities :: Maybe DiagnosticClientCapabilities
_diagnostic = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (Maybe Bool -> Maybe Bool -> DiagnosticClientCapabilities
DiagnosticClientCapabilities Maybe Bool
dynamicReg (forall a. a -> Maybe a
Just Bool
True))
      }

  sync :: TextDocumentSyncClientCapabilities
sync =
    TextDocumentSyncClientCapabilities
      { $sel:_dynamicRegistration:TextDocumentSyncClientCapabilities :: Maybe Bool
_dynamicRegistration = Maybe Bool
dynamicReg
      , $sel:_willSave:TextDocumentSyncClientCapabilities :: Maybe Bool
_willSave = forall a. a -> Maybe a
Just Bool
True
      , $sel:_willSaveWaitUntil:TextDocumentSyncClientCapabilities :: Maybe Bool
_willSaveWaitUntil = forall a. a -> Maybe a
Just Bool
True
      , $sel:_didSave:TextDocumentSyncClientCapabilities :: Maybe Bool
_didSave = forall a. a -> Maybe a
Just Bool
True
      }

  completionCapability :: CompletionClientCapabilities
completionCapability =
    CompletionClientCapabilities
      { $sel:_dynamicRegistration:CompletionClientCapabilities :: Maybe Bool
_dynamicRegistration = Maybe Bool
dynamicReg
      , $sel:_completionItem:CompletionClientCapabilities :: Maybe
  (Rec
     (("snippetSupport" .== Maybe Bool)
      .+ (("commitCharactersSupport" .== Maybe Bool)
          .+ (Extend "documentationFormat" (Maybe [MarkupKind]) ('R '[])
              .+ (("deprecatedSupport" .== Maybe Bool)
                  .+ (("preselectSupport" .== Maybe Bool)
                      .+ (("tagSupport"
                           .== Maybe (Rec (("valueSet" .== [CompletionItemTag]) .+ 'R '[])))
                          .+ (("insertReplaceSupport" .== Maybe Bool)
                              .+ (("resolveSupport"
                                   .== Maybe (Rec (("properties" .== [Text]) .+ 'R '[])))
                                  .+ (("insertTextModeSupport"
                                       .== Maybe
                                             (Rec (("valueSet" .== [InsertTextMode]) .+ 'R '[])))
                                      .+ (("labelDetailsSupport" .== Maybe Bool)
                                          .+ 'R '[])))))))))))
_completionItem = forall a. a -> Maybe a
Just forall {a} {a}.
Rec
  ('R
     '[ "commitCharactersSupport" ':-> Maybe Bool,
        "deprecatedSupport" ':-> Maybe Bool,
        "documentationFormat" ':-> Maybe [MarkupKind],
        "insertReplaceSupport" ':-> Maybe Bool,
        "insertTextModeSupport"
        ':-> Maybe (Rec ('R '[ "valueSet" ':-> [a]])),
        "labelDetailsSupport" ':-> Maybe Bool,
        "preselectSupport" ':-> Maybe Bool,
        "resolveSupport"
        ':-> Maybe (Rec ('R '[ "properties" ':-> [Text]])),
        "snippetSupport" ':-> Maybe Bool,
        "tagSupport" ':-> Maybe (Rec ('R '[ "valueSet" ':-> [a]]))])
completionItemCapabilities
      , $sel:_completionItemKind:CompletionClientCapabilities :: Maybe (Rec (("valueSet" .== Maybe [CompletionItemKind]) .+ 'R '[]))
_completionItemKind = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
4 (forall a. IsLabel "valueSet" a => a
#valueSet forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just [CompletionItemKind]
ciKs)
      , $sel:_insertTextMode:CompletionClientCapabilities :: Maybe InsertTextMode
_insertTextMode = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 InsertTextMode
InsertTextMode_AsIs
      , $sel:_contextSupport:CompletionClientCapabilities :: Maybe Bool
_contextSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
3 Bool
True
      , $sel:_completionList:CompletionClientCapabilities :: Maybe (Rec (("itemDefaults" .== Maybe [Text]) .+ 'R '[]))
_completionList = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (forall a. IsLabel "itemDefaults" a => a
#itemDefaults forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just [])
      }

  inlayHintCapabilities :: InlayHintClientCapabilities
inlayHintCapabilities =
    InlayHintClientCapabilities
      { $sel:_dynamicRegistration:InlayHintClientCapabilities :: Maybe Bool
_dynamicRegistration = Maybe Bool
dynamicReg
      , $sel:_resolveSupport:InlayHintClientCapabilities :: Maybe (Rec (("properties" .== [Text]) .+ 'R '[]))
_resolveSupport = forall a. a -> Maybe a
Just (forall a. IsLabel "properties" a => a
#properties forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== [])
      }

  completionItemCapabilities :: Rec
  ((((((((('R '[ "snippetSupport" ':-> Maybe Bool]
           .+ 'R '[ "commitCharactersSupport" ':-> Maybe Bool])
          .+ 'R '[ "documentationFormat" ':-> Maybe [MarkupKind]])
         .+ 'R '[ "deprecatedSupport" ':-> Maybe Bool])
        .+ 'R '[ "preselectSupport" ':-> Maybe Bool])
       .+ 'R
            '[ "tagSupport" ':-> Maybe (Rec ('R '[ "valueSet" ':-> [a]]))])
      .+ 'R '[ "insertReplaceSupport" ':-> Maybe Bool])
     .+ 'R
          '[ "resolveSupport"
             ':-> Maybe (Rec ('R '[ "properties" ':-> [Text]]))])
    .+ 'R
         '[ "insertTextModeSupport"
            ':-> Maybe (Rec ('R '[ "valueSet" ':-> [a]]))])
   .+ 'R '[ "labelDetailsSupport" ':-> Maybe Bool])
completionItemCapabilities =
    #snippetSupport .== Just True
      .+ #commitCharactersSupport .== Just True
      .+ #documentationFormat .== since 3 3 allMarkups
      .+ #deprecatedSupport .== Just True
      .+ #preselectSupport .== since 3 9 True
      .+ #tagSupport .== since 3 15 (#valueSet .== [])
      .+ #insertReplaceSupport .== since 3 16 True
      .+ #resolveSupport .== since 3 16 (#properties .== ["documentation", "details"])
      .+ #insertTextModeSupport .== since 3 16 (#valueSet .== [])
      .+ #labelDetailsSupport .== since 3 17 True

  ciKs :: [CompletionItemKind]
ciKs
    | Int
maj forall a. Ord a => a -> a -> Bool
>= Int
3 Bool -> Bool -> Bool
&& Int
min forall a. Ord a => a -> a -> Bool
>= Int
4 = [CompletionItemKind]
oldCiKs forall a. [a] -> [a] -> [a]
++ [CompletionItemKind]
newCiKs
    | Bool
otherwise = [CompletionItemKind]
oldCiKs

  oldCiKs :: [CompletionItemKind]
oldCiKs =
    [ CompletionItemKind
CompletionItemKind_Text
    , CompletionItemKind
CompletionItemKind_Method
    , CompletionItemKind
CompletionItemKind_Function
    , CompletionItemKind
CompletionItemKind_Constructor
    , CompletionItemKind
CompletionItemKind_Field
    , CompletionItemKind
CompletionItemKind_Variable
    , CompletionItemKind
CompletionItemKind_Class
    , CompletionItemKind
CompletionItemKind_Interface
    , CompletionItemKind
CompletionItemKind_Module
    , CompletionItemKind
CompletionItemKind_Property
    , CompletionItemKind
CompletionItemKind_Unit
    , CompletionItemKind
CompletionItemKind_Value
    , CompletionItemKind
CompletionItemKind_Enum
    , CompletionItemKind
CompletionItemKind_Keyword
    , CompletionItemKind
CompletionItemKind_Snippet
    , CompletionItemKind
CompletionItemKind_Color
    , CompletionItemKind
CompletionItemKind_File
    , CompletionItemKind
CompletionItemKind_Reference
    ]

  newCiKs :: [CompletionItemKind]
newCiKs =
    [ CompletionItemKind
CompletionItemKind_Folder
    , CompletionItemKind
CompletionItemKind_EnumMember
    , CompletionItemKind
CompletionItemKind_Constant
    , CompletionItemKind
CompletionItemKind_Struct
    , CompletionItemKind
CompletionItemKind_Event
    , CompletionItemKind
CompletionItemKind_Operator
    , CompletionItemKind
CompletionItemKind_TypeParameter
    ]

  hoverCapability :: HoverClientCapabilities
hoverCapability =
    HoverClientCapabilities
      { $sel:_dynamicRegistration:HoverClientCapabilities :: Maybe Bool
_dynamicRegistration = Maybe Bool
dynamicReg
      , $sel:_contentFormat:HoverClientCapabilities :: Maybe [MarkupKind]
_contentFormat = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
3 [MarkupKind]
allMarkups
      }

  codeActionCapability :: CodeActionClientCapabilities
codeActionCapability =
    CodeActionClientCapabilities
      { $sel:_dynamicRegistration:CodeActionClientCapabilities :: Maybe Bool
_dynamicRegistration = Maybe Bool
dynamicReg
      , $sel:_codeActionLiteralSupport:CodeActionClientCapabilities :: Maybe
  (Rec
     (("codeActionKind"
       .== Rec (("valueSet" .== [CodeActionKind]) .+ 'R '[]))
      .+ 'R '[]))
_codeActionLiteralSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
8 (forall a. IsLabel "codeActionKind" a => a
#codeActionKind forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== (forall a. IsLabel "valueSet" a => a
#valueSet forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. Set a -> [a]
Set.toList forall a. LspEnum a => Set a
knownValues))
      , $sel:_isPreferredSupport:CodeActionClientCapabilities :: Maybe Bool
_isPreferredSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
15 Bool
True
      , $sel:_disabledSupport:CodeActionClientCapabilities :: Maybe Bool
_disabledSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True
      , $sel:_dataSupport:CodeActionClientCapabilities :: Maybe Bool
_dataSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True
      , $sel:_resolveSupport:CodeActionClientCapabilities :: Maybe (Rec (("properties" .== [Text]) .+ 'R '[]))
_resolveSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (forall a. IsLabel "properties" a => a
#properties forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== [])
      , $sel:_honorsChangeAnnotations:CodeActionClientCapabilities :: Maybe Bool
_honorsChangeAnnotations = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True
      }

  signatureHelpCapability :: SignatureHelpClientCapabilities
signatureHelpCapability =
    SignatureHelpClientCapabilities
      { $sel:_dynamicRegistration:SignatureHelpClientCapabilities :: Maybe Bool
_dynamicRegistration = Maybe Bool
dynamicReg
      , $sel:_signatureInformation:SignatureHelpClientCapabilities :: Maybe
  (Rec
     (Extend "documentationFormat" (Maybe [MarkupKind]) ('R '[])
      .+ (("parameterInformation"
           .== Maybe (Rec (("labelOffsetSupport" .== Maybe Bool) .+ 'R '[])))
          .+ (("activeParameterSupport" .== Maybe Bool) .+ 'R '[]))))
_signatureInformation = forall a. a -> Maybe a
Just (forall a. IsLabel "documentationFormat" a => a
#documentationFormat forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just [MarkupKind]
allMarkups forall (l :: Row (*)) (r :: Row (*)).
FreeForall l =>
Rec l -> Rec r -> Rec (l .+ r)
.+ forall a. IsLabel "parameterInformation" a => a
#parameterInformation forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just (forall a. IsLabel "labelOffsetSupport" a => a
#labelOffsetSupport forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just Bool
True) forall (l :: Row (*)) (r :: Row (*)).
FreeForall l =>
Rec l -> Rec r -> Rec (l .+ r)
.+ forall a. IsLabel "activeParameterSupport" a => a
#activeParameterSupport forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just Bool
True)
      , $sel:_contextSupport:SignatureHelpClientCapabilities :: Maybe Bool
_contextSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True
      }

  documentSymbolCapability :: DocumentSymbolClientCapabilities
documentSymbolCapability =
    DocumentSymbolClientCapabilities
      { $sel:_dynamicRegistration:DocumentSymbolClientCapabilities :: Maybe Bool
_dynamicRegistration = Maybe Bool
dynamicReg
      , -- same as workspace symbol kinds
        $sel:_symbolKind:DocumentSymbolClientCapabilities :: Maybe (Rec (("valueSet" .== Maybe [SymbolKind]) .+ 'R '[]))
_symbolKind = forall a. a -> Maybe a
Just (forall a. IsLabel "valueSet" a => a
#valueSet forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just [SymbolKind]
sKs)
      , $sel:_hierarchicalDocumentSymbolSupport:DocumentSymbolClientCapabilities :: Maybe Bool
_hierarchicalDocumentSymbolSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
10 Bool
True
      , $sel:_tagSupport:DocumentSymbolClientCapabilities :: Maybe (Rec (("valueSet" .== [SymbolTag]) .+ 'R '[]))
_tagSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (forall a. IsLabel "valueSet" a => a
#valueSet forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== [SymbolTag
SymbolTag_Deprecated])
      , $sel:_labelSupport:DocumentSymbolClientCapabilities :: Maybe Bool
_labelSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True
      }

  foldingRangeCapability :: FoldingRangeClientCapabilities
foldingRangeCapability =
    FoldingRangeClientCapabilities
      { $sel:_dynamicRegistration:FoldingRangeClientCapabilities :: Maybe Bool
_dynamicRegistration = Maybe Bool
dynamicReg
      , $sel:_rangeLimit:FoldingRangeClientCapabilities :: Maybe UInt
_rangeLimit = forall a. Maybe a
Nothing
      , $sel:_lineFoldingOnly:FoldingRangeClientCapabilities :: Maybe Bool
_lineFoldingOnly = forall a. Maybe a
Nothing
      , $sel:_foldingRangeKind:FoldingRangeClientCapabilities :: Maybe (Rec (("valueSet" .== Maybe [FoldingRangeKind]) .+ 'R '[]))
_foldingRangeKind = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 (forall a. IsLabel "valueSet" a => a
#valueSet forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just [])
      , $sel:_foldingRange:FoldingRangeClientCapabilities :: Maybe (Rec (("collapsedText" .== Maybe Bool) .+ 'R '[]))
_foldingRange = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (forall a. IsLabel "collapsedText" a => a
#collapsedText forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== forall a. a -> Maybe a
Just Bool
True)
      }

  publishDiagnosticsCapabilities :: PublishDiagnosticsClientCapabilities
publishDiagnosticsCapabilities =
    PublishDiagnosticsClientCapabilities
      { $sel:_relatedInformation:PublishDiagnosticsClientCapabilities :: Maybe Bool
_relatedInformation = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
7 Bool
True
      , $sel:_tagSupport:PublishDiagnosticsClientCapabilities :: Maybe (Rec (("valueSet" .== [DiagnosticTag]) .+ 'R '[]))
_tagSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
15 (forall a. IsLabel "valueSet" a => a
#valueSet forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== [DiagnosticTag
DiagnosticTag_Unnecessary, DiagnosticTag
DiagnosticTag_Deprecated])
      , $sel:_versionSupport:PublishDiagnosticsClientCapabilities :: Maybe Bool
_versionSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
15 Bool
True
      , $sel:_codeDescriptionSupport:PublishDiagnosticsClientCapabilities :: Maybe Bool
_codeDescriptionSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True
      , $sel:_dataSupport:PublishDiagnosticsClientCapabilities :: Maybe Bool
_dataSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 Bool
True
      }

  dynamicReg :: Maybe Bool
dynamicReg
    | Int
maj forall a. Ord a => a -> a -> Bool
>= Int
3 = forall a. a -> Maybe a
Just Bool
True
    | Bool
otherwise = forall a. Maybe a
Nothing
  since :: Int -> Int -> a -> Maybe a
  since :: forall a. Int -> Int -> a -> Maybe a
since Int
x Int
y a
a
    | Int
maj forall a. Ord a => a -> a -> Bool
>= Int
x Bool -> Bool -> Bool
&& Int
min forall a. Ord a => a -> a -> Bool
>= Int
y = forall a. a -> Maybe a
Just a
a
    | Bool
otherwise = forall a. Maybe a
Nothing

  window :: WindowClientCapabilities
window =
    WindowClientCapabilities
      { $sel:_workDoneProgress:WindowClientCapabilities :: Maybe Bool
_workDoneProgress = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
15 Bool
True
      , $sel:_showMessage:WindowClientCapabilities :: Maybe ShowMessageRequestClientCapabilities
_showMessage = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 forall a b. (a -> b) -> a -> b
$ Maybe
  (Rec (("additionalPropertiesSupport" .== Maybe Bool) .+ 'R '[]))
-> ShowMessageRequestClientCapabilities
ShowMessageRequestClientCapabilities forall a. Maybe a
Nothing
      , $sel:_showDocument:WindowClientCapabilities :: Maybe ShowDocumentClientCapabilities
_showDocument = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 forall a b. (a -> b) -> a -> b
$ Bool -> ShowDocumentClientCapabilities
ShowDocumentClientCapabilities Bool
True
      }

  general :: GeneralClientCapabilities
general =
    GeneralClientCapabilities
      { $sel:_staleRequestSupport:GeneralClientCapabilities :: Maybe
  (Rec
     (Extend "cancel" Bool ('R '[])
      .+ (("retryOnContentModified" .== [Text]) .+ 'R '[])))
_staleRequestSupport = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 (forall a. IsLabel "cancel" a => a
#cancel forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== Bool
True forall (l :: Row (*)) (r :: Row (*)).
FreeForall l =>
Rec l -> Rec r -> Rec (l .+ r)
.+ forall a. IsLabel "retryOnContentModified" a => a
#retryOnContentModified forall (l :: Symbol) a.
KnownSymbol l =>
Label l -> a -> Rec (l .== a)
.== [])
      , $sel:_regularExpressions:GeneralClientCapabilities :: Maybe RegularExpressionsClientCapabilities
_regularExpressions = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 forall a b. (a -> b) -> a -> b
$ Text -> Maybe Text -> RegularExpressionsClientCapabilities
RegularExpressionsClientCapabilities Text
"" forall a. Maybe a
Nothing
      , $sel:_markdown:GeneralClientCapabilities :: Maybe MarkdownClientCapabilities
_markdown = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
16 forall a b. (a -> b) -> a -> b
$ Text -> Maybe Text -> Maybe [Text] -> MarkdownClientCapabilities
MarkdownClientCapabilities Text
"" forall a. Maybe a
Nothing (forall a. a -> Maybe a
Just [])
      , $sel:_positionEncodings:GeneralClientCapabilities :: Maybe [PositionEncodingKind]
_positionEncodings = forall a. Int -> Int -> a -> Maybe a
since Int
3 Int
17 [PositionEncodingKind
PositionEncodingKind_UTF16]
      }

  allMarkups :: [MarkupKind]
allMarkups = [MarkupKind
MarkupKind_PlainText, MarkupKind
MarkupKind_Markdown]

-- | Whether the client supports dynamic registration for the given method.
dynamicRegistrationSupported :: SMethod m -> ClientCapabilities -> Bool
dynamicRegistrationSupported :: forall {f :: MessageDirection} {t :: MessageKind}
       (m :: Method f t).
SMethod m -> ClientCapabilities -> Bool
dynamicRegistrationSupported SMethod m
method ClientCapabilities
caps = forall a. a -> Maybe a -> a
fromMaybe Bool
False forall a b. (a -> b) -> a -> b
$ case SMethod m
method of
  SMethod m
SMethod_WorkspaceDidChangeConfiguration -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities WorkspaceClientCapabilities
ws forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasDidChangeConfiguration s a => Lens' s a
L.didChangeConfiguration forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_WorkspaceDidChangeWatchedFiles -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities WorkspaceClientCapabilities
ws forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasDidChangeWatchedFiles s a => Lens' s a
L.didChangeWatchedFiles forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_WorkspaceSymbol -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities WorkspaceClientCapabilities
ws forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasSymbol s a => Lens' s a
L.symbol forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_WorkspaceExecuteCommand -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities WorkspaceClientCapabilities
ws forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasExecuteCommand s a => Lens' s a
L.executeCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_WorkspaceWillCreateFiles -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities WorkspaceClientCapabilities
ws forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasFileOperations s a => Lens' s a
L.fileOperations forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_WorkspaceDidCreateFiles -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities WorkspaceClientCapabilities
ws forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasFileOperations s a => Lens' s a
L.fileOperations forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_WorkspaceWillDeleteFiles -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities WorkspaceClientCapabilities
ws forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasFileOperations s a => Lens' s a
L.fileOperations forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_WorkspaceDidDeleteFiles -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities WorkspaceClientCapabilities
ws forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasFileOperations s a => Lens' s a
L.fileOperations forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDidOpen -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasSynchronization s a => Lens' s a
L.synchronization forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDidChange -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasSynchronization s a => Lens' s a
L.synchronization forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDidClose -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasSynchronization s a => Lens' s a
L.synchronization forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentCompletion -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasCompletion s a => Lens' s a
L.completion forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentHover -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasHover s a => Lens' s a
L.hover forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentSignatureHelp -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasSignatureHelp s a => Lens' s a
L.signatureHelp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDeclaration -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasDeclaration s a => Lens' s a
L.declaration forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDefinition -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasDefinition s a => Lens' s a
L.definition forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentTypeDefinition -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasTypeDefinition s a => Lens' s a
L.typeDefinition forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentImplementation -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasImplementation s a => Lens' s a
L.implementation forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentReferences -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasReferences s a => Lens' s a
L.references forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDocumentHighlight -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasDocumentHighlight s a => Lens' s a
L.documentHighlight forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDocumentSymbol -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasDocumentSymbol s a => Lens' s a
L.documentSymbol forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentCodeAction -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasCodeAction s a => Lens' s a
L.codeAction forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentCodeLens -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasCodeLens s a => Lens' s a
L.codeLens forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDocumentLink -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasDocumentLink s a => Lens' s a
L.documentLink forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDocumentColor -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasColorProvider s a => Lens' s a
L.colorProvider forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentColorPresentation -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasColorProvider s a => Lens' s a
L.colorProvider forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentFormatting -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasFormatting s a => Lens' s a
L.formatting forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentRangeFormatting -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasRangeFormatting s a => Lens' s a
L.rangeFormatting forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentOnTypeFormatting -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasOnTypeFormatting s a => Lens' s a
L.onTypeFormatting forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentRename -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasRename s a => Lens' s a
L.rename forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentFoldingRange -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasFoldingRange s a => Lens' s a
L.foldingRange forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentSelectionRange -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasSelectionRange s a => Lens' s a
L.selectionRange forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentLinkedEditingRange -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasLinkedEditingRange s a => Lens' s a
L.linkedEditingRange forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentPrepareCallHierarchy -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasCallHierarchy s a => Lens' s a
L.callHierarchy forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentInlayHint -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasInlayHint s a => Lens' s a
L.inlayHint forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentInlineValue -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasInlineValue s a => Lens' s a
L.inlineValue forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentMoniker -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasMoniker s a => Lens' s a
L.moniker forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentPrepareTypeHierarchy -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasTypeHierarchy s a => Lens' s a
L.typeHierarchy forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  SMethod m
SMethod_TextDocumentDiagnostic -> ClientCapabilities
caps forall s a. s -> Getting (First a) s a -> Maybe a
^? Traversal' ClientCapabilities TextDocumentClientCapabilities
td forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. HasDiagnostic s a => Lens' s a
L.diagnostic forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn
  -- semantic tokens is messed up due to it having you register with an otherwise non-existent method
  -- SMethod_TextDocumentSemanticTokens       -> capDyn $ clientCaps ^? L.textDocument . _Just . L.semanticTokens . _Just
  -- Notebook document methods alway support dynamic registration, it seems?
  SMethod m
_ -> forall a. a -> Maybe a
Just Bool
False
 where
  td :: Traversal' ClientCapabilities TextDocumentClientCapabilities
  td :: Traversal' ClientCapabilities TextDocumentClientCapabilities
td = forall s a. HasTextDocument s a => Lens' s a
L.textDocument forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just

  ws :: Traversal' ClientCapabilities WorkspaceClientCapabilities
  ws :: Traversal' ClientCapabilities WorkspaceClientCapabilities
ws = forall s a. HasWorkspace s a => Lens' s a
L.workspace forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just

  dyn :: L.HasDynamicRegistration a (Maybe Bool) => Traversal' a Bool
  dyn :: forall a.
HasDynamicRegistration a (Maybe Bool) =>
Traversal' a Bool
dyn = forall s a. HasDynamicRegistration s a => Lens' s a
L.dynamicRegistration forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Prism (Maybe a) (Maybe b) a b
_Just