aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Moellmann2000-11-02 12:04:59 +0000
committerGerd Moellmann2000-11-02 12:04:59 +0000
commit4b3eb10f1789adcc93f7a3220c722ef75f53c424 (patch)
tree6b82be983909d6a1016f1f1992e707fb6f2fdc24
parent7da794dfa0f564372d4713783d1b7f5640f9625f (diff)
downloademacs-4b3eb10f1789adcc93f7a3220c722ef75f53c424.tar.gz
emacs-4b3eb10f1789adcc93f7a3220c722ef75f53c424.zip
Extension for even/odd printing. Doc Fix.
(ps-print-version): New version number (6.3.1). (ps-even-or-odd-pages): Customization fix. (ps-print-page-p, ps-begin-file, ps-begin-job, ps-page-number) (ps-header-sheet, ps-header-page, ps-end-job): Code fix. (ps-page-count): Var replaced by `ps-page-column'. (ps-page-column, ps-page-sheet, ps-page-printed): New vars. (ps-print-sheet-p): New fun.
-rw-r--r--lisp/ChangeLog11
-rw-r--r--lisp/ps-print.el132
2 files changed, 104 insertions, 39 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7a4d9519d53..deeffa28be1 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,14 @@
12000-11-02 Vinicius Jose Latorre <vinicius@cpqd.com.br>
2
3 * ps-print.el: Extension for even/odd printing. Doc Fix.
4 (ps-print-version): New version number (6.3.1).
5 (ps-even-or-odd-pages): Customization fix.
6 (ps-print-page-p, ps-begin-file, ps-begin-job, ps-page-number)
7 (ps-header-sheet, ps-header-page, ps-end-job): Code fix.
8 (ps-page-count): Var replaced by `ps-page-column'.
9 (ps-page-column, ps-page-sheet, ps-page-printed): New vars.
10 (ps-print-sheet-p): New fun.
11
12000-11-02 Miles Bader <miles@lsi.nec.co.jp> 122000-11-02 Miles Bader <miles@lsi.nec.co.jp>
2 13
3 * tooltip.el (tooltip-gud-tips-setup): New function. 14 * tooltip.el (tooltip-gud-tips-setup): New function.
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 8d46574755f..41708bd3b10 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -9,12 +9,12 @@
9;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters) 9;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters)
10;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br> 10;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br>
11;; Keywords: wp, print, PostScript 11;; Keywords: wp, print, PostScript
12;; Time-stamp: <2000/10/28 23:38:44 Vinicius> 12;; Time-stamp: <2000/11/01 14:39:00 vinicius>
13;; Version: 6.3 13;; Version: 6.3.1
14;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ 14;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
15 15
16(defconst ps-print-version "6.3" 16(defconst ps-print-version "6.3.1"
17 "ps-print.el, v 6.3 <2000/10/28 vinicius> 17 "ps-print.el, v 6.3.1 <2000/10/30 vinicius>
18 18
19Vinicius's last change version -- this file may have been edited as part of 19Vinicius's last change version -- this file may have been edited as part of
20Emacs without changes to the version number. When reporting bugs, please also 20Emacs without changes to the version number. When reporting bugs, please also
@@ -275,12 +275,18 @@ Please send all bug fixes and enhancements to
275;; 275;;
276;; nil print all pages. 276;; nil print all pages.
277;; 277;;
278;; even print only even pages. 278;; even-page print only even pages.
279;; 279;;
280;; odd print only odd pages. 280;; odd-page print only odd pages.
281;;
282;; even-sheet print only even sheets.
283;;
284;; odd-sheet print only odd sheets.
281;; 285;;
282;; Any other value is treated as nil. The default value is nil. 286;; Any other value is treated as nil. The default value is nil.
283;; 287;;
288;; See `ps-even-or-odd-pages' for more detailed documentation.
289;;
284;; 290;;
285;; Horizontal layout 291;; Horizontal layout
286;; ----------------- 292;; -----------------
@@ -1743,9 +1749,19 @@ Valid values are:
1743 1749
1744 nil print all pages. 1750 nil print all pages.
1745 1751
1746 `even' print only even pages. 1752 `even-page' print only even pages.
1753
1754 `odd-page' print only odd pages.
1755
1756 `even-sheet' print only even sheets.
1757 That is, if `ps-n-up-printing' is 1, it behaves as `even'; but
1758 for values greater than 1, it'll print only the even sheet of
1759 paper.
1747 1760
1748 `odd' print only odd pages. 1761 `odd-sheet' print only odd sheets.
1762 That is, if `ps-n-up-printing' is 1, it behaves as `odd'; but
1763 for values greater than 1, it'll print only the odd sheet of
1764 paper.
1749 1765
1750Any other value is treated as nil. 1766Any other value is treated as nil.
1751 1767
@@ -1753,19 +1769,35 @@ If you set `ps-selected-pages' (see it for documentation), first the pages are
1753filtered by `ps-selected-pages' and then by `ps-even-or-odd-pages'. For 1769filtered by `ps-selected-pages' and then by `ps-even-or-odd-pages'. For
1754example, if we have: 1770example, if we have:
1755 1771
1756 (setq ps-selected-pages '(1 4 (6 . 10) 12)) 1772 (setq ps-selected-pages '(1 4 (6 . 10) (12 . 16) 20))
1757 1773
1758We have the following results: 1774Combining with `ps-even-or-odd-pages' and `ps-n-up-printing', we have:
1759 1775
1776`ps-n-up-printing' = 1:
1760 `ps-even-or-odd-pages' PAGES PRINTED 1777 `ps-even-or-odd-pages' PAGES PRINTED
1761 nil 1, 4, 6, 7, 8, 9, 10, 12 1778 nil 1, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 20
1762 even 4, 6, 8, 10, 12 1779 even-page 4, 6, 8, 10, 12, 14, 16, 20
1763 odd 1, 7, 9" 1780 odd-page 1, 7, 9, 13, 15
1781 even-sheet 4, 6, 8, 10, 12, 14, 16, 20
1782 odd-sheet 1, 7, 9, 13, 15
1783
1784`ps-n-up-printing' = 2:
1785 `ps-even-or-odd-pages' PAGES PRINTED
1786 nil 1/4, 6/7, 8/9, 10/12, 13/14, 15/16, 20
1787 even-page 4/6, 8/10, 12/14, 16/20
1788 odd-page 1/7, 9/13, 15
1789 even-sheet 6/7, 10/12, 15/16
1790 odd-sheet 1/4, 8/9, 13/14, 20
1791
1792So even-page/odd-page are about page parity and even-sheet/odd-sheet are about
1793sheet parity."
1764 :type '(choice :menu-tag "Print Even/Odd Pages" 1794 :type '(choice :menu-tag "Print Even/Odd Pages"
1765 :tag "Print Even/Odd Pages" 1795 :tag "Print Even/Odd Pages"
1766 (const :tag "All Pages" nil) 1796 (const :tag "All Pages" nil)
1767 (const :tag "Only Even Pages" even) 1797 (const :tag "Only Even Pages" even-page)
1768 (const :tag "Only Odd Pages" odd)) 1798 (const :tag "Only Odd Pages" odd-page)
1799 (const :tag "Only Even Sheets" even-sheet)
1800 (const :tag "Only Odd Sheets" odd-sheet))
1769 :group 'ps-print-page) 1801 :group 'ps-print-page)
1770 1802
1771(defcustom ps-print-control-characters 'control-8-bit 1803(defcustom ps-print-control-characters 'control-8-bit
@@ -3080,10 +3112,12 @@ The table depends on the current ps-print setup."
3080(defvar ps-output-head nil) 3112(defvar ps-output-head nil)
3081(defvar ps-output-tail nil) 3113(defvar ps-output-tail nil)
3082 3114
3083(defvar ps-page-postscript 0) 3115(defvar ps-page-postscript 0) ; page number
3084(defvar ps-page-order 0) 3116(defvar ps-page-order 0) ; PostScript page counter
3085(defvar ps-page-count 0) 3117(defvar ps-page-sheet 0) ; sheet counter
3086(defvar ps-page-n-up 0) 3118(defvar ps-page-column 0) ; column counter
3119(defvar ps-page-printed 0) ; total pages printed
3120(defvar ps-page-n-up 0) ; n-up counter
3087(defvar ps-showline-count 1) 3121(defvar ps-showline-count 1)
3088(defvar ps-first-page nil) 3122(defvar ps-first-page nil)
3089(defvar ps-last-page nil) 3123(defvar ps-last-page nil)
@@ -3733,14 +3767,24 @@ page-height == bm + print-height + tm - ho - hh
3733 (<= ps-page-postscript ps-last-page))) 3767 (<= ps-page-postscript ps-last-page)))
3734 (t 3768 (t
3735 nil)) 3769 nil))
3736 (cond ((eq ps-even-or-odd-pages 'even) 3770 (cond ((eq ps-even-or-odd-pages 'even-page)
3737 (= (logand ps-page-postscript 1) 0)) 3771 (= (logand ps-page-postscript 1) 0))
3738 ((eq ps-even-or-odd-pages 'odd) 3772 ((eq ps-even-or-odd-pages 'odd-page)
3739 (= (logand ps-page-postscript 1) 1)) 3773 (= (logand ps-page-postscript 1) 1))
3740 (t) 3774 (t)
3741 )))) 3775 ))))
3742 3776
3743 3777
3778(defun ps-print-sheet-p ()
3779 (setq ps-print-page-p
3780 (cond ((eq ps-even-or-odd-pages 'even-sheet)
3781 (= (logand ps-page-sheet 1) 0))
3782 ((eq ps-even-or-odd-pages 'odd-sheet)
3783 (= (logand ps-page-sheet 1) 1))
3784 (t)
3785 )))
3786
3787
3744(defun ps-output (&rest args) 3788(defun ps-output (&rest args)
3745 (when ps-print-page-p 3789 (when ps-print-page-p
3746 (setcdr ps-output-tail args) 3790 (setcdr ps-output-tail args)
@@ -4420,7 +4464,9 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4420 (ps-get-page-dimensions) 4464 (ps-get-page-dimensions)
4421 (setq ps-page-postscript 0 4465 (setq ps-page-postscript 0
4422 ps-page-order 0 4466 ps-page-order 0
4467 ps-page-sheet 0
4423 ps-page-n-up 0 4468 ps-page-n-up 0
4469 ps-page-printed 0
4424 ps-print-page-p t 4470 ps-print-page-p t
4425 ps-background-text-count 0 4471 ps-background-text-count 0
4426 ps-background-image-count 0 4472 ps-background-image-count 0
@@ -4734,7 +4780,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4734 (delete-region (match-beginning 0) (point-max)))) 4780 (delete-region (match-beginning 0) (point-max))))
4735 ;; miscellaneous 4781 ;; miscellaneous
4736 (setq ps-showline-count (car ps-printing-region) 4782 (setq ps-showline-count (car ps-printing-region)
4737 ps-page-count 0 4783 ps-page-column 0
4738 ps-font-size-internal (ps-get-font-size 'ps-font-size) 4784 ps-font-size-internal (ps-get-font-size 'ps-font-size)
4739 ps-header-font-size-internal (ps-get-font-size 'ps-header-font-size) 4785 ps-header-font-size-internal (ps-get-font-size 'ps-header-font-size)
4740 ps-header-title-font-size-internal 4786 ps-header-title-font-size-internal
@@ -4769,8 +4815,8 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4769 4815
4770(defun ps-page-number () 4816(defun ps-page-number ()
4771 (if ps-print-only-one-header 4817 (if ps-print-only-one-header
4772 (1+ (/ (1- ps-page-count) ps-number-of-columns)) 4818 (1+ (/ (1- ps-page-column) ps-number-of-columns))
4773 ps-page-count)) 4819 ps-page-column))
4774 4820
4775 4821
4776(defun ps-next-page () 4822(defun ps-next-page ()
@@ -4781,25 +4827,28 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4781 4827
4782(defun ps-header-sheet () 4828(defun ps-header-sheet ()
4783 ;; Print only when a new sheet begins. 4829 ;; Print only when a new sheet begins.
4784 (setq ps-page-order (1+ ps-page-order)) 4830 (and ps-print-page-p (> ps-page-sheet 0)
4785 (and (> ps-page-order 1)
4786 (ps-output "EndSheet\n")) 4831 (ps-output "EndSheet\n"))
4787 (ps-output (if ps-n-up-on 4832 (setq ps-page-sheet (1+ ps-page-sheet))
4788 (format "\n%%%%Page: (%d \\(%d\\)) %d\n" 4833 (when (ps-print-sheet-p)
4789 ps-page-order ps-page-postscript ps-page-order) 4834 (setq ps-page-order (1+ ps-page-order))
4790 (format "\n%%%%Page: %d %d\n" 4835 (ps-output (if ps-n-up-on
4791 ps-page-postscript ps-page-order)) 4836 (format "\n%%%%Page: (%d \\(%d\\)) %d\n"
4792 (format "%d BeginSheet\nBeginDSCPage\n" 4837 ps-page-order ps-page-postscript ps-page-order)
4793 ps-n-up-printing))) 4838 (format "\n%%%%Page: %d %d\n"
4839 ps-page-postscript ps-page-order))
4840 (format "%d BeginSheet\nBeginDSCPage\n"
4841 ps-n-up-printing))))
4794 4842
4795 4843
4796(defun ps-header-page () 4844(defun ps-header-page ()
4797 ;; set total line and page number when printing has finished 4845 ;; set total line and page number when printing has finished
4798 ;; (see `ps-generate') 4846 ;; (see `ps-generate')
4799 (if (zerop (mod ps-page-count ps-number-of-columns)) 4847 (if (zerop (mod ps-page-column ps-number-of-columns))
4800 (progn 4848 (progn
4801 (setq ps-page-postscript (1+ ps-page-postscript)) 4849 (setq ps-page-postscript (1+ ps-page-postscript))
4802 (when (ps-print-page-p) 4850 (when (ps-print-page-p)
4851 (ps-print-sheet-p)
4803 (if (zerop (mod ps-page-n-up ps-n-up-printing)) 4852 (if (zerop (mod ps-page-n-up ps-n-up-printing))
4804 ;; Print only when a new sheet begins. 4853 ;; Print only when a new sheet begins.
4805 (progn 4854 (progn
@@ -4809,11 +4858,13 @@ XSTART YSTART are the relative position for the first page in a sheet.")
4809 (ps-output "BeginDSCPage\n") 4858 (ps-output "BeginDSCPage\n")
4810 (run-hooks 'ps-print-begin-page-hook)) 4859 (run-hooks 'ps-print-begin-page-hook))
4811 (ps-background ps-page-postscript) 4860 (ps-background ps-page-postscript)
4812 (setq ps-page-n-up (1+ ps-page-n-up)))) 4861 (setq ps-page-n-up (1+ ps-page-n-up))
4862 (and ps-print-page-p
4863 (setq ps-page-printed (1+ ps-page-printed)))))
4813 ;; Print only when a new column begins. 4864 ;; Print only when a new column begins.
4814 (ps-output "BeginDSCPage\n") 4865 (ps-output "BeginDSCPage\n")
4815 (run-hooks 'ps-print-begin-column-hook)) 4866 (run-hooks 'ps-print-begin-column-hook))
4816 (setq ps-page-count (1+ ps-page-count))) 4867 (setq ps-page-column (1+ ps-page-column)))
4817 4868
4818(defun ps-begin-page () 4869(defun ps-begin-page ()
4819 (ps-get-page-dimensions) 4870 (ps-get-page-dimensions)
@@ -5395,10 +5446,11 @@ If FACE is not a valid face name, it is used default face."
5395 5446
5396 5447
5397(defun ps-end-job (needs-begin-file) 5448(defun ps-end-job (needs-begin-file)
5398 (let ((ps-print-page-p t)) 5449 (let ((previous-print ps-print-page-p)
5450 (ps-print-page-p t))
5399 (ps-flush-output) 5451 (ps-flush-output)
5400 (save-excursion 5452 (save-excursion
5401 (let ((pages-per-sheet (mod ps-page-n-up ps-n-up-printing)) 5453 (let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing))
5402 (total-lines (cdr ps-printing-region)) 5454 (total-lines (cdr ps-printing-region))
5403 (total-pages (ps-page-number)) 5455 (total-pages (ps-page-number))
5404 case-fold-search) 5456 case-fold-search)
@@ -5421,7 +5473,9 @@ If FACE is not a valid face name, it is used default face."
5421 "/PrintLineNumber false def\nBeginPage\n") 5473 "/PrintLineNumber false def\nBeginPage\n")
5422 (ps-end-page))) 5474 (ps-end-page)))
5423 ;; Set end of PostScript file 5475 ;; Set end of PostScript file
5424 (ps-output "EndSheet\n\n%%Trailer\n%%Pages: " 5476 (and previous-print
5477 (ps-output "EndSheet\n"))
5478 (ps-output "\n%%Trailer\n%%Pages: "
5425 (number-to-string 5479 (number-to-string
5426 (if (and needs-begin-file 5480 (if (and needs-begin-file
5427 ps-banner-page-when-duplexing) 5481 ps-banner-page-when-duplexing)