yi-0.10.0: src/library/Yi/Mode/IReader.hs
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_HADDOCK show-extensions #-}
-- |
-- Module : Yi.Mode.IReader
-- License : GPL-2
-- Maintainer : yi-devel@googlegroups.com
-- Stability : experimental
-- Portability : portable
--
-- A simple text mode; it does very little besides define a comment
-- syntax. We have it as a separate mode so users can bind the
-- commands to this mode specifically.
module Yi.Mode.IReader where
import Data.Text ()
import Control.Lens
import Data.Char (intToDigit)
import Yi.Buffer.Misc
import Yi.Editor
import Yi.IReader
import Yi.Keymap
import Yi.Keymap.Keys
import Yi.Modes (anyExtension, fundamentalMode)
abstract :: Mode syntax
abstract = fundamentalMode { modeApplies = anyExtension ["irtxt"]
, modeKeymap = topKeymapA %~ ikeys }
where
ikeys = important $ choice m
m = [ metaCh '`' ?>>! saveAsNewArticle
, metaCh '0' ?>>! deleteAndNextArticle
]
++ map (\x -> metaCh (intToDigit x) ?>>! saveAndNextArticle x) [1..9]
ireaderMode :: Mode syntax
ireaderMode = abstract { modeName = "interactive reading of text" }
ireadMode :: YiM ()
ireadMode = do
withCurrentBuffer $ setAnyMode $ AnyMode ireaderMode
nextArticle
printMsg "M-` new; M-0 delete; M-[1-9]: save w/higher priority"