module Ribosome.Menu.Prompt where

import Ribosome.Control.Monad.Ribo (MonadRibo, NvimE)
import Ribosome.Menu.Prompt.Data.PromptConfig (PromptConfig(PromptConfig), PromptFlag)
import Ribosome.Menu.Prompt.Nvim (getCharC, nvimPromptRenderer)
import Ribosome.Menu.Prompt.Run (basicTransition)
import Ribosome.Msgpack.Error (DecodeError)

defaultPrompt ::
  NvimE e m =>
  MonadRibo m =>
  MonadBaseControl IO m =>
  MonadDeepError e DecodeError m =>
  [PromptFlag] ->
  PromptConfig m
defaultPrompt :: [PromptFlag] -> PromptConfig m
defaultPrompt =
  ConduitT () PromptEvent m ()
-> ([PromptFlag] -> PromptEvent -> PromptState -> m PromptUpdate)
-> PromptRenderer m
-> [PromptFlag]
-> PromptConfig m
forall (m :: * -> *).
ConduitT () PromptEvent m ()
-> ([PromptFlag] -> PromptEvent -> PromptState -> m PromptUpdate)
-> PromptRenderer m
-> [PromptFlag]
-> PromptConfig m
PromptConfig (Double -> ConduitT () PromptEvent m ()
forall e (m :: * -> *).
(NvimE e m, MonadRibo m, MonadBaseControl IO m) =>
Double -> ConduitT () PromptEvent m ()
getCharC Double
0.033) [PromptFlag] -> PromptEvent -> PromptState -> m PromptUpdate
forall (m :: * -> *).
Monad m =>
[PromptFlag] -> PromptEvent -> PromptState -> m PromptUpdate
basicTransition PromptRenderer m
forall e (m :: * -> *).
(NvimE e m, MonadDeepError e DecodeError m) =>
PromptRenderer m
nvimPromptRenderer