diff options
author | Adam Vogt <vogt.adam@gmail.com> | 2010-01-24 21:33:24 +0100 |
---|---|---|
committer | Adam Vogt <vogt.adam@gmail.com> | 2010-01-24 21:33:24 +0100 |
commit | ef7cd124086bd3c91eb5fea9bb13057a82c71f29 (patch) | |
tree | 74912ac97eb5d7bf6013e26c7ede9266f6de6614 | |
parent | 6516064616b0b993a694cb4e8423a53c60a9b3c3 (diff) | |
download | XMonadContrib-ef7cd124086bd3c91eb5fea9bb13057a82c71f29.tar.gz XMonadContrib-ef7cd124086bd3c91eb5fea9bb13057a82c71f29.tar.xz XMonadContrib-ef7cd124086bd3c91eb5fea9bb13057a82c71f29.zip |
Use extensible-exceptions to allow base-3 or base-4
Ignore-this: 136f35fcc0f3a824b96eea0f4e04f276
darcs-hash:20100124203324-1499c-6e811978a61feebf704e3cd7543cbcc0b3e8a0b3.gz
-rw-r--r-- | XMonad/Prompt.hs | 8 | ||||
-rw-r--r-- | XMonad/Prompt/AppendFile.hs | 2 | ||||
-rw-r--r-- | XMonad/Prompt/Man.hs | 5 | ||||
-rw-r--r-- | XMonad/Util/NamedWindows.hs | 6 | ||||
-rw-r--r-- | XMonad/Util/Run.hs | 7 | ||||
-rw-r--r-- | XMonad/Util/XSelection.hs | 6 | ||||
-rw-r--r-- | xmonad-contrib.cabal | 11 |
7 files changed, 28 insertions, 17 deletions
diff --git a/XMonad/Prompt.hs b/XMonad/Prompt.hs index d755501..850e0c7 100644 --- a/XMonad/Prompt.hs +++ b/XMonad/Prompt.hs @@ -89,7 +89,7 @@ import Data.Set (fromList, toList) import System.Directory import System.IO import System.Posix.Files -import Control.Exception hiding (handle) +import Control.Exception.Extensible hiding (handle) import qualified Data.Map as M @@ -640,7 +640,7 @@ getCompletions :: XP [String] getCompletions = do s <- get io $ completionFunction s (commandToComplete (xptype s) (command s)) - `catch` \_ -> return [] + `catch` \(SomeException _) -> return [] setComplWin :: Window -> ComplWindowDim -> XP () setComplWin w wi = @@ -758,7 +758,7 @@ getHistoryFile :: IO FilePath getHistoryFile = fmap (++ "/history") $ getAppUserDataDirectory "xmonad" readHistory :: IO History -readHistory = catch readHist (const (return emptyHistory)) +readHistory = readHist `catch` \(SomeException _) -> return emptyHistory where readHist = do path <- getHistoryFile @@ -768,7 +768,7 @@ readHistory = catch readHist (const (return emptyHistory)) writeHistory :: History -> IO () writeHistory hist = do path <- getHistoryFile - catch (writeFile path (show hist)) $ const $ hPutStrLn stderr "error in writing" + writeFile path (show hist) `catch` \(SomeException _) -> hPutStrLn stderr "error in writing" setFileMode path mode where mode = ownerReadMode .|. ownerWriteMode diff --git a/XMonad/Prompt/AppendFile.hs b/XMonad/Prompt/AppendFile.hs index 47139db..74c4dad 100644 --- a/XMonad/Prompt/AppendFile.hs +++ b/XMonad/Prompt/AppendFile.hs @@ -29,7 +29,7 @@ import XMonad.Core import XMonad.Prompt import System.IO -import Control.Exception +import Control.Exception.Extensible (bracket) -- $usage -- diff --git a/XMonad/Prompt/Man.hs b/XMonad/Prompt/Man.hs index c069226..aae6a33 100644 --- a/XMonad/Prompt/Man.hs +++ b/XMonad/Prompt/Man.hs @@ -31,7 +31,7 @@ import System.Directory import System.Process import System.IO -import qualified Control.Exception as E +import qualified Control.Exception.Extensible as E import Control.Monad import Data.List import Data.Maybe @@ -62,7 +62,8 @@ manPrompt c = do getMans :: IO [String] getMans = do - paths <- getCommandOutput "manpath -g 2>/dev/null" `E.catch` \_ -> return [] + paths <- getCommandOutput "manpath -g 2>/dev/null" `E.catch` + \(E.SomeException _) -> return [] let sects = ["man" ++ show n | n <- [1..9 :: Int]] dirs = [d ++ "/" ++ s | d <- split ':' paths, s <- sects] mans <- forM dirs $ \d -> do diff --git a/XMonad/Util/NamedWindows.hs b/XMonad/Util/NamedWindows.hs index 17e401f..653eb54 100644 --- a/XMonad/Util/NamedWindows.hs +++ b/XMonad/Util/NamedWindows.hs @@ -24,7 +24,7 @@ module XMonad.Util.NamedWindows ( import Prelude hiding ( catch ) import Control.Applicative ( (<$>) ) -import Control.Exception ( bracket, catch ) +import Control.Exception.Extensible ( bracket, catch, SomeException(..) ) import Data.Maybe ( fromMaybe, listToMaybe ) import qualified XMonad.StackSet as W ( peek ) @@ -50,11 +50,11 @@ getName w = withDisplay $ \d -> do let getIt = bracket getProp (xFree . tp_value) (fmap (`NW` w) . copy) getProp = (internAtom d "_NET_WM_NAME" False >>= getTextProperty d w) - `catch` \_ -> getTextProperty d w wM_NAME + `catch` \(SomeException _) -> getTextProperty d w wM_NAME copy prop = fromMaybe "" . listToMaybe <$> wcTextPropertyToTextList d prop - io $ getIt `catch` \_ -> ((`NW` w) . resName) `fmap` getClassHint d w + io $ getIt `catch` \(SomeException _) -> ((`NW` w) . resName) `fmap` getClassHint d w unName :: NamedWindow -> Window unName (NW _ w) = w diff --git a/XMonad/Util/Run.hs b/XMonad/Util/Run.hs index c884818..2afdae5 100644 --- a/XMonad/Util/Run.hs +++ b/XMonad/Util/Run.hs @@ -33,8 +33,9 @@ module XMonad.Util.Run ( import System.Posix.IO import System.Posix.Process (executeFile) +import System.Posix.Types (ProcessID) import Control.Concurrent (threadDelay) -import Control.Exception (try) -- use OldException with base 4 +import Control.Exception.Extensible (try,SomeException) import System.IO import System.Process (runInteractiveProcess) import XMonad @@ -107,7 +108,9 @@ it makes use of shell interpretation by relying on @$HOME@ and interpolation, whereas the safeSpawn example can be safe because Firefox doesn't need any arguments if it is just being started. -} safeSpawn :: MonadIO m => FilePath -> [String] -> m () -safeSpawn prog args = liftIO (try (xfork $ executeFile prog True args Nothing) >> return ()) +safeSpawn prog args = liftIO $ do + try $ xfork $ executeFile prog True args Nothing :: IO (Either SomeException ProcessID) + return () -- | Like 'safeSpawn', but only takes a program (and no arguments for it). eg. -- diff --git a/XMonad/Util/XSelection.hs b/XMonad/Util/XSelection.hs index ad660c6..2dc68e6 100644 --- a/XMonad/Util/XSelection.hs +++ b/XMonad/Util/XSelection.hs @@ -22,7 +22,7 @@ module XMonad.Util.XSelection ( -- * Usage transformPromptSelection, transformSafePromptSelection) where -import Control.Exception as E (catch) +import Control.Exception.Extensible as E (catch,SomeException(..)) import Control.Monad (liftM, join) import Data.Maybe (fromMaybe) import XMonad @@ -66,8 +66,8 @@ getSelection = io $ do ty <- E.catch (E.catch (internAtom dpy "UTF8_STRING" False) - (\_ -> internAtom dpy "COMPOUND_TEXT" False)) - (\_ -> internAtom dpy "sTring" False) + (\(E.SomeException _) -> internAtom dpy "COMPOUND_TEXT" False)) + (\(E.SomeException _) -> internAtom dpy "sTring" False) clp <- internAtom dpy "BLITZ_SEL_STRING" False xConvertSelection dpy p ty clp win currentTime allocaXEvent $ \e -> do diff --git a/xmonad-contrib.cabal b/xmonad-contrib.cabal index 20d511c..fc8299e 100644 --- a/xmonad-contrib.cabal +++ b/xmonad-contrib.cabal @@ -40,7 +40,14 @@ flag testing library if flag(small_base) - build-depends: base >= 3 && < 4, containers, directory, process, random, old-time, old-locale + build-depends: base >= 3 && < 5, + containers, + directory, + extensible-exceptions, + old-locale, + old-time, + process, + random else build-depends: base < 3 @@ -60,7 +67,7 @@ library ghc-options: -fwarn-tabs -Werror if impl(ghc >= 6.12.1) - ghc-options: -fno-warn-warnings-deprecations -fno-warn-unused-do-bind + ghc-options: -fno-warn-unused-do-bind if impl (ghc == 6.10.1) && arch (x86_64) ghc-options: -O0 |