module Neovim.Util (
whenM,
unlessM,
oneLineErrorMessage,
) where
import Control.Monad (unless, when)
import qualified Data.Text as T
import Neovim.Context
whenM :: (Monad m) => m Bool -> m () -> m ()
whenM :: forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM m Bool
mp m ()
a = m Bool
mp forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Bool
p -> forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when Bool
p m ()
a
unlessM :: (Monad m) => m Bool -> m () -> m ()
unlessM :: forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM m Bool
mp m ()
a = m Bool
mp forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Bool
p -> forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless Bool
p m ()
a
oneLineErrorMessage :: Doc AnsiStyle -> T.Text
oneLineErrorMessage :: Doc AnsiStyle -> Text
oneLineErrorMessage Doc AnsiStyle
d = case Text -> [Text]
T.lines forall a b. (a -> b) -> a -> b
$ Doc AnsiStyle -> Text
docToText Doc AnsiStyle
d of
(Text
x : [Text]
_) -> Text
x
[] -> forall a. Monoid a => a
mempty