yi-monokai-0.1.0.0: src/Yi/Style/Monokai.hs
-- |
-- Module : Yi.Style.Monokai
-- Copyright : (c) Mateusz Kowalczyk 2013
-- License : BSD3
--
-- Maintainer : fuuzetsu@fuuzetsu.co.uk
-- Stability : experimental
-- Portability : portable
module Yi.Style.Monokai
( monokaiTheme
-- * Colours
, monokaiYellowLight
, monokaiYellowDark
, monokaiYellow
, monokaiPurpleLight
, monokaiMagenta
, monokaiGreyDark
, monokaiGreen
, monokaiGreyLight
, monokaiGreyLightest
, monokaiGreyDarkest
, monokaiGrey
, monokaiGreyDarker
, monokaiBlueLight
, monokaiPurple
, monokaiGreenLight
)
where
import Data.Bits (shiftR)
import Data.Monoid (mappend)
import Data.Word (Word32)
import Yi
-- | The main theme specification. An example use in your @yi.hs@ might
-- look something like
--
-- @
-- main :: IO ()
-- main = yi $ myConfig {
-- defaultKm = defaultKm myConfig
-- , startFrontEnd = start
-- , configUI = (configUI defaultConfig) { configTheme = monokaiTheme }
-- }
-- @
monokaiTheme :: Proto UIStyle
monokaiTheme = defaultTheme `override` \sets _ -> sets
{ baseAttributes = emptyAttributes { foreground = monokaiYellowLight
, background = monokaiGreyDark
, reverseAttr = False}
, modelineAttributes = emptyAttributes { foreground = monokaiGreyLight
, background = monokaiGreyLightest
, reverseAttr = False }
, selectedStyle = withBg monokaiGreyDarker
, hintStyle = withBg monokaiGreyLightest
, builtinStyle = withFg monokaiGreen
, commentStyle = withFg monokaiYellowDark
-- constantStyle would be great…
-- no docstringStyle either?
-- I hope variableStyle covers functions functions
-- , variableStyle = withFg monokaiGreenLight -- monokaiMagenta
, keywordStyle = withFg monokaiMagenta
, stringStyle = withFg monokaiYellow
, typeStyle = withFg monokaiBlueLight
-- use error style for warnings
, errorStyle = withFg monokaiPurpleLight `mappend` withBd True
, operatorStyle = withFg monokaiMagenta
, importStyle = withFg monokaiMagenta
-- , preprocessorStyle = withFg preproc
}
-- | Convenience function
rgb :: Word32 -> Color
rgb x = RGB (fi (x `shiftR` 16))
(fi (x `shiftR` 8))
(fi x)
where
fi = fromIntegral
-- | Hex value: 0x89BDFF
monokaiBlueLight :: Color
monokaiBlueLight = rgb 0x89BDFF
-- | Hex value: 0x595959
monokaiGrey :: Color
monokaiGrey = rgb 0x595959
-- | Hex value: 0x383830
monokaiGreyDarker :: Color
monokaiGreyDarker = rgb 0x383830
-- | Hex value: 0x141411
monokaiGreyDarkest :: Color
monokaiGreyDarkest = rgb 0x141411
-- | Hex value: 0x595959
monokaiGreyLightest :: Color
monokaiGreyLightest = rgb 0x595959
-- | Hex value: 0xE6E6E6
monokaiGreyLight :: Color
monokaiGreyLight = rgb 0xE6E6E6
-- | Hex value: 0xA6E22A
monokaiGreen :: Color
monokaiGreen = rgb 0xA6E22A
-- | Hex value: 0xA6E22E
monokaiGreenLight :: Color
monokaiGreenLight = rgb 0xA6E22E
-- | Hex value: 0x272822
monokaiGreyDark :: Color
monokaiGreyDark = rgb 0x272822
-- | Hex value: 0xF92672
monokaiMagenta :: Color
monokaiMagenta = rgb 0xF92672
-- | Hex value: 0xAE81FF
monokaiPurple :: Color
monokaiPurple = rgb 0xAE81FF
-- | Hex value: 0xFD5FF1
monokaiPurpleLight :: Color
monokaiPurpleLight = rgb 0xFD5FF1
-- | Hex value: 0xE6DB74
monokaiYellow :: Color
monokaiYellow = rgb 0xE6DB74
-- | Hex value: 0x75715E
monokaiYellowDark :: Color
monokaiYellowDark = rgb 0x75715E
-- | Hex value: 0xF8F8F2
monokaiYellowLight :: Color
monokaiYellowLight = rgb 0xF8F8F2