From 3a5d965333bb2d7a115e4de05d88ada48fd1d677 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Sun, 4 Feb 2024 15:20:53 -0700 Subject: Overhaul how Wml is implemented. This adds a new "KeyFeed" monad which is reminiscent of a parsec-type monad. This allows keys like 'g' to be mapped using a subbind and the actual WML part be handled in the catch-all handler. This also significantly cleans up the typing and complexity of the Wml implementation. --- src/Rahm/Desktop/XMobarLog/PendingBuffer.hs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/Rahm/Desktop/XMobarLog') diff --git a/src/Rahm/Desktop/XMobarLog/PendingBuffer.hs b/src/Rahm/Desktop/XMobarLog/PendingBuffer.hs index 28ba9a8..67ae6a3 100644 --- a/src/Rahm/Desktop/XMobarLog/PendingBuffer.hs +++ b/src/Rahm/Desktop/XMobarLog/PendingBuffer.hs @@ -8,6 +8,7 @@ module Rahm.Desktop.XMobarLog.PendingBuffer ) where +import Rahm.Desktop.Common import Data.Default (Default (..)) import XMonad (X) import qualified XMonad as X @@ -54,14 +55,14 @@ clearPendingBuffer = do getPendingBuffer :: X [Char] getPendingBuffer = unPendingBuffer <$> XS.get -pushPendingBuffer :: String -> X a -> X a +pushPendingBuffer :: (Xish x) => String -> x a -> x a pushPendingBuffer newPendingBuffer fn = do - saved <- getPendingBuffer - setPendingBuffer newPendingBuffer - fn <* setPendingBuffer saved + saved <- liftFromX getPendingBuffer + liftFromX $ setPendingBuffer newPendingBuffer + fn <* liftFromX (setPendingBuffer saved) -pushAddPendingBuffer :: String -> X a -> X a +pushAddPendingBuffer :: (Xish x) => String -> x a -> x a pushAddPendingBuffer toAdd fn = do - saved <- getPendingBuffer - setPendingBuffer (saved ++ toAdd) - fn <* setPendingBuffer saved + saved <- liftFromX getPendingBuffer + liftFromX $ setPendingBuffer (saved ++ toAdd) + fn <* liftFromX (setPendingBuffer saved) -- cgit