yi-core-0.14.1: Yi editor core library

Safe HaskellNone
LanguageHaskell2010

Yi.Config.Simple.Types

Description

exports from Yi.Config.Simple which are useful to "core yi" rather than just config files.

Synopsis

Documentation

newtype ConfigM a Source #

The configuration monad. Run it with configMain.

Constructors

ConfigM 

Fields

Instances

Monad ConfigM Source # 

Methods

(>>=) :: ConfigM a -> (a -> ConfigM b) -> ConfigM b #

(>>) :: ConfigM a -> ConfigM b -> ConfigM b #

return :: a -> ConfigM a #

fail :: String -> ConfigM a #

Functor ConfigM Source # 

Methods

fmap :: (a -> b) -> ConfigM a -> ConfigM b #

(<$) :: a -> ConfigM b -> ConfigM a #

Applicative ConfigM Source # 

Methods

pure :: a -> ConfigM a #

(<*>) :: ConfigM (a -> b) -> ConfigM a -> ConfigM b #

(*>) :: ConfigM a -> ConfigM b -> ConfigM b #

(<*) :: ConfigM a -> ConfigM b -> ConfigM a #

MonadState Config ConfigM Source # 

Methods

get :: ConfigM Config #

put :: Config -> ConfigM () #

state :: (Config -> (a, Config)) -> ConfigM a #

MonadBase IO ConfigM Source # 

Methods

liftBase :: IO α -> ConfigM α #

type Field a = Lens' Config a Source #

Fields that can be modified with all lens machinery.

customVariable :: YiConfigVariable a => Field a Source #

Accessor for any YiConfigVariable, to be used by modules defining YiConfigVariables. Such modules should provide a custom-named field. For instance, take the following hypothetical YiConfigVariable:

@newtype UserName = UserName { unUserName :: String } deriving(Typeable, Binary, Default) instance YiConfigVariable UserName

$(nameDeriveAccessors ''UserName (n -> Just (n ++ "A")))

userName :: Field String userName = unUserNameA . customVariable@

Here, the hypothetical library would provide the field userName to be used in preference to customVariable.