aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Moellmann2000-12-29 11:48:50 +0000
committerGerd Moellmann2000-12-29 11:48:50 +0000
commitbd7a2e2617d64ead8be754c9949f61069ce5e9f2 (patch)
tree9259003bd66c60e30fb3e2a58b341cd97840af7c
parentdc8921906b8b4d635f94ad11cbdb6f37d5e82cb1 (diff)
downloademacs-bd7a2e2617d64ead8be754c9949f61069ce5e9f2.tar.gz
emacs-bd7a2e2617d64ead8be754c9949f61069ce5e9f2.zip
Handle form feed better when ps-zebra-stripe-follow is
non-nil. Adding almost all customization variables on ps-setup. Doc Fix. (ps-print-version): New version number (6.3.3). (ps-end-with-control-d): Initialization fix. (ps-lines-printed): New var. (ps-skip-newline): New fun. (ps-setup, ps-prologue-file, ps-begin-job, ps-begin-page) (ps-next-line, ps-continue-line, ps-plot-region) (ps-generate-postscript-with-faces, ps-end-job): Code fix.
-rw-r--r--lisp/ChangeLog13
-rw-r--r--lisp/ps-print.el119
2 files changed, 95 insertions, 37 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index badd5a35772..3dddc51d0ba 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,16 @@
12000-12-29 Vinicius Jose Latorre <vinicius@cpqd.com.br>
2
3 * ps-print.el: Handle form feed better when ps-zebra-stripe-follow is
4 non-nil. Adding almost all customization variables on ps-setup. Doc
5 Fix.
6 (ps-print-version): New version number (6.3.3).
7 (ps-end-with-control-d): Initialization fix.
8 (ps-lines-printed): New var.
9 (ps-skip-newline): New fun.
10 (ps-setup, ps-prologue-file, ps-begin-job, ps-begin-page)
11 (ps-next-line, ps-continue-line, ps-plot-region)
12 (ps-generate-postscript-with-faces, ps-end-job): Code fix.
13
12000-12-29 Kenichi Handa <handa@etl.go.jp> 142000-12-29 Kenichi Handa <handa@etl.go.jp>
2 15
3 * international/fontset.el (x-complement-fontset-spec): Resolve 16 * international/fontset.el (x-complement-fontset-spec): Resolve
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 89000618d84..18e463ded6e 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -10,12 +10,12 @@
10;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters) 10;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters)
11;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br> 11;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br>
12;; Keywords: wp, print, PostScript 12;; Keywords: wp, print, PostScript
13;; Time-stamp: <2000/11/29 17:35:39 vinicius> 13;; Time-stamp: <2000/12/26 23:19:24 Vinicius>
14;; Version: 6.3.2 14;; Version: 6.3.3
15;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ 15;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
16 16
17(defconst ps-print-version "6.3.2" 17(defconst ps-print-version "6.3.3"
18 "ps-print.el, v 6.3.2 <2000/11/29 vinicius> 18 "ps-print.el, v 6.3.3 <2000/12/26 vinicius>
19 19
20Vinicius's last change version -- this file may have been edited as part of 20Vinicius's last change version -- this file may have been edited as part of
21Emacs without changes to the version number. When reporting bugs, please also 21Emacs without changes to the version number. When reporting bugs, please also
@@ -1664,7 +1664,7 @@ If it's nil, automatic feeding takes place."
1664 :type 'boolean 1664 :type 'boolean
1665 :group 'ps-print-printer) 1665 :group 'ps-print-printer)
1666 1666
1667(defcustom ps-end-with-control-d ps-windows-system 1667(defcustom ps-end-with-control-d (and ps-windows-system t)
1668 "*Non-nil means insert C-d at end of PostScript file generated." 1668 "*Non-nil means insert C-d at end of PostScript file generated."
1669 :type 'boolean 1669 :type 'boolean
1670 :group 'ps-print-printer) 1670 :group 'ps-print-printer)
@@ -1779,14 +1779,14 @@ Valid values are:
1779 `odd-page' print only odd pages. 1779 `odd-page' print only odd pages.
1780 1780
1781 `even-sheet' print only even sheets. 1781 `even-sheet' print only even sheets.
1782 That is, if `ps-n-up-printing' is 1, it behaves as `even'; but 1782 That is, if `ps-n-up-printing' is 1, it behaves as `even-page';
1783 for values greater than 1, it'll print only the even sheet of 1783 but for values greater than 1, it'll print only the even sheet
1784 paper. 1784 of paper.
1785 1785
1786 `odd-sheet' print only odd sheets. 1786 `odd-sheet' print only odd sheets.
1787 That is, if `ps-n-up-printing' is 1, it behaves as `odd'; but 1787 That is, if `ps-n-up-printing' is 1, it behaves as `odd-page';
1788 for values greater than 1, it'll print only the odd sheet of 1788 but for values greater than 1, it'll print only the odd sheet
1789 paper. 1789 of paper.
1790 1790
1791Any other value is treated as nil. 1791Any other value is treated as nil.
1792 1792
@@ -2862,6 +2862,7 @@ The table depends on the current ps-print setup."
2862 ps-printer-name-option %s 2862 ps-printer-name-option %s
2863 ps-print-region-function %s 2863 ps-print-region-function %s
2864 ps-manual-feed %S 2864 ps-manual-feed %S
2865 ps-end-with-control-d %S
2865 2866
2866 ps-paper-type %s 2867 ps-paper-type %s
2867 ps-warn-paper-type %s 2868 ps-warn-paper-type %s
@@ -2877,8 +2878,9 @@ The table depends on the current ps-print setup."
2877 ps-line-number-step %s 2878 ps-line-number-step %s
2878 ps-line-number-start %S 2879 ps-line-number-start %S
2879 2880
2880 ps-default-fg %s 2881 ps-default-fg %s
2881 ps-default-bg %s 2882 ps-default-bg %s
2883 ps-razzle-dazzle %S
2882 2884
2883 ps-use-face-background %s 2885 ps-use-face-background %s
2884 2886
@@ -2888,9 +2890,11 @@ The table depends on the current ps-print setup."
2888 2890
2889 ps-print-background-text %s 2891 ps-print-background-text %s
2890 2892
2891 ps-error-handler-message %s 2893 ps-error-handler-message %s
2892 ps-user-defined-prologue %s 2894 ps-user-defined-prologue %s
2893 ps-print-prologue-header %s 2895 ps-print-prologue-header %s
2896 ps-postscript-code-directory %S
2897 ps-adobe-tag %S
2894 2898
2895 ps-left-margin %s 2899 ps-left-margin %s
2896 ps-right-margin %s 2900 ps-right-margin %s
@@ -2909,6 +2913,8 @@ The table depends on the current ps-print setup."
2909 ps-spool-duplex %s 2913 ps-spool-duplex %s
2910 ps-spool-tumble %s 2914 ps-spool-tumble %s
2911 ps-banner-page-when-duplexing %s 2915 ps-banner-page-when-duplexing %s
2916 ps-left-header %s
2917 ps-right-header %s
2912 2918
2913 ps-n-up-printing %s 2919 ps-n-up-printing %s
2914 ps-n-up-margin %s 2920 ps-n-up-margin %s
@@ -2926,7 +2932,19 @@ The table depends on the current ps-print setup."
2926 2932
2927 ps-even-or-odd-pages %s 2933 ps-even-or-odd-pages %s
2928 ps-selected-pages %s 2934 ps-selected-pages %s
2929 ps-last-selected-pages %s) 2935 ps-last-selected-pages %s
2936
2937 ps-build-face-reference %S
2938 ps-always-build-face-reference %S
2939
2940 ps-auto-font-detect %S
2941 ps-bold-faces %s
2942 ps-italic-faces %s
2943 ps-underlined-faces %s)
2944
2945;; The following customized variables have long lists and are seldom modified:
2946;; ps-page-dimensions-database
2947;; ps-font-info-database
2930 2948
2931;;; ps-print - end of settings 2949;;; ps-print - end of settings
2932" 2950"
@@ -2938,6 +2956,7 @@ The table depends on the current ps-print setup."
2938 (ps-print-quote ps-printer-name-option) 2956 (ps-print-quote ps-printer-name-option)
2939 (ps-print-quote ps-print-region-function) 2957 (ps-print-quote ps-print-region-function)
2940 ps-manual-feed 2958 ps-manual-feed
2959 ps-end-with-control-d
2941 (ps-print-quote ps-paper-type) 2960 (ps-print-quote ps-paper-type)
2942 ps-warn-paper-type 2961 ps-warn-paper-type
2943 ps-landscape-mode 2962 ps-landscape-mode
@@ -2952,6 +2971,7 @@ The table depends on the current ps-print setup."
2952 ps-line-number-start 2971 ps-line-number-start
2953 (ps-print-quote ps-default-fg) 2972 (ps-print-quote ps-default-fg)
2954 (ps-print-quote ps-default-bg) 2973 (ps-print-quote ps-default-bg)
2974 ps-razzle-dazzle
2955 (ps-print-quote ps-use-face-background) 2975 (ps-print-quote ps-use-face-background)
2956 (ps-print-quote ps-print-control-characters) 2976 (ps-print-quote ps-print-control-characters)
2957 (ps-print-quote ps-print-background-image) 2977 (ps-print-quote ps-print-background-image)
@@ -2959,6 +2979,8 @@ The table depends on the current ps-print setup."
2959 (ps-print-quote ps-error-handler-message) 2979 (ps-print-quote ps-error-handler-message)
2960 (ps-print-quote ps-user-defined-prologue) 2980 (ps-print-quote ps-user-defined-prologue)
2961 (ps-print-quote ps-print-prologue-header) 2981 (ps-print-quote ps-print-prologue-header)
2982 ps-postscript-code-directory
2983 ps-adobe-tag
2962 ps-left-margin 2984 ps-left-margin
2963 ps-right-margin 2985 ps-right-margin
2964 ps-inter-column 2986 ps-inter-column
@@ -2976,6 +2998,8 @@ The table depends on the current ps-print setup."
2976 ps-spool-duplex 2998 ps-spool-duplex
2977 ps-spool-tumble 2999 ps-spool-tumble
2978 ps-banner-page-when-duplexing 3000 ps-banner-page-when-duplexing
3001 (ps-print-quote ps-left-header)
3002 (ps-print-quote ps-right-header)
2979 ps-n-up-printing 3003 ps-n-up-printing
2980 ps-n-up-margin 3004 ps-n-up-margin
2981 ps-n-up-border-p 3005 ps-n-up-border-p
@@ -2990,7 +3014,13 @@ The table depends on the current ps-print setup."
2990 (ps-print-quote ps-line-number-font-size) 3014 (ps-print-quote ps-line-number-font-size)
2991 (ps-print-quote ps-even-or-odd-pages) 3015 (ps-print-quote ps-even-or-odd-pages)
2992 (ps-print-quote ps-selected-pages) 3016 (ps-print-quote ps-selected-pages)
2993 (ps-print-quote ps-last-selected-pages))) 3017 (ps-print-quote ps-last-selected-pages)
3018 ps-build-face-reference
3019 ps-always-build-face-reference
3020 ps-auto-font-detect
3021 (ps-print-quote ps-bold-faces)
3022 (ps-print-quote ps-italic-faces)
3023 (ps-print-quote ps-underlined-faces)))
2994 3024
2995 3025
2996;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 3026;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -3141,8 +3171,9 @@ The table depends on the current ps-print setup."
3141 3171
3142(defun ps-prologue-file (filenumber) 3172(defun ps-prologue-file (filenumber)
3143 (save-excursion 3173 (save-excursion
3144 (let* ((filename (format "%sps-prin%d.ps" 3174 (let* ((filename (convert-standard-filename
3145 ps-postscript-code-directory filenumber)) 3175 (expand-file-name (format "ps-prin%d.ps" filenumber)
3176 ps-postscript-code-directory)))
3146 (buffer 3177 (buffer
3147 (or (find-file-noselect filename 'no-warn 'rawfile) 3178 (or (find-file-noselect filename 'no-warn 'rawfile)
3148 (error "ps-print PostScript prologue `%s' file was not found." 3179 (error "ps-print PostScript prologue `%s' file was not found."
@@ -3179,7 +3210,8 @@ The table depends on the current ps-print setup."
3179(defvar ps-page-column 0) ; column counter 3210(defvar ps-page-column 0) ; column counter
3180(defvar ps-page-printed 0) ; total pages printed 3211(defvar ps-page-printed 0) ; total pages printed
3181(defvar ps-page-n-up 0) ; n-up counter 3212(defvar ps-page-n-up 0) ; n-up counter
3182(defvar ps-showline-count 1) 3213(defvar ps-lines-printed 0) ; total lines printed
3214(defvar ps-showline-count 1) ; line number counter
3183(defvar ps-first-page nil) 3215(defvar ps-first-page nil)
3184(defvar ps-last-page nil) 3216(defvar ps-last-page nil)
3185(defvar ps-print-page-p t) 3217(defvar ps-print-page-p t)
@@ -4787,12 +4819,6 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4787 4819
4788(defun ps-begin-job () 4820(defun ps-begin-job ()
4789 ;; prologue files 4821 ;; prologue files
4790 (let ((last-char (aref ps-postscript-code-directory
4791 (1- (length ps-postscript-code-directory)))))
4792 (or (eq last-char ?/)
4793 (and ps-windows-system (eq last-char ?\\))
4794 (setq ps-postscript-code-directory
4795 (concat ps-postscript-code-directory "/"))))
4796 (or (equal ps-mark-code-directory ps-postscript-code-directory) 4822 (or (equal ps-mark-code-directory ps-postscript-code-directory)
4797 (setq ps-print-prologue-0 (ps-prologue-file 0) 4823 (setq ps-print-prologue-0 (ps-prologue-file 0)
4798 ps-print-prologue-1 (ps-prologue-file 1) 4824 ps-print-prologue-1 (ps-prologue-file 1)
@@ -4839,6 +4865,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4839 ps-page-sheet 0 4865 ps-page-sheet 0
4840 ps-page-n-up 0 4866 ps-page-n-up 0
4841 ps-page-column 0 4867 ps-page-column 0
4868 ps-lines-printed 0
4842 ps-print-page-p t 4869 ps-print-page-p t
4843 ps-showline-count (car ps-printing-region) 4870 ps-showline-count (car ps-printing-region)
4844 ps-font-size-internal (ps-get-font-size 'ps-font-size) 4871 ps-font-size-internal (ps-get-font-size 'ps-font-size)
@@ -4943,7 +4970,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4943 (ps-generate-header "HeaderLinesRight" ps-right-header) 4970 (ps-generate-header "HeaderLinesRight" ps-right-header)
4944 (ps-output (format "%d SetHeaderLines\n" ps-header-lines))) 4971 (ps-output (format "%d SetHeaderLines\n" ps-header-lines)))
4945 4972
4946 (ps-output "BeginPage\n") 4973 (ps-output (number-to-string ps-lines-printed) " BeginPage\n")
4947 (ps-set-font ps-current-font) 4974 (ps-set-font ps-current-font)
4948 (ps-set-bg ps-current-bg) 4975 (ps-set-bg ps-current-bg)
4949 (ps-set-color ps-current-color) 4976 (ps-set-color ps-current-color)
@@ -4952,8 +4979,15 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4952(defun ps-end-page () 4979(defun ps-end-page ()
4953 (ps-output "EndPage\nEndDSCPage\n")) 4980 (ps-output "EndPage\nEndDSCPage\n"))
4954 4981
4982(defun ps-skip-newline (limit)
4983 (setq ps-showline-count (1+ ps-showline-count)
4984 ps-lines-printed (1+ ps-lines-printed))
4985 (and (< (point) limit)
4986 (forward-char 1)))
4987
4955(defun ps-next-line () 4988(defun ps-next-line ()
4956 (setq ps-showline-count (1+ ps-showline-count)) 4989 (setq ps-showline-count (1+ ps-showline-count)
4990 ps-lines-printed (1+ ps-lines-printed))
4957 (let ((lh (ps-line-height 'ps-font-for-text))) 4991 (let ((lh (ps-line-height 'ps-font-for-text)))
4958 (if (< ps-height-remaining lh) 4992 (if (< ps-height-remaining lh)
4959 (ps-next-page) 4993 (ps-next-page)
@@ -4962,6 +4996,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4962 (ps-output "HL\n")))) 4996 (ps-output "HL\n"))))
4963 4997
4964(defun ps-continue-line () 4998(defun ps-continue-line ()
4999 (setq ps-lines-printed (1+ ps-lines-printed))
4965 (let ((lh (ps-line-height 'ps-font-for-text))) 5000 (let ((lh (ps-line-height 'ps-font-for-text)))
4966 (if (< ps-height-remaining lh) 5001 (if (< ps-height-remaining lh)
4967 (ps-next-page) 5002 (ps-next-page)
@@ -5096,14 +5131,24 @@ XSTART YSTART are the relative position for the first page in a sheet.")
5096 bg-color)))) 5131 bg-color))))
5097 5132
5098 ((= match ?\n) ; newline 5133 ((= match ?\n) ; newline
5099 (ps-next-line)) 5134 (if (looking-at "\f[^\n]")
5135 ;; \n\ftext\n ==>> next page, but keep line counting!!
5136 (progn
5137 (ps-skip-newline to)
5138 (ps-next-page))
5139 ;; \n\f\n ==>> it'll be handled by form feed
5140 ;; \ntext\n ==>> next line
5141 (ps-next-line)))
5100 5142
5101 ((= match ?\f) ; form feed 5143 ((= match ?\f) ; form feed
5102 ;; do not skip page if previous character is NEWLINE and 5144 ;; do not skip page if previous character is NEWLINE and
5103 ;; it is a beginning of page. 5145 ;; it is a beginning of page.
5104 (or (and (equal (char-after (1- match-point)) ?\n) 5146 (unless (and (equal (char-after (1- match-point)) ?\n)
5105 (= ps-height-remaining ps-print-height)) 5147 (= ps-height-remaining ps-print-height))
5106 (ps-next-page))) 5148 ;; \f\n ==>> skip \n, but keep line counting!!
5149 (and (equal (following-char) ?\n)
5150 (ps-skip-newline to))
5151 (ps-next-page)))
5107 5152
5108 (composition ; a composite sequence 5153 (composition ; a composite sequence
5109 (ps-plot 'ps-mule-plot-composition match-point (point) bg-color)) 5154 (ps-plot 'ps-mule-plot-composition match-point (point) bg-color))
@@ -5354,13 +5399,12 @@ If FACE is not a valid face name, it is used default face."
5354 ;; Loop through the extents... 5399 ;; Loop through the extents...
5355 (while a 5400 (while a
5356 (setq record (car a) 5401 (setq record (car a)
5357
5358 position (car record) 5402 position (car record)
5359 record (cdr record)
5360 5403
5361 type (car record)
5362 record (cdr record) 5404 record (cdr record)
5405 type (car record)
5363 5406
5407 record (cdr record)
5364 extent (car record)) 5408 extent (car record))
5365 5409
5366 ;; Plot up to this record. 5410 ;; Plot up to this record.
@@ -5532,7 +5576,8 @@ If FACE is not a valid face name, it is used default face."
5532 (let ((ps-n-up-printing 0)) 5576 (let ((ps-n-up-printing 0))
5533 (ps-header-sheet) 5577 (ps-header-sheet)
5534 (ps-output "/PrintHeader false def\n/ColumnIndex 0 def\n" 5578 (ps-output "/PrintHeader false def\n/ColumnIndex 0 def\n"
5535 "/PrintLineNumber false def\nBeginPage\n") 5579 "/PrintLineNumber false def\n"
5580 (number-to-string ps-lines-printed) " BeginPage\n")
5536 (ps-end-page))) 5581 (ps-end-page)))
5537 ;; Set end of PostScript file 5582 ;; Set end of PostScript file
5538 (and previous-print 5583 (and previous-print