Safe Haskell | None |
---|---|
Language | Haskell2010 |
- newtype Scheduler a = Scheduler {}
- data Hook
- type Hooks = Map TypeRep [Hook]
- afterRender :: Action () -> Scheduler ()
- beforeEvent :: Action () -> Scheduler ()
- beforeRender :: Action () -> Scheduler ()
- dispatchEvent :: Typeable a => a -> Action ()
- eventListener :: forall a. Typeable a => (a -> Action ()) -> Scheduler ()
- getHooks :: Scheduler () -> Hooks
- matchingHooks :: forall a. Typeable a => Hooks -> [a -> Action ()]
- onExit :: Action () -> Scheduler ()
- onInit :: Action () -> Scheduler ()
- onRender :: Action () -> Scheduler ()
Documentation
The Scheduler is how you can register your extension's actions to run at different points in the editor's event cycle.
The event cycle proceeds as follows:
Init (Runs ONCE) -- The following loops until an exit is triggered: BeforeEvent -> (any event) -> BeforeRender -> OnRender -> AfterRender Exit (Runs ONCE)
Each extension which wishes to perform actions exports a
which the user inserts in their config file.Scheduler
()
A wrapper around event listeners so they can be stored in Hooks
.
afterRender :: Action () -> Scheduler () Source #
Registers an action to be performed AFTER each render phase.
This is useful for cleaning up extension state that was registered for the renderer, but needs to be cleared before the next iteration.
beforeEvent :: Action () -> Scheduler () Source #
Registers an action to be performed BEFORE each event phase.
beforeRender :: Action () -> Scheduler () Source #
Registers an action to be performed BEFORE each render phase.
This is a good spot to add information useful to the renderer since all actions have been performed. Only cosmetic changes should occur during this phase.
dispatchEvent :: Typeable a => a -> Action () Source #
Use this to dispatch an event of any type, any hooks which are listening for this event will be triggered with the provided event. Use this within an Action.
eventListener :: forall a. Typeable a => (a -> Action ()) -> Scheduler () Source #
This registers an event listener hook, as long as the listener is well-typed similar to this:
MyEventType -> Action ()
then it will be registered to listen for dispatched events of that type.
Use within the Scheduler
and add have the user add it to their config.
matchingHooks :: forall a. Typeable a => Hooks -> [a -> Action ()] Source #
This extracts all event listener hooks from a map of hooks which match the type of the provided event.
onExit :: Action () -> Scheduler () Source #
Registers an action to be performed during the exit phase.
This is only triggered exactly once when the editor is shutting down. It allows an opportunity to do clean-up, kill any processes you've started, or save any data before the editor terminates.