ribosome-0.4.0.0: lib/Ribosome/Api/Register.hs
module Ribosome.Api.Register where
import Ribosome.Control.Monad.Ribo (NvimE)
import Ribosome.Data.Register (Register)
import qualified Ribosome.Data.Register as Register (Register(..))
import Ribosome.Data.RegisterType (RegisterType)
import qualified Ribosome.Data.RegisterType as RegisterType (RegisterType(..))
import Ribosome.Msgpack.Decode (MsgpackDecode)
import Ribosome.Msgpack.Encode (MsgpackEncode(toMsgpack))
import Ribosome.Nvim.Api.IO (vimCallFunction)
starRegister :: Register
starRegister =
Register.Special "*"
unnamedRegister :: Register
unnamedRegister =
Register.Special "\""
setregAs ::
NvimE e m =>
MsgpackEncode a =>
RegisterType ->
Register ->
a ->
m ()
setregAs regType register text =
vimCallFunction "setreg" [toMsgpack register, toMsgpack text, toMsgpack regType]
setreg ::
NvimE e m =>
Register ->
Text ->
m ()
setreg =
setregAs RegisterType.Character
setregLine ::
NvimE e m =>
Register ->
[Text] ->
m ()
setregLine =
setregAs RegisterType.Line
getregtype ::
NvimE e m =>
Register ->
m RegisterType
getregtype register =
vimCallFunction "getregtype" [toMsgpack register]
getregAs ::
NvimE e m =>
MsgpackDecode a =>
Bool ->
Register ->
m a
getregAs list register =
vimCallFunction "getreg" [toMsgpack register, toMsgpack (0 :: Int), toMsgpack list]
getreg ::
NvimE e m =>
Register ->
m (Either [Text] Text)
getreg register =
withType =<< getregtype register
where
withType RegisterType.Line =
Left <$> getregAs True register
withType _ =
Right <$> getregAs False register
getregList ::
NvimE e m =>
Register ->
m [Text]
getregList =
getregAs True