yi-solarized-0.1.0: src/Yi/Style/Solarized.hs
-- |
-- Module : Yi.Style.Solarized
-- Copyright : (c) Tom Sydney Kerckhove 2015
-- License : MIT
--
-- Maintainer : syd.kerckhove@gmail.com
-- Stability : experimental
-- Portability : portable
module Yi.Style.Solarized ( solarizedTheme ) where
import Data.Bits (shiftR)
import Data.Monoid (mappend, mempty)
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 = solarizedTheme }
-- }
-- @
solarizedTheme :: Proto UIStyle
solarizedTheme = defaultTheme `override` \sets _ -> sets
{ baseAttributes = emptyAttributes { foreground = solarizedBase1
, background = solarizedBase03
, reverseAttr = False }
, modelineAttributes = emptyAttributes { foreground = solarizedBase1
, background = solarizedBase03
, reverseAttr = False }
, tabBarAttributes = emptyAttributes { foreground = solarizedBase1
, background = solarizedBase03
, reverseAttr = False }
, tabInFocusStyle = withFg solarizedBase1 `mappend` withBg solarizedBase03
, selectedStyle = withBg solarizedBase03
, hintStyle = withBg solarizedBase03
, builtinStyle = withFg solarizedCyan
, commentStyle = withFg solarizedBase01
, keywordStyle = withFg solarizedRed
, stringStyle = withFg solarizedRed
, typeStyle = withFg solarizedYellow
, errorStyle = withFg solarizedRed `mappend` withBd True
, operatorStyle = withFg solarizedBlue
, importStyle = withFg solarizedGreen
, numberStyle = withFg solarizedGreen
, preprocessorStyle = withFg solarizedBase3
}
-- | Convenience function
rgb :: Word32 -> Color
rgb x = RGB (fi (x `shiftR` 16))
(fi (x `shiftR` 8))
(fi x)
where
fi = fromIntegral
-- | Hex value: 0x002B36
solarizedBase03 :: Color
solarizedBase03 = rgb 0x000000
-- | Hex value: 0x073642
solarizedBase02 :: Color
solarizedBase02 = rgb 0x073642
-- | Hex value: 0x586E75
solarizedBase01 :: Color
solarizedBase01 = rgb 0x586E75
-- | Hex value: 0x657B83
solarizedBase00 :: Color
solarizedBase00 = rgb 0x657B83
-- | Hex value: 0x839496
solarizedBase0 :: Color
solarizedBase0 = rgb 0x839496
-- | Hex value: 0x93A1A1
solarizedBase1 :: Color
solarizedBase1 = rgb 0x93A1A1
-- | Hex value: 0xEEE8d5
solarizedBase2 :: Color
solarizedBase2 = rgb 0xEEE8d5
-- | Hex value: 0xFDF6e3
solarizedBase3 :: Color
solarizedBase3 = rgb 0xFDF6e3
-- | Hex value: 0xB58900
solarizedYellow :: Color
solarizedYellow = rgb 0xB58900
-- | Hex value: 0xCB4B16
solarizedOrange :: Color
solarizedOrange = rgb 0xCB4B16
-- | Hex value: 0xDC322F
solarizedRed :: Color
solarizedRed = rgb 0xDC322F
-- | Hex value: 0xD33682
solarizedMagenta :: Color
solarizedMagenta = rgb 0xD33682
-- | Hex value: 0x6C71C4
solarizedViolet :: Color
solarizedViolet = rgb 0x6C71C4
-- | Hex value: 0x268BD2
solarizedBlue :: Color
solarizedBlue = rgb 0x268BD2
-- | Hex value: 0x2AA198
solarizedCyan :: Color
solarizedCyan = rgb 0x2AA198
-- | Hex value: 0x859900
solarizedGreen :: Color
solarizedGreen = rgb 0x859900