proteome-0.3.15.0: lib/Proteome/Plugin.hs
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
module Proteome.Plugin(
plugin,
)
where
import Data.Default.Class (Default(def))
import UnliftIO.STM (TVar)
import Neovim (
Plugin(..),
function,
function',
command,
command',
autocmd,
Neovim,
StartupConfig,
NeovimConfig,
NeovimPlugin,
Synchronous(..),
wrapPlugin,
CommandOption(CmdBang),
)
import Ribosome.Data.Ribosome (Ribosome)
import Proteome.Init (proteomePoll, proteomeStage1, proteomeStage2, proteomeStage4, initialize)
import Proteome.Data.Env (Env)
import Proteome.Add (proAdd, proAddCmd)
import Proteome.Config (proReadConfig)
import Proteome.Tags (proTags)
import Proteome.Save (proSave)
import Proteome.BufEnter (bufEnter)
import Proteome.Project.Activate (proNext, proPrev)
import Proteome.Diag (proDiag)
plugin' :: Ribosome (TVar Env) -> Plugin (Ribosome (TVar Env))
plugin' env =
Plugin {
environment = env,
exports = [
$(function' 'proteomePoll) Sync,
$(function' 'proteomeStage1) Async,
$(function' 'proteomeStage2) Async,
$(function' 'proteomeStage4) Async,
$(function "ProAddProject" 'proAdd) Sync,
$(command "ProAdd" 'proAddCmd) [CmdBang],
$(function' 'proSave) Async,
$(function' 'proTags) Async,
$(command' 'proNext) [],
$(command' 'proPrev) [],
$(function' 'proReadConfig) Sync,
$(command' 'proDiag) [],
$(autocmd 'bufEnter) "BufEnter" def
]
}
plugin :: Neovim (StartupConfig NeovimConfig) NeovimPlugin
plugin = do
env <- initialize
wrapPlugin $ plugin' env