Module Ecaml.Advice
The "advice" feature lets you add to the existing definition of a function, by wrapping around the original function a "piece of advice".
Each piece of advice receives the original function and arguments; its result is returned to the caller as if from the original function.
A function may have multiple pieces of advice, which are composed by nesting earlier advice within later advice.
If async advice is added to an elisp function, that function must be called with run_outside_async
or it will raise at runtime. This cannot be detected at compile time because one can add advice at runtime.
(Info-goto-node "(elisp)Advising Functions")
val around_values : Symbol.t -> Core_kernel.Source_code_position.t -> (Ecaml__.Import.Value.t, 'a) Sync_or_async.t -> ?docstring:string -> for_function:Symbol.t -> ?interactive:Defun.Interactive.t -> ?should_profile:bool -> ((Ecaml__.Import.Value.t list -> Ecaml__.Import.Value.t) -> Ecaml__.Import.Value.t list -> 'a) -> unit
around_values ?docstring ?interactive here return_type advice_name f ~for_function
defines functionadvice_name
with bodyf
and adds it as advice onfor_function
.Compared to
around_funcall
,around_values
provides looser coupling when the advice doesn't need to interact with the arguments or return value offor_function
.
module On_parse_error : sig ... end
val around_funcall : Symbol.t -> Core_kernel.Source_code_position.t -> ?docstring:string -> for_function:Symbol.t -> ?interactive:Defun.Interactive.t -> ?on_parse_error:On_parse_error.t -> ?should_profile:bool -> 'a Ecaml__.Import.Funcall.t -> ('a -> 'a) -> unit
around_funcall
provides typeful access to the arguments and return value offor_function
.