+ (if (eq cmd :set)
+ (write-string " " stream)
+ (error ":nbsp in an illegal place: ~s" form)))))
+
+
+(def-special-html :load-file
+ (named-function html-nbsp-function
+ (lambda (ent args argsp body)
+ (declare (ignore ent args argsp))
+ (unless body
+ (error "must have a body with :load-file"))
+ `(progn ,@(mapcar #'(lambda (bod)
+ `(lml-load ,bod))
+ body))))
+
+ (named-function html-nbsp-print-function
+ (lambda (ent cmd args form subst unknown stream)
+ (declare (ignore ent unknown subst stream args))
+ (assert (eql 2 (length form)))
+ (if (eq cmd :full)
+ (lml-load (cadr form))
+ (error ":load-file must be given an argument")))))
+
+(def-special-html :insert-file
+ (named-function html-nbsp-function
+ (lambda (ent args argsp body)
+ (declare (ignore ent args argsp))
+ (unless body
+ (error "must have a body with :insert-file"))
+ `(progn ,@(mapcar #'(lambda (bod)
+ `(insert-file ,bod))
+ body))))
+
+ (named-function html-nbsp-print-function
+ (lambda (ent cmd args form subst unknown stream)
+ (declare (ignore ent unknown subst stream args))
+ (assert (eql 2 (length form)))
+ (if (eq cmd :full)
+ (insert-file (cadr form))
+ (error ":insert-file must be given an argument")))))
+
+(def-special-html :write-string
+ (named-function html-write-string-function
+ (lambda (ent args argsp body)
+ (declare (ignore ent args argsp))
+ (if (= (length body) 1)
+ `(write-string ,(car body) *html-stream*)
+ `(progn ,@(mapcar #'(lambda (bod)
+ `(write-string ,bod *html-stream*))
+ body)))))
+
+ (named-function html-write-string-print-function
+ (lambda (ent cmd args form subst unknown stream)
+ (declare (ignore args ent unknown subst))
+ (assert (eql 2 (length form)))
+ (if (eq cmd :full)
+ (write-string (cadr form) stream)
+ (error ":write-string must be given an argument")))))
+
+(def-special-html :write-char
+ (named-function html-write-char-function
+ (lambda (ent args argsp body)
+ (declare (ignore ent args argsp))
+ `(progn ,@(mapcar #'(lambda (bod)
+ `(write-char ,bod *html-stream*))
+ body))))
+
+ (named-function html-write-char-print-function
+ (lambda (ent cmd args form subst unknown stream)
+ (declare (ignore args ent unknown subst))
+ (assert (eql 2 (length form)))
+ (if (eq cmd :full)
+ (write-char (cadr form) stream)
+ (error ":write-char must be given an argument")))))
+
+
+