|
From: Lynn Q. <qu...@AI...> - 2003-12-20 13:35:20
|
Bob Rogers wrote:
> I can only imagine that
> the ilisp process filter is running during the sit-for interval, and it
> somehow fails to preserve the current buffer.
Are native threads somehow being used here? I am running on a dual processor
AMD Athlon machine. That might help to explain the problem.
Wrapping save-excursion around (sit-for 1) fixes some of the problems,
but I encountered another problem:
When I did a M-. in a real application I got an error in
lisp-make-cl-method-definition-regexp. It appears to be a
bug related to case-sensitivity in read-from-string. See below.
I did M-. on a method call (selected-object interactor) and got an
error:
Here is the *Messages* buffer
and backtrace:
*Messages*
Finding any selected-object definitions
GUI::SELECTED-OBJECT is a generic function with 1 method.
lisp-find-next-possibility returned [cl-struct-ilisp-defn-spec (nil nil "(METHOD GUI::SELECTED-OBJECT NIL)") "(METHOD GUI::SELECTED-OBJECT NIL)" "function" "/m/opt/IU/FREEDIUS/lisp/basic-gui/interactor.lisp" nil nil].
[doing (lisp-locate-definition-in-file lisp-locate-clisp [cl-struct-ilisp-defn-spec (nil nil "(METHOD GUI::SELECTED-OBJECT NIL)") "(METHOD GUI::SELECTED-OBJECT NIL)" "function" "/m/opt/IU/FREEDIUS/lisp/basic-gui/interactor.lisp" nil nil] t).]
Searching /m/opt/IU/FREEDIUS/lisp/basic-gui/interactor.lisp for function (METHOD GUI::SELECTED-OBJECT NIL)
[doing (lisp-locate-clisp (nil nil "(METHOD GUI::SELECTED-OBJECT NIL)") "function" t nil).]
lisp-make-cl-method-definition-regexp:
Entering debugger...
_______________________________
Backtrace:
Debugger entered--Lisp error: (wrong-type-argument consp NIL)
reverse(NIL)
lisp-make-cl-method-definition-regexp("(METHOD GUI::SELECTED-OBJECT NIL)")
lisp-make-cl-method-fspec-finder([cl-struct-ilisp-defn-spec (nil nil "(METHOD GUI::SELECTED-OBJECT NIL)") "(METHOD GUI::SELECTED-OBJECT NIL)" "function" "/m/opt/IU/FREEDIUS/lisp/basic-gui/interactor.lisp" nil nil])
lisp-make-cl-definition-regexp([cl-struct-ilisp-defn-spec (nil nil "(METHOD GUI::SELECTED-OBJECT NIL)") "(METHOD GUI::SELECTED-OBJECT NIL)" "function" "/m/opt/IU/FREEDIUS/lisp/basic-gui/interactor.lisp" nil nil])
lisp-locate-clisp((nil nil "(METHOD GUI::SELECTED-OBJECT NIL)") "function" t nil)
lisp-locate-definition-in-file(lisp-locate-clisp [cl-struct-ilisp-defn-spec (nil nil "(METHOD GUI::SELECTED-OBJECT NIL)") "(METHOD GUI::SELECTED-OBJECT NIL)" "function" "/m/opt/IU/FREEDIUS/lisp/basic-gui/interactor.lisp" nil nil] t)
lisp-next-definition(nil t)
next-definition-lisp(nil t)
lisp-edit-definitions-normal(("GUI" "::" "selected-object") "any" nil nil)
edit-definitions-lisp(("GUI" "::" "selected-object") "any")
call-interactively(edit-definitions-lisp)
_______________________________
I tracked to problem down to the NIL being passed to reverse is not eq
to nil. (I didn't realize Elisp read-from-string was case sensitive.)
null(intern("NIL")) = nil
Thus lisp-make-cl-method-definition-regexp("(METHOD GUI::SELECTED-OBJECT NIL)")
calls reverse(NIL).
BTW: I appreciate your suggestion to consider using SLIME. I have
downloaded the cvs sources for SLIME, studied the sources and
have tried using it. My impressions are:
. The SLIME communication architecture is a major improvement over
that in ILISP.
. SLIME offers a better integrated debugging environment.
. SLIME is currently not ready for "prime time" use.
. SLIME is a serious project and is likely to produce a far
superior replacement for ILISP.
|