module Ribosome.Api.Option( optionCat, rtpCat, optionList, option, optionString, ) where import Control.Monad ((>=>)) import Data.List.Split (splitOn) import Neovim (Neovim, vim_get_option', fromObject', vim_set_option', toObject, NvimObject) optionCat :: String -> String -> Neovim e () optionCat name extra = do current <- vim_get_option' name >>= fromObject' vim_set_option' name $ toObject $ current ++ "," ++ extra rtpCat :: String -> Neovim e () rtpCat = optionCat "runtimepath" option :: NvimObject a => String -> Neovim e a option = vim_get_option' >=> fromObject' optionString :: String -> Neovim e String optionString = option optionList :: String -> Neovim e [String] optionList name = do s <- option name return $ splitOn "," s