lsp-types-1.3.0.0: src/Language/LSP/Types/Window.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
module Language.LSP.Types.Window where
import qualified Data.Aeson as A
import Data.Aeson.TH
import Data.Text (Text)
import Language.LSP.Types.Utils
-- ---------------------------------------------------------------------
data MessageType = MtError -- ^ Error = 1,
| MtWarning -- ^ Warning = 2,
| MtInfo -- ^ Info = 3,
| MtLog -- ^ Log = 4
deriving (Eq,Ord,Show,Read,Enum)
instance A.ToJSON MessageType where
toJSON MtError = A.Number 1
toJSON MtWarning = A.Number 2
toJSON MtInfo = A.Number 3
toJSON MtLog = A.Number 4
instance A.FromJSON MessageType where
parseJSON (A.Number 1) = pure MtError
parseJSON (A.Number 2) = pure MtWarning
parseJSON (A.Number 3) = pure MtInfo
parseJSON (A.Number 4) = pure MtLog
parseJSON _ = fail "MessageType"
-- ---------------------------------------
data ShowMessageParams =
ShowMessageParams {
_xtype :: MessageType
, _message :: Text
} deriving (Show, Read, Eq)
deriveJSON lspOptions ''ShowMessageParams
-- ---------------------------------------------------------------------
data MessageActionItem =
MessageActionItem
{ _title :: Text
} deriving (Show,Read,Eq)
deriveJSON lspOptions ''MessageActionItem
data ShowMessageRequestParams =
ShowMessageRequestParams
{ _xtype :: MessageType
, _message :: Text
, _actions :: Maybe [MessageActionItem]
} deriving (Show,Read,Eq)
deriveJSON lspOptions ''ShowMessageRequestParams
-- ---------------------------------------------------------------------
data LogMessageParams =
LogMessageParams {
_xtype :: MessageType
, _message :: Text
} deriving (Show, Read, Eq)
deriveJSON lspOptions ''LogMessageParams