ribosome-0.9.9.9: lib/Ribosome/Api/Function.hs
-- |Defining Neovim functions.
module Ribosome.Api.Function where
import qualified Data.Text as Text
import Exon (exon)
import Ribosome.Host.Api.Effect (nvimExec)
import Ribosome.Host.Effect.Rpc (Rpc)
-- |Define a Neovim function.
defineFunction ::
Member Rpc r =>
-- |Function name.
Text ->
-- |Function parameters.
[Text] ->
-- |Vimscript lines that form the function body.
[Text] ->
Sem r ()
defineFunction name params body =
void $ nvimExec (unlines (sig : body ++ ["endfunction"])) True
where
sig =
[exon|function! #{name}(#{Text.intercalate ", " params})|]