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]
}