> The following code was modified a bit from the CLG code.  I hope it
> helps.
> 
>   #+(and :cmu (not :cmu19a))
>   (let ((interactive-eval #'ext:interactive-eval))
>     (declare (function interactive-eval))
>     (defun ext:interactive-eval (form)
>       (let ((values (multiple-value-list (funcall interactive-eval form))))
>         (UPDATE-R)
>         (values-list values))))
> 
>   #+:cmu19a
>   (fwrappers:define-fwrapper UPDATE-R-FWRAPPER (form)
>     (let ((values (multiple-value-list (fwrappers:call-next-function form))))
>       (UPDATE-R)
>       (values-list values)))
> 
>   #+:cmu19a
>   (fwrappers:fwrap 'ext:interactive-eval #'UPDATE-R-FWRAPPER
>                    :type :update-r)
> 

I'm using 19a.  The fwrapper version seems to have no effect.  As a
test, I also tried:

(defparameter *count* 0)

(fwrappers:fwrap 'ext:interactive-eval
   (fwrappers:define-fwrapper incrementor (form)
      (let ((values (multiple-value-list (fwrappers:call-next-function form))))
        (incf *count*)
        (values-list values)))
   :type t)

With both wrappers defined, calling ext:interactive-eval manually
causes the wrappers to be called.  However, as far as I can tell,
ext:interactive-eval is NOT called automatically as part of the REPL?

The form that involves redefining ext:interactive-eval causes my
system to segfault.

Cheers,

rif

Reply via email to