diff options
| author | Adam Vogt <vogt.adam@gmail.com> | 2009-09-23 04:28:35 +0200 | 
|---|---|---|
| committer | Adam Vogt <vogt.adam@gmail.com> | 2009-09-23 04:28:35 +0200 | 
| commit | df35f664776cbb4b588f9ee71853d2be784364fc (patch) | |
| tree | e3086454bfb8136ab99659aecd6df763ffda9f0d /Main.hs | |
| parent | 7514c05975601d5816c696a8072b23142e8f0802 (diff) | |
| download | xmobar-df35f664776cbb4b588f9ee71853d2be784364fc.tar.gz xmobar-df35f664776cbb4b588f9ee71853d2be784364fc.tar.bz2 | |
Output to stdout whenever fields are defaulted in a config.
Ignore-this: 3bf71f10543f14aa17b6b403480bcdde
This is done without a command line flag, but perhaps it should be.
darcs-hash:20090923022835-1499c-d05af3db7816672e8a8cb4987215dcc3f9a96947.gz
Diffstat (limited to 'Main.hs')
| -rw-r--r-- | Main.hs | 28 | 
1 files changed, 18 insertions, 10 deletions
| @@ -1,3 +1,4 @@ +{-# LANGUAGE FlexibleContexts #-}  -----------------------------------------------------------------------------  -- |  -- Module      :  Xmobar.Main @@ -24,6 +25,8 @@ import Parsers  import Config  import XUtil +import Data.List (intercalate) +  import Paths_xmobar (version)  import Data.IORef  import Data.Version (showVersion) @@ -33,6 +36,8 @@ import System.Exit  import System.Environment  import System.Posix.Files +import Control.Monad.Writer (MonadWriter,MonadIO,unless,runWriterT) +  -- $main  -- | The main entry point @@ -41,9 +46,12 @@ main = do    d   <- openDisplay ""    args     <- getArgs    (o,file) <- getOpts args -  c        <- case file of -                [cfgfile] -> readConfig cfgfile -                _         -> readDefaultConfig +  (c,defaultings) <- runWriterT $ case file of +                    [cfgfile] -> readConfig cfgfile +                    _         -> readDefaultConfig + +  unless (null defaultings) $ putStrLn $ "Fields missing from config defaulted: " +                                            ++ intercalate "," defaultings    -- listen for ConfigureEvents on the root window, for xrandr support:    rootw <- rootWindow d (defaultScreen d) @@ -60,18 +68,18 @@ main = do    releaseFont d fs  -- | Reads the configuration files or quits with an error -readConfig :: FilePath -> IO Config +readConfig :: (MonadIO m, MonadWriter [String] m) => FilePath -> m Config  readConfig f = do -  file <- fileExist f -  s    <- if file then readFileSafe f else error $ f ++ ": file not found!\n" ++ usage +  file <- io $ fileExist f +  s    <- io $ if file then readFileSafe f else error $ f ++ ": file not found!\n" ++ usage    either (\err -> error $ f ++ ": configuration file contains errors at:\n" ++ show err) -         return $ parseConfig s +         id $ parseConfig s  -- | Read default configuration file or load the default config -readDefaultConfig :: IO Config +readDefaultConfig :: (MonadIO m, MonadWriter [String] m) => m Config  readDefaultConfig = do -  home <- getEnv "HOME" +  home <- io $ getEnv "HOME"    let path = home ++ "/.xmobarrc" -  f <- fileExist path +  f <- io $ fileExist path    if f then readConfig path else return defaultConfig  data Opts = Help | 
