Ecaml.AdviceSourceThe "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 defun_around_values :
Symbol.t ->
Core.Source_code_position.t ->
(Ecaml_value.Value.t, 'a) Sync_or_async.t ->
docstring:string ->
?interactive:Defun.Interactive.t ->
?should_profile:bool ->
((Ecaml_value.Value.t list -> Ecaml_value.Value.t) ->
Ecaml_value.Value.t list ->
'a) ->
tdefun_around_values advice_name here ~docstring f creates advice named advice_name with body f. Compared to defun_around_funcall, defun_around_values provides looser coupling when the advice doesn't need to interact with the arguments or return value of the advised function.
val defun_around_funcall :
Symbol.t ->
Core.Source_code_position.t ->
docstring:string ->
?interactive:Defun.Interactive.t ->
?on_parse_error:On_parse_error.t ->
?should_profile:bool ->
'a Ecaml_value.Funcall.t ->
('a -> 'a) ->
tdefun_around_funcall provides typeful access to the arguments and return value of the advised function.