1{-# LANGUAGE TemplateHaskell       #-}
2{-# LANGUAGE DuplicateRecordFields #-}
3-- | Find References Request
4-- https://microsoft.github.io/language-server-protocol/specifications/specification-3-15/#textDocument_references
5module Language.LSP.Types.References where
6
7import Data.Aeson.TH
8
9import Language.LSP.Types.TextDocument
10import Language.LSP.Types.Progress
11import Language.LSP.Types.Utils
12
13data ReferencesClientCapabilities =
14  ReferencesClientCapabilities
15    { -- | Whether references supports dynamic registration.
16      _dynamicRegistration :: Maybe Bool
17    } deriving (Show, Read, Eq)
18deriveJSON lspOptions ''ReferencesClientCapabilities
19
20makeExtendingDatatype "ReferenceOptions" [''WorkDoneProgressOptions] []
21deriveJSON lspOptions ''ReferenceOptions
22
23makeExtendingDatatype "ReferenceRegistrationOptions"
24  [ ''TextDocumentRegistrationOptions
25  , ''ReferenceOptions
26  ]
27  []
28deriveJSON lspOptions ''ReferenceRegistrationOptions
29
30data ReferenceContext =
31  ReferenceContext
32    { -- | Include the declaration of the current symbol.
33      _includeDeclaration :: Bool
34    } deriving (Read,Show,Eq)
35deriveJSON lspOptions ''ReferenceContext
36
37makeExtendingDatatype "ReferenceParams"
38  [ ''TextDocumentPositionParams
39  , ''WorkDoneProgressParams
40  , ''PartialResultParams
41  ]
42  [("_context", [t| ReferenceContext |])]
43deriveJSON lspOptions ''ReferenceParams
44