[movitz-cvs] CVS update: movitz/losp/muerte/print.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Tue Apr 6 14:29:33 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv3168
Modified Files:
print.lisp
Log Message:
Added support for *print-safely* in write. In this mode, try to print
some opaque error message rather than signal an error condition.
Date: Tue Apr 6 10:29:33 2004
Author: ffjeld
Index: movitz/losp/muerte/print.lisp
diff -u movitz/losp/muerte/print.lisp:1.4 movitz/losp/muerte/print.lisp:1.5
--- movitz/losp/muerte/print.lisp:1.4 Tue Mar 30 16:32:12 2004
+++ movitz/losp/muerte/print.lisp Tue Apr 6 10:29:33 2004
@@ -10,7 +10,7 @@
;;;; Author: Frode Vatvedt Fjeld <frodef at acm.org>
;;;; Created at: Mon Sep 3 11:48:19 2001
;;;;
-;;;; $Id: print.lisp,v 1.4 2004/03/30 21:32:12 ffjeld Exp $
+;;;; $Id: print.lisp,v 1.5 2004/04/06 14:29:33 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -33,6 +33,8 @@
(defvar *print-pretty* t)
(defvar *print-circle* nil)
+(defvar *print-safely* nil)
+
(defvar *standard-output* #'muerte.x86-pc::textmode-console)
(defvar *standard-input* #'muerte.x86-pc::textmode-console)
(defvar *debug-io* #'muerte.x86-pc::textmode-console)
@@ -148,18 +150,24 @@
(write-char #\Newline stream)
string)
-(defun write (object &key stream case circle
- (array *print-array*) (base *print-base*)
- ((:escape *print-escape*) *print-escape*)
- ((:gensym *print-gensym*) *print-gensym*)
- (length *print-length*)
- (level *print-level*) lines miser-width pprint-dispatch
- (pretty *print-pretty*) (radix *print-radix*)
- ((:readably *print-readably*) *print-readably*)
- right-margin)
- (declare (special *read-base* *package*)
+(defun write (object &rest key-args
+ &key stream case circle safe-recursive-call
+ (array *print-array*) (base *print-base*)
+ ((:escape *print-escape*) *print-escape*)
+ ((:gensym *print-gensym*) *print-gensym*)
+ (length *print-length*)
+ (level *print-level*) lines miser-width pprint-dispatch
+ (pretty *print-pretty*) (radix *print-radix*)
+ ((:readably *print-readably*) *print-readably*)
+ right-margin)
+ (declare (dynamic-extent key-args)
+ (special *read-base* *package*)
(ignore case circle pprint-dispatch miser-width right-margin lines))
(cond
+ ((and *print-safely* (not safe-recursive-call))
+ (handler-case (apply #'write object :safe-recursive-call t key-args)
+ (t (condition)
+ (write-string "#<printer error>" stream))))
((and (not pretty)
(not *never-use-print-object*))
(print-object object stream))
More information about the Movitz-cvs
mailing list