{-# LANGUAGE TemplateHaskell #-} module Proteome.Plugin( plugin, ) where import UnliftIO.STM (TVar) import Neovim import Ribosome.Data.Ribosome (Ribosome(Ribosome)) import Proteome.Init import Proteome.Data.Env import Proteome.Add (proAdd, proteomePoll) import Proteome.Config (proReadConfig) import Proteome.Tags (proTags) import Proteome.Save (proSave) plugin' :: TVar Env -> Plugin (Ribosome (TVar Env)) plugin' env = Plugin { environment = Ribosome "proteome" env, exports = [ $(function' 'proteomePoll) Sync, $(function' 'proteomeStage2) Async, $(function' 'proteomeStage4) Async, $(function' 'proAdd) Async, $(function' 'proSave) Async, $(function' 'proTags) Async, $(function' 'proReadConfig) Sync ] } plugin :: Neovim (StartupConfig NeovimConfig) NeovimPlugin plugin = do env <- initialize wrapPlugin $ plugin' env