diff options
| -rw-r--r-- | lisp/ps-print.el | 69 |
1 files changed, 38 insertions, 31 deletions
diff --git a/lisp/ps-print.el b/lisp/ps-print.el index 06d56c0effa..3a14bcc57f4 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el | |||
| @@ -7,11 +7,11 @@ | |||
| 7 | ;; Author: Vinicius Jose Latorre <vinicius@cpqd.com.br> | 7 | ;; Author: Vinicius Jose Latorre <vinicius@cpqd.com.br> |
| 8 | ;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br> | 8 | ;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br> |
| 9 | ;; Keywords: print, PostScript | 9 | ;; Keywords: print, PostScript |
| 10 | ;; Time-stamp: <98/05/22 21:11:07 vinicius> | 10 | ;; Time-stamp: <98/06/04 15:23:12 vinicius> |
| 11 | ;; Version: 3.06.2 | 11 | ;; Version: 3.06.3 |
| 12 | 12 | ||
| 13 | (defconst ps-print-version "3.06.2" | 13 | (defconst ps-print-version "3.06.3" |
| 14 | "ps-print.el, v 3.06.2 <98/05/22 vinicius> | 14 | "ps-print.el, v 3.06.3 <98/06/04 vinicius> |
| 15 | 15 | ||
| 16 | Vinicius's last change version -- this file may have been edited as part of | 16 | Vinicius's last change version -- this file may have been edited as part of |
| 17 | Emacs without changes to the version number. When reporting bugs, | 17 | Emacs without changes to the version number. When reporting bugs, |
| @@ -2398,6 +2398,7 @@ StandardEncoding 46 82 getinterval aload pop | |||
| 2398 | (defvar ps-output-head nil) | 2398 | (defvar ps-output-head nil) |
| 2399 | (defvar ps-output-tail nil) | 2399 | (defvar ps-output-tail nil) |
| 2400 | 2400 | ||
| 2401 | (defvar ps-page-postscript 0) | ||
| 2401 | (defvar ps-page-count 0) | 2402 | (defvar ps-page-count 0) |
| 2402 | (defvar ps-showline-count 1) | 2403 | (defvar ps-showline-count 1) |
| 2403 | 2404 | ||
| @@ -3203,7 +3204,7 @@ page-height == bm + print-height + tm - ho - hh | |||
| 3203 | 3204 | ||
| 3204 | (defun ps-begin-file () | 3205 | (defun ps-begin-file () |
| 3205 | (ps-get-page-dimensions) | 3206 | (ps-get-page-dimensions) |
| 3206 | (setq ps-showline-count (if ps-printing-region (car ps-printing-region) 1) | 3207 | (setq ps-page-postscript 0 |
| 3207 | ps-background-text-count 0 | 3208 | ps-background-text-count 0 |
| 3208 | ps-background-image-count 0 | 3209 | ps-background-image-count 0 |
| 3209 | ps-background-pages nil | 3210 | ps-background-pages nil |
| @@ -3263,14 +3264,7 @@ page-height == bm + print-height + tm - ho - hh | |||
| 3263 | 3264 | ||
| 3264 | (ps-output-boolean "Zebra" ps-zebra-stripes) | 3265 | (ps-output-boolean "Zebra" ps-zebra-stripes) |
| 3265 | (ps-output-boolean "PrintLineNumber" ps-line-number) | 3266 | (ps-output-boolean "PrintLineNumber" ps-line-number) |
| 3266 | (ps-output (format "/ZebraHeight %d def\n" ps-zebra-stripe-height) | 3267 | (ps-output (format "/ZebraHeight %d def\n" ps-zebra-stripe-height)) |
| 3267 | (format "/Lines %d def\n" | ||
| 3268 | (if ps-printing-region | ||
| 3269 | (cdr ps-printing-region) | ||
| 3270 | (ps-count-lines (point-min) (point-max)))) | ||
| 3271 | "/PageCount 0 def\n") ; set total page number | ||
| 3272 | ; when printing has finished | ||
| 3273 | ; (see `ps-generate') | ||
| 3274 | 3268 | ||
| 3275 | (ps-background-text) | 3269 | (ps-background-text) |
| 3276 | (ps-background-image) | 3270 | (ps-background-image) |
| @@ -3329,7 +3323,13 @@ page-height == bm + print-height + tm - ho - hh | |||
| 3329 | (and (buffer-modified-p) " (unsaved)"))))) | 3323 | (and (buffer-modified-p) " (unsaved)"))))) |
| 3330 | 3324 | ||
| 3331 | (defun ps-begin-job () | 3325 | (defun ps-begin-job () |
| 3332 | (setq ps-page-count 0 | 3326 | (save-excursion |
| 3327 | (set-buffer ps-spool-buffer) | ||
| 3328 | (goto-char (point-max)) | ||
| 3329 | (and (re-search-backward "^%%Trailer$" nil t) | ||
| 3330 | (delete-region (match-beginning 0) (point-max)))) | ||
| 3331 | (setq ps-showline-count (if ps-printing-region (car ps-printing-region) 1) | ||
| 3332 | ps-page-count 0 | ||
| 3333 | ps-control-or-escape-regexp | 3333 | ps-control-or-escape-regexp |
| 3334 | (cond ((eq ps-print-control-characters '8-bit) | 3334 | (cond ((eq ps-print-control-characters '8-bit) |
| 3335 | "[\000-\037\177-\377]") | 3335 | "[\000-\037\177-\377]") |
| @@ -3344,7 +3344,7 @@ page-height == bm + print-height + tm - ho - hh | |||
| 3344 | 3344 | ||
| 3345 | (defun ps-end-file () | 3345 | (defun ps-end-file () |
| 3346 | (ps-output "\n%%Trailer\n%%Pages: " | 3346 | (ps-output "\n%%Trailer\n%%Pages: " |
| 3347 | (format "%d" (ps-page-number)) | 3347 | (format "%d" ps-page-postscript) |
| 3348 | "\n\nEndDoc\n\n%%EOF\n")) | 3348 | "\n\nEndDoc\n\n%%EOF\n")) |
| 3349 | 3349 | ||
| 3350 | 3350 | ||
| @@ -3354,17 +3354,21 @@ page-height == bm + print-height + tm - ho - hh | |||
| 3354 | (ps-begin-page)) | 3354 | (ps-begin-page)) |
| 3355 | 3355 | ||
| 3356 | (defun ps-header-page () | 3356 | (defun ps-header-page () |
| 3357 | ;; set total line and page number when printing has finished | ||
| 3358 | ;; (see `ps-generate') | ||
| 3357 | (if (prog1 | 3359 | (if (prog1 |
| 3358 | (zerop (mod ps-page-count ps-number-of-columns)) | 3360 | (zerop (mod ps-page-count ps-number-of-columns)) |
| 3359 | (setq ps-page-count (1+ ps-page-count))) | 3361 | (setq ps-page-count (1+ ps-page-count))) |
| 3360 | ;; Print only when a new real page begins. | 3362 | ;; Print only when a new real page begins. |
| 3361 | (let ((page-number (ps-page-number))) | 3363 | (progn |
| 3362 | (ps-output (format "\n%%%%Page: %d %d\n" page-number page-number)) | 3364 | (setq ps-page-postscript (1+ ps-page-postscript)) |
| 3363 | (ps-output "BeginDSCPage\n") | 3365 | (ps-output (format "\n%%%%Page: %d %d\n" |
| 3364 | (ps-background page-number) | 3366 | ps-page-postscript ps-page-postscript)) |
| 3367 | (ps-output "/Lines 0 def\n/PageCount 0 def\nBeginDSCPage\n") | ||
| 3368 | (ps-background ps-page-postscript) | ||
| 3365 | (run-hooks 'ps-print-begin-page-hook)) | 3369 | (run-hooks 'ps-print-begin-page-hook)) |
| 3366 | ;; Print when any other page begins. | 3370 | ;; Print when any other page begins. |
| 3367 | (ps-output "BeginDSCPage\n") | 3371 | (ps-output "/Lines 0 def\n/PageCount 0 def\nBeginDSCPage\n") |
| 3368 | (run-hooks 'ps-print-begin-column-hook))) | 3372 | (run-hooks 'ps-print-begin-column-hook))) |
| 3369 | 3373 | ||
| 3370 | (defun ps-begin-page () | 3374 | (defun ps-begin-page () |
| @@ -3907,7 +3911,7 @@ If FACE is not a valid face name, it is used default face." | |||
| 3907 | (unwind-protect | 3911 | (unwind-protect |
| 3908 | (progn | 3912 | (progn |
| 3909 | (set-buffer ps-spool-buffer) | 3913 | (set-buffer ps-spool-buffer) |
| 3910 | 3914 | (set-buffer-multibyte nil) | |
| 3911 | ;; Get a marker and make it point to the current end of the | 3915 | ;; Get a marker and make it point to the current end of the |
| 3912 | ;; buffer, If an error occurs, we'll delete everything from | 3916 | ;; buffer, If an error occurs, we'll delete everything from |
| 3913 | ;; the end of this marker onwards. | 3917 | ;; the end of this marker onwards. |
| @@ -3928,17 +3932,22 @@ If FACE is not a valid face name, it is used default face." | |||
| 3928 | 3932 | ||
| 3929 | (and ps-spool-duplex (= (mod ps-page-count 2) 1) | 3933 | (and ps-spool-duplex (= (mod ps-page-count 2) 1) |
| 3930 | (ps-dummy-page)) | 3934 | (ps-dummy-page)) |
| 3935 | (ps-end-file) | ||
| 3931 | (ps-flush-output) | 3936 | (ps-flush-output) |
| 3932 | 3937 | ||
| 3933 | ;; Back to the PS output buffer to set the page count | 3938 | ;; Back to the PS output buffer to set the page count |
| 3934 | (set-buffer ps-spool-buffer) | 3939 | (let ((total-lines (if ps-printing-region |
| 3935 | (goto-char (point-min)) | 3940 | (cdr ps-printing-region) |
| 3936 | (and (re-search-forward "^/PageCount 0 def$" nil t) | 3941 | (ps-count-lines (point-min) (point-max)))) |
| 3937 | (replace-match (format "/PageCount %d def" | 3942 | (total-pages (if ps-print-only-one-header |
| 3938 | (if ps-print-only-one-header | 3943 | (ps-page-number) |
| 3939 | (ps-page-number) | 3944 | ps-page-count))) |
| 3940 | ps-page-count)) | 3945 | (set-buffer ps-spool-buffer) |
| 3941 | t)) | 3946 | (goto-char (point-min)) |
| 3947 | (while (re-search-forward "^/Lines 0 def\n/PageCount 0 def$" | ||
| 3948 | nil t) | ||
| 3949 | (replace-match (format "/Lines %d def\n/PageCount %d def" | ||
| 3950 | total-lines total-pages) t))) | ||
| 3942 | 3951 | ||
| 3943 | ;; Setting this variable tells the unwind form that the | 3952 | ;; Setting this variable tells the unwind form that the |
| 3944 | ;; the PostScript was generated without error. | 3953 | ;; the PostScript was generated without error. |
| @@ -3960,8 +3969,6 @@ If FACE is not a valid face name, it is used default face." | |||
| 3960 | (if (or (not (boundp 'ps-spool-buffer)) | 3969 | (if (or (not (boundp 'ps-spool-buffer)) |
| 3961 | (not (symbol-value 'ps-spool-buffer))) | 3970 | (not (symbol-value 'ps-spool-buffer))) |
| 3962 | (message "No spooled PostScript to print") | 3971 | (message "No spooled PostScript to print") |
| 3963 | (ps-end-file) | ||
| 3964 | (ps-flush-output) | ||
| 3965 | (if filename | 3972 | (if filename |
| 3966 | (save-excursion | 3973 | (save-excursion |
| 3967 | (and ps-razzle-dazzle (message "Saving...")) | 3974 | (and ps-razzle-dazzle (message "Saving...")) |