lsp-types-1.0.0.0: src/Language/LSP/Types/CodeLens.hs
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE DuplicateRecordFields #-}
module Language.LSP.Types.CodeLens where
import Data.Aeson
import Data.Aeson.TH
import Language.LSP.Types.Command
import Language.LSP.Types.Location
import Language.LSP.Types.Progress
import Language.LSP.Types.TextDocument
import Language.LSP.Types.Utils
-- -------------------------------------
data CodeLensClientCapabilities =
CodeLensClientCapabilities
{ -- | Whether code lens supports dynamic registration.
_dynamicRegistration :: Maybe Bool
} deriving (Show, Read, Eq)
deriveJSON lspOptions ''CodeLensClientCapabilities
-- -------------------------------------
makeExtendingDatatype "CodeLensOptions" [''WorkDoneProgressOptions]
[ ("_resolveProvider", [t| Maybe Bool |] )]
deriveJSON lspOptions ''CodeLensOptions
makeExtendingDatatype "CodeLensRegistrationOptions"
[ ''TextDocumentRegistrationOptions
, ''CodeLensOptions
] []
deriveJSON lspOptions ''CodeLensRegistrationOptions
-- -------------------------------------
makeExtendingDatatype "CodeLensParams"
[ ''WorkDoneProgressParams,
''PartialResultParams
]
[("_textDocument", [t|TextDocumentIdentifier|])]
deriveJSON lspOptions ''CodeLensParams
-- -------------------------------------
-- | A code lens represents a command that should be shown along with source
-- text, like the number of references, a way to run tests, etc.
--
-- A code lens is _unresolved_ when no command is associated to it. For
-- performance reasons the creation of a code lens and resolving should be done
-- in two stages.
data CodeLens =
CodeLens
{ -- | The range in which this code lens is valid. Should only span a single line.
_range :: Range
, -- | The command this code lens represents.
_command :: Maybe Command
, -- | A data entry field that is preserved on a code lens item between
-- a code lens and a code lens resolve request.
_xdata :: Maybe Value
} deriving (Read,Show,Eq)
deriveJSON lspOptions ''CodeLens