ribosome-0.3.0.0: lib/Ribosome/Tmux/Run.hs
module Ribosome.Tmux.Run where
import Chiasma.Data.TmuxError (TmuxError)
import Chiasma.Monad.Stream (TmuxProg)
import qualified Chiasma.Monad.Stream as Chiasma (runTmux)
import Chiasma.Native.Api (TmuxNative(TmuxNative))
import Control.Monad.Catch (MonadMask)
import Control.Monad.DeepError (MonadDeepError)
import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Trans.Except (ExceptT, runExceptT)
import Data.DeepPrisms (DeepPrisms)
import Ribosome.Config.Setting (settingMaybe)
import Ribosome.Config.Settings (tmuxSocket)
import Ribosome.Control.Monad.Ribo (MonadRibo, Nvim, Ribo)
runTmux ::
(MonadIO m, MonadRibo m, MonadDeepError e TmuxError m, MonadMask m, Nvim m) =>
TmuxProg m a ->
m a
runTmux prog = do
socket <- settingMaybe tmuxSocket
Chiasma.runTmux (TmuxNative socket) prog
runTmuxE ::
(MonadIO m, MonadRibo m, MonadMask m, Nvim m) =>
TmuxProg (ExceptT TmuxError m) a ->
m (Either TmuxError a)
runTmuxE =
runExceptT . runTmux
class RunTmux m where
runRiboTmux :: TmuxProg m b -> m b
instance DeepPrisms e TmuxError => RunTmux (Ribo s e) where
runRiboTmux = runTmux