~ chicken-r7rs (master) dbd01fdd21f383736395c43c503d202f5d6b9d9a
commit dbd01fdd21f383736395c43c503d202f5d6b9d9a Author: Evan Hanson <evhan@foldling.org> AuthorDate: Sat May 9 21:59:41 2015 +0000 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Sat May 9 21:59:41 2015 +0000 Hook read so that csi comma commands handle circular data diff --git a/scheme.read.scm b/scheme.read.scm index 56d9de3..8ca0b13 100644 --- a/scheme.read.scm +++ b/scheme.read.scm @@ -1,6 +1,6 @@ (module scheme.read (read) (import (except scheme read) - (only chicken : current-read-table feature? fx+ fx= optional unless when) + (only chicken : current-read-table feature? fluid-let fx+ fx= optional unless when) (only chicken case-sensitive define-constant define-inline parameterize)) ;;; @@ -27,20 +27,17 @@ (##sys#setslot p port-fold-case-slot 'no-fold-case) (read p))) + (define sys-read ##sys#read) + (set! ##sys#read - (let ((read ##sys#read)) - (lambda (port hook) - (parameterize ((case-sensitive - (case (port-fold-case port) - ((fold-case) #f) - ((no-fold-case) #t) - (else (case-sensitive))))) - (read port hook))))) - - (when (feature? 'csi) - (set! ##sys#repl-read-hook - (lambda (#!optional (p (current-input-port))) - (read p)))) + (lambda (port hook) + (parameterize ((case-sensitive + (case (port-fold-case port) + ((fold-case) #f) + ((no-fold-case) #t) + (else (case-sensitive))))) + (fluid-let ((##sys#default-read-info-hook hook)) + (read port))))) ;;; ;;; 6.13.2 Input @@ -98,11 +95,11 @@ (##sys#read-char-0 p) (letrec ((o (begin (register-shared! n (lambda () o)) - (##sys#read p ##sys#default-read-info-hook)))) + (sys-read p ##sys#default-read-info-hook)))) o)) (define (read/shared p) - (let ((o (##sys#read port ##sys#default-read-info-hook))) + (let ((o (sys-read port ##sys#default-read-info-hook))) (when (pair? shared) (unthunkify! o (lambda a (apply ##sys#read-error p a)))) o)) diff --git a/scheme.write.scm b/scheme.write.scm index 6aac5f9..3a24f15 100644 --- a/scheme.write.scm +++ b/scheme.write.scm @@ -8,7 +8,7 @@ (when (feature? 'csi) (set! ##sys#repl-print-hook (lambda (o p) - (display o p) + (write o p) (newline)))) (define (interesting? o)Trap