packages feed

yi-0.4.6: Yi/Style/Library.hs

-- A collection of UIStyles.
module Yi.Style.Library where
import Yi.Style
import Data.Prototype

type Theme = Proto UIStyle

-- | Abstract theme that provides useful defaults.
defaultTheme :: Theme
defaultTheme = Proto $ \self -> UIStyle
    { window             = defaultStyle self
    , modeline           = error "modeline must be redefined!"
    , modelineFocused    = modeline self `changeFg` brightwhite
    , selected           = reverseStyle self
    , eof                = [Foreground blue]
    , defaultStyle       = error "defaultStyle must be redefined!"
    , reverseStyle       = [Foreground Reverse, Background Reverse]
    , preprocessorStyle  = defaultStyle self `changeFg` red
    , commentStyle       = defaultStyle self `changeFg` purple
    , blockCommentStyle  = commentStyle self
    , keywordStyle       = defaultStyle self `changeFg` darkblue

    , operatorStyle      = defaultStyle self `changeFg` brown

    , variableStyle      = defaultStyle self
    , typeStyle          = variableStyle self `changeFg` darkgreen

    , stringStyle        = defaultStyle self `changeFg` darkcyan
    , longStringStyle    = stringStyle self
    , numberStyle        = defaultStyle self `changeFg` darkred

    , errorStyle         = defaultStyle self `changeBg` red
    , hintStyle          = defaultStyle self `changeBg` cyan
    , strongHintStyle    = defaultStyle self `changeBg` magenta
    }


-- | The default UIStyle
defaultLightTheme :: Theme
defaultLightTheme = defaultTheme `override` \super _ -> super
    { modeline           = [Foreground black,       Background darkcyan]
    , defaultStyle       = []
    }

-- | A UIStyle inspired by the darkblue colorscheme of Vim.
darkBlueTheme :: Theme
darkBlueTheme = defaultTheme `override` \super _ -> super
    {
      window            = [Background black, Foreground white]
    , modeline          = [Background white, Foreground darkblue]
    , modelineFocused   = [Background white, Foreground darkblue]
    , selected          = [Background blue,  Foreground white]
    , eof               = [Background black, Foreground red]
    , defaultStyle      = [Background black, Foreground white]

    , reverseStyle      = [Foreground green]
    , preprocessorStyle = [Foreground red]
    , commentStyle      = [Foreground darkred]
    , keywordStyle      = [Foreground brown]
    , operatorStyle     = [Foreground white]
    , typeStyle         = [Foreground darkgreen]
    , stringStyle       = [Foreground purple]
    , numberStyle       = [Foreground darkred]
    , errorStyle        = [Foreground green]

    , hintStyle         = [Background darkblue]
    , strongHintStyle   = [Background blue]
    }