{-# 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 _ = mempty -- --------------------------------------- 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