packages feed

ribosome-0.3.0.0: lib/Ribosome/Mapping.hs

module Ribosome.Mapping where

import Ribosome.Control.Monad.Ribo (MonadRibo, NvimE, pluginName)
import Ribosome.Data.Mapping (Mapping(Mapping), MappingIdent(MappingIdent))
import Ribosome.Data.Text (capitalize)
import Ribosome.Nvim.Api.Data (Buffer)
import Ribosome.Nvim.Api.IO (vimCommand)

activateMapping :: Mapping -> m ()
activateMapping _ =
  undefined

mapCommand :: Text -> Bool -> Text
mapCommand mode remap =
  mode <> (if remap then "map" else "noremap")

activateBufferMapping ::
  MonadRibo m =>
  NvimE e m =>
  Buffer ->
  Mapping ->
  m ()
activateBufferMapping _ (Mapping (MappingIdent ident) lhs mode remap _) = do
  name <- pluginName
  vimCommand (unwords (cmdline name))
  where
    cmdline name = [cmd, "<buffer>", lhs, ":call", func name <> "('" <> ident <> "')<cr>"]
    cmd = mapCommand mode remap
    func name = capitalize name <> "Mapping"