packages feed

yi-0.5.2: Yi/Mode/IReader.hs

{-# LANGUAGE Rank2Types #-}
-- | 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 Yi.Buffer.Misc
import Yi.IReader
import Yi.Keymap.Keys
import Yi.Modes (anyExtension, fundamentalMode)
import Yi.Syntax (Stroke)
import qualified Yi.Syntax.Linear as Linear (Result)

abstract :: forall syntax. Mode syntax
abstract = fundamentalMode { modeApplies = anyExtension ["irtxt"],
                             modeKeymap = ikeys }
    where -- Default bindings.
          -- ikeys :: (MonadInteract f Yi.Keymap.Action Event) => f () -> f ()
          ikeys = (choice  [metaCh '1' ?>>! saveAndNextArticle,
                            metaCh '2' ?>>! saveAsNewArticle,
                            metaCh '3' ?>>! deleteAndNextArticle] <||)

ireaderMode :: Mode (Linear.Result Stroke)
ireaderMode = abstract { modeName = "interactive reading of text" }

ireadMode ::  BufferM ()
ireadMode = setAnyMode (AnyMode ireaderMode)