;;; -*- Mode:LISP; Readtable:ZL; Base:10 -*-

(defun print-indenting-stream(op &optional arg1 &rest rest)
  (declare(special stream stream-indent))
  (selectq op
    (:fresh-line
     (stream-default-handler stream op arg1 rest)
     (format stream "~vt" stream-indent))
    (:tyo
     (send stream :tyo arg1)
     (if (char-equal arg1 #/return)
	 (format stream "~vt" stream-indent)))
    (otherwise
     (stream-default-handler stream op arg1 rest)))))

(defun make-indenting-stream(stream &optional (stream-indent 4))
  (declare(special stream stream-indent))
  (closure '(stream stream-indent)
	   'print-indenting-stream))
