X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fprinter.el;h=2a9cc7be6da22a58f25f971580dbc2023ba4d9cd;hb=89d935bfb8bf9cab3d99f71af40c2afbea401c96;hp=ed1ce4d59817f5def31e91b59afbcc396fbea52c;hpb=67be3f62f20e42d9f33f77cd1230e48cdf4f845c;p=chise%2Fxemacs-chise.git- diff --git a/lisp/printer.el b/lisp/printer.el index ed1ce4d..2a9cc7b 100644 --- a/lisp/printer.el +++ b/lisp/printer.el @@ -60,10 +60,11 @@ "Generic printing support." :group 'wp) -(defcustom printer-name nil ; "Okidata OL610e/PS PostScript" +(defcustom printer-name nil "*Name of printer to print to. If nil, use default. -Under MS Windows, this can have the form `\\\\STOLI\\HP-345-PS'." +Under Windows, use `mswindows-printer-list' to get names of installed +printers." :type 'string :group 'printing) @@ -133,53 +134,54 @@ user-id User logon id user-name User full name" (error "not yet implemented")) -(defun generic-print-buffer (&optional buf) - "Print buffer BUF using a printing method appropriate to the O.S. being run. +(defun generic-print-buffer (&optional buffer) + "Print buffer BUFFER using a printing method appropriate to the O.S. being run. Under Unix, `lpr' is normally used to spool out a no-frills version of the buffer, or the `ps-print' package is used to pretty-print the buffer to a PostScript printer. Under MS Windows, the built-in printing support is used. -If BUF is nil or omitted, the current buffer is used." +If BUFFER is nil or omitted, the current buffer is used." (interactive) - (generic-print-region (point-min buf) (point-max buf) buf)) + (generic-print-region (point-min buffer) (point-max buffer) buffer)) -(defun generic-print-region (b e &optional buf) +(defun generic-print-region (start end &optional buffer) "Print region using a printing method appropriate to the O.S. being run. -The region between B and E of BUF (defaults to the current buffer) is printed. +The region between START and END of BUFFER (defaults to the current +buffer) is printed. Under Unix, `lpr' is normally used to spool out a no-frills version of the buffer, or the `ps-print' package is used to pretty-print the buffer to a PostScript printer. Under MS Windows, the built-in printing support is used." (cond ((valid-specifier-tag-p 'msprinter) - (or (stringp printer-name) - (error "Please set `printer-name'")) (let (d f) - (setq buf (decode-buffer buf)) + (setq buffer (decode-buffer buffer)) (unwind-protect (progn (setq d (make-device 'msprinter printer-name)) (setq f (make-frame - '(name "Test!" - menubar-visible-p nil - has-modeline-p nil - default-toolbar-visible-p nil - default-gutter-visible-p nil - minibuffer none - modeline-shadow-thickness 0 - vertical-scrollbar-visible-p nil - horizontal-scrollbar-visible-p nil) + (list* 'name (concat (substitute ?_ ?. + (buffer-name buffer)) + " - XEmacs") + '(menubar-visible-p nil + has-modeline-p nil + default-toolbar-visible-p nil + default-gutter-visible-p nil + minibuffer none + modeline-shadow-thickness 0 + vertical-scrollbar-visible-p nil + horizontal-scrollbar-visible-p nil)) d)) (let* ((w (frame-root-window f)) (vertdpi (cdr (device-system-metric d 'device-dpi))) (pixel-vertical-clip-threshold (/ vertdpi 2)) (last-end 0) done) - (set-window-buffer w (or buf (current-buffer))) - (set-window-start w b) + (set-window-buffer w (or buffer (current-buffer))) + (set-window-start w start) (while (not done) (redisplay-frame f) (print-job-eject-page f) - (let ((end (window-end w)) + (let ((this-end (window-end w)) (pixvis (window-last-line-visible-height w))) ;; in case we get stuck somewhere, bow out ;; rather than printing an infinite number of @@ -187,14 +189,14 @@ PostScript printer. Under MS Windows, the built-in printing support is used." ;; 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 (= end last-end) + (if (or (= this-end last-end) ;; #### fuckme! window-end returns a value ;; outside of the valid range of buffer ;; positions!!! - (>= end e)) + (>= this-end end)) (setq done t) - (setq last-end end) - (set-window-start w end) + (setq last-end this-end) + (set-window-start w this-end) (if pixvis (save-selected-window (select-window w) @@ -206,5 +208,5 @@ PostScript printer. Under MS Windows, the built-in printing support is used." ))) ((and (not (eq system-type 'windows-nt)) (fboundp 'lpr-buffer)) - (lpr-region buf)) + (lpr-region buffer)) (t (error "No print support available"))))