- (pageno 1))
- (set-window-buffer w buffer)
- (set-window-start w start)
-
- ;; loop, printing one page per loop
- (while (and (not reached-end)
- ;; stop at end of region of text or
- ;; outside of ranges of pages given
- (or (not to-page) (<= pageno to-page)))
-
- (setf (Print-context-pageno context) pageno)
-
- ;; only actually print the page if it's in the
- ;; range.
- (when (>= pageno from-page)
- (when printer-page-header
- (with-current-buffer header-buffer
- (erase-buffer)
- (generate-header-line printer-page-header
- context)
- (goto-char (point-min))
- (set-window-start header-window (point-min))))
-
- (when printer-page-footer
- (with-current-buffer footer-buffer
- (erase-buffer)
- (insert "\n")
- (generate-header-line printer-page-footer
- context)
- (goto-char (point-min))
- (set-window-start footer-window (point-min))))
-
- (redisplay-frame f t)
- (print-job-eject-page f)
- )
- ;; but use the GUARANTEE argument to `window-end'
- ;; so that we get the right value even if we
- ;; didn't do a redisplay.
- (let ((this-end (window-end w t))
- (pixvis (window-last-line-visible-height w)))
- ;; in case we get stuck somewhere, bow out
- ;; rather than printing an infinite number of
- ;; pages. #### this will fail with an image
- ;; bigger than an entire page. but we really
- ;; need this check here. we should be more
- ;; clever in our check, to deal with this case.
- (if (or (= this-end last-end)
- ;; #### fuckme! window-end returns a value
- ;; outside of the valid range of buffer
- ;; positions!!!
- (>= this-end end))
- (setq reached-end t)
- (setq last-end this-end)
- (set-window-start w this-end)
- (if pixvis
- (save-selected-window
- (select-window w)
- ;; #### scroll-down should take a
- ;; window arg.
- (let ((window-pixel-scroll-increment
- pixvis))
- (scroll-down 1))))))
- (setq pageno (1+ pageno))))
- (setq copies (1- copies)))))
- (and f (delete-frame f))
- (and header-buffer (kill-buffer header-buffer))
- (and footer-buffer (kill-buffer footer-buffer))
- )))
+ (pageno 1))
+ (set-window-buffer w buffer)
+ (set-window-start w start)
+
+ ;; loop, printing one page per loop
+ (while (and (not reached-end)
+ ;; stop at end of region of text or
+ ;; outside of ranges of pages given
+ (or (not to-page) (<= pageno to-page)))
+
+ (setf (Print-context-pageno context) pageno)
+
+ ;; only actually print the page if it's in the
+ ;; range.
+ (when (>= pageno from-page)
+ (when printer-page-header
+ (with-current-buffer header-buffer
+ (erase-buffer)
+ (generate-header-line printer-page-header
+ context)
+ (goto-char (point-min))
+ (set-window-start header-window
+ (point-min))))
+
+ (when printer-page-footer
+ (with-current-buffer footer-buffer
+ (erase-buffer)
+ (insert "\n")
+ (generate-header-line printer-page-footer
+ context)
+ (goto-char (point-min))
+ (set-window-start footer-window
+ (point-min))))
+
+ (redisplay-frame f t)
+ (print-job-eject-page f)
+ )
+ ;; but use the GUARANTEE argument to `window-end'
+ ;; so that we get the right value even if we
+ ;; didn't do a redisplay.
+ (let ((this-end (window-end w t))
+ (pixvis
+ (window-last-line-visible-height w)))
+ ;; in case we get stuck somewhere, bow out
+ ;; rather than printing an infinite number of
+ ;; pages. #### this will fail with an image
+ ;; bigger than an entire page. but we really
+ ;; need this check here. we should be more
+ ;; clever in our check, to deal with this case.
+ (if (or (= this-end last-end)
+ ;; #### fuckme! window-end returns a
+ ;; value outside of the valid range of
+ ;; buffer positions!!!
+ (>= this-end end))
+ (setq reached-end t)
+ (setq last-end this-end)
+ (set-window-start w this-end)
+ (if pixvis
+ (with-selected-window w
+ ;; #### scroll-down should take a
+ ;; window arg.
+ (let ((window-pixel-scroll-increment
+ pixvis))
+ (scroll-down 1))))))
+ (setq pageno (1+ pageno))))))
+ (and f (delete-frame f))
+ (and header-buffer (kill-buffer header-buffer))
+ (and footer-buffer (kill-buffer footer-buffer)))))
+ (setq copies (1- copies)))))