lsp-types-1.0.0.0: src/Language/LSP/Types/SelectionRange.hs
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
module Language.LSP.Types.SelectionRange where
import Data.Aeson.TH
import Language.LSP.Types.Common
import Language.LSP.Types.Location
import Language.LSP.Types.Progress
import Language.LSP.Types.StaticRegistrationOptions
import Language.LSP.Types.TextDocument
import Language.LSP.Types.Utils
data SelectionRangeClientCapabilities = SelectionRangeClientCapabilities
{ -- | Whether implementation supports dynamic registration for selection range providers. If this is set to 'True'
-- the client supports the new 'SelectionRangeRegistrationOptions' return value for the corresponding server
-- capability as well.
_dynamicRegistration :: Maybe Bool
}
deriving (Read, Show, Eq)
deriveJSON lspOptions ''SelectionRangeClientCapabilities
makeExtendingDatatype "SelectionRangeOptions" [''WorkDoneProgressOptions] []
deriveJSON lspOptions ''SelectionRangeOptions
makeExtendingDatatype
"SelectionRangeRegistrationOptions"
[ ''SelectionRangeOptions,
''TextDocumentRegistrationOptions,
''StaticRegistrationOptions
]
[]
deriveJSON lspOptions ''SelectionRangeRegistrationOptions
makeExtendingDatatype
"SelectionRangeParams"
[ ''WorkDoneProgressParams,
''PartialResultParams
]
[ ("_textDocument", [t|TextDocumentIdentifier|]),
("_positions", [t|List Position|])
]
deriveJSON lspOptions ''SelectionRangeParams
data SelectionRange = SelectionRange
{ -- | The 'range' of this selection range.
_range :: Range,
-- | The parent selection range containing this range. Therefore @parent.range@ must contain @this.range@.
_parent :: Maybe SelectionRange
}
deriving (Read, Show, Eq)
deriveJSON lspOptions ''SelectionRange