    {-# LANGUAGE TemplateHaskell #-}
    {-# OPTIONS_HADDOCK show-extensions #-}

    -- |
    -- Module      :  Yi.Config.Lens
    -- License     :  GPL-2
    -- Maintainer  :  yi-devel@googlegroups.com
    -- Stability   :  experimental
    -- Portability :  portable
    --
    -- Lenses for types exported in Yi.Config. This module serves as a
    -- convenience module, for easy re-exporting.

    module Yi.Config.Lens where

    import Lens.Micro.Platform        (Lens)
    import Data.Default      (Default (def))
    import Data.DynamicState (_dyn)
    import Yi.Types          (Config (..), UIConfig (..), YiConfigVariable)
    import Yi.Utils          (makeLensesWithSuffix)

    makeLensesWithSuffix "A" ''Config
    makeLensesWithSuffix "A" ''UIConfig

    configVariable :: YiConfigVariable a => Lens Config Config a a
    configVariable :: forall a. YiConfigVariable a => Lens Config Config a a
    configVariable = (DynamicState -> f DynamicState) -> Config -> f Config
    Lens' Config DynamicState
    configVarsA ((DynamicState -> f DynamicState) -> Config -> f Config)
    -> ((a -> f a) -> DynamicState -> f DynamicState)
    -> (a -> f a)
    -> Config
    -> f Config
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . a -> (a -> f a) -> DynamicState -> f DynamicState
    forall a (f :: * -> *).
    (Typeable a, Functor f) =>
    a -> (a -> f a) -> DynamicState -> f DynamicState
    _dyn a
    forall a. Default a => a
    def