haskelisp-0.1.0.0: src/Emacs/Variable.hs
{-# LANGUAGE OverloadedStrings #-}
module Emacs.Variable
( setVariable
, variableValue
, isVariableBounded
) where
import Emacs.Core
import Data.Text
setVariable :: ToEmacsValue a => Text -> a -> EmacsM EmacsValue
setVariable name val =
funcall2 "set" (Symbol name) val
isVariableBounded :: Text -> EmacsM Bool
isVariableBounded name =
isNotNil =<< funcall1 "boundp" (Symbol name)
variableValue :: Text -> EmacsM (Maybe EmacsValue)
variableValue name = do
bounded <- isNotNil =<< funcall1 "boundp" (Symbol name)
if bounded
then Just <$> funcall1 "symbol-value" (Symbol name)
else pure Nothing