{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
module Language.LSP.Types.DocumentHighlight where
import Data.Aeson
import Data.Aeson.TH
import Language.LSP.Types.Location
import Language.LSP.Types.Progress
import Language.LSP.Types.TextDocument
import Language.LSP.Types.Utils
data DocumentHighlightClientCapabilities =
DocumentHighlightClientCapabilities
{
DocumentHighlightClientCapabilities -> Maybe Bool
_dynamicRegistration :: Maybe Bool
} deriving (Int -> DocumentHighlightClientCapabilities -> ShowS
[DocumentHighlightClientCapabilities] -> ShowS
DocumentHighlightClientCapabilities -> String
(Int -> DocumentHighlightClientCapabilities -> ShowS)
-> (DocumentHighlightClientCapabilities -> String)
-> ([DocumentHighlightClientCapabilities] -> ShowS)
-> Show DocumentHighlightClientCapabilities
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DocumentHighlightClientCapabilities] -> ShowS
$cshowList :: [DocumentHighlightClientCapabilities] -> ShowS
show :: DocumentHighlightClientCapabilities -> String
$cshow :: DocumentHighlightClientCapabilities -> String
showsPrec :: Int -> DocumentHighlightClientCapabilities -> ShowS
$cshowsPrec :: Int -> DocumentHighlightClientCapabilities -> ShowS
Show, ReadPrec [DocumentHighlightClientCapabilities]
ReadPrec DocumentHighlightClientCapabilities
Int -> ReadS DocumentHighlightClientCapabilities
ReadS [DocumentHighlightClientCapabilities]
(Int -> ReadS DocumentHighlightClientCapabilities)
-> ReadS [DocumentHighlightClientCapabilities]
-> ReadPrec DocumentHighlightClientCapabilities
-> ReadPrec [DocumentHighlightClientCapabilities]
-> Read DocumentHighlightClientCapabilities
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DocumentHighlightClientCapabilities]
$creadListPrec :: ReadPrec [DocumentHighlightClientCapabilities]
readPrec :: ReadPrec DocumentHighlightClientCapabilities
$creadPrec :: ReadPrec DocumentHighlightClientCapabilities
readList :: ReadS [DocumentHighlightClientCapabilities]
$creadList :: ReadS [DocumentHighlightClientCapabilities]
readsPrec :: Int -> ReadS DocumentHighlightClientCapabilities
$creadsPrec :: Int -> ReadS DocumentHighlightClientCapabilities
Read, DocumentHighlightClientCapabilities
-> DocumentHighlightClientCapabilities -> Bool
(DocumentHighlightClientCapabilities
-> DocumentHighlightClientCapabilities -> Bool)
-> (DocumentHighlightClientCapabilities
-> DocumentHighlightClientCapabilities -> Bool)
-> Eq DocumentHighlightClientCapabilities
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DocumentHighlightClientCapabilities
-> DocumentHighlightClientCapabilities -> Bool
$c/= :: DocumentHighlightClientCapabilities
-> DocumentHighlightClientCapabilities -> Bool
== :: DocumentHighlightClientCapabilities
-> DocumentHighlightClientCapabilities -> Bool
$c== :: DocumentHighlightClientCapabilities
-> DocumentHighlightClientCapabilities -> Bool
Eq)
deriveJSON lspOptions ''DocumentHighlightClientCapabilities
makeExtendingDatatype "DocumentHighlightOptions" [''WorkDoneProgressOptions] []
deriveJSON lspOptions ''DocumentHighlightOptions
makeExtendingDatatype "DocumentHighlightRegistrationOptions"
[ ''TextDocumentRegistrationOptions
, ''DocumentHighlightOptions
] []
deriveJSON lspOptions ''DocumentHighlightRegistrationOptions
makeExtendingDatatype "DocumentHighlightParams"
[ ''TextDocumentPositionParams
, ''WorkDoneProgressParams
, ''PartialResultParams
] []
deriveJSON lspOptions ''DocumentHighlightParams
data DocumentHighlightKind
=
HkText
|
HkRead
|
HkWrite
deriving (ReadPrec [DocumentHighlightKind]
ReadPrec DocumentHighlightKind
Int -> ReadS DocumentHighlightKind
ReadS [DocumentHighlightKind]
(Int -> ReadS DocumentHighlightKind)
-> ReadS [DocumentHighlightKind]
-> ReadPrec DocumentHighlightKind
-> ReadPrec [DocumentHighlightKind]
-> Read DocumentHighlightKind
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DocumentHighlightKind]
$creadListPrec :: ReadPrec [DocumentHighlightKind]
readPrec :: ReadPrec DocumentHighlightKind
$creadPrec :: ReadPrec DocumentHighlightKind
readList :: ReadS [DocumentHighlightKind]
$creadList :: ReadS [DocumentHighlightKind]
readsPrec :: Int -> ReadS DocumentHighlightKind
$creadsPrec :: Int -> ReadS DocumentHighlightKind
Read, Int -> DocumentHighlightKind -> ShowS
[DocumentHighlightKind] -> ShowS
DocumentHighlightKind -> String
(Int -> DocumentHighlightKind -> ShowS)
-> (DocumentHighlightKind -> String)
-> ([DocumentHighlightKind] -> ShowS)
-> Show DocumentHighlightKind
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DocumentHighlightKind] -> ShowS
$cshowList :: [DocumentHighlightKind] -> ShowS
show :: DocumentHighlightKind -> String
$cshow :: DocumentHighlightKind -> String
showsPrec :: Int -> DocumentHighlightKind -> ShowS
$cshowsPrec :: Int -> DocumentHighlightKind -> ShowS
Show, DocumentHighlightKind -> DocumentHighlightKind -> Bool
(DocumentHighlightKind -> DocumentHighlightKind -> Bool)
-> (DocumentHighlightKind -> DocumentHighlightKind -> Bool)
-> Eq DocumentHighlightKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
$c/= :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
== :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
$c== :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
Eq)
instance ToJSON DocumentHighlightKind where
toJSON :: DocumentHighlightKind -> Value
toJSON DocumentHighlightKind
HkText = Scientific -> Value
Number Scientific
1
toJSON DocumentHighlightKind
HkRead = Scientific -> Value
Number Scientific
2
toJSON DocumentHighlightKind
HkWrite = Scientific -> Value
Number Scientific
3
instance FromJSON DocumentHighlightKind where
parseJSON :: Value -> Parser DocumentHighlightKind
parseJSON (Number Scientific
1) = DocumentHighlightKind -> Parser DocumentHighlightKind
forall (f :: * -> *) a. Applicative f => a -> f a
pure DocumentHighlightKind
HkText
parseJSON (Number Scientific
2) = DocumentHighlightKind -> Parser DocumentHighlightKind
forall (f :: * -> *) a. Applicative f => a -> f a
pure DocumentHighlightKind
HkRead
parseJSON (Number Scientific
3) = DocumentHighlightKind -> Parser DocumentHighlightKind
forall (f :: * -> *) a. Applicative f => a -> f a
pure DocumentHighlightKind
HkWrite
parseJSON Value
_ = Parser DocumentHighlightKind
forall a. Monoid a => a
mempty
data DocumentHighlight =
DocumentHighlight
{
DocumentHighlight -> Range
_range :: Range
, DocumentHighlight -> Maybe DocumentHighlightKind
_kind :: Maybe DocumentHighlightKind
} deriving (ReadPrec [DocumentHighlight]
ReadPrec DocumentHighlight
Int -> ReadS DocumentHighlight
ReadS [DocumentHighlight]
(Int -> ReadS DocumentHighlight)
-> ReadS [DocumentHighlight]
-> ReadPrec DocumentHighlight
-> ReadPrec [DocumentHighlight]
-> Read DocumentHighlight
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DocumentHighlight]
$creadListPrec :: ReadPrec [DocumentHighlight]
readPrec :: ReadPrec DocumentHighlight
$creadPrec :: ReadPrec DocumentHighlight
readList :: ReadS [DocumentHighlight]
$creadList :: ReadS [DocumentHighlight]
readsPrec :: Int -> ReadS DocumentHighlight
$creadsPrec :: Int -> ReadS DocumentHighlight
Read,Int -> DocumentHighlight -> ShowS
[DocumentHighlight] -> ShowS
DocumentHighlight -> String
(Int -> DocumentHighlight -> ShowS)
-> (DocumentHighlight -> String)
-> ([DocumentHighlight] -> ShowS)
-> Show DocumentHighlight
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DocumentHighlight] -> ShowS
$cshowList :: [DocumentHighlight] -> ShowS
show :: DocumentHighlight -> String
$cshow :: DocumentHighlight -> String
showsPrec :: Int -> DocumentHighlight -> ShowS
$cshowsPrec :: Int -> DocumentHighlight -> ShowS
Show,DocumentHighlight -> DocumentHighlight -> Bool
(DocumentHighlight -> DocumentHighlight -> Bool)
-> (DocumentHighlight -> DocumentHighlight -> Bool)
-> Eq DocumentHighlight
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DocumentHighlight -> DocumentHighlight -> Bool
$c/= :: DocumentHighlight -> DocumentHighlight -> Bool
== :: DocumentHighlight -> DocumentHighlight -> Bool
$c== :: DocumentHighlight -> DocumentHighlight -> Bool
Eq)
deriveJSON lspOptions ''DocumentHighlight