1{-# LANGUAGE TemplateHaskell #-} 2{-# LANGUAGE DuplicateRecordFields #-} 3 4module Language.LSP.Types.WorkspaceSymbol where 5 6import Data.Aeson.TH 7import Data.Default 8import Language.LSP.Types.Common 9import Language.LSP.Types.DocumentSymbol 10import Language.LSP.Types.Progress 11import Language.LSP.Types.Utils 12import Data.Text (Text) 13 14data WorkspaceSymbolKindClientCapabilities = 15 WorkspaceSymbolKindClientCapabilities 16 { -- | The symbol kind values the client supports. When this 17 -- property exists the client also guarantees that it will 18 -- handle values outside its set gracefully and falls back 19 -- to a default value when unknown. 20 -- 21 -- If this property is not present the client only supports 22 -- the symbol kinds from `File` to `Array` as defined in 23 -- the initial version of the protocol. 24 _valueSet :: Maybe (List SymbolKind) 25 } deriving (Show, Read, Eq) 26 27deriveJSON lspOptions ''WorkspaceSymbolKindClientCapabilities 28 29data WorkspaceSymbolTagClientCapabilities = 30 WorkspaceSymbolTagClientCapabilities 31 { -- | The tags supported by the client. 32 _valueSet :: Maybe (List SymbolTag) 33 } 34 deriving (Show, Read, Eq) 35 36deriveJSON lspOptions ''WorkspaceSymbolTagClientCapabilities 37 38instance Default WorkspaceSymbolKindClientCapabilities where 39 def = WorkspaceSymbolKindClientCapabilities (Just $ List allKinds) 40 where allKinds = [ SkFile 41 , SkModule 42 , SkNamespace 43 , SkPackage 44 , SkClass 45 , SkMethod 46 , SkProperty 47 , SkField 48 , SkConstructor 49 , SkEnum 50 , SkInterface 51 , SkFunction 52 , SkVariable 53 , SkConstant 54 , SkString 55 , SkNumber 56 , SkBoolean 57 , SkArray 58 ] 59 60data WorkspaceSymbolClientCapabilities = 61 WorkspaceSymbolClientCapabilities 62 { _dynamicRegistration :: Maybe Bool -- ^Symbol request supports dynamic 63 -- registration. 64 , _symbolKind :: Maybe WorkspaceSymbolKindClientCapabilities -- ^ Specific capabilities for the `SymbolKind`. 65 -- | The client supports tags on `SymbolInformation`. 66 -- Clients supporting tags have to handle unknown tags gracefully. 67 -- 68 -- @since 3.16.0 69 , _tagSupport :: Maybe WorkspaceSymbolTagClientCapabilities 70 } deriving (Show, Read, Eq) 71 72deriveJSON lspOptions ''WorkspaceSymbolClientCapabilities 73 74-- ------------------------------------- 75 76makeExtendingDatatype "WorkspaceSymbolOptions" [''WorkDoneProgressOptions] [] 77deriveJSON lspOptions ''WorkspaceSymbolOptions 78 79makeExtendingDatatype "WorkspaceSymbolRegistrationOptions" 80 [''WorkspaceSymbolOptions] [] 81deriveJSON lspOptions ''WorkspaceSymbolRegistrationOptions 82 83-- ------------------------------------- 84 85makeExtendingDatatype "WorkspaceSymbolParams" 86 [ ''WorkDoneProgressParams 87 , ''PartialResultParams 88 ] 89 [("_query", [t| Text |])] 90 91deriveJSON lspOptions ''WorkspaceSymbolParams 92