Experimenting with `goto-char' and `re-search-backwards' indicates
that this limitation no longer applies. The rewrite using nadvice in
commit 8b62d7427e12bbf07ab3454cc061a6b43ded56dd might have eliminated
this issue.
* lisp/emacs-lisp/trace.el: Allow trace context args to be forms
This lifts the restriction of context arguments needing to be
functions, when calling trace functions from lisp code.
(trace--read-extra-args, trace-entry-message, trace-entry-message):
Move the output formatting already used for interactive context into
the trace-*-message functions for use in non-interactive cases as
well. Previously it was necessary for context functions to format
their output in a trace-aware manner, making a custom wrapper function
necessary to obtain well-formatted output even when the desired
context had an existing function.
(trace-function-internal, trace-make-advice): Move the generation of
an 'empty' context function into `trace-make-advice', which now takes
care of generating a function for any non-function context.
(trace-make-context): New function returning a context function for
an expression argument; extracted from `trace--read-extra-args'.
(trace--read-extra-args, trace-make-advice): Call it.