From: Raymond T. <rt...@us...> - 2007-08-08 18:00:41
|
Update of /cvsroot/maxima/maxima/src In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv6052/src Modified Files: init-cl.lisp Log Message: Fix MAXIMA-READ-EVAL-PRINT-LOOP to print all values if the evaluated form produces multiple values. Previously, only the first value was printed. This makes maxima's repl behave like Lisp's repl. Index: init-cl.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/init-cl.lisp,v retrieving revision 1.100 retrieving revision 1.101 diff -u -d -r1.100 -r1.101 --- init-cl.lisp 30 Jul 2007 13:03:46 -0000 1.100 +++ init-cl.lisp 8 Aug 2007 18:00:37 -0000 1.101 @@ -629,6 +629,19 @@ (let ((form (read))) (prin1 (eval form)))))) +(defun maxima-read-eval-print-loop () + (setf *debugger-hook* #'maxima-lisp-debugger-repl) + (loop + (catch 'to-maxima-repl + (format t "~a~%~a> ~a" *prompt-prefix* + (package-name *package*) *prompt-suffix*) + (finish-output) + (let ((form (read))) + (let ((results (multiple-value-list (eval form)))) + (dolist (r results) + (fresh-line) + (prin1 r))))))) + (defun maxima-lisp-debugger-repl (condition me-or-my-encapsulation) (declare (ignore me-or-my-encapsulation)) (format t "~&Maxima encountered a Lisp error:~%~% ~A" condition) |