[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug in Xerox-Medley Dec PCL

  3/4> (slot-value fifi 'ears) prints "The slot EARS is unbound in the
  object #<POODLE 12345566>" (it does *not* give an error/break)
  3/5> (setf (slot-value fifi 'ears) 4) prints "The slot EARS is unbound in
  object #<POODLE 1234566>" (it does *not* give an error/break)

I suspect that errors are being signalled, but due to the IL:HELPDEPTH
feature a break window is not being created.  Try "retry 4" and you should
get a break.

If the problem is in the undo facility, then the quick workaround is to
(SETQ XCL:*EXEC-MAKE-UNDOABLE-P* NIL).  How often do you really use the
undo facility?  If the answer is 'quite' then you might try something like

(defun undoably-setf-slot-value (object slot-name new-value)
  (if (slot-boundp object slot-name)
        `(setf (slot-value ',object ',slot-name)
               ',(slot-value object slot-name)))
      (il:undosave `(slot-makeunbound ',object ',slot-name)))
  (setf (slot-value object slot-name) new-value))
(setf (get 'slot-value :undoable-setf-inverse) 'undoably-setf-slot-value)