module Ribosome.Plugin.Builtin where import Data.MessagePack (Object(ObjectString, ObjectNil)) import Neovim.Plugin.Classes (Synchronous(Async)) import Ribosome.Control.Monad.Ribo (MonadRibo, NvimE) import Ribosome.Data.Text (capitalize) import Ribosome.Plugin.TH.Handler (RpcDef(RpcDef), RpcDefDetail(RpcFunction)) import Ribosome.Scratch (killScratchByName) deleteScratch :: MonadRibo m => NvimE e m => [Object] -> m Object deleteScratch :: [Object] -> m Object deleteScratch [ObjectString name] = do Object ObjectNil Object -> m () -> m Object forall (f :: * -> *) a b. Functor f => a -> f b -> f a <$ Text -> m () forall (m :: * -> *) e. (MonadRibo m, NvimE e m) => Text -> m () killScratchByName (ByteString -> Text forall a b. ConvertUtf8 a b => b -> a decodeUtf8 ByteString name) deleteScratch [Object] _ = Object -> m Object forall (m :: * -> *) a. Monad m => a -> m a return Object ObjectNil deleteScratchRpc :: MonadRibo m => NvimE e m => Text -> RpcDef m deleteScratchRpc :: Text -> RpcDef m deleteScratchRpc Text pluginName = RpcDefDetail -> Text -> ([Object] -> m Object) -> RpcDef m forall (m :: * -> *). RpcDefDetail -> Text -> ([Object] -> m Object) -> RpcDef m RpcDef (Synchronous -> RpcDefDetail RpcFunction Synchronous Async) (Text -> Text capitalize Text pluginName Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "DeleteScratch") [Object] -> m Object forall (m :: * -> *) e. (MonadRibo m, NvimE e m) => [Object] -> m Object deleteScratch