mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-15 15:00:24 -08:00
handle multiple return values and handle reple special results better
This commit is contained in:
parent
eaf3d4d3ea
commit
0e2aac306b
2 changed files with 24 additions and 16 deletions
|
|
@ -84,8 +84,8 @@ provide an interactive console.)"))
|
|||
|
||||
(defun capture-eval (form &key (capture-console t)
|
||||
(capture-result t)
|
||||
(capture-result-form "=>~A~%")
|
||||
(eval-form "~A~%=>~A~%")
|
||||
(capture-result-form "=>~S~%")
|
||||
(eval-form "~A~%=>~S~%")
|
||||
(clog-obj nil)
|
||||
(private-console-win nil)
|
||||
(eval-in-package "clog-user"))
|
||||
|
|
@ -136,16 +136,23 @@ provide an interactive console.)"))
|
|||
(*default-title-class* *builder-title-class*)
|
||||
(*default-border-class* *builder-border-class*)
|
||||
(*package* (find-package (string-upcase eval-in-package))))
|
||||
(setf eval-result (eval (read-from-string (format nil "(progn ~A)" form))))
|
||||
(unless capture-result
|
||||
(format console capture-result-form eval-result))
|
||||
(when (typep console 'console-out-stream)
|
||||
(close console))
|
||||
(close *query-io*)
|
||||
(values
|
||||
(format nil eval-form result eval-result)
|
||||
*package*
|
||||
eval-result))))))))))
|
||||
(setf eval-result (multiple-value-list (eval (read-from-string (format nil "(progn ~A)" form)))))
|
||||
(unless capture-result
|
||||
(mapcar (lambda (r)
|
||||
(format console capture-result-form r))
|
||||
eval-result))
|
||||
(when (typep console 'console-out-stream)
|
||||
(close console))
|
||||
(close *query-io*)
|
||||
(let ((res ""))
|
||||
(mapcar (lambda (r)
|
||||
(setf res (format nil "~A~A" res (format nil eval-form result r))))
|
||||
eval-result)
|
||||
(values
|
||||
res
|
||||
*package*
|
||||
(first eval-result)
|
||||
eval-result)))))))))))
|
||||
(if *clog-repl-eval-on-main-thread*
|
||||
(trivial-main-thread:call-in-main-thread cef :blocking t)
|
||||
(funcall cef))))
|
||||
|
|
|
|||
|
|
@ -105,10 +105,7 @@
|
|||
(setf clog-user::*body* nil))))
|
||||
(clog-terminal:echo target "Use clog-user:*body* to access the clog-builder-repl window.")))
|
||||
(t
|
||||
(setf data (format nil "(let ((tmp (progn ~A)))
|
||||
(setf /// //) (setf // /) (setf / (list tmp))
|
||||
(setf *** **) (setf ** *) (setf * tmp))" data))
|
||||
(multiple-value-bind (result new-package)
|
||||
(multiple-value-bind (result new-package first-eval-result)
|
||||
(capture-eval data :clog-obj panel
|
||||
:private-console-win (when *clog-repl-private-console*
|
||||
(window-param (parent (parent panel))))
|
||||
|
|
@ -117,4 +114,8 @@
|
|||
:eval-in-package (text-value (package-div panel)))
|
||||
(setf (text-value (package-div panel))
|
||||
(string-downcase (package-name new-package)))
|
||||
(let ((*package* new-package))
|
||||
(eval `(let ((tmp ',first-eval-result))
|
||||
(setf /// //) (setf // /) (setf / (list tmp))
|
||||
(setf *** **) (setf ** *) (setf * tmp))))
|
||||
(clog-terminal:echo target result)))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue