!,\      !"# $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  (c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comSafe 134569<V] emacs-moduleCPossible Emacs function call outcomes. This is Haskell's version of emacs-moduleFunction has returned normally. emacs-module%Function has signaled an error using signal. emacs-moduleFunction has exit using throw.(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNoneK1(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNoneKu emacs-module*Value that is independent of environment (Env) that produced it.LCan be used to e.g. cache values that are expensive to compute from scratch. emacs-module_Basic handle on an Emacs value. Can be GC'ed after any call into Emacs. To overcome that, use ValueGC.eNot a real pointer because emacs values are not really pointers. That is, they're completely opaque.(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone2(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone l emacs-moduleQuasi-quoter for .. Avoids some runtime overhead of creating a 5, but in other respects is absolutely equivalent to . ![esym|foo|] == mkSymbolName "foo"True(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone6*@ emacs-module*Value that is independent of environment (Env) that produced it. Incidentally, this implies that it's "protected" against Emacs GC and thus will not unexpectedly go out of scope.In order to prevent memory leaks, value is registered in the Emacs monad than produced it and will be freed when the monad finishes. To make the connection clear the value is tagged with parameter s., which serves the same purpose as tag of the ST^ monad. That is, it ensures that value cannot leave the scope of the monad that produced it.(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone+(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comSafe+F/t emacs-modulemCall stacks for all emacs-related functions in Haskell. Will be disabled unless this package was build with  assertions flag enabled.(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone0 !" !"(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone<3R% emacs-module"Emacs environment, right from the 'emacs-module.h'. #$%&(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone]4(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone<VJ emacs-module4A wrapper around C value that denotes true or false. emacs-moduleCheck whether a  denotes true., emacs-moduleCheck wheter passed  emacs_envR structure has expected size so that we will be able to access all of its fields.@ emacs-moduleWCopy the content of the Lisp string VALUE to BUFFER as an utf8 null-terminated string.SIZE must point to the total size of the buffer. If BUFFER is NULL or if SIZE is not big enough, write the required buffer size to SIZE and return true.VNote that SIZE must include the last null byte (e.g. "abc" needs a buffer of size 4).2Return true if the string was successfully copied.0 emacs-module Symbol output emacs-module Data output1 emacs-module Error symbol emacs-module Error data2 emacs-module Tag, a symbol emacs-moduleValue5 emacs-module Minimum arity emacs-module Maximum arity emacs-moduleImplementation emacs-module Documentation emacs-module Extra data6 emacs-moduleFunction emacs-moduleNumber of arguments emacs-moduleActual arguments7 emacs-moduleFunction emacs-moduleNumber of arguments emacs-moduleActual arguments@ emacs-moduleEmacs value that holds a string emacs-moduleDestination, may be NULL emacs-module SIZE pointerA emacs-module!0-terminated utf8-encoded string. emacs-moduleLength.%'()*+,-./0123456789:;<=>?@ABCDEFGHI (c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNoneNJ emacs-modulePass to Bl so that Emacs will free the Haskell's stable pointer when the corresponding elisp value goes out of scope..#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ.%)*+(',-./0123456789:;<=>?@ABCDEFGHI&$#J (c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone<VRK emacs-module"Emacs environment, right from the 'emacs-module.h'.KLMNOKLMNO (c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone&',-.;<=>?FSTVicP emacs-moduleBHelper to retrieve number of arguments a function takes for Emacs.T emacs-moduleMSpecification of the arguments that exposed functions can receive from Emacs.This type family allows to declaratively specify how many required and optional arguments a function can take and whether it accepts rest arguments. It's a direct translation of argument lists in Emacs lisp, e.g. `(defun foo (x y z &optional w t &rest quux) (+ (* x y z) (* (or w 1) (or t 2)) (length quux)))tThe function above has 3 required arguments, 2 optional and also has rest arguments. The type family below has two ] s and one  to provide that info.U emacs-module-End of argument list of an exported funciton.W emacs-module6All other arguments of an exported function as a list.Y emacs-module*Optional argument of an exported function.[ emacs-module*Required argument of an exported function.] emacs-moduleType-level Peano numbers.Indented to be used with  DataKinds extension enabled.PQRSTUVWXYZ[\]_^]_^TRSPQ[\YZWXUV (c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone$1<QVirh emacs-modulemA low-level error thrown when assumptions of this package are violated and it's not safe to proceed further.l emacs-module7A high-level error thrown when an Emacs function fails.q emacs-moduleCError thrown to emacs by Haskell functions when anything goes awry.v emacs-module%A Haskell exception used to signal a throw& exit performed by an Emacs function.7Unlikely to be needed when developing Emacs extensions. emacs-moduleXCatch all errors this package might throw in an IO action and make Emacs aware of them.DThis is a convenience function intended to be used around exported  initialise" entry point into an Emacs module.{ emacs-module Function name emacs-module Message body| emacs-moduleMessage emacs-moduleError data from Emacs~ emacs-module Error message emacs-moduleResult to return on error.hijklmnopqrstuvwxyz{|}~vwxyzqrstu{lmnop|}hijk~ (c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone ,<>?FQTVh" emacs-moduleA mtl-style typeclass for interacting with Emacs. Typeclass functions are mostly direct translations of emacs interface provided by 'emacs-module.h'.#For more functions please refer to Emacs.Module.Functions module. emacs-module#Emacs value that is managed by the m" monad. Will be cleaned up after m finishes its execution. emacs-module;Type of values that Haskell functions may returns to Emacs. emacs-module Return an  back to Emacs. emacs-module*Check whether a non-local exit is pending. emacs-moduleOCheck whether a non-local exit is pending and get detailed data in case it is. emacs-moduleEquivalent to Emacs's signal function.iNB if a non-local exit is alredy pending, this function will not overwrite it. In order to do that, use . emacs-moduleEquivalent to Emacs's throw function.iNB if a non-local exit is alredy pending, this function will not overwrite it. In order to do that, use . emacs-moduleClean any pending local exits. emacs-module?Make value eligible for collection during next GC within Emacs. emacs-moduleMake Haskell function available as an anonymoucs Emacs function. In order to be able to use it later from Emacs it should be fed into  bindFunction.NB Each call to this function produces a small memory leak that will not be freed up. Hence, try not to create unbounded number of functions. This happens because GHC has to generate some wrapping code to convert between ccall and Haskell calling convention each time a function is exported. It is possible to free this code after function will not be used, but it's currently not supported. emacs-module9Invoke an Emacs function that may call back into Haskell. emacs-module]Invoke an Emacs function. The function should be simple and must not call back into Haskell. emacs-modulesInvoke an Emacs function and ignore its result. The function should be simple and must not call back into Haskell. emacs-module$Convert a string to an Emacs symbol. emacs-module.Get type of an Emacs value as an Emacs symbol. emacs-module!Check whether Emacs value is not nil. emacs-modulePrimitive equality. Tests whether two symbols, integers or characters are the equal, but not much more. For more complete equality comparison do %funcallPrimitive [esym|equal|] [x, y] emacs-module*Try to unpack a wide integer from a value. emacs-modulePack a wide integer for Emacs. emacs-module3Try to unpack a floating-point number from a value. emacs-module1Convert a floating-point number into Emacs value. emacs-module,Extract string contents from an Emacs value. emacs-module6Convert a utf8-encoded ByteString into an Emacs value. emacs-module+Extract a user pointer from an Emacs value. emacs-module(Pack a user pointer into an Emacs value. emacs-moduleSet user pointer to a new value emacs-module%Extract a finaliser from an user_ptr. emacs-module&Assign new finaliser into an user_ptr. emacs-module(Extract an element from an Emacs vector. emacs-module'Assign an element into an Emacs vector. emacs-moduleGet size of an Emacs vector. emacs-module.A Haskell functions that is callable by Emacs.This type differs from  in that it has an extra parameter which will result in an additional pointer being passed to this function when it's called by Emacs. Contents of the pointer is specified when function is exported to Emacs. emacs-module3Basic Haskell function that can be called by Emacs. emacs-module Error symbol emacs-module=Error data, will be converted to a list as Emacs API expects. emacs-moduleTag emacs-moduleData emacs-moduleHaskell function to export emacs-module Documentation emacs-module/Extra data to be passed to the Haskell function emacs-module Function name emacs-module Arguments emacs-module Function name emacs-module Arguments emacs-module Function name emacs-module Arguments emacs-module\Finalisation action that will be executed when user pointer gets garbage-collected by Emacs. emacs-moduleVector emacs-moduleIndex emacs-module New value""(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone$&'.3;<=>?FKQTVil emacs-module7Concrete monad for interacting with Emacs. It provides: Ability to call Emacs C functions and automatically rethrows any errors (non-local exits) from elisp as Haskell exceptions.Tracks ownership of any produced Emacs values and communicates that to Emacs, so that GC on Emacs side will not make any values in Haskell invalid (funnily enough, this can happen!). Parameter sV serves to make ownership-tracking capabilities possible. It's use is the same as in [ monad. That is, it creates local threads so that no produced Emacs values can leave past . emacs-moduleIExecute emacs interaction session using an environment supplied by Emacs. emacs-module9Protect a raw value (i.e. a plain pointer) from Emacs GC.XUsers writing emacs extersions will likely have no need to call this function directly. emacs-module Error message emacs-module Error message(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNone<QV]_" emacs-module Assign a name to function value. emacs-moduleMake Haskell function available as an anonymoucs Emacs function. In order to be able to use it later from Emacs it should be fed into . This is a simplified version of . emacs-moduleQSignal to Emacs that certain feature is being provided. Returns provided symbol. emacs-modulePack a stable pointer as Emacs user_ptr. emacs-moduleTry to obtain an  from Emacs value.`This function will fail if Emacs value is not an integer or contains value too big to fit into  on current architecture. emacs-modulePack an  integer for Emacs. emacs-moduleExtract string contents as  from an Emacs value. emacs-module*Convert a Text into an Emacs string value. emacs-moduleExtract string contents as  from an Emacs value. emacs-module5Convert a ShortByteString into an Emacs string value. emacs-module&Extract a boolean from an Emacs value. emacs-module*Convert a Bool into an Emacs string value. emacs-module8Feed a value into a function and clean it up afterwards. emacs-module&Get all elements form an Emacs vector. emacs-moduleSGet all elements form an Emacs vector using specific function to convert elements. emacs-moduleSGet all elements form an Emacs vector using specific function to convert elements. emacs-moduleCreate an Emacs vector. emacs-moduleConcatenate two vectors. emacs-module#Make a cons pair out of two values. emacs-moduleTake first element of a pair. emacs-moduleTake second element of a pair. emacs-moduleA nil symbol aka empty list. emacs-module$Mutate first element of a cons pair. emacs-module%Mutate second element of a cons pair. emacs-module1Construct vanilla Emacs list from a Haskell list. emacs-module+Extract vanilla Emacs list as Haskell list. emacs-module-Extract vanilla Emacs list as a Haskell list. emacs-moduleQExtract vanilla Emacs list as a reversed Haskell list. It's more efficient than L but doesn't preserve order of elements that was specified from Emacs side. emacs-module'Fold Emacs list starting from the left. emacs-module'Fold Emacs list starting from the left. emacs-module#Add new 'face property to a string. emacs-moduleConcatenate two strings. emacs-module+Convert an Emacs value into a string using prin1-to-string. emacs-moduleWrapper around Emacs  symbol-nameM function - take a symbol and produce an Emacs string with its textual name. emacs-moduleName emacs-moduleFunction value emacs-moduleFeature to provide emacs-modulecar emacs-modulecdr emacs-module Cons pair emacs-module New value emacs-module Cons pair emacs-module New value emacs-moduleString to add face to emacs-module Face name emacs-modulePropertised string$$(c) Sergey Vinokurov 2018BSD3-style (see LICENSE)serg.foo@gmail.comNoneg%'(UVWXYZ[\]_^hijklmnop>]_^[\YZWXUVlmnophijk('% !"#$%&'()*+,-./01234566789:;<=>?@ABCDDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc d e e f g h i j k l m n n o o p p q q r s t u v w x y z { | } } ~           I J K L M P Q R S T U [ \ a b c  O.01>@)emacs-module-0.1.1-FmFlGDZNs5TLbe7KHU0IIP Emacs.ModuleEmacs.Module.FunctionsData.Emacs.Module.Env.FunctionsData.Emacs.Module.NonNullPtrData.Emacs.Module.ValueData.Emacs.Module.SymbolNameData.Emacs.Module.SymbolName.THEmacs.Module.AssertData.Emacs.Module.EnvData.Emacs.Module.RuntimeData.Emacs.Module.ArgsEmacs.Module.ErrorsEmacs.Module.Monad.ClassEmacs.Module.Monad%Data.Emacs.Module.NonNullPtr.InternalData.Emacs.Module.Raw.Value%Data.Emacs.Module.SymbolName.Internal Data.Emacs.Module.Value.Internal"Data.Emacs.Module.Raw.Env.InternalData.Emacs.Module.Raw.Env.THData.Emacs.Module.Raw.Env Control.MonadST(exceptions-0.10.0-DmsI5QMvE6e6QgVkMINEKbControl.Monad.Catch MonadThrow MonadMask4safe-exceptions-checked-0.1.0-AgNFSTSawju7lAHL89K9tXControl.Exception.Safe.CheckedThrows FuncallExitFuncallExitReturnFuncallExitSignalFuncallExitThrowfuncallExitToNumfuncallExitFromNum$fEqFuncallExit$fOrdFuncallExit$fShowFuncallExit$fDataFuncallExit$fGenericFuncallExit$fLiftFuncallExit$fFunctorFuncallExit$fFoldableFuncallExit$fTraversableFuncallExit NonNullPtr unNonNullPtrRawValue SymbolName mkSymbolNamemkSymbolNameShortByteStringuseSymbolNameAsCStringesymValue valuePayloadvalueReleaseHandle WithCallStack emacsAssert mkNonNullPtr allocaNonNullallocaBytesNonNull RawFunctionRawFunctionTypeEnv exportToEmacsUserPtrFinaliserUserPtrFinaliserTypeEnumFuncallExitunEnumFuncallExit isValidEnv makeGlobalRef freeGlobalRefnonLocalExitChecknonLocalExitGetnonLocalExitSignalnonLocalExitThrownonLocalExitClearvariadicFunctionArgs makeFunctionfuncallfuncallPrimitiveinterntypeOfisNotNileqextractInteger makeInteger extractFloat makeFloatcopyStringContents makeString makeUserPtr getUserPtr setUserPtrgetUserFinalisersetUserFinaliservecGetvecSetvecSizefreeStablePtrFinaliserRuntime unRuntimevalidateRuntimegetEnvironment GetAritiesaritiesEmacsInvocationsupplyEmacsArgs EmacsArgsStopRestORNatZS $fNatValueS $fNatValueZ$fEmacsInvocationSoptrest$fEmacsInvocationZSrest$fEmacsInvocationZZTrue$fEmacsInvocationZZFalse$fGetAritiesreqoptTrue$fGetAritiesreqoptFalseEmacsInternalErroremacsInternalErrMsgemacsInternalErrStack EmacsError emacsErrMsg emacsErrData emacsErrStack UserErroruserErrFunctionName userErrMsg userErrStack EmacsThrow emacsThrowTagemacsThrowValuereportEmacsThrowToEmacs mkUserError mkEmacsErrorreportErrorToEmacsmkEmacsInternalErrorreportInternalErrorToEmacsformatSomeExceptionreportAnyErrorToEmacsreportAllErrorsToEmacs$fExceptionEmacsThrow$fShowEmacsThrow$fPrettyUserError$fExceptionUserError$fPrettyEmacsError$fExceptionEmacsError$fPrettyEmacsInternalError$fExceptionEmacsInternalError$fShowUserError$fShowEmacsError$fShowEmacsInternalError MonadEmacsEmacsRef EmacsReturn produceRef freeValuemakeFunctionExtrafuncallPrimitive_extractWideIntegermakeWideInteger extractDouble makeDouble extractStringextractUserPtr assignUserPtrextractUserPtrFinaliserassignUserPtrFinaliserEmacsFunctionExtra EmacsFunctionEmacsM runEmacsM$fMonadEmacsTYPEEmacsM$fMonadBaseControlIOEmacsM$fMonadResourceEmacsM$fFunctorEmacsM$fApplicativeEmacsM $fMonadEmacsM$fMonadIOEmacsM$fMonadThrowEmacsM$fMonadCatchEmacsM$fMonadMaskEmacsM$fMonadBaseEmacsM$fMonadFixEmacsM bindFunctionprovidemakeUserPtrFromStablePtrextractStablePtrFromUserPtr extractIntmakeInt extractTextmakeTextextractShortByteStringmakeShortByteString extractBoolmakeBool withCleanup extractVectorextractVectorWithextractUnboxedVectorWith makeVectorvconcat2conscarcdrnilsetcarsetcdrmakeList extractListextractListWithextractListRevWithfoldlEmacsListWithunfoldEmacsListWith addFacePropconcat2 valueToText symbolName GlobalRef unGlobalRef unRawValue unSymbolName unRawFunctionunEnvtoPtrtemplate-haskellLanguage.Haskell.TH.SyntaxSafetyUnsafeSafe Interruptible wrapEmacsFuncCBooleanisTruthyghc-prim GHC.TypesBool makeValuecheckExitAndRethrowInHaskellcheckExitAndRethrowInHaskell'Int text-1.2.3.0Data.Text.InternalTextbytestring-0.10.8.2Data.ByteString.Short.InternalShortByteString