aboutsummaryrefslogtreecommitdiff
path: root/src/Lazymail/Config.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Lazymail/Config.hs')
-rw-r--r--src/Lazymail/Config.hs55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/Lazymail/Config.hs b/src/Lazymail/Config.hs
new file mode 100644
index 0000000..2566bc9
--- /dev/null
+++ b/src/Lazymail/Config.hs
@@ -0,0 +1,55 @@
+{- Lazymail user configuration
+ -
+ - Copyright 2013 Raúl Benencia <rul@kalgan.cc>
+ -
+ - Licensed under the GNU GPL version 3 or higher
+ -
+ -}
+
+module Lazymail.Config(LazymailConfig(..), defaultConfig, customConfig) where
+
+import Data.List(sort, stripPrefix)
+import System.Posix.Files(getSymbolicLinkStatus, isSymbolicLink)
+import UI.NCurses(Color(..))
+
+import Lazymail.Keymap
+import Lazymail.Types(LazymailConfig(..))
+
+defaultConfig = LazymailConfig {
+ baseColor = (ColorWhite, ColorBlack)
+ , selectionColor = (ColorBlack, ColorWhite)
+ , statusBarColor = (ColorBlack, ColorBlue)
+ , headerColor = (ColorGreen, ColorBlack)
+ , newEmailColor = (ColorBlue, ColorBlack)
+ , showStatusBar = True
+ , initialPath = ""
+ , filterMaildirsHook = \mds -> return mds
+ , indexDateFormat = "%m %d"
+ , headersToShow = ["date", "from", "to", "cc", "bcc", "subject", "reply-to"]
+ , globalKeymaps = defaultGlobalKeymap
+ , maildirModeKeymap = defaultMaildirKeymap
+ , indexModeKeymap = defaultIndexKeymap
+ , emailModeKeymap = defaultEmailKeymap
+ , composeModeKeymap = defaultComposeKeymap
+}
+
+--
+-- | Users should modify customConfig in order to set-up their
+-- preferences. In a possible future maybe I'll work in a not-so-crappy
+-- config system.
+--
+--customConfig = defaultConfig { initialPath = "/home/rul/mail/"}
+
+customConfig = defaultConfig { initialPath = "/home/rul/mail/"
+ , filterMaildirsHook = filterSymlinks }
+
+filterSymlinks :: [FilePath] -> IO [FilePath]
+filterSymlinks [] = return []
+filterSymlinks (md:mds) = do
+ filtered <- do
+ fs <- getSymbolicLinkStatus md
+ rest <- filterSymlinks mds
+ if isSymbolicLink fs
+ then return rest
+ else return (md:rest)
+ return $ sort filtered \ No newline at end of file
nihil fit ex nihilo