Changeset 7728


Ignore:
Timestamp:
09/18/04 18:32:05 (17 years ago)
Author:
piso
Message:

SERVER-LOOP: added explicit handling of ARGLIST-FOR-ECHO-AREA.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/swank.lisp

    r7664 r7728  
    22;;;
    33;;; Copyright (C) 2004 Peter Graves
    4 ;;; $Id: swank.lisp,v 1.16 2004-09-13 13:46:02 piso Exp $
     4;;; $Id: swank.lisp,v 1.17 2004-09-18 18:32:05 piso Exp $
    55;;;
    66;;; This program is free software; you can redistribute it and/or
     
    4444             (swank-protocol:encode-message `(:return (:ok ,result)) *stream*)))
    4545          (:eval-async
    46            ;; Forms passed this way get evaluated (in the end) by EVAL-STRING,
    47            ;; which returns either a list of values or an error object.
    48            (make-thread
    49             (lambda ()
    50               (let ((values (eval form))
    51                     result ok)
    52                 (setf result (format-values-for-echo-area values))
    53                 (when (listp values) ;; No error.
    54                   (setf ok t))
    55                 (swank-protocol:encode-message `(:return
    56                                                  ,(if ok `(:ok ,result) `(:abort ,result))
    57                                                  ,id)
    58                                                *stream*)))))
     46           (cond ((eq (car form) 'arglist-for-echo-area)
     47                  (make-thread
     48                   (lambda ()
     49                     (let ((result (eval form)))
     50                       (swank-protocol:encode-message `(:return
     51                                                        (:ok ,result)
     52                                                        ,id)
     53                                                      *stream*)))))
     54                 (t
     55                  ;; These forms get evaluated (in the end) by EVAL-STRING,
     56                  ;; which returns either a list of values or an error object.
     57                  (make-thread
     58                   (lambda ()
     59                     (let ((values (eval form))
     60                           result ok)
     61                       (setf result (format-values-for-echo-area values))
     62                       (when (listp values) ;; No error.
     63                         (setf ok t))
     64                       (swank-protocol:encode-message `(:return
     65                                                        ,(if ok `(:ok ,result) `(:abort ,result))
     66                                                        ,id)
     67                                                      *stream*)))))))
    5968          (t
    6069           (error "SERVER-LOOP: unhandled case: ~S" message)))))))
     
    196205(defun arglist-for-echo-area (names)
    197206  "Return the arglist for the first function, macro, or special operator in NAMES."
    198 ;;   (with-buffer-syntax ()
    199     (let ((name (find-if #'valid-operator-name-p names)))
    200       (when name
    201         (format-arglist-for-echo-area (parse-symbol name) name)))
    202 ;;     )
    203   )
     207  (let ((name (find-if #'valid-operator-name-p names)))
     208    (when name
     209      (format-arglist-for-echo-area (parse-symbol name) name))))
    204210
    205211(defun find-definitions-for-function-name (function-name package-name)
Note: See TracChangeset for help on using the changeset viewer.