yi-0.3: Yi/Keymap/Ee.hs
-- Copyright (c) 2005, 2008 Don Stewart - http://www.cse.unsw.edu.au/~dons
-- Introductory binding for the 'ee' editor
module Yi.Keymap.Ee ( keymap ) where
import Yi.Yi
import Control.Arrow
import Yi.Keymap.Emacs.KillRing
keymap :: Keymap
keymap = comap eventToChar (command +++ insert)
-- Control keys:
-- ^a ascii code ^i tab ^r right
-- ^b bottom of text ^j newline ^t top of text
-- ^c command ^k delete char ^u up
-- ^d down ^l left ^v undelete word
-- ^e search prompt ^m newline ^w delete word
-- ^f undelete char ^n next page ^x search
-- ^g begin of line ^o end of line ^y delete line
-- ^h backspace ^p prev page ^z undelete line
-- ^[ (escape) menu
insert :: Interact Char ()
insert = do c <- satisfy (const True); write (insertN c)
command :: Interact Char ()
command = choice [event c >> write act | (c, act) <- cmds]
where cmds = [('\^R', rightB ),
('\^B', botB ),
('\^T', topB ),
('\^K', deleteN 1 ),
('\^U', execB Move VLine Backward),
('\^D', execB Move VLine Forward),
('\^L', leftB ),
('\^G', moveToSol ),
('\^O', moveToEol ),
('\^Y', killLineE ),
('\^H', bdeleteB ),
('\^X', quitEditor )]