{-# language ExistentialQuantification #-} module Rasa.Internal.Events ( BeforeRender(..) , OnRender(..) , AfterRender(..) , BufAdded(..) , Keypress(..) , Mod(..) , BufTextChanged(..) ) where import Data.Dynamic import Rasa.Internal.Range import Rasa.Internal.Buffer import qualified Yi.Rope as Y -- | 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 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)