#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/output.scm,v 14.6 1990/06/20 20:29:39 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/output.scm,v 14.7 1990/09/13 23:08:23 cph Exp $
Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
(copier %output-port/copy)
(print-procedure output-port/unparse))
state
+ start-of-line?
(operation/write-char false read-only true)
(operation/write-string false read-only true)
(operation/flush-output false read-only true)
(define (output-port/copy port state)
(let ((result (%output-port/copy port)))
(set-output-port/state! result state)
+ (set-output-port/start-of-line?! result false)
result))
(define (output-port/custom-operation port name)
(define (output-port/operation port name)
(or (output-port/custom-operation port name)
(case name
- ((WRITE-CHAR) (output-port/operation/write-char port))
- ((WRITE-STRING) (output-port/operation/write-string port))
- ((FLUSH-OUTPUT) (output-port/operation/flush-output port))
+ ((WRITE-CHAR) output-port/write-char)
+ ((WRITE-STRING) output-port/write-string)
+ ((FLUSH-OUTPUT) output-port/flush-output)
(else false))))
(define (make-output-port operations state)
(operation 'WRITE-STRING default-operation/write-string))
(flush-output
(operation 'FLUSH-OUTPUT default-operation/flush-output)))
- (%make-output-port state write-char write-string flush-output
+ (%make-output-port state false write-char write-string flush-output
operations
(append '(WRITE-CHAR WRITE-STRING FLUSH-OUTPUT)
(map car operations)))))))
false)
\f
(define (output-port/write-char port char)
+ (set-output-port/start-of-line?! port (char=? #\newline char))
((output-port/operation/write-char port) port char))
(define (output-port/write-string port string)
- ((output-port/operation/write-string port) port string))
+ (let ((length (string-length string)))
+ (if (positive? length)
+ (begin
+ (set-output-port/start-of-line?!
+ port
+ (char=? #\newline (string-ref string (-1+ length))))
+ ((output-port/operation/write-string port) port string)))))
+
+(define (output-port/fresh-line port)
+ (if (not (output-port/start-of-line? port))
+ (begin
+ (set-output-port/start-of-line?! port true)
+ ((output-port/operation/write-char port) port #\newline))))
(define (output-port/flush-output port)
((output-port/operation/flush-output port) port))
(output-port/flush-output port))
unspecific)
+(define (fresh-line #!optional port)
+ (let ((port
+ (if (default-object? port)
+ (current-output-port)
+ (guarantee-output-port port))))
+ (output-port/fresh-line port)
+ (output-port/flush-output port))
+ unspecific)
+
(define (write-char char #!optional port)
(let ((port
(if (default-object? port)
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/runtime.pkg,v 14.76 1990/09/13 22:31:38 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/runtime.pkg,v 14.77 1990/09/13 23:08:53 cph Exp $
Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
close-output-port
current-output-port
display
+ fresh-line
guarantee-output-port
make-output-port
newline
output-port/copy
output-port/custom-operation
output-port/flush-output
+ output-port/fresh-line
output-port/operation
output-port/operation-names
- output-port/operation/flush-output
- output-port/operation/write-char
- output-port/operation/write-string
output-port/state
output-port/write-char
output-port/write-string
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/unpars.scm,v 14.16 1990/09/11 20:45:45 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/unpars.scm,v 14.17 1990/09/13 23:08:07 cph Exp $
Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
(unparser-state/unparser-table state)))
(define (unparse-object/internal object port list-depth slashify? table)
- (fluid-let
- ((*output-port* port)
- (*unparse-char-operation* (output-port/operation/write-char port))
- (*unparse-string-operation* (output-port/operation/write-string port))
- (*list-depth* list-depth)
- (*slashify?* slashify?)
- (*unparser-table* table)
- (*dispatch-vector* (unparser-table/dispatch-vector table)))
+ (fluid-let ((*output-port* port)
+ (*list-depth* list-depth)
+ (*slashify?* slashify?)
+ (*unparser-table* table)
+ (*dispatch-vector* (unparser-table/dispatch-vector table)))
(*unparse-object object)))
(define-integrable (invoke-user-method method object)
;;;; Low Level Operations
(define *output-port*)
-(define *unparse-char-operation*)
-(define *unparse-string-operation*)
(define-integrable (*unparse-char char)
- (*unparse-char-operation* *output-port* char))
+ (output-port/write-char *output-port* char))
(define-integrable (*unparse-string string)
- (*unparse-string-operation* *output-port* string))
+ (output-port/write-string *output-port* string))
(define-integrable (*unparse-substring string start end)
(*unparse-string (substring string start end)))
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/runtime/runtime.pkg,v 14.76 1990/09/13 22:31:38 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/runtime/runtime.pkg,v 14.77 1990/09/13 23:08:53 cph Exp $
Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
close-output-port
current-output-port
display
+ fresh-line
guarantee-output-port
make-output-port
newline
output-port/copy
output-port/custom-operation
output-port/flush-output
+ output-port/fresh-line
output-port/operation
output-port/operation-names
- output-port/operation/flush-output
- output-port/operation/write-char
- output-port/operation/write-string
output-port/state
output-port/write-char
output-port/write-string