@@ -25,6 +25,7 @@ import Graphics.Vty.Output.Interface
2525
2626import Blaze.ByteString.Builder (Write, writeToByteString, writeStorable)
2727
28+import Control.Monad.Fail (MonadFail)
2829import Control.Monad.Trans
2930
3031import Data.Bits ((.&.))
@@ -203,25 +204,25 @@ reserveTerminal termName outFd = liftIO $ do
203204 maybeSendCap s = when (isJust $ s terminfoCaps) . sendCap (fromJust . s)
204205 return t
205206
206−requireCap :: (Applicative m, MonadIO m) => Terminfo.Terminal -> String -> m CapExpression
207+requireCap :: (Applicative m, MonadIO m, MonadFail m) => Terminfo.Terminal -> String -> m CapExpression
207208requireCap ti capName
208209 = case Terminfo.getCapability ti (Terminfo.tiGetStr capName) of
209210 Nothing -> fail $ "Terminal does not define required capability \"" ++ capName ++ "\""
210211 Just capStr -> parseCap capStr
211212
212−probeCap :: (Applicative m, MonadIO m) => Terminfo.Terminal -> String -> m (Maybe CapExpression)
213+probeCap :: (Applicative m, MonadIO m, MonadFail m) => Terminfo.Terminal -> String -> m (Maybe CapExpression)
213214probeCap ti capName
214215 = case Terminfo.getCapability ti (Terminfo.tiGetStr capName) of
215216 Nothing -> return Nothing
216217 Just capStr -> Just <$> parseCap capStr
217218
218−parseCap :: (Applicative m, MonadIO m) => String -> m CapExpression
219+parseCap :: (Applicative m, MonadIO m, MonadFail m) => String -> m CapExpression
219220parseCap capStr = do
220221 case parseCapExpression capStr of
221222 Left e -> fail $ show e
222223 Right cap -> return cap
223224
224−currentDisplayAttrCaps :: ( Applicative m, MonadIO m )
225+currentDisplayAttrCaps :: ( Applicative m, MonadIO m, MonadFail m )
225226 => Terminfo.Terminal
226227 -> m DisplayAttrCaps
227228currentDisplayAttrCaps ti