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

Toplevel Loop Problems...

  I am using this toplevel loop in a standalone application.  Most of
it is borrowed from the "Math Loop" example in ccl;examples.  I just
need to use Fred editor windows with the application so as to be able
to evaluate forms from the editor, by EVALing forms from

  The problem is that the call to GET-NEXT-FORM does not seem to
remove anything from the *terminal-io* queue.  When I quit my toplevel
loop, all the queued forms get evaluated (presumably by the normal

  Can someone tell me why this doesn't work, and what to do about it?
Weren't there some difficulties with GET-NEXT-FORM reported earlier?

  Another question: Why does the example code include a
MULTIPLE-VALUE-BIND when MESSAGE-DIALOG apparently only returns one
value?  Thanks in advance.

   ...Bill (waander@cs.umd.edu)

(defun inner-main-loop (&aux abort-or-cancel-p)
  (multiple-value-bind (result error-p)
      (setq abort-or-cancel-p
                ;; Process forms normally
                (eval (ask *terminal-io* (get-next-form)))
      (when (or (eq abort-or-cancel-p :abort)
                (eq abort-or-cancel-p :cancel))
        (message-dialog (format nil "~aed." abort-or-cancel-p))))
    (when error-p
      (unless (y-or-n-dialog
               (format nil "The following error occured:~%~s~%Continue, or quit the application?"
                       (apply #'format nil result))
               :yes-text "Continue"
               :no-text "Quit"
               :cancel-text nil)   ;no cancel button