Copyright | (c) Sebastian Witte |
---|---|
License | Apache-2.0 |
Maintainer | woozletoff@gmail.com |
Stability | experimental |
Portability | GHC |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Synopsis
- data SomeMessage = forall msg.Message msg => SomeMessage msg
- class (NFData message, Typeable message) => Message message where
- fromMessage :: SomeMessage -> Maybe message
- data FunctionCall = FunctionCall FunctionName [Object] (TMVar (Either Object Object)) UTCTime
- data Request = Request {}
- data Notification = Notification {
- notEvent :: NeovimEventId
- notArgs :: [Object]
- writeMessage :: (MonadUnliftIO m, Message message) => TQueue SomeMessage -> message -> m ()
- readSomeMessage :: MonadIO m => TQueue SomeMessage -> m SomeMessage
- data UTCTime
- getCurrentTime :: IO UTCTime
- data Int64
Documentation
data SomeMessage Source #
Taken from xmonad and based on ideas in /An Extensible Dynamically-Typed Hierarchy of Exceptions/, Simon Marlow, 2006.
User-extensible messages must be put into a value of this type, so that it can be sent to other plugins.
forall msg.Message msg => SomeMessage msg |
class (NFData message, Typeable message) => Message message where Source #
This class allows type safe casting of SomeMessage
to an actual message.
The cast is successful if the type you're expecting matches the type in the
SomeMessage
wrapper. This way, you can subscribe to an arbitrary message
type withouth having to pattern match on the constructors. This also allows
plugin authors to create their own message types without having to change the
core code of nvim-hs.
Nothing
fromMessage :: SomeMessage -> Maybe message Source #
Try to convert a given message to a value of the message type we are
interested in. Will evaluate to Nothing
for any other type.
Instances
Message FunctionCall Source # | |
Defined in Neovim.Plugin.IPC.Classes | |
Message Notification Source # | |
Defined in Neovim.Plugin.IPC.Classes | |
Message Request Source # | |
Defined in Neovim.Plugin.IPC.Classes fromMessage :: SomeMessage -> Maybe Request Source # | |
Message Message Source # | |
Defined in Neovim.RPC.Classes fromMessage :: SomeMessage -> Maybe Message Source # |
data FunctionCall Source #
Haskell representation of supported Remote Procedure Call messages.
FunctionCall FunctionName [Object] (TMVar (Either Object Object)) UTCTime | Method name, parameters, callback, timestamp |
Instances
A request is a data type containing the method to call, its arguments and an identifier used to map the result to the function that has been called.
Instances
Generic Request Source # | |
Show Request Source # | |
NFData Request Source # | |
Defined in Neovim.Plugin.IPC.Classes | |
Eq Request Source # | |
Ord Request Source # | |
Message Request Source # | |
Defined in Neovim.Plugin.IPC.Classes fromMessage :: SomeMessage -> Maybe Request Source # | |
Pretty Request Source # | |
Defined in Neovim.Plugin.IPC.Classes | |
type Rep Request Source # | |
Defined in Neovim.Plugin.IPC.Classes type Rep Request = D1 ('MetaData "Request" "Neovim.Plugin.IPC.Classes" "nvim-hs-2.3.2.1-Dn9vtyvzlIoLeTTi8kgU1Z" 'False) (C1 ('MetaCons "Request" 'PrefixI 'True) (S1 ('MetaSel ('Just "reqMethod") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 FunctionName) :*: (S1 ('MetaSel ('Just "reqId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int64) :*: S1 ('MetaSel ('Just "reqArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [Object])))) |
data Notification Source #
A notification is similar to a Request
. It essentially does the same
thing, but the function is only called for its side effects. This type of
message is sent by neovim if the caller there does not care about the result
of the computation.
Notification | |
|
Instances
writeMessage :: (MonadUnliftIO m, Message message) => TQueue SomeMessage -> message -> m () Source #
readSomeMessage :: MonadIO m => TQueue SomeMessage -> m SomeMessage Source #
This is the simplest representation of UTC. It consists of the day number, and a time offset from midnight. Note that if a day has a leap second added to it, it will have 86401 seconds.
Instances
Data UTCTime | |
Defined in Data.Time.Clock.Internal.UTCTime gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UTCTime -> c UTCTime # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UTCTime # toConstr :: UTCTime -> Constr # dataTypeOf :: UTCTime -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c UTCTime) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UTCTime) # gmapT :: (forall b. Data b => b -> b) -> UTCTime -> UTCTime # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UTCTime -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UTCTime -> r # gmapQ :: (forall d. Data d => d -> u) -> UTCTime -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> UTCTime -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> UTCTime -> m UTCTime # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UTCTime -> m UTCTime # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UTCTime -> m UTCTime # | |
NFData UTCTime | |
Defined in Data.Time.Clock.Internal.UTCTime | |
Eq UTCTime | |
Ord UTCTime | |
Defined in Data.Time.Clock.Internal.UTCTime |
getCurrentTime :: IO UTCTime #
Get the current UTCTime
from the system clock.
64-bit signed integer type