module XMonad.Prompt.Eval (
evalPrompt
,evalPromptWithOutput
,showWithDzen
) where
import XMonad
import XMonad.Prompt
import XMonad.Actions.Eval
import XMonad.Util.Dzen
data EvalPrompt = EvalPrompt
instance XPrompt EvalPrompt where
showXPrompt :: EvalPrompt -> String
showXPrompt EvalPrompt = "Eval: "
evalPrompt :: EvalConfig -> XPConfig -> X ()
evalPrompt :: EvalConfig -> XPConfig -> X ()
evalPrompt evc :: EvalConfig
evc c :: XPConfig
c = EvalConfig -> XPConfig -> (String -> X ()) -> X ()
evalPromptWithOutput EvalConfig
evc XPConfig
c (X () -> String -> X ()
forall a b. a -> b -> a
const (X () -> String -> X ()) -> X () -> String -> X ()
forall a b. (a -> b) -> a -> b
$ () -> X ()
forall (m :: * -> *) a. Monad m => a -> m a
return ())
evalPromptWithOutput :: EvalConfig -> XPConfig -> (String -> X ()) -> X ()
evalPromptWithOutput :: EvalConfig -> XPConfig -> (String -> X ()) -> X ()
evalPromptWithOutput evc :: EvalConfig
evc c :: XPConfig
c f :: String -> X ()
f =
(Maybe String -> (String -> X ()) -> X ())
-> (String -> X ()) -> Maybe String -> X ()
forall a b c. (a -> b -> c) -> b -> a -> c
flip Maybe String -> (String -> X ()) -> X ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust String -> X ()
f (Maybe String -> X ()) -> X (Maybe String) -> X ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< EvalPrompt
-> XPConfig
-> ComplFunction
-> (String -> X String)
-> X (Maybe String)
forall p a.
XPrompt p =>
p -> XPConfig -> ComplFunction -> (String -> X a) -> X (Maybe a)
mkXPromptWithReturn EvalPrompt
EvalPrompt XPConfig
c (IO [String] -> ComplFunction
forall a b. a -> b -> a
const (IO [String] -> ComplFunction) -> IO [String] -> ComplFunction
forall a b. (a -> b) -> a -> b
$ [String] -> IO [String]
forall (m :: * -> *) a. Monad m => a -> m a
return []) (EvalConfig -> String -> X String
evalExpressionWithReturn EvalConfig
evc)
showWithDzen :: Int -> [String] -> String -> X ()
showWithDzen :: Int -> [String] -> String -> X ()
showWithDzen t :: Int
t args :: [String]
args "Error" = String -> [String] -> Int -> X ()
dzenWithArgs "Error" (["-bg","#ff0000","-fg","#000000"][String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++[String]
args) Int
t
showWithDzen t :: Int
t args :: [String]
args s :: String
s | String
s String -> [String] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` ["","()"] = () -> X ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
| Bool
otherwise = String -> [String] -> Int -> X ()
dzenWithArgs String
s (["-bg","#00c600","-fg","#000000"][String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++[String]
args) Int
t