aboutsummaryrefslogtreecommitdiff
path: root/src/Rahm/Desktop/XMobarLog
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-02-04 15:20:53 -0700
committerJosh Rahm <joshuarahm@gmail.com>2024-02-04 15:26:10 -0700
commit3a5d965333bb2d7a115e4de05d88ada48fd1d677 (patch)
tree2caa3ff258206e02dcc481c4fe76fe87dcef92a2 /src/Rahm/Desktop/XMobarLog
parent07a79849230acba680b04cd0cbad085dfc18217b (diff)
downloadrde-3a5d965333bb2d7a115e4de05d88ada48fd1d677.tar.gz
rde-3a5d965333bb2d7a115e4de05d88ada48fd1d677.tar.bz2
rde-3a5d965333bb2d7a115e4de05d88ada48fd1d677.zip
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.
Diffstat (limited to 'src/Rahm/Desktop/XMobarLog')
-rw-r--r--src/Rahm/Desktop/XMobarLog/PendingBuffer.hs17
1 files changed, 9 insertions, 8 deletions
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)