packages feed

ribosome-0.4.0.0: lib/Ribosome/Plugin/Builtin.hs

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 [ObjectString name] = do
  ObjectNil <$ killScratchByName (decodeUtf8 name)
deleteScratch _ =
  return ObjectNil

deleteScratchRpc ::
  MonadRibo m =>
  NvimE e m =>
  Text ->
  RpcDef m
deleteScratchRpc pluginName =
  RpcDef (RpcFunction Async) (capitalize pluginName <> "DeleteScratch") deleteScratch