[movitz-cvs] CVS update: movitz/losp/los0.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Mon Jul 12 08:00:06 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp
In directory common-lisp.net:/tmp/cvs-serv11008
Modified Files:
los0.lisp
Log Message:
Added with-paging macro (should be in lib?) and :more
top-level-command. Try :more <form> in REPL.
Date: Mon Jul 12 01:00:06 2004
Author: ffjeld
Index: movitz/losp/los0.lisp
diff -u movitz/losp/los0.lisp:1.16 movitz/losp/los0.lisp:1.17
--- movitz/losp/los0.lisp:1.16 Thu Jul 8 14:52:29 2004
+++ movitz/losp/los0.lisp Mon Jul 12 01:00:06 2004
@@ -9,7 +9,7 @@
;;;; Created at: Fri Dec 1 18:08:32 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: los0.lisp,v 1.16 2004/07/08 21:52:29 ffjeld Exp $
+;;;; $Id: los0.lisp,v 1.17 2004/07/12 08:00:06 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -805,6 +805,32 @@
(dolist (x cl:/ (values-list cl:/))
(do-print x)))))
+(defmacro with-paging (options &body body)
+ (declare (ignore options))
+ `(block paging
+ (let ((*paging-offset* 2))
+ (handler-bind
+ ((newline (lambda (condition)
+ (declare (ignore condition))
+ (when (>= (incf *paging-offset*)
+ muerte.x86-pc::*screen-height*)
+ (format t "~&more? ")
+ (loop
+ (case (muerte.x86-pc.keyboard:poll-char)
+ ((#\esc #\n #\N)
+ (return-from paging (values)))
+ ((#\y #\Y #\space #\newline)
+ (setf *paging-offset* 1)
+ (return))))))))
+ , at body))))
+
+(defun tp (x) (dotimes (i x) (print i)))
+
+(define-toplevel-command :more (form)
+ (with-paging ()
+ (multiple-value-call #'format t "~@{~&~W~}"
+ (eval form))))
+
(define-toplevel-command :pop ()
(when *debugger-dynamic-context*
(let ((r (find-restart-from-context 'abort *debugger-dynamic-context*)))
More information about the Movitz-cvs
mailing list