packages feed

ribosome-host-0.9.9.9: lib/Ribosome/Host/Data/Event.hs

-- |Events sent from Neovim to the host.
module Ribosome.Host.Data.Event where

import Data.MessagePack (Object)

import Ribosome.Host.Class.Msgpack.Decode (MsgpackDecode)
import Ribosome.Host.Class.Msgpack.Encode (MsgpackEncode)

-- |The name of an event, which corresponds to the RPC method in the payload.
newtype EventName =
  EventName { unEventName :: Text }
  deriving stock (Eq, Show)
  deriving newtype (IsString, Ord, MsgpackDecode, MsgpackEncode)

-- |An event is an RPC notification sent by Neovim that is not intended to be dispatched to a named handler, but
-- consumed in a broadcasting fashion.
--
-- Since they aren't marked as such, the host treats any notification with an unknown method name as an event.
--
-- Events can be consumed with 'Conc.Consume' and 'Conc.subscribe'.
data Event =
  Event {
    name :: EventName,
    payload :: [Object]
  }
  deriving stock (Eq, Show)