summaryrefslogtreecommitdiffstats
path: root/XMonad/Core.hs
diff options
context:
space:
mode:
authorDaniel Schoepe <asgaroth_@gmx.de>2009-01-10 23:18:52 +0100
committerDaniel Schoepe <asgaroth_@gmx.de>2009-01-10 23:18:52 +0100
commit0983b157023be1556f7b34372786e61264cf8a0b (patch)
treee648564798a0353aa022269891cc4c750a340b3c /XMonad/Core.hs
parent6dbfcf78c007bb15d2befc76134657dfb7b3520c (diff)
downloadmetatile-0983b157023be1556f7b34372786e61264cf8a0b.tar
metatile-0983b157023be1556f7b34372786e61264cf8a0b.zip
More flexible userCode function
darcs-hash:20090110221852-cb1c6-80f042287c9c6b704a37a2704e29841416aeca9b
Diffstat (limited to 'XMonad/Core.hs')
-rw-r--r--XMonad/Core.hs12
1 files changed, 9 insertions, 3 deletions
diff --git a/XMonad/Core.hs b/XMonad/Core.hs
index f31cd74..b2eb959 100644
--- a/XMonad/Core.hs
+++ b/XMonad/Core.hs
@@ -24,7 +24,7 @@ module XMonad.Core (
XConf(..), XConfig(..), LayoutClass(..),
Layout(..), readsLayout, Typeable, Message,
SomeMessage(..), fromMessage, LayoutMessages(..),
- runX, catchX, userCode, io, catchIO, doubleFork,
+ runX, catchX, userCode, userCodeDef, io, catchIO, doubleFork,
withDisplay, withWindowSet, isRoot, runOnWorkspaces,
getAtom, spawn, getXMonadDir, recompile, trace, whenJust, whenX,
atom_WM_STATE, atom_WM_PROTOCOLS, atom_WM_DELETE_WINDOW, ManageHook, Query(..), runQuery
@@ -47,6 +47,7 @@ import Graphics.X11.Xlib
import Graphics.X11.Xlib.Extras (Event)
import Data.Typeable
import Data.Monoid
+import Data.Maybe (fromMaybe)
import qualified Data.Map as M
import qualified Data.Set as S
@@ -163,8 +164,13 @@ catchX job errcase = do
-- | Execute the argument, catching all exceptions. Either this function or
-- 'catchX' should be used at all callsites of user customized code.
-userCode :: X () -> X ()
-userCode a = catchX (a >> return ()) (return ())
+userCode :: X a -> X (Maybe a)
+userCode a = catchX (Just `liftM` a) (return Nothing)
+
+-- | Same as userCode but with a default argument to return instead of using
+-- Maybe, provided for convenience.
+userCodeDef :: a -> X a -> X a
+userCodeDef def a = fromMaybe def `liftM` userCode a
-- ---------------------------------------------------------------------
-- Convenient wrappers to state