rasa-0.1.10: src/Rasa/Internal/Events.hs
{-# language ExistentialQuantification #-}
module Rasa.Internal.Events
( Init(..)
, AfterInit(..)
, BeforeEvent(..)
, BeforeRender(..)
, OnRender(..)
, AfterRender(..)
, Exit(..)
, BufAdded(..)
, Keypress(..)
, Mod(..)
, BufTextChanged(..)
) where
import Data.Dynamic
import Rasa.Internal.Editor
import Rasa.Internal.Range
import qualified Yi.Rope as Y
-- | This event is dispatched exactly once when the editor starts up.
data Init = Init deriving (Show, Eq, Typeable)
-- | This event is dispatched exactly once when the editor starts up after onInit has occurred.
data AfterInit = AfterInit deriving (Show, Eq, Typeable)
-- | This event is dispatched immediately before dispatching any events from
-- asyncronous event listeners (like 'Keypress's)
data BeforeEvent = BeforeEvent deriving (Show, Eq, Typeable)
-- | This event is dispatched immediately before dispatching
-- the 'OnRender' event.
data BeforeRender = BeforeRender deriving (Show, Eq, Typeable)
-- | This event is dispatched when it's time for extensions to render to screen.
data OnRender = OnRender deriving (Show, Eq, Typeable)
-- | This event is dispatched immediately after dispatching 'OnRender'.
data AfterRender = AfterRender deriving (Show, Eq, Typeable)
-- | This event is dispatched before exiting the editor, listen for this to do
-- any clean-up (saving files, etc.)
data Exit = Exit deriving (Show, Eq, Typeable)
-- | This event is dispatched after adding a new buffer. The contained BufRef refers to the new buffer.
data BufAdded = BufAdded BufRef deriving (Show, Eq, Typeable)
-- | This event is dispatched in response to keyboard key presses. It contains both
-- the char that was pressed and any modifiers ('Mod') that where held when the key was pressed.
data Keypress
= Keypress Char [Mod]
| KEsc [Mod]
| KBS [Mod]
| KEnter [Mod]
| KLeft [Mod]
| KRight [Mod]
| KUp [Mod]
| KDown [Mod]
| KPrtScr [Mod]
| KHome [Mod]
| KPageUp [Mod]
| KDel [Mod]
| KEnd [Mod]
| KPageDown [Mod]
| KUnknown
deriving (Show, Eq, Typeable)
-- | This represents each modifier key that could be pressed along with a key.
data Mod
= Ctrl
| Alt
| Shift
| Meta
deriving (Show, Eq)
-- | This is triggered when text in a buffer is changed. The Event data includes the 'CrdRange' that changed and
-- the new text which is now contined in that range.
data BufTextChanged
= BufTextChanged CrdRange Y.YiString
deriving (Show, Eq, Typeable)