packages feed

ribosome-0.4.0.0: lib/Ribosome/Api/Mode.hs

module Ribosome.Api.Mode where

import Ribosome.Control.Monad.Ribo (NvimE)
import Ribosome.Msgpack.Decode (MsgpackDecode(..), msgpackFromString)
import Ribosome.Nvim.Api.IO (vimCallFunction)

data NvimMode =
  Normal
  |
  Visual
  |
  Insert
  |
  Other Text
  deriving (Eq, Show)

instance IsString NvimMode where
  fromString "n" = Normal
  fromString "v" = Visual
  fromString "V" = Visual
  fromString "CTRL-V" = Visual
  fromString "i" = Insert
  fromString a = Other (toText a)

instance MsgpackDecode NvimMode where
  fromMsgpack = msgpackFromString "NvimMode"

mode ::
  NvimE e m =>
  m NvimMode
mode =
  vimCallFunction "mode" []

visualModeActive ::
  NvimE e m =>
  m Bool
visualModeActive =
  (== Visual) <$> mode