• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/emacs-92/emacs/lisp/

Lines Matching +defs:pr +defs:txt +defs:buffer

12 (defconst pr-version "6.8.4"
55 ;; You can use a buffer interface instead of menus. It looks like a
56 ;; customization buffer. Basically, it has the same options found in the
57 ;; menu and some extra options, all this on a buffer.
66 ;; spool and to despool PostScript buffer. So, `printing' provides an
91 ;; The buffer *Printing Command Output* is where the `printing' log messages
93 ;; buffer *Printing Command Output*. A log entry has the following form:
119 ;; So, if something goes wrong, a good place to take a look is the buffer
120 ;; *Printing Command Output*. Don't forget to see also the buffer *Messages*,
130 ;; Then try to set the variables: `pr-ps-name', `pr-ps-printer-alist',
131 ;; `pr-txt-name', `pr-txt-printer-alist' and `pr-path-alist'. These variables
135 ;; typing C-h v pr-ps-name RET (for example) if you already loaded printing
142 ;; One way to set variables is by calling `pr-customize', customize all
152 ;; (setq pr-path-alist
157 ;; (setq pr-txt-name 'prt_06a)
158 ;; (setq pr-txt-printer-alist
164 ;; (setq pr-ps-name 'lps_06b)
165 ;; (setq pr-ps-printer-alist
174 ;; (pr-update-menus t) ; update now printer and utility menus
179 ;; (setq pr-path-alist
184 ;; (setq pr-txt-name 'prt_06a)
185 ;; (setq pr-txt-printer-alist
189 ;; (setq pr-ps-name 'lps_06b)
190 ;; (setq pr-ps-printer-alist
195 ;; (pr-update-menus t) ; update now printer and utility menus
202 ;; set, as they are implicit set by `pr-ps-printer-alist' and
203 ;; `pr-txt-printer-alist'.
209 ;; 1. Open a buffer (or use the *scratch* buffer).
214 ;; 3. Print this buffer with duplex turned on.
230 ;; there is no paper in the printer, then try to set `pr-delete-temp-file'
234 ;; 3. Don't try to print a dynamic buffer, that is, a buffer which is
236 ;; message. Instead, save the dynamic buffer to a file or copy it in
237 ;; another buffer and, then, print the file or the new static buffer.
238 ;; An example of dynamic buffer is the *Messages* buffer.
243 ;; print /D:\\host\printer somefile.txt
246 ;; `printer' is the printer name and `somefile.txt' is a text file.
249 ;; `somefile.txt' or, instead, it returns the following message:
259 ;; `pr-txt-printer-alist' (which see).
275 ;; (setq pr-ps-printer-alist
296 ;; See also documentation for `pr-ps-printer-alist'.
307 ;; (pr-update-menus t)
309 ;; During `pr-update-menus' evaluation:
322 ;; pr-interface
323 ;; pr-ps-directory-preview
324 ;; pr-ps-directory-using-ghostscript
325 ;; pr-ps-directory-print
326 ;; pr-ps-directory-ps-print
327 ;; pr-ps-buffer-preview
328 ;; pr-ps-buffer-using-ghostscript
329 ;; pr-ps-buffer-print
330 ;; pr-ps-buffer-ps-print
331 ;; pr-ps-region-preview
332 ;; pr-ps-region-using-ghostscript
333 ;; pr-ps-region-print
334 ;; pr-ps-region-ps-print
335 ;; pr-ps-mode-preview
336 ;; pr-ps-mode-using-ghostscript
337 ;; pr-ps-mode-print
338 ;; pr-ps-mode-ps-print
339 ;; pr-ps-file-preview
340 ;; pr-ps-file-up-preview
341 ;; pr-ps-file-using-ghostscript
342 ;; pr-ps-file-print
343 ;; pr-ps-file-ps-print
344 ;; pr-ps-file-up-ps-print
345 ;; pr-ps-fast-fire
346 ;; pr-despool-preview
347 ;; pr-despool-using-ghostscript
348 ;; pr-despool-print
349 ;; pr-despool-ps-print
350 ;; pr-printify-directory
351 ;; pr-printify-buffer
352 ;; pr-printify-region
353 ;; pr-txt-directory
354 ;; pr-txt-buffer
355 ;; pr-txt-region
356 ;; pr-txt-mode
357 ;; pr-txt-fast-fire
358 ;; pr-toggle-file-duplex
359 ;; pr-toggle-file-tumble
360 ;; pr-toggle-file-landscape
361 ;; pr-toggle-ghostscript
362 ;; pr-toggle-faces
363 ;; pr-toggle-spool
364 ;; pr-toggle-duplex
365 ;; pr-toggle-tumble
366 ;; pr-toggle-landscape
367 ;; pr-toggle-upside-down
368 ;; pr-toggle-line
369 ;; pr-toggle-zebra
370 ;; pr-toggle-header
371 ;; pr-toggle-lock
372 ;; pr-toggle-region
373 ;; pr-toggle-mode
374 ;; pr-customize
376 ;; pr-help
377 ;; pr-ps-name
378 ;; pr-txt-name
379 ;; pr-ps-utility
380 ;; pr-show-ps-setup
381 ;; pr-show-pr-setup
382 ;; pr-show-lpr-setup
387 ;; `pr-interface' buffer interface for printing package.
388 ;; `pr-help' help for printing package.
389 ;; `pr-ps-name' interactively select a PostScript printer.
390 ;; `pr-txt-name' interactively select a text printer.
391 ;; `pr-ps-utility' interactively select a PostScript utility.
392 ;; `pr-show-*-setup' show current settings.
393 ;; `pr-ps-*' deal with PostScript code generation.
394 ;; `pr-txt-*' deal with text generation.
395 ;; `pr-toggle-*' toggle on/off some boolean variable.
396 ;; `pr-despool-*' despool the PostScript spooling buffer.
397 ;; `pr-printify-*' replace nonprintable ASCII by printable ASCII
408 ;; `pr-print-using-ghostscript' option.
412 ;; `*-buffer*' process a buffer.
420 ;; `pr-ps-buffer-using-ghostscript'
421 ;; Use ghostscript to print a buffer.
423 ;; `pr-ps-file-print'
426 ;; `pr-toggle-spool'
427 ;; Toggle spooling buffer.
433 ;; Besides operating one buffer or region each time, you also can postpone
435 ;; temporary Emacs buffer. This way you can save banner pages between
437 ;; `pr-toggle-spool' interactively or through menu bar.
441 ;; C-u M-x pr-ps-buffer-print RET
443 ;; The `pr-ps-buffer-print' command prompts you for a n-up printing number and
448 ;; generation, that is, with `pr-ps-*' and `pr-despool-*' commands. If
449 ;; spooling is on, only `pr-despool-*' commands prompt for a file name and save
455 ;; `pr-list-directory').
459 ;; it's only needed to declare the customization in `pr-mode-alist' (see
462 ;; you're in the *Summary* buffer, if you forget to switch to the *Article*
463 ;; buffer before printing, you'll get a nicely formatted list of article
465 ;; to switch from gnus *Summary* buffer first.
469 ;; (global-set-key [print] 'pr-ps-fast-fire)
470 ;; (global-set-key [M-print] 'pr-ps-mode-using-ghostscript)
471 ;; (global-set-key [S-print] 'pr-ps-mode-using-ghostscript)
472 ;; (global-set-key [C-print] 'pr-txt-fast-fire)
473 ;; (global-set-key [C-M-print] 'pr-txt-fast-fire)
477 ;; (global-set-key 'f22 'pr-ps-fast-fire)
478 ;; (global-set-key '(meta f22) 'pr-ps-mode-using-ghostscript)
479 ;; (global-set-key '(shift f22) 'pr-ps-mode-using-ghostscript)
480 ;; (global-set-key '(control f22) 'pr-txt-fast-fire)
481 ;; (global-set-key '(control meta f22) 'pr-txt-fast-fire)
485 ;; (global-set-key "\C-ci" 'pr-interface)
486 ;; (global-set-key "\C-cbp" 'pr-ps-buffer-print)
487 ;; (global-set-key "\C-cbx" 'pr-ps-buffer-preview)
488 ;; (global-set-key "\C-cbb" 'pr-ps-buffer-using-ghostscript)
489 ;; (global-set-key "\C-crp" 'pr-ps-region-print)
490 ;; (global-set-key "\C-crx" 'pr-ps-region-preview)
491 ;; (global-set-key "\C-crr" 'pr-ps-region-using-ghostscript)
500 ;; `pr-path-style' Specify which path style to use for external
503 ;; `pr-path-alist' Specify an alist for command paths.
505 ;; `pr-txt-name' Specify a printer for printing a text file.
507 ;; `pr-txt-printer-alist' Specify an alist of all text printers.
509 ;; `pr-ps-name' Specify a printer for printing a PostScript
512 ;; `pr-ps-printer-alist' Specify an alist for all PostScript printers.
514 ;; `pr-temp-dir' Specify a directory for temporary files during
517 ;; `pr-ps-temp-file' Specify PostScript temporary file name prefix.
519 ;; `pr-file-modes' Specify the file permission bits for newly
522 ;; `pr-gv-command' Specify path and name of the gsview/gv
525 ;; `pr-gs-command' Specify path and name of the ghostscript
528 ;; `pr-gs-switches' Specify ghostscript switches.
530 ;; `pr-gs-device' Specify ghostscript device switch value.
532 ;; `pr-gs-resolution' Specify ghostscript resolution switch value.
534 ;; `pr-print-using-ghostscript' Non-nil means print using ghostscript.
536 ;; `pr-faces-p' Non-nil means print with face attributes.
538 ;; `pr-spool-p' Non-nil means spool printing in a buffer.
540 ;; `pr-file-landscape' Non-nil means print PostScript file in
543 ;; `pr-file-duplex' Non-nil means print PostScript file in duplex
546 ;; `pr-file-tumble' Non-nil means print PostScript file in tumble
549 ;; `pr-auto-region' Non-nil means region is automagically detected.
551 ;; `pr-auto-mode' Non-nil means major-mode specific printing is
554 ;; `pr-mode-alist' Specify an alist for a major-mode and printing
557 ;; `pr-ps-utility' Specify PostScript utility processing.
559 ;; `pr-ps-utility-alist' Specify an alist for PostScript utility
562 ;; `pr-menu-lock' Non-nil means menu is locked while selecting
565 ;; `pr-menu-char-height' Specify menu char height in pixels.
567 ;; `pr-menu-char-width' Specify menu char width in pixels.
569 ;; `pr-setting-database' Specify an alist for settings in general.
571 ;; `pr-visible-entry-list' Specify a list of Printing menu visible
574 ;; `pr-delete-temp-file' Non-nil means delete temporary files.
576 ;; `pr-list-directory' Non-nil means list directory when processing a
579 ;; `pr-buffer-name' Specify the name of the buffer interface for
582 ;; `pr-buffer-name-ignore' Specify a regexp list for buffer names to be
583 ;; ignored in interface buffer.
585 ;; `pr-buffer-verbose' Non-nil means to be verbose when editing a
586 ;; field in interface buffer.
592 ;; (setq pr-faces-p t)
599 ;; M-x set-variable RET pr-faces-p RET t RET
615 ;; C-h v pr-faces-p RET
623 ;; M-x pr-customize RET
679 ;; See `pr-visible-entry-list' for hiding some parts of the menu.
685 ;; 0. You can use a buffer interface instead of menus. It looks like the
686 ;; customization buffer. Basically, it has the same options found in the
687 ;; menu and some extra options, all this on a buffer.
692 ;; menu) or PostScript temporary file for a directory, a buffer, a region
697 ;; Instead of previewing each buffer, region or major mode at once, you
698 ;; can save temporarily the PostScript code generated in a buffer and
700 ;; spooling buffer in a temporary file and uses ghostview to preview it.
708 ;; the customization in `pr-mode-alist' and invoke some of
711 ;; or rmail, etc.) and you're in the *Summary* buffer, if you
712 ;; forget to switch to the *Article* buffer before printing,
715 ;; switch from gnus *Summary* buffer first.
722 ;; See `pr-ps-utility-alist' and `pr-setting-database' for
730 ;; `pr-ps-utility-alist'.
737 ;; temporarily in a buffer instead of printing it or saving it in a file.
739 ;; of printing each buffer, region or major mode at once, you can save
740 ;; temporarily the PostScript code generated in a buffer and print it
742 ;; buffer directly on a printer. If you type C-u before choosing this
750 ;; in `pr-ps-printer-alist' variable (see it for documentation).
751 ;; See also `pr-setting-database'.
756 ;; buffer and you want to print them in a text printer, select this
757 ;; option. All control characters in your buffer or region will be
764 ;; 5. If you want to print a directory, buffer, region or major mode in a
769 ;; `pr-txt-printer-alist' variable (see it for documentation).
770 ;; See also `pr-setting-database'.
822 ;; mode. When this option is on, the `*-buffer*' commands will behave
823 ;; like `*-region*' commands, that is, `*-buffer*' commands will print
824 ;; only the region marked instead of all buffer.
827 ;; declared in `pr-mode-alist', the `*-buffer*' and `*-region*' commands
832 ;; `pr-menu-char-height' and `pr-menu-char-width' are used to guess the
857 ;; (setq pr-path-alist
862 ;; (setq pr-txt-name 'prt_06a)
863 ;; (setq pr-txt-printer-alist
867 ;; (setq pr-ps-name 'lps_06b)
868 ;; (setq pr-ps-printer-alist
873 ;; (setq pr-temp-dir "/tmp/")
874 ;; (setq pr-gv-command "gv")
875 ;; (setq pr-gs-command "gs")
876 ;; (setq pr-gs-switches '("-q -dNOPAUSE -I/usr/share/ghostscript/5.10"))
877 ;; (setq pr-gs-device "uniprint")
878 ;; (setq pr-gs-resolution 300)
879 ;; (setq pr-ps-utility 'mpage)
880 ;; (setq pr-ps-utility-alist
885 ;; (setq pr-setting-database
888 ;; (pr-file-duplex . nil)
889 ;; (pr-file-tumble . nil))
891 ;; (pr-update-menus t) ; update now printer and utility menus
896 ;; (setq pr-path-alist
901 ;; (setq pr-txt-name 'prt_06a)
902 ;; (setq pr-txt-printer-alist
908 ;; (setq pr-ps-name 'lps_06b)
909 ;; (setq pr-ps-printer-alist
914 ;; (b/w "gsprint" ("-all" "-twoup") "-printer " "b/w-pr-name")
919 ;; (setq pr-temp-dir "C:/WINDOWS/TEMP/")
920 ;; (setq pr-gv-command "c:/gs/gsview/gsview32.exe")
921 ;; (setq pr-gs-command "c:/gs/gswin32.exe")
922 ;; (setq pr-gs-switches '("-q -dNOPAUSE -Ic:/gs/gs5.50;c:/gs/gs5.50/fonts"))
923 ;; (setq pr-gs-device "mswinpr2")
924 ;; (setq pr-gs-resolution 300)
925 ;; (setq pr-ps-utility 'psnup)
926 ;; (setq pr-ps-utility-alist
930 ;; (setq pr-setting-database
933 ;; (pr-file-duplex . nil)
934 ;; (pr-file-tumble . nil))
936 ;; (pr-update-menus t) ; update now printer and utility menus
939 ;; `pr-ps-utility-alist'.
947 ;; `pr-setup' Return the current `printing' setup.
951 ;; `pr-update-menus' Update utility, PostScript and text printer menus.
953 ;; `pr-menu-bind' Install `printing' menu in the menubar.
984 ;; printing menu (in `pr-menu-spec') merging suggestion.
991 ;; - `pr-path-alist' variable.
1000 ;; - ghostscript parameters for `pr-ps-printer-alist'.
1006 ;; - `pr-path-style' variable.
1013 ;; - extra parameters for `pr-ps-printer-alist'.
1036 (defconst pr-cygwin-system
1097 (defalias 'pr-e-frame-char-height 'frame-char-height)
1098 (defalias 'pr-e-frame-char-width 'frame-char-width)
1099 (defalias 'pr-e-mouse-pixel-position 'mouse-pixel-position)
1101 (defalias 'pr-x-add-submenu 'add-submenu)
1102 (defalias 'pr-x-event-function 'event-function)
1103 (defalias 'pr-x-event-object 'event-object)
1104 (defalias 'pr-x-find-menu-item 'find-menu-item)
1105 (defalias 'pr-x-font-height 'font-height)
1106 (defalias 'pr-x-font-width 'font-width)
1107 (defalias 'pr-x-get-popup-menu-response 'get-popup-menu-response)
1108 (defalias 'pr-x-make-event 'make-event)
1109 (defalias 'pr-x-misc-user-event-p 'misc-user-event-p)
1110 (defalias 'pr-x-relabel-menu-item 'relabel-menu-item)
1111 (defalias 'pr-x-event-x-pixel 'event-x-pixel)
1112 (defalias 'pr-x-event-y-pixel 'event-y-pixel)
1119 (defalias 'pr-f-set-keymap-parents 'set-keymap-parents)
1120 (defalias 'pr-f-set-keymap-name 'set-keymap-name)
1121 (defun pr-f-read-string (prompt initial history default)
1126 (defun pr-keep-region-active ()
1131 (defalias 'pr-f-set-keymap-parents 'set-keymap-parent)
1132 (defalias 'pr-f-set-keymap-name 'ignore)
1133 (defalias 'pr-f-read-string 'read-string)
1134 (defun pr-keep-region-active ()
1142 (defun pr-alist-custom-set (symbol value)
1146 (pr-update-menus t)))
1149 (defun pr-ps-utility-custom-set (symbol value)
1153 (pr-menu-set-utility-title value)))
1156 (defun pr-ps-name-custom-set (symbol value)
1160 (pr-menu-set-ps-title value)))
1163 (defun pr-txt-name-custom-set (symbol value)
1167 (pr-menu-set-txt-title value)))
1178 :prefix "pr-"
1184 (defcustom pr-path-style
1185 (if (and (not pr-cygwin-system)
1207 (defun pr-dosify-file-name (path)
1210 (if (eq pr-path-style 'windows)
1215 (defun pr-unixify-file-name (path)
1218 (if (eq pr-path-style 'windows)
1223 (defun pr-standard-file-name (path)
1227 (if (or pr-cygwin-system ps-windows-system)
1236 (defcustom pr-path-alist
1243 mpage, print.exe, etc. See also `pr-command' function.
1264 exist an equal entry in `pr-path-alist'. If it's a string,
1284 list and there isn't a `PATH' entry in `pr-path-alist' or the
1315 (defcustom pr-txt-name 'default
1318 The printer name symbol should be defined on `pr-txt-printer-alist' (see it for
1322 modified by other means (for example, a lisp function), use `pr-update-menus'
1325 :set 'pr-txt-name-custom-set
1330 (defcustom pr-txt-printer-alist
1356 `pr-txt-name' variable setting and for menu selection.
1375 all other systems. See also `pr-path-alist'.
1410 modified by other means (for example, a lisp function), use `pr-update-menus'
1458 :set 'pr-alist-custom-set
1463 (defcustom pr-ps-name 'default
1466 This printer name symbol should be defined on `pr-ps-printer-alist' (see it for
1470 modified by other means (for example, a lisp function), use `pr-update-menus'
1473 :set 'pr-ps-name-custom-set
1478 (defcustom pr-ps-printer-alist
1495 ;; (b/w "gsprint" ("-all" "-twoup") "-printer " "b/w-pr-name")
1509 `pr-ps-name' variable setting and for menu selection.
1528 all other systems. See also `pr-path-alist'.
1603 be a symbol name setting defined in `pr-setting-database' from
1609 '(pr-gs-device . (my-gs-device t))
1612 modified by other means (for example, a lisp function), use `pr-update-menus'
1630 (b/w1 \"gsprint\" (\"-all\" \"-twoup\") \"-printer \" \"b/w-pr-name\")
1651 (setq pr-ps-printer-alist
1735 (const :tag "PS File Landscape" pr-file-landscape)
1736 (const :tag "PS File Duplex" pr-file-duplex)
1737 (const :tag "PS File Tumble" pr-file-tumble)
1738 (const :tag "Auto Region" pr-auto-region)
1739 (const :tag "Auto Mode" pr-auto-mode)
1740 (const :tag "Ghostscript Device" pr-gs-device)
1741 (const :tag "Ghostscript Resolution" pr-gs-resolution)
1746 :set 'pr-alist-custom-set
1751 (defcustom pr-temp-dir
1752 (pr-dosify-file-name
1764 See also `pr-ps-temp-file' and `pr-file-modes'."
1770 (defcustom pr-ps-temp-file "prspool-"
1773 See also `pr-temp-dir' and `pr-file-modes'."
1782 (defcustom pr-file-modes ?\600
1787 See also `pr-temp-dir' and `pr-ps-temp-file'."
1793 (defcustom pr-gv-command
1799 See also `pr-path-alist'.
1835 (defcustom pr-gs-command
1841 See also `pr-path-alist'.
1862 (defcustom pr-gs-switches
1905 (defcustom pr-gs-device
1915 See `pr-gs-switches' for documentation.
1916 See also `pr-ps-printer-alist'."
1922 (defcustom pr-gs-resolution 300
1929 See `pr-gs-switches' for documentation.
1930 See also `pr-ps-printer-alist'."
1936 (defcustom pr-print-using-ghostscript nil
1949 (defcustom pr-faces-p nil
1956 (defcustom pr-spool-p nil
1957 "*Non-nil means spool printing in a buffer."
1963 (defcustom pr-file-landscape nil
1970 (defcustom pr-file-duplex nil
1977 (defcustom pr-file-tumble nil
1989 (defcustom pr-auto-region t
1994 When this variable is non-nil, the `*-buffer*' commands will behave like
1995 `*-region*' commands, that is, `*-buffer*' commands will print only the region
1996 marked instead of all buffer."
2002 (defcustom pr-auto-mode t
2005 That is, if current major-mode is declared in `pr-mode-alist', the `*-buffer*'
2007 `*-buffer*' commands will print the current buffer and `*-region*' commands
2014 (defcustom pr-mode-alist
2015 '((mh-folder-mode ; mh summary buffer
2016 pr-mh-lpr-1 pr-mh-print-1
2019 ("/pagenumberstring load" pr-article-date)
2022 (mh-letter-mode ; mh letter buffer
2023 pr-mh-lpr-2 pr-mh-print-2
2026 ("/pagenumberstring load" pr-article-date)
2029 (rmail-summary-mode ; rmail summary buffer
2030 pr-rmail-lpr pr-rmail-print
2032 (ps-article-subject ps-article-author buffer-name)
2036 (rmail-mode ; rmail buffer
2037 pr-rmail-lpr pr-rmail-print
2039 (ps-article-subject ps-article-author buffer-name)
2043 (gnus-summary-mode ; gnus summary buffer
2044 pr-gnus-lpr pr-gnus-print
2050 (gnus-article-mode ; gnus article buffer
2051 pr-gnus-lpr pr-gnus-print
2057 (Info-mode ; Info buffer
2058 pr-mode-lpr pr-mode-print
2065 pr-vm-lpr pr-vm-print
2067 (ps-article-subject ps-article-author buffer-name)
2075 `pr-mode-alist' and invoke some of `*-mode*' commands. An example for major
2077 *Summary* buffer, if you forget to switch to the *Article* buffer before
2080 *Summary* buffer first.
2100 Usually LPR-PRINT function prepares the environment or buffer
2101 and then call the function `pr-mode-lpr' which it's used to
2102 process the buffer and send it to text printer.
2104 The `pr-mode-lpr' definition is:
2106 (pr-mode-lpr HEADER-LIST &optional FROM TO)
2117 Usually PS-PRINT function prepares the environment or buffer
2118 and then call the function `pr-mode-print' which it's used to
2119 process the buffer and send it to PostScript printer.
2121 The `pr-mode-print' definition is:
2123 (pr-mode-print N-UP FILENAME HEADER-LIST &optional FROM TO)
2142 Non-nil means to kill all buffer local variable declared in
2158 be a symbol name setting defined in `pr-setting-database' from
2164 '(pr-gs-device . (my-gs-device t))"
2200 (const :tag "PS File Landscape" pr-file-landscape)
2201 (const :tag "PS File Duplex" pr-file-duplex)
2202 (const :tag "PS File Tumble" pr-file-tumble)
2203 (const :tag "Auto Region" pr-auto-region)
2204 (const :tag "Auto Mode" pr-auto-mode)
2205 (const :tag "Ghostscript Device" pr-gs-device)
2206 (const :tag "Ghostscript Resolution" pr-gs-resolution)
2215 (defcustom pr-ps-utility 'mpage
2218 This utility symbol should be defined on `pr-ps-utility-alist' (see it for
2222 modified by other means (for example, a lisp function), use `pr-update-menus'
2226 `pr-ps-utility-alist'."
2228 :set 'pr-ps-utility-custom-set
2233 (defcustom pr-ps-utility-alist
2242 ;; (pr-file-duplex . nil) (pr-file-tumble . nil))
2246 ;; (pr-file-duplex . nil) (pr-file-tumble . nil))
2258 `pr-ps-utility' variable setting and for menu selection.
2264 See also `pr-path-alist'.
2338 be a symbol name setting defined in `pr-setting-database' from
2342 '(pr-file-landscape . nil)
2343 '(pr-file-duplex . t)
2344 '(pr-gs-device . (my-gs-device t))
2347 modified by other means (for example, a lisp function), use `pr-update-menus'
2351 `pr-ps-utility-alist'.
2359 (pr-file-duplex . nil) (pr-file-tumble . nil))
2365 nil (pr-file-duplex . nil) (pr-file-tumble . nil))
2432 (const :tag "PS File Landscape" pr-file-landscape)
2433 (const :tag "PS File Duplex" pr-file-duplex)
2434 (const :tag "PS File Tumble" pr-file-tumble)
2435 (const :tag "Ghostscript Device" pr-gs-device)
2436 (const :tag "Ghostscript Resolution" pr-gs-resolution)
2441 :set 'pr-alist-custom-set
2446 (defcustom pr-menu-lock t
2449 See also `pr-menu-char-height' and `pr-menu-char-width'."
2455 (defcustom pr-menu-char-height
2457 (pr-x-font-height (face-font 'default)))
2459 (pr-e-frame-char-height)))
2465 See also `pr-menu-lock' and `pr-menu-char-width'."
2471 (defcustom pr-menu-char-width
2473 (pr-x-font-width (face-font 'default)))
2475 (pr-e-frame-char-width)))
2481 See also `pr-menu-lock' and `pr-menu-char-height'."
2487 (defcustom pr-setting-database
2490 (pr-file-duplex . nil) ; settings
2491 (pr-file-tumble . nil))
2510 (setq pr-setting-database
2514 (pr-file-duplex . nil) ; settings
2515 (pr-file-tumble . nil)
2520 (pr-file-landscape . nil) ; settings
2525 through `inherits-from:' (see `pr-ps-utility', `pr-mode-alist'
2526 and `pr-ps-printer-alist'), the variables pr-file-duplex and
2527 pr-file-tumble are both set to nil.
2530 `inherits-from:', the variable pr-file-landscape is set to nil
2538 declared local buffer.
2563 '(pr-gs-device . (my-gs-device t))"
2590 (const :tag "PS File Landscape" pr-file-landscape)
2591 (const :tag "PS File Duplex" pr-file-duplex)
2592 (const :tag "PS File Tumble" pr-file-tumble)
2593 (const :tag "Auto Region" pr-auto-region)
2594 (const :tag "Auto Mode" pr-auto-mode)
2595 (const :tag "Ghostscript Device" pr-gs-device)
2596 (const :tag "Ghostscript Resolution" pr-gs-resolution)
2604 (defcustom pr-visible-entry-list
2658 (defcustom pr-delete-temp-file t
2661 Set `pr-delete-temp-file' to nil, if the following message (or a similar)
2670 (defcustom pr-list-directory nil
2676 It's used by `pr-ps-directory-preview', `pr-ps-directory-using-ghostscript',
2677 `pr-ps-directory-print', `pr-ps-directory-ps-print', `pr-printify-directory'
2678 and `pr-txt-directory'."
2684 (defcustom pr-buffer-name "*Printing Interface*"
2685 "*Specify the name of the buffer interface for printing package.
2687 It's used by `pr-interface'."
2693 (defcustom pr-buffer-name-ignore
2694 (list (regexp-quote pr-buffer-name) ; ignore printing interface buffer
2696 "*Specify a regexp list for buffer names to be ignored in interface buffer.
2701 It's used by `pr-interface'."
2707 (defcustom pr-buffer-verbose t
2708 "*Non-nil means to be verbose when editing a field in interface buffer.
2710 It's used by `pr-interface'."
2720 (defvar pr-txt-command nil
2722 See `pr-txt-printer-alist'.")
2725 (defvar pr-txt-switches nil
2727 See `pr-txt-printer-alist'.")
2730 (defvar pr-txt-printer nil
2732 See `pr-txt-printer-alist'.")
2735 (defvar pr-ps-command nil
2737 See `pr-ps-printer-alist'.")
2740 (defvar pr-ps-switches nil
2742 See `pr-ps-printer-alist'.")
2745 (defvar pr-ps-printer-switch nil
2747 See `pr-ps-printer-alist'.")
2750 (defvar pr-ps-printer nil
2752 See `pr-ps-printer-alist'.")
2755 (defvar pr-menu-bar nil
2763 (defmacro pr-save-file-modes (&rest body)
2764 "Set temporally file modes to `pr-file-modes'."
2765 `(let ((pr--default-file-modes (default-file-modes))) ; save default
2766 (set-default-file-modes pr-file-modes)
2768 (set-default-file-modes pr--default-file-modes))) ; restore default
2775 (defmacro pr-xemacs-global-menubar (&rest body)
2777 (let ((temp (get-buffer-create (make-temp-name " *Temp"))))
2779 (set-buffer temp)
2781 (kill-buffer temp))))
2784 (defsubst pr-visible-p (key)
2785 (memq key pr-visible-entry-list))
2788 (defsubst pr-mode-alist-p ()
2789 (cdr (assq major-mode pr-mode-alist)))
2792 (defsubst pr-auto-mode-p ()
2793 (and pr-auto-mode (pr-mode-alist-p)))
2796 (defsubst pr-using-ghostscript-p ()
2797 (and pr-print-using-ghostscript (not pr-spool-p)))
2800 (defalias 'pr-get-symbol
2808 (defun pr-region-active-p ()
2809 (and pr-auto-region (not zmacs-region-stays) (ps-mark-active-p))))
2812 (defun pr-region-active-p ()
2813 (and pr-auto-region transient-mark-mode mark-active))))
2816 (defconst pr-menu-spec
2822 (let ((pr-:active (if (featurep 'xemacs)
2825 (pr-:help (if (featurep 'xemacs)
2829 ["Printing Interface" pr-interface
2831 pr-:help "Use buffer interface instead of menu interface")]
2833 ("PostScript Preview" :included (pr-visible-p 'postscript)
2835 pr-:help "Preview PostScript instead of sending to printer")
2836 ("Directory" ,pr-:active (not pr-spool-p)
2837 ["1-up" (pr-ps-directory-preview 1 nil nil t) t]
2838 ["2-up" (pr-ps-directory-preview 2 nil nil t) t]
2839 ["4-up" (pr-ps-directory-preview 4 nil nil t) t]
2840 ["Other..." (pr-ps-directory-preview nil nil nil t)
2841 :keys "\\[pr-ps-buffer-preview]"])
2842 ("Buffer" ,pr-:active (not pr-spool-p)
2843 ["1-up" (pr-ps-buffer-preview 1 t) t]
2844 ["2-up" (pr-ps-buffer-preview 2 t) t]
2845 ["4-up" (pr-ps-buffer-preview 4 t) t]
2846 ["Other..." (pr-ps-buffer-preview nil t)
2847 :keys "\\[pr-ps-buffer-preview]"])
2848 ("Region" ,pr-:active (and (not pr-spool-p) (ps-mark-active-p))
2849 ["1-up" (pr-ps-region-preview 1 t) t]
2850 ["2-up" (pr-ps-region-preview 2 t) t]
2851 ["4-up" (pr-ps-region-preview 4 t) t]
2852 ["Other..." (pr-ps-region-preview nil t)
2853 :keys "\\[pr-ps-region-preview]"])
2854 ("Mode" ,pr-:active (and (not pr-spool-p) (pr-mode-alist-p))
2855 ["1-up" (pr-ps-mode-preview 1 t) t]
2856 ["2-up" (pr-ps-mode-preview 2 t) t]
2857 ["4-up" (pr-ps-mode-preview 4 t) t]
2858 ["Other..." (pr-ps-mode-preview nil t)
2859 :keys "\\[pr-ps-mode-preview]"])
2861 ["No Preprocessing..." (call-interactively 'pr-ps-file-preview)
2862 :keys "\\[pr-ps-file-preview]"
2864 pr-:help "Preview PostScript file")]
2866 ["PostScript Utility" pr-update-menus :active pr-ps-utility-alist
2868 pr-:help "Select PostScript utility")]
2870 ["1-up..." (pr-ps-file-up-preview 1 t t) pr-ps-utility-alist]
2871 ["2-up..." (pr-ps-file-up-preview 2 t t) pr-ps-utility-alist]
2872 ["4-up..." (pr-ps-file-up-preview 4 t t) pr-ps-utility-alist]
2873 ["Other..." (pr-ps-file-up-preview nil t t)
2874 :keys "\\[pr-ps-file-up-preview]" :active pr-ps-utility-alist]
2876 ["Landscape" pr-toggle-file-landscape-menu
2877 :style toggle :selected pr-file-landscape
2879 pr-:help "Toggle landscape for PostScript file")
2880 :active pr-ps-utility-alist]
2881 ["Duplex" pr-toggle-file-duplex-menu
2882 :style toggle :selected pr-file-duplex
2884 pr-:help "Toggle duplex for PostScript file")
2885 :active pr-ps-utility-alist]
2886 ["Tumble" pr-toggle-file-tumble-menu
2887 :style toggle :selected pr-file-tumble
2889 pr-:help "Toggle tumble for PostScript file")
2890 :active (and pr-file-duplex pr-ps-utility-alist)])
2891 ["Despool..." (call-interactively 'pr-despool-preview)
2892 :active pr-spool-p :keys "\\[pr-despool-preview]"
2894 pr-:help "Despool PostScript buffer to printer or file (C-u)")])
2895 ("PostScript Print" :included (pr-visible-p 'postscript)
2897 pr-:help "Send PostScript to printer or file (C-u)")
2899 ["1-up" (pr-ps-directory-ps-print 1 nil nil t) t]
2900 ["2-up" (pr-ps-directory-ps-print 2 nil nil t) t]
2901 ["4-up" (pr-ps-directory-ps-print 4 nil nil t) t]
2902 ["Other..." (pr-ps-directory-ps-print nil nil nil t)
2903 :keys "\\[pr-ps-buffer-ps-print]"])
2905 ["1-up" (pr-ps-buffer-ps-print 1 t) t]
2906 ["2-up" (pr-ps-buffer-ps-print 2 t) t]
2907 ["4-up" (pr-ps-buffer-ps-print 4 t) t]
2908 ["Other..." (pr-ps-buffer-ps-print nil t)
2909 :keys "\\[pr-ps-buffer-ps-print]"])
2910 ("Region" ,pr-:active (ps-mark-active-p)
2911 ["1-up" (pr-ps-region-ps-print 1 t) t]
2912 ["2-up" (pr-ps-region-ps-print 2 t) t]
2913 ["4-up" (pr-ps-region-ps-print 4 t) t]
2914 ["Other..." (pr-ps-region-ps-print nil t)
2915 :keys "\\[pr-ps-region-ps-print]"])
2916 ("Mode" ,pr-:active (pr-mode-alist-p)
2917 ["1-up" (pr-ps-mode-ps-print 1 t) t]
2918 ["2-up" (pr-ps-mode-ps-print 2 t) t]
2919 ["4-up" (pr-ps-mode-ps-print 4 t) t]
2920 ["Other..." (pr-ps-mode-ps-print nil t)
2921 :keys "\\[pr-ps-mode-ps-print]"])
2923 ["No Preprocessing..." (call-interactively 'pr-ps-file-ps-print)
2924 :keys "\\[pr-ps-file-ps-print]"
2926 pr-:help "Send PostScript file to printer")]
2928 ["PostScript Utility" pr-update-menus :active pr-ps-utility-alist
2930 pr-:help "Select PostScript utility")]
2932 ["1-up..." (pr-ps-file-up-ps-print 1 t t) pr-ps-utility-alist]
2933 ["2-up..." (pr-ps-file-up-ps-print 2 t t) pr-ps-utility-alist]
2934 ["4-up..." (pr-ps-file-up-ps-print 4 t t) pr-ps-utility-alist]
2935 ["Other..." (pr-ps-file-up-ps-print nil t t)
2936 :keys "\\[pr-ps-file-up-ps-print]" :active pr-ps-utility-alist]
2938 ["Landscape" pr-toggle-file-landscape-menu
2939 :style toggle :selected pr-file-landscape
2941 pr-:help "Toggle landscape for PostScript file")
2942 :active pr-ps-utility-alist]
2943 ["Duplex" pr-toggle-file-duplex-menu
2944 :style toggle :selected pr-file-duplex
2946 pr-:help "Toggle duplex for PostScript file")
2947 :active pr-ps-utility-alist]
2948 ["Tumble" pr-toggle-file-tumble-menu
2949 :style toggle :selected pr-file-tumble
2951 pr-:help "Toggle tumble for PostScript file")
2952 :active (and pr-file-duplex pr-ps-utility-alist)])
2953 ["Despool..." (call-interactively 'pr-despool-ps-print)
2954 :active pr-spool-p :keys "\\[pr-despool-ps-print]"
2956 pr-:help "Despool PostScript buffer to printer or file (C-u)")])
2957 ["PostScript Printers" pr-update-menus
2958 :active pr-ps-printer-alist :included (pr-visible-p 'postscript)
2960 pr-:help "Select PostScript printer")]
2962 ("Printify" :included (pr-visible-p 'text)
2964 pr-:help
2966 ["Directory" pr-printify-directory t]
2967 ["Buffer" pr-printify-buffer t]
2968 ["Region" pr-printify-region (ps-mark-active-p)])
2969 ("Print" :included (pr-visible-p 'text)
2971 pr-:help "Send text to printer")
2972 ["Directory" pr-txt-directory t]
2973 ["Buffer" pr-txt-buffer t]
2974 ["Region" pr-txt-region (ps-mark-active-p)]
2975 ["Mode" pr-txt-mode (pr-mode-alist-p)])
2976 ["Text Printers" pr-update-menus
2977 :active pr-txt-printer-alist :included (pr-visible-p 'text)
2979 pr-:help "Select text printer")]
2981 ["Landscape" pr-toggle-landscape-menu
2983 :included (pr-visible-p 'postscript-options)]
2984 ["Print Header" pr-toggle-header-menu
2986 :included (pr-visible-p 'postscript-options)]
2987 ["Print Header Frame" pr-toggle-header-frame-menu
2989 :included (pr-visible-p 'postscript-options)]
2990 ["Line Number" pr-toggle-line-menu
2992 :included (pr-visible-p 'postscript-options)]
2993 ["Zebra Stripes" pr-toggle-zebra-menu
2995 :included (pr-visible-p 'postscript-options)]
2996 ["Duplex" pr-toggle-duplex-menu
2998 :included (pr-visible-p 'postscript-options)]
2999 ["Tumble" pr-toggle-tumble-menu
3001 :included (pr-visible-p 'postscript-options)]
3002 ["Upside-Down" pr-toggle-upside-down-menu
3004 :included (pr-visible-p 'postscript-options)]
3005 ("Print All Pages" :included (pr-visible-p 'postscript-options)
3007 pr-:help "Select odd/even pages/sheets to print")
3008 ["All Pages" (pr-even-or-odd-pages nil)
3010 ["Even Pages" (pr-even-or-odd-pages 'even-page)
3012 ["Odd Pages" (pr-even-or-odd-pages 'odd-page)
3014 ["Even Sheets" (pr-even-or-odd-pages 'even-sheet)
3016 ["Odd Sheets" (pr-even-or-odd-pages 'odd-sheet)
3019 ["Spool Buffer" pr-toggle-spool-menu
3020 :style toggle :selected pr-spool-p
3021 :included (pr-visible-p 'postscript-process)
3023 pr-:help "Toggle PostScript spooling")]
3024 ["Print with faces" pr-toggle-faces-menu
3025 :style toggle :selected pr-faces-p
3026 :included (pr-visible-p 'postscript-process)
3028 pr-:help "Toggle PostScript printing with faces")]
3029 ["Print via Ghostscript" pr-toggle-ghostscript-menu
3030 :style toggle :selected pr-print-using-ghostscript
3031 :included (pr-visible-p 'postscript-process)
3033 pr-:help "Toggle PostScript generation using ghostscript")]
3035 ["Auto Region" pr-toggle-region-menu
3036 :style toggle :selected pr-auto-region
3037 :included (pr-visible-p 'printing)]
3038 ["Auto Mode" pr-toggle-mode-menu
3039 :style toggle :selected pr-auto-mode
3040 :included (pr-visible-p 'printing)]
3041 ["Menu Lock" pr-toggle-lock-menu
3042 :style toggle :selected pr-menu-lock
3043 :included (pr-visible-p 'printing)]
3045 ("Customize" :included (pr-visible-p 'help)
3046 ["printing" pr-customize t]
3049 ("Show Settings" :included (pr-visible-p 'help)
3050 ["printing" pr-show-pr-setup t]
3051 ["ps-print" pr-show-ps-setup t]
3052 ["lpr" pr-show-lpr-setup t])
3053 ["Help" pr-help :active t :included (pr-visible-p 'help)]
3057 (defvar pr-menu-print-item "print"
3060 Used by `pr-menu-bind' and `pr-update-menus'.")
3063 (defun pr-menu-bind ()
3071 Calls `pr-update-menus' to adjust menus."
3076 (pr-xemacs-global-menubar
3077 (pr-x-add-submenu nil (cons "Printing" pr-menu-spec) "Apps"))
3078 (setq pr-menu-print-item nil))
3090 (easy-menu-change '("tools") "Printing" pr-menu-spec pr-menu-print-item)
3091 (when pr-menu-print-item
3092 (easy-menu-remove-item nil '("tools") pr-menu-print-item)
3093 (setq pr-menu-print-item nil
3094 pr-menu-bar (vector 'menu-bar 'tools
3095 (pr-get-symbol "Printing")))))
3102 (pr-menu-print-item
3104 (easy-menu-create-menu "Print" pr-menu-spec)
3105 "print-buffer")
3106 (dolist (item '("print-buffer" "print-region"
3107 "ps-print-buffer-faces" "ps-print-region-faces"
3108 "ps-print-buffer" "ps-print-region"))
3110 (setq pr-menu-print-item nil
3111 pr-menu-bar (vector 'menu-bar
3112 (pr-get-symbol (nth 1 menu-file))
3113 (pr-get-symbol "Print"))))
3116 (easy-menu-create-menu "Print" pr-menu-spec)))
3118 (pr-update-menus t))
3122 (let ((pr-print-key (if (featurep 'xemacs)
3125 (global-set-key `[,pr-print-key] 'pr-ps-fast-fire)
3128 (global-set-key `[(meta ,pr-print-key)] 'pr-ps-mode-using-ghostscript)
3129 (global-set-key `[(shift ,pr-print-key)] 'pr-ps-mode-using-ghostscript)
3132 (global-set-key `[(control ,pr-print-key)] 'pr-txt-fast-fire)
3133 (global-set-key `[(control meta ,pr-print-key)] 'pr-txt-fast-fire))
3137 ;;;(global-set-key "\C-ci" 'pr-interface)
3138 ;;;(global-set-key "\C-cbp" 'pr-ps-buffer-print)
3139 ;;;(global-set-key "\C-cbx" 'pr-ps-buffer-preview)
3140 ;;;(global-set-key "\C-cbb" 'pr-ps-buffer-using-ghostscript)
3141 ;;;(global-set-key "\C-crp" 'pr-ps-region-print)
3142 ;;;(global-set-key "\C-crx" 'pr-ps-region-preview)
3143 ;;;(global-set-key "\C-crr" 'pr-ps-region-using-ghostscript)
3150 (defconst pr-help-message
3151 (concat "printing.el version " pr-version
3194 See `pr-visible-entry-list' for hiding some parts of the menu.
3200 0. You can use a buffer interface instead of menus. It looks like the
3201 customization buffer. Basically, it has the same options found in the
3202 menu and some extra options, all this on a buffer.
3207 menu) or PostScript temporary file for a directory, a buffer, a region
3212 Instead of previewing each buffer, region or major mode at once, you
3213 can save temporarily the PostScript code generated in a buffer and
3215 spooling buffer in a temporary file and uses ghostview to preview it.
3222 the customization in `pr-mode-alist' and invoke some of
3225 or rmail, etc.) and you're in the *Summary* buffer, if you
3226 forget to switch to the *Article* buffer before printing,
3229 switch from gnus *Summary* buffer first.
3235 See `pr-ps-utility-alist' and `pr-setting-database' for
3243 `pr-ps-utility-alist'.
3250 temporarily in a buffer instead of printing it or saving it in a file.
3252 Instead of printing each buffer, region or major mode at once, you can
3253 save temporarily the PostScript code generated in a buffer and print it
3254 later. The option `Despool...' despools the PostScript spooling buffer
3263 in `pr-ps-printer-alist' variable (see it for documentation).
3264 See also `pr-setting-database'.
3269 buffer and you want to print them in a text printer, select this
3270 option. All control characters in your buffer or region will be
3277 5. If you want to print a directory, buffer, region or major mode in a
3281 selection it's used all text printers defined in `pr-txt-printer-alist'
3283 See also `pr-setting-database'.
3335 mode. When this option is on, the `*-buffer*' commands will behave
3336 like `*-region*' commands, that is, `*-buffer*' commands will print
3337 only the region marked instead of all buffer.
3340 declared in `pr-mode-alist', the `*-buffer*' and `*-region*' commands
3345 `pr-menu-char-height' and `pr-menu-char-width' are used to guess the
3363 (defconst pr-interface-help-message
3364 (concat "printing.el version " pr-version
3367 The printing interface buffer has the same functionality as the printing menu.
3369 file, n-up printing, etc.) are set and saved between priting buffer
3371 PostScript file and directory/buffer/region/mode processing; using menu, there
3372 are different value sets for PostScript file and directory/buffer/region/mode
3375 The printing interface buffer has the following sections:
3379 Here you can choose to print/preview a buffer, a directory or a PostScript
3385 Select a buffer from the current buffer list.
3388 If it's on, this means that the selected buffer has an active region,
3390 If it's off when a buffer is selected, this means that the selected
3391 buffer has no active region, so it'll not be possible to turn it on.
3393 If you want to process the whole buffer, let this option off.
3396 If it's on, this means that the selected buffer major mode is declared
3398 If it's off when a buffer is selected, this means that the selected
3399 buffer major mode isn't declared for major mode processing, so it'll
3405 the customization in `pr-mode-alist' and invoke some of
3408 or rmail, etc.) and you're in the *Summary* buffer, if you
3409 forget to switch to the *Article* buffer before printing,
3412 switch from gnus *Summary* buffer first.
3434 See `pr-ps-utility-alist' and `pr-setting-database' for documentation.
3437 `pr-ps-utility-alist'.
3448 in `pr-ps-printer-alist' variable (see it for documentation).
3449 See also `pr-setting-database'.
3454 If it's turned on, specify to despools the PostScript spooling buffer in
3465 Quit from printing interface buffer.
3481 all text printers defined in `pr-txt-printer-alist' variable (see it for
3482 documentation). See also `pr-setting-database'.
3486 buffer and you want to print them in a text printer, select this
3487 option. All control characters in your buffer or region will be
3495 To print a directory, buffer, region or major mode in a
3499 Quit from printing interface buffer.
3538 mode. When this option is on, the `*-buffer*' commands will behave
3539 like `*-region*' commands, that is, `*-buffer*' commands will print
3540 only the region marked instead of all buffer.
3544 declared in `pr-mode-alist', the `*-buffer*' and `*-region*' commands
3550 `pr-menu-char-height' and `pr-menu-char-width' are used to guess the
3577 That is, to be verbose when editing a field in interface buffer.
3591 Quick help for printing interface buffer and printing menu layout. You can
3592 also quit the printing interface buffer or kill all printing help buffer.
3594 "Printing buffer interface help message.")
3602 (defun pr-interface (&optional buffer)
3603 "Activate the printing interface buffer.
3605 If BUFFER is nil, the current buffer is used for printing.
3607 For more information, type \\[pr-interface-help]."
3610 (set-buffer (or buffer (current-buffer)))
3611 (pr-create-interface)))
3615 (defun pr-ps-directory-preview (n-up dir file-regexp &optional filename)
3630 See also documentation for `pr-list-directory'."
3631 (interactive (pr-interactive-ps-dir-args (pr-prompt "PS preview dir")))
3632 (pr-set-ps-dir-args 'n-up 'dir 'file-regexp 'filename
3633 (pr-prompt "PS preview dir"))
3634 (setq filename (pr-ps-file filename))
3635 (pr-ps-file-list n-up dir file-regexp filename)
3636 (or pr-spool-p
3637 (pr-ps-file-preview filename)))
3641 (defun pr-ps-directory-using-ghostscript (n-up dir file-regexp &optional filename)
3656 See also documentation for `pr-list-directory'."
3657 (interactive (pr-interactive-ps-dir-args (pr-prompt "PS print dir GS")))
3658 (pr-set-ps-dir-args 'n-up 'dir 'file-regexp 'filename
3659 (pr-prompt "PS print dir GS"))
3660 (let ((file (pr-ps-file filename)))
3661 (pr-ps-file-list n-up dir file-regexp file)
3662 (pr-ps-file-using-ghostscript file)
3663 (or filename (pr-delete-file file))))
3667 (defun pr-ps-directory-print (n-up dir file-regexp &optional filename)
3682 See also documentation for `pr-list-directory'."
3683 (interactive (pr-interactive-ps-dir-args (pr-prompt "PS print dir")))
3684 (pr-set-ps-dir-args 'n-up 'dir 'file-regexp 'filename
3685 (pr-prompt "PS print dir"))
3686 (let ((file (pr-ps-file filename)))
3687 (pr-ps-file-list n-up dir file-regexp file)
3688 (pr-ps-file-print file)
3689 (or filename (pr-delete-file file))))
3693 (defun pr-ps-directory-ps-print (n-up dir file-regexp &optional filename)
3696 It depends on `pr-print-using-ghostscript'.
3710 See also documentation for `pr-list-directory'."
3711 (interactive (pr-interactive-ps-dir-args
3712 (pr-prompt (pr-prompt-gs "PS print dir"))))
3713 (pr-set-ps-dir-args 'n-up 'dir 'file-regexp 'filename
3714 (pr-prompt (pr-prompt-gs "PS print dir")))
3715 (if (pr-using-ghostscript-p)
3716 (pr-ps-directory-using-ghostscript n-up dir file-regexp filename)
3717 (pr-ps-directory-print n-up dir file-regexp filename)))
3721 (defun pr-ps-buffer-preview (n-up &optional filename)
3722 "Preview buffer using ghostview.
3732 (interactive (pr-interactive-n-up-file (pr-prompt "PS preview")))
3733 (if (pr-auto-mode-p)
3734 (pr-ps-mode-preview n-up filename)
3735 (pr-ps-preview (pr-region-active-symbol) n-up filename
3736 (pr-region-active-string "PS preview"))))
3740 (defun pr-ps-buffer-using-ghostscript (n-up &optional filename)
3741 "Print buffer using PostScript through ghostscript.
3751 (interactive (pr-interactive-n-up-file (pr-prompt "PS print GS")))
3752 (if (pr-auto-mode-p)
3753 (pr-ps-mode-using-ghostscript n-up filename)
3754 (pr-ps-using-ghostscript (pr-region-active-symbol) n-up filename
3755 (pr-region-active-string "PS print GS"))))
3759 (defun pr-ps-buffer-print (n-up &optional filename)
3760 "Print buffer using PostScript printer.
3770 (interactive (pr-interactive-n-up-file (pr-prompt "PS print")))
3771 (if (pr-auto-mode-p)
3772 (pr-ps-mode-print n-up filename)
3773 (pr-ps-print (pr-region-active-symbol) n-up filename
3774 (pr-region-active-string "PS print"))))
3778 (defun pr-ps-buffer-ps-print (n-up &optional filename)
3779 "Print buffer using PostScript printer or through ghostscript.
3781 It depends on `pr-print-using-ghostscript'.
3791 (interactive (pr-interactive-n-up-file
3792 (pr-prompt (pr-prompt-gs "PS print"))))
3793 (cond ((pr-auto-mode-p)
3794 (pr-ps-mode-ps-print n-up filename))
3795 ((pr-using-ghostscript-p)
3796 (pr-ps-using-ghostscript (pr-region-active-symbol) n-up filename
3797 (pr-region-active-string "PS print GS")))
3799 (pr-ps-print (pr-region-active-symbol) n-up filename
3800 (pr-region-active-string "PS print")))))
3804 (defun pr-ps-region-preview (n-up &optional filename)
3807 See also `pr-ps-buffer-preview'."
3808 (interactive (pr-interactive-n-up-file (pr-prompt-region "PS preview")))
3809 (if (pr-auto-mode-p)
3810 (let ((pr-auto-region t))
3811 (pr-ps-mode-preview n-up filename))
3812 (pr-ps-preview 'region n-up filename "PS preview region")))
3816 (defun pr-ps-region-using-ghostscript (n-up &optional filename)
3819 See also `pr-ps-buffer-using-ghostscript'."
3820 (interactive (pr-interactive-n-up-file (pr-prompt-region "PS print GS")))
3821 (if (pr-auto-mode-p)
3822 (let ((pr-auto-region t))
3823 (pr-ps-mode-using-ghostscript n-up filename))
3824 (pr-ps-using-ghostscript 'region n-up filename "PS print GS region")))
3828 (defun pr-ps-region-print (n-up &optional filename)
3831 See also `pr-ps-buffer-print'."
3832 (interactive (pr-interactive-n-up-file (pr-prompt-region "PS print")))
3833 (if (pr-auto-mode-p)
3834 (let ((pr-auto-region t))
3835 (pr-ps-mode-print n-up filename))
3836 (pr-ps-print 'region n-up filename "PS print region")))
3840 (defun pr-ps-region-ps-print (n-up &optional filename)
3843 See also `pr-ps-buffer-ps-print'."
3844 (interactive (pr-interactive-n-up-file
3845 (pr-prompt-region (pr-prompt-gs "PS print"))))
3846 (cond ((pr-auto-mode-p)
3847 (let ((pr-auto-region t))
3848 (pr-ps-mode-ps-print n-up filename)))
3849 ((pr-using-ghostscript-p)
3850 (pr-ps-using-ghostscript 'region n-up filename "PS print GS region"))
3852 (pr-ps-print 'region n-up filename "PS print region"))))
3856 (defun pr-ps-mode-preview (n-up &optional filename)
3859 See also `pr-ps-buffer-preview'."
3860 (interactive (pr-interactive-n-up-file "PS preview mode"))
3861 (pr-set-n-up-and-filename 'n-up 'filename "PS preview mode")
3862 (let ((file (pr-ps-file filename)))
3863 (and (pr-ps-mode n-up file)
3864 (not pr-spool-p)
3865 (pr-ps-file-preview file))))
3869 (defun pr-ps-mode-using-ghostscript (n-up &optional filename)
3872 See also `pr-ps-buffer-using-ghostscript'."
3873 (interactive (pr-interactive-n-up-file "PS print GS mode"))
3874 (pr-set-n-up-and-filename 'n-up 'filename "PS print GS mode")
3875 (let ((file (pr-ps-file filename)))
3876 (when (and (pr-ps-mode n-up file)
3877 (not pr-spool-p))
3878 (pr-ps-file-using-ghostscript file)
3879 (or filename (pr-delete-file file)))))
3883 (defun pr-ps-mode-print (n-up &optional filename)
3886 See also `pr-ps-buffer-print'."
3887 (interactive (pr-interactive-n-up-file "PS print mode"))
3888 (pr-set-n-up-and-filename 'n-up 'filename "PS print mode")
3889 (pr-ps-mode n-up filename))
3893 (defun pr-ps-mode-ps-print (n-up &optional filename)
3896 See also `pr-ps-buffer-ps-print'."
3897 (interactive (pr-interactive-n-up-file (pr-prompt-gs "PS print mode")))
3898 (if (pr-using-ghostscript-p)
3899 (pr-ps-mode-using-ghostscript n-up filename)
3900 (pr-ps-mode-print n-up filename)))
3904 (defun pr-printify-directory (&optional dir file-regexp)
3915 See also documentation for `pr-list-directory'."
3916 (interactive (pr-interactive-dir-args "Printify dir"))
3917 (pr-set-dir-args 'dir 'file-regexp "Printify dir")
3918 (pr-file-list dir file-regexp 'pr-printify-buffer))
3922 (defun pr-printify-buffer ()
3923 "Replace nonprinting characters in buffer with printable representations.
3927 (if (pr-region-active-p)
3928 (pr-printify-region)
3933 (defun pr-printify-region ()
3942 (defun pr-txt-directory (&optional dir file-regexp)
3951 See also documentation for `pr-list-directory'."
3952 (interactive (pr-interactive-dir-args "Print dir"))
3953 (pr-set-dir-args 'dir 'file-regexp "Print dir")
3954 (pr-file-list dir file-regexp 'pr-txt-buffer))
3958 (defun pr-txt-buffer ()
3959 "Print buffer using text printer."
3961 (cond ((pr-auto-mode-p)
3962 (pr-txt-mode))
3963 ((pr-region-active-p)
3964 (pr-txt-region))
3966 (pr-txt-print (point-min) (point-max)))))
3970 (defun pr-txt-region ()
3973 (if (pr-auto-mode-p)
3974 (let ((pr-auto-region t))
3975 (pr-txt-mode))
3976 (pr-txt-print (point) (mark))))
3980 (defun pr-txt-mode ()
3983 (let ((args (pr-mode-alist-p)))
3991 (defun pr-despool-preview (&optional filename)
4002 (let ((file (pr-ps-file filename)))
4004 (pr-despool-print file)
4005 (pr-ps-file-preview file))))
4009 (defun pr-despool-using-ghostscript (&optional filename)
4020 (let ((file (pr-ps-file filename)))
4022 (pr-despool-print file)
4023 (pr-ps-file-using-ghostscript file)
4024 (or filename (pr-delete-file file)))))
4028 (defun pr-despool-print (&optional filename)
4039 (pr-save-file-modes
4040 (let ((ps-lpr-command (pr-command pr-ps-command))
4041 (ps-lpr-switches pr-ps-switches)
4042 (ps-printer-name-option pr-ps-printer-switch)
4043 (ps-printer-name pr-ps-printer))
4048 (defun pr-despool-ps-print (&optional filename)
4059 (if pr-print-using-ghostscript
4060 (pr-despool-using-ghostscript filename)
4061 (pr-despool-print filename)))
4065 (defun pr-ps-file-preview (filename)
4067 (interactive (list (pr-ps-infile-preprint "Preview ")))
4069 (pr-call-process pr-gv-command filename)))
4073 (defun pr-ps-file-up-preview (n-up ifilename &optional ofilename)
4075 (interactive (pr-interactive-n-up-inout "PS preview"))
4076 (let ((outfile (pr-ps-utility-args 'n-up 'ifilename 'ofilename
4078 (pr-ps-utility-process n-up ifilename outfile)
4079 (pr-ps-file-preview outfile)))
4083 (defun pr-ps-file-using-ghostscript (filename)
4085 (interactive (list (pr-ps-infile-preprint "Print preview ")))
4087 (let* ((file (pr-expand-file-name filename))
4088 (tempfile (pr-dosify-file-name (make-temp-file file))))
4090 (pr-call-process pr-gs-command
4091 (format "-sDEVICE=%s" pr-gs-device)
4092 (format "-r%d" pr-gs-resolution)
4093 (pr-switches-string pr-gs-switches "pr-gs-switches")
4098 (pr-ps-file-print tempfile)
4100 (pr-delete-file tempfile))))
4104 (defun pr-ps-file-print (filename)
4106 (interactive (list (pr-ps-infile-preprint "Print ")))
4109 (let ((file (pr-expand-file-name filename)))
4110 (if (string= pr-ps-command "")
4112 (let ((ps-spool-buffer (get-buffer-create ps-spool-buffer-name)))
4114 (set-buffer ps-spool-buffer)
4115 (erase-buffer)
4117 (pr-despool-print))
4118 ;; use `pr-ps-command' to print
4119 (apply 'pr-call-process
4120 pr-ps-command
4121 (pr-switches-string pr-ps-switches "pr-ps-switches")
4122 (if (string-match "cp" pr-ps-command)
4125 (concat pr-ps-printer-switch pr-ps-printer))
4127 (list (concat pr-ps-printer-switch pr-ps-printer)
4132 (defun pr-ps-file-ps-print (filename)
4134 (interactive (list (pr-ps-infile-preprint
4135 (if pr-print-using-ghostscript
4138 (if pr-print-using-ghostscript
4139 (pr-ps-file-using-ghostscript filename)
4140 (pr-ps-file-print filename)))
4144 (defun pr-ps-file-up-ps-print (n-up ifilename &optional ofilename)
4159 (interactive (pr-interactive-n-up-inout
4160 (if pr-print-using-ghostscript
4163 (let ((outfile (pr-ps-utility-args 'n-up 'ifilename 'ofilename
4164 (if pr-print-using-ghostscript
4167 (pr-ps-utility-process n-up ifilename outfile)
4169 (pr-ps-file-ps-print outfile)
4170 (pr-delete-file outfile))))
4174 (defun pr-toggle-file-duplex ()
4177 (pr-toggle-file-duplex-menu t))
4181 (defun pr-toggle-file-tumble ()
4189 (pr-toggle-file-tumble-menu t))
4193 (defun pr-toggle-file-landscape ()
4196 (pr-toggle-file-landscape-menu t))
4200 (defun pr-toggle-ghostscript ()
4203 (pr-toggle-ghostscript-menu t))
4207 (defun pr-toggle-faces ()
4210 (pr-toggle-faces-menu t))
4214 (defun pr-toggle-spool ()
4217 (pr-toggle-spool-menu t))
4221 (defun pr-toggle-duplex ()
4224 (pr-toggle-duplex-menu t))
4228 (defun pr-toggle-tumble ()
4236 (pr-toggle-tumble-menu t))
4240 (defun pr-toggle-landscape ()
4243 (pr-toggle-landscape-menu t))
4247 (defun pr-toggle-upside-down ()
4250 (pr-toggle-upside-down-menu t))
4254 (defun pr-toggle-line ()
4257 (pr-toggle-line-menu t))
4261 (defun pr-toggle-zebra ()
4264 (pr-toggle-zebra-menu t))
4268 (defun pr-toggle-header ()
4271 (pr-toggle-header-menu t))
4275 (defun pr-toggle-header-frame ()
4278 (pr-toggle-header-frame-menu t))
4282 (defun pr-toggle-lock ()
4285 (pr-toggle-lock-menu t))
4289 (defun pr-toggle-region ()
4292 (pr-toggle-region-menu t))
4296 (defun pr-toggle-mode ()
4299 (pr-toggle-mode-menu t))
4303 (defun pr-customize (&rest ignore)
4317 (defun pr-help (&rest ignore)
4320 (pr-show-setup pr-help-message "*Printing Help*"))
4324 (defun pr-ps-name ()
4327 (pr-menu-set-ps-title
4328 (pr-complete-alist "PostScript printer"
4329 pr-ps-printer-alist pr-ps-name)))
4333 (defun pr-txt-name ()
4336 (pr-menu-set-txt-title
4337 (pr-complete-alist "Text printer"
4338 pr-txt-printer-alist pr-txt-name)))
4342 (defun pr-ps-utility ()
4345 (pr-menu-set-utility-title
4346 (pr-complete-alist "Postscript utility"
4347 pr-ps-utility-alist pr-ps-utility)))
4351 (defun pr-show-ps-setup (&rest ignore)
4354 (pr-show-setup (ps-setup) "*PS Setup*"))
4358 (defun pr-show-pr-setup (&rest ignore)
4361 (pr-show-setup (pr-setup) "*PR Setup*"))
4365 (defun pr-show-lpr-setup (&rest ignore)
4368 (pr-show-setup (lpr-setup) "*LPR Setup*"))
4376 (defun pr-ps-fast-fire (n-up &optional select)
4379 If a region is active, the region will be printed instead of the whole buffer.
4380 Also if the current major-mode is defined in `pr-mode-alist', the settings in
4381 `pr-mode-alist' will be used, that is, the current buffer or region will be
4382 printed using `pr-ps-mode-ps-print'.
4387 M-x pr-ps-fast-fire RET
4391 C-u M-x pr-ps-fast-fire RET
4392 C-u 0 M-x pr-ps-fast-fire RET
4397 C-u 1 M-x pr-ps-fast-fire RET
4402 C-u 2 M-x pr-ps-fast-fire RET
4427 If it's a symbol which it's defined in `pr-ps-printer-alist', it's the new
4434 Note that this command always behaves as if `pr-auto-region' and `pr-auto-mode'
4436 (interactive (list (pr-interactive-n-up (pr-prompt-gs "PS print fast"))
4438 (let ((pr-auto-region t)
4439 (pr-auto-mode t)
4443 (pr-ps-name))
4445 (assq select pr-ps-printer-alist))
4446 (pr-menu-set-ps-title select))
4449 (pr-ps-name))
4450 (and (>= select 1) (not pr-spool-p)
4451 (setq filename (pr-ps-outfile-preprint
4452 (if pr-print-using-ghostscript
4455 (pr-ps-buffer-ps-print
4463 (defun pr-txt-fast-fire (&optional select-printer)
4466 If a region is active, the region will be printed instead of the whole buffer.
4467 Also if the current major-mode is defined in `pr-mode-alist', the settings in
4468 `pr-mode-alist' will be used, that is, the current buffer or region will be
4469 printed using `pr-txt-mode'.
4478 If it's a symbol which it's defined in `pr-txt-printer-alist', it's the new
4484 Note that this command always behaves as if `pr-auto-region' and `pr-auto-mode'
4489 (assq select-printer pr-txt-printer-alist))
4490 (pr-menu-set-txt-title select-printer))
4492 (pr-txt-name)))
4493 (let ((pr-auto-region t)
4494 (pr-auto-mode t))
4495 (pr-txt-buffer)))
4502 (defun pr-setup ()
4506 One way to see `printing' setup is to switch to a *Scratch* buffer and type:
4508 M-: (insert (pr-setup)) RET
4515 (concat "\n;;; printing.el version " pr-version "\n")
4518 (ps-comment-string "pr-txt-command " pr-txt-command)
4519 (ps-comment-string "pr-txt-switches "
4520 (pr-switches-string pr-txt-switches "pr-txt-switches"))
4521 (ps-comment-string "pr-txt-printer " pr-txt-printer)
4522 (ps-comment-string "pr-ps-command " pr-ps-command)
4523 (ps-comment-string "pr-ps-switches "
4524 (pr-switches-string pr-ps-switches "pr-ps-switches"))
4525 (ps-comment-string "pr-ps-printer-switch" pr-ps-printer-switch)
4526 (ps-comment-string "pr-ps-printer " pr-ps-printer)
4527 (ps-comment-string "pr-cygwin-system " pr-cygwin-system)
4531 '(14 . pr-path-style)
4532 '(14 . pr-path-alist)
4534 '(21 . pr-txt-name)
4535 '(21 . pr-txt-printer-alist)
4537 '(20 . pr-ps-name)
4538 '(20 . pr-ps-printer-alist)
4540 '(20 . pr-temp-dir)
4541 '(20 . pr-ps-temp-file)
4542 '(20 . pr-file-modes)
4543 '(20 . pr-delete-temp-file)
4544 '(20 . pr-list-directory)
4546 '(17 . pr-gv-command)
4547 '(17 . pr-gs-command)
4548 '(17 . pr-gs-switches)
4549 '(17 . pr-gs-device)
4550 '(17 . pr-gs-resolution)
4552 '(27 . pr-print-using-ghostscript)
4553 '(27 . pr-faces-p)
4554 '(27 . pr-spool-p)
4555 '(27 . pr-file-landscape)
4556 '(27 . pr-file-duplex)
4557 '(27 . pr-file-tumble)
4558 '(27 . pr-auto-region)
4559 '(27 . pr-auto-mode)
4561 '(20 . pr-ps-utility)
4562 '(20 . pr-ps-utility-alist)
4564 '(14 . pr-mode-alist)
4566 '(20 . pr-menu-lock)
4567 '(20 . pr-menu-char-height)
4568 '(20 . pr-menu-char-width)
4570 '(20 . pr-setting-database)
4572 '(22 . pr-visible-entry-list)
4574 '(22 . pr-buffer-verbose)
4575 '(22 . pr-buffer-name)
4576 '(22 . pr-buffer-name-ignore)
4585 One way to see `lpr' setup is to switch to a *Scratch* buffer and type:
4613 (defalias 'pr-mh-get-msg-num 'mh-get-msg-num)
4614 (defalias 'pr-mh-show 'mh-show)
4615 (defalias 'pr-mh-start-of-uncleaned-message 'mh-start-of-uncleaned-message)
4616 (defvar mh-show-buffer nil)
4619 (defun pr-article-date ()
4620 "Find the date of an article or mail message in current buffer.
4626 (buffer-substring (match-beginning 1) (match-end 1))
4630 (defun pr-mh-current-message ()
4632 (let ((msg (or (pr-mh-get-msg-num nil) 0)))
4633 (pr-mh-show)
4634 (set-buffer mh-show-buffer)
4636 (pr-mh-start-of-uncleaned-message)
4640 (defun pr-mh-print-1 (n-up filename header-list)
4644 (pr-mh-current-message)
4645 (pr-mode-print n-up filename header-list (point)))))
4648 (defun pr-mh-lpr-1 (header-list)
4652 (pr-mh-current-message)
4653 (pr-mode-lpr header-list (point)))))
4656 (defalias 'pr-mh-print-2 'pr-mode-print)
4659 (defalias 'pr-mh-lpr-2 'pr-mode-lpr)
4666 (defun pr-rmail-lpr (header-list)
4668 (pr-lpr-message-from-summary header-list
4669 'rmail-buffer 'rmail-summary-buffer))
4672 (defun pr-rmail-print (n-up filename header-list)
4674 (pr-ps-message-from-summary n-up filename header-list
4675 'rmail-buffer 'rmail-summary-buffer))
4678 (defun pr-ps-message-from-summary (n-up filename header-list
4679 summary-buffer summary-default)
4681 (let ((buf (or (and (boundp summary-buffer)
4682 (symbol-value summary-buffer))
4684 (and (get-buffer buf)
4686 (set-buffer buf)
4687 (pr-mode-print n-up filename header-list)))))
4690 (defun pr-lpr-message-from-summary (header-list summary-buffer summary-default)
4692 (let ((buf (or (and (boundp summary-buffer)
4693 (symbol-value summary-buffer))
4695 (and (get-buffer buf)
4697 (set-buffer buf)
4698 (pr-mode-lpr header-list)))))
4705 (defvar pr-gnus-article "*Article*")
4708 (defun pr-gnus-print (n-up filename header-list)
4710 (pr-ps-message-from-summary n-up filename header-list
4711 'gnus-article-buffer 'pr-gnus-article))
4714 (defun pr-gnus-lpr (header-list)
4716 (pr-lpr-message-from-summary header-list
4717 'gnus-article-buffer 'pr-gnus-article))
4724 (defvar pr-vm-summary "")
4727 (defun pr-vm-print (n-up filename header-list)
4729 (pr-ps-message-from-summary n-up filename header-list
4730 'vm-mail-buffer 'pr-vm-summary))
4733 (defun pr-vm-lpr (header-list)
4735 (pr-lpr-message-from-summary header-list
4736 'vm-mail-buffer 'pr-vm-summary))
4743 (defun pr-ps-mode (n-up filename)
4745 (let ((args (pr-mode-alist-p)))
4755 (defmacro pr-local-variable (header-list &rest body)
4761 (let ((local-var-list (pr-eval-local-alist (nthcdr 4 ,header-list))))
4764 (pr-kill-local-variable local-var-list))))))
4767 (defun pr-mode-print (n-up filename header-list &optional from to)
4769 (pr-local-variable
4771 (let ((file (pr-ps-file filename))
4773 ((pr-region-active-p) (region-beginning))
4776 (pr-text2ps (pr-region-active-symbol start) n-up file start
4778 ((pr-region-active-p) (region-end))
4781 (unless (or pr-spool-p filename)
4782 (pr-ps-file-print file)
4783 (pr-delete-file file)))))
4786 (defun pr-mode-lpr (header-list &optional from to)
4788 (pr-local-variable
4790 (pr-txt-print (cond (from)
4791 ((pr-region-active-p) (region-beginning))
4794 ((pr-region-active-p) (region-end))
4802 (defconst pr-menu-entry-alist
4812 It's used by `pr-menu-index'.
4818 See `pr-visible-entry-alist'.")
4821 (defun pr-menu-index (entry index)
4838 (and (pr-visible-p key)
4840 (cdr (assq key pr-menu-entry-alist)))))))
4844 (defvar pr-menu-position nil)
4845 (defvar pr-menu-state nil)
4852 (defun pr-menu-position (entry index horizontal)
4853 (pr-x-make-event
4856 'x (- (pr-x-event-x-pixel current-mouse-event) ; X
4857 (* horizontal pr-menu-char-width))
4858 'y (- (pr-x-event-y-pixel current-mouse-event) ; Y
4859 (* (pr-menu-index entry index) pr-menu-char-height)))))
4863 (defun pr-menu-position (entry index horizontal)
4864 (let ((pos (cdr (pr-e-mouse-pixel-position))))
4868 (* (pr-menu-index entry index) pr-menu-char-height)))
4873 (defun pr-menu-position (entry index horizontal)
4874 (let ((pos (cdr (pr-e-mouse-pixel-position))))
4877 (* horizontal pr-menu-char-width))
4879 (* (pr-menu-index entry index) pr-menu-char-height)))
4887 (defun pr-menu-lookup (path)
4888 (car (pr-x-find-menu-item current-menubar (cons "Printing" path))))
4891 (defun pr-menu-lock (entry index horizontal state path)
4892 (when pr-menu-lock
4893 (or (and pr-menu-position (eq state pr-menu-state))
4894 (setq pr-menu-position (pr-menu-position entry index horizontal)
4895 pr-menu-state state))
4896 (let* ((menu (pr-menu-lookup path))
4897 (result (pr-x-get-popup-menu-response menu pr-menu-position)))
4898 (and (pr-x-misc-user-event-p result)
4899 (funcall (pr-x-event-function result)
4900 (pr-x-event-object result))))
4901 (setq pr-menu-position nil))))
4906 (defun pr-menu-lookup (path)
4909 (vconcat pr-menu-bar
4910 (mapcar 'pr-get-symbol
4914 pr-menu-bar)))
4917 (defun pr-menu-lock (entry index horizontal state path)
4918 (when pr-menu-lock
4919 (or (and pr-menu-position (eq state pr-menu-state))
4920 (setq pr-menu-position (pr-menu-position entry index horizontal)
4921 pr-menu-state state))
4922 (let* ((menu (pr-menu-lookup path))
4923 (result (x-popup-menu pr-menu-position menu)))
4929 (setq pr-menu-position nil)))))
4936 (defun pr-update-var (var-sym alist)
4941 (defun pr-update-menus (&optional force)
4944 If FORCE is non-nil, update menus doesn't matter if `pr-ps-printer-alist',
4945 `pr-txt-printer-alist' or `pr-ps-utility-alist' were modified or not;
4946 otherwise, update PostScript printer menu iff `pr-ps-printer-menu-modified' is
4947 non-nil, update text printer menu iff `pr-txt-printer-menu-modified' is
4948 non-nil, and update PostScript File menus iff `pr-ps-utility-menu-modified' is
4951 If menu binding was not done, calls `pr-menu-bind'."
4953 (if pr-menu-print-item ; since v6.8.4
4957 (pr-menu-bind)
4959 (pr-update-var 'pr-ps-name pr-ps-printer-alist)
4960 (pr-update-var 'pr-txt-name pr-txt-printer-alist)
4961 (pr-update-var 'pr-ps-utility pr-ps-utility-alist)
4962 (pr-do-update-menus force)))
4965 (defvar pr-ps-printer-menu-modified t
4966 "Non-nil means `pr-ps-printer-alist' was modified and we need to update menu.")
4967 (defvar pr-txt-printer-menu-modified t
4968 "Non-nil means `pr-txt-printer-alist' was modified and we need to update menu.")
4969 (defvar pr-ps-utility-menu-modified t
4970 "Non-nil means `pr-ps-utility-alist' was modified and we need to update menu.")
4973 (defconst pr-even-or-odd-alist
4981 (defun pr-menu-create (name alist var-sym fun entry index)
4997 (defalias 'pr-update-mode-line 'set-menubar-dirty-flag)
5000 (defvar pr-ps-name-old "PostScript Printers")
5001 (defvar pr-txt-name-old "Text Printers")
5002 (defvar pr-ps-utility-old "PostScript Utility")
5003 (defvar pr-even-or-odd-old "Print All Pages")
5006 (defun pr-do-update-menus (&optional force)
5007 (pr-menu-alist pr-ps-printer-alist
5008 'pr-ps-name
5009 'pr-menu-set-ps-title
5011 'pr-ps-printer-menu-modified
5013 pr-ps-name-old
5015 (pr-menu-alist pr-txt-printer-alist
5016 'pr-txt-name
5017 'pr-menu-set-txt-title
5019 'pr-txt-printer-menu-modified
5021 pr-txt-name-old
5023 (let ((save-var pr-ps-utility-menu-modified))
5024 (pr-menu-alist pr-ps-utility-alist
5025 'pr-ps-utility
5026 'pr-menu-set-utility-title
5030 pr-ps-utility-old
5032 (pr-menu-alist pr-ps-utility-alist
5033 'pr-ps-utility
5034 'pr-menu-set-utility-title
5036 'pr-ps-utility-menu-modified
5038 pr-ps-utility-old
5040 (pr-even-or-odd-pages ps-even-or-odd-pages force))
5043 (defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
5046 (pr-xemacs-global-menubar
5047 (pr-x-add-submenu menu-path
5048 (pr-menu-create name alist var-sym
5054 (defun pr-relabel-menu-item (newname var-sym)
5055 (pr-xemacs-global-menubar
5056 (pr-x-relabel-menu-item
5062 (defun pr-menu-set-ps-title (value &optional item entry index)
5063 (pr-relabel-menu-item (format "PostScript Printer: %s" value)
5064 'pr-ps-name-old)
5065 (pr-ps-set-printer value)
5067 (pr-menu-lock entry index 12 'toggle nil)))
5070 (defun pr-menu-set-txt-title (value &optional item entry index)
5071 (pr-relabel-menu-item (format "Text Printer: %s" value)
5072 'pr-txt-name-old)
5073 (pr-txt-set-printer value)
5075 (pr-menu-lock entry index 12 'toggle nil)))
5078 (defun pr-menu-set-utility-title (value &optional item entry index)
5079 (pr-xemacs-global-menubar
5081 (pr-x-relabel-menu-item
5082 (list "Printing" "PostScript Print" "File" pr-ps-utility-old)
5084 (pr-x-relabel-menu-item
5085 (list "Printing" "PostScript Preview" "File" pr-ps-utility-old)
5087 (setq pr-ps-utility-old newname)))
5088 (pr-ps-set-utility value)
5090 (pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
5093 (defun pr-even-or-odd-pages (value &optional no-lock)
5094 (pr-relabel-menu-item (cdr (assq value pr-even-or-odd-alist))
5095 'pr-even-or-odd-old)
5098 (pr-menu-lock 'postscript-options 8 12 'toggle nil))))
5103 (defalias 'pr-update-mode-line 'force-mode-line-update)
5106 (defun pr-do-update-menus (&optional force)
5107 (pr-menu-alist pr-ps-printer-alist
5108 'pr-ps-name
5109 'pr-menu-set-ps-title
5111 'pr-ps-printer-menu-modified
5115 (pr-menu-alist pr-txt-printer-alist
5116 'pr-txt-name
5117 'pr-menu-set-txt-title
5119 'pr-txt-printer-menu-modified
5123 (let ((save-var pr-ps-utility-menu-modified))
5124 (pr-menu-alist pr-ps-utility-alist
5125 'pr-ps-utility
5126 'pr-menu-set-utility-title
5132 (pr-menu-alist pr-ps-utility-alist
5133 'pr-ps-utility
5134 'pr-menu-set-utility-title
5136 'pr-ps-utility-menu-modified
5140 (pr-even-or-odd-pages ps-even-or-odd-pages force))
5143 (defun pr-menu-get-item (name-list)
5149 (name (pr-get-symbol (car reversed)))
5153 (vconcat pr-menu-bar
5154 (mapcar 'pr-get-symbol path)))))
5158 (defvar pr-temp-menu nil)
5161 (defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
5164 (easy-menu-define pr-temp-menu nil ""
5165 (pr-menu-create name alist var-sym fun entry index))
5166 (let ((item (pr-menu-get-item menu-path)))
5170 (setcar binding pr-temp-menu)
5177 (defun pr-menu-set-item-name (item name)
5182 (defun pr-menu-set-ps-title (value &optional item entry index)
5183 (pr-menu-set-item-name (or item
5184 (pr-menu-get-item "PostScript Printers"))
5186 (pr-ps-set-printer value)
5188 (pr-menu-lock entry index 12 'toggle nil)))
5191 (defun pr-menu-set-txt-title (value &optional item entry index)
5192 (pr-menu-set-item-name (or item
5193 (pr-menu-get-item "Text Printers"))
5195 (pr-txt-set-printer value)
5197 (pr-menu-lock entry index 12 'toggle nil)))
5200 (defun pr-menu-set-utility-title (value &optional item entry index)
5203 (pr-menu-set-item-name item name)
5204 (pr-menu-set-item-name
5205 (pr-menu-get-item
5208 (pr-menu-set-item-name
5209 (pr-menu-get-item
5212 (pr-ps-set-utility value)
5214 (pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
5217 (defun pr-even-or-odd-pages (value &optional no-lock)
5218 (pr-menu-set-item-name (pr-menu-get-item "Print All Pages")
5219 (cdr (assq value pr-even-or-odd-alist)))
5222 (pr-menu-lock 'postscript-options 8 12 'toggle nil)))))
5225 (defun pr-ps-set-utility (value)
5226 (let ((item (cdr (assq value pr-ps-utility-alist))))
5229 "Invalid PostScript utility name `%s' for variable `pr-ps-utility'"
5231 (setq pr-ps-utility value)
5232 (pr-eval-alist (nthcdr 9 item)))
5233 (pr-update-mode-line))
5236 (defun pr-ps-set-printer (value)
5237 (let ((ps (cdr (assq value pr-ps-printer-alist))))
5240 "Invalid PostScript printer name `%s' for variable `pr-ps-name'"
5242 (setq pr-ps-name value
5243 pr-ps-command (pr-dosify-file-name (nth 0 ps))
5244 pr-ps-switches (nth 1 ps)
5245 pr-ps-printer-switch (nth 2 ps)
5246 pr-ps-printer (nth 3 ps))
5247 (or (stringp pr-ps-command)
5248 (setq pr-ps-command
5253 (or (stringp pr-ps-printer-switch)
5254 (setq pr-ps-printer-switch
5259 (pr-eval-alist (nthcdr 4 ps)))
5260 (pr-update-mode-line))
5263 (defun pr-txt-set-printer (value)
5264 (let ((txt (cdr (assq value pr-txt-printer-alist))))
5265 (or txt
5266 (error "Invalid text printer name `%s' for variable `pr-txt-name'"
5268 (setq pr-txt-name value
5269 pr-txt-command (pr-dosify-file-name (nth 0 txt))
5270 pr-txt-switches (nth 1 txt)
5271 pr-txt-printer (nth 2 txt)))
5272 (or (stringp pr-txt-command)
5273 (setq pr-txt-command
5278 (pr-update-mode-line))
5281 (defun pr-eval-alist (alist)
5286 (pr-eval-setting-alist value 'global)
5291 (defun pr-eval-local-alist (alist)
5298 (nconc (pr-eval-setting-alist value) local-list)
5305 (defun pr-eval-setting-alist (key &optional global old)
5306 (let ((setting (cdr (assq key pr-setting-database))))
5315 (message "There are local buffer settings for `%S'." key)
5321 (pr-eval-setting-alist inherits global
5346 (defun pr-kill-local-variable (local-var-list)
5354 (defun pr-toggle (var-sym mess entry index horizontal state
5359 (pr-menu-lock entry index horizontal state path)))
5362 (defun pr-toggle-file-duplex-menu (&optional no-menu)
5364 (pr-toggle 'pr-file-duplex "PS file duplex" nil 7 5 nil
5368 (defun pr-toggle-file-tumble-menu (&optional no-menu)
5370 (pr-toggle 'pr-file-tumble "PS file tumble" nil 8 5 nil
5374 (defun pr-toggle-file-landscape-menu (&optional no-menu)
5376 (pr-toggle 'pr-file-landscape "PS file landscape" nil 6 5 nil
5380 (defun pr-toggle-ghostscript-menu (&optional no-menu)
5382 (pr-toggle 'pr-print-using-ghostscript "Printing using ghostscript"
5386 (defun pr-toggle-faces-menu (&optional no-menu)
5388 (pr-toggle 'pr-faces-p "Printing with faces"
5392 (defun pr-toggle-spool-menu (&optional no-menu)
5394 (pr-toggle 'pr-spool-p "Spooling printing"
5398 (defun pr-toggle-duplex-menu (&optional no-menu)
5400 (pr-toggle 'ps-spool-duplex "Printing duplex"
5404 (defun pr-toggle-tumble-menu (&optional no-menu)
5406 (pr-toggle 'ps-spool-tumble "Tumble"
5410 (defun pr-toggle-landscape-menu (&optional no-menu)
5412 (pr-toggle 'ps-landscape-mode "Landscape"
5416 (defun pr-toggle-upside-down-menu (&optional no-menu)
5418 (pr-toggle 'ps-print-upside-down "Upside-Down"
5422 (defun pr-toggle-line-menu (&optional no-menu)
5424 (pr-toggle 'ps-line-number "Line number"
5428 (defun pr-toggle-zebra-menu (&optional no-menu)
5430 (pr-toggle 'ps-zebra-stripes "Zebra stripe"
5434 (defun pr-toggle-header-menu (&optional no-menu)
5436 (pr-toggle 'ps-print-header "Print header"
5440 (defun pr-toggle-header-frame-menu (&optional no-menu)
5442 (pr-toggle 'ps-print-header-frame "Print header frame"
5446 (defun pr-toggle-lock-menu (&optional no-menu)
5448 (pr-toggle 'pr-menu-lock "Menu lock"
5452 (defun pr-toggle-region-menu (&optional no-menu)
5454 (pr-toggle 'pr-auto-region "Auto region"
5458 (defun pr-toggle-mode-menu (&optional no-menu)
5460 (pr-toggle 'pr-auto-mode "Auto mode"
5464 (defun pr-prompt (str)
5465 (if (pr-auto-mode-p)
5467 (pr-region-active-string str)))
5470 (defun pr-prompt-region (str)
5471 (concat str (if (pr-auto-mode-p)
5476 (defun pr-prompt-gs (str)
5477 (if (pr-using-ghostscript-p)
5482 (defun pr-region-active-symbol (&optional region-p)
5483 (if (or region-p (pr-region-active-p))
5485 'buffer))
5488 (defun pr-region-active-string (prefix)
5490 (if (pr-region-active-p)
5492 " buffer")))
5495 (defun pr-show-setup (settings buffer-name)
5496 (with-output-to-temp-buffer buffer-name
5501 (defun pr-complete-alist (prompt alist default)
5513 (defun pr-delete-file (file)
5514 (and pr-delete-temp-file (file-exists-p file)
5518 (defun pr-expand-file-name (filename)
5519 (pr-dosify-file-name (expand-file-name filename)))
5522 (defun pr-ps-outfile-preprint (&optional mess)
5541 (pr-expand-file-name res)))
5544 (defun pr-ps-infile-preprint (&optional mess)
5561 (pr-expand-file-name res)))
5564 (defun pr-ps-utility-args (n-up-sym infile-sym outfile-sym prompt)
5568 (set n-up-sym (pr-interactive-n-up prompt)))
5571 (set infile-sym (pr-ps-infile-preprint prompt)))
5574 (set infile-sym (pr-dosify-file-name (symbol-value infile-sym)))
5578 (pr-ps-outfile-preprint prompt))))
5580 (set outfile-sym (pr-dosify-file-name (symbol-value outfile-sym))))
5581 (pr-ps-file (symbol-value outfile-sym)))
5584 (defun pr-ps-utility-process (n-up infile outfile)
5588 (setq item (cdr (assq pr-ps-utility pr-ps-utility-alist)))
5589 (pr-call-process (nth 0 item)
5590 (pr-switches-string (nth 1 item)
5591 "pr-ps-utility-alist entry")
5592 (pr-switches-string (nth 8 item)
5593 "pr-ps-utility-alist entry")
5597 (and pr-file-landscape (nth 4 item))
5598 (and pr-file-duplex (nth 5 item))
5599 (and pr-file-tumble (nth 6 item))
5600 (pr-expand-file-name infile)
5602 (pr-expand-file-name outfile)))))
5605 (defun pr-remove-nil-from-list (lst)
5619 (defun pr-call-process (command &rest args)
5620 (let ((buffer (get-buffer-create "*Printing Command Output*"))
5621 (cmd (pr-command command))
5623 (setq args (pr-remove-nil-from-list args))
5626 (set-buffer buffer)
5630 (pr-save-file-modes
5633 (apply 'call-process cmd nil buffer nil args)
5638 (set-buffer buffer)
5645 "Printing error status: %s (see *Printing Command Output* buffer)"
5649 (defun pr-txt-print (from to)
5650 (let ((lpr-command (pr-standard-file-name (pr-command pr-txt-command)))
5651 (lpr-switches (pr-switches pr-txt-switches "pr-txt-switches"))
5652 (printer-name pr-txt-printer))
5656 (defun pr-switches-string (switches mess)
5660 (mapconcat 'identity (pr-switches switches mess) " ")))
5663 (defun pr-switches (switches mess)
5670 (defun pr-ps-preview (kind n-up filename mess)
5671 (pr-set-n-up-and-filename 'n-up 'filename mess)
5672 (let ((file (pr-ps-file filename)))
5673 (pr-text2ps kind n-up file)
5674 (or pr-spool-p (pr-ps-file-preview file))))
5677 (defun pr-ps-using-ghostscript (kind n-up filename mess)
5678 (pr-set-n-up-and-filename 'n-up 'filename mess)
5679 (let ((file (pr-ps-file filename)))
5680 (pr-text2ps kind n-up file)
5681 (unless (or pr-spool-p filename)
5682 (pr-ps-file-using-ghostscript file)
5683 (pr-delete-file file))))
5686 (defun pr-ps-print (kind n-up filename mess)
5687 (pr-set-n-up-and-filename 'n-up 'filename mess)
5688 (let ((file (pr-ps-file filename)))
5689 (pr-text2ps kind n-up file)
5690 (unless (or pr-spool-p filename)
5691 (pr-ps-file-print file)
5692 (pr-delete-file file))))
5695 (defun pr-ps-file (&optional filename)
5696 (pr-dosify-file-name (or filename
5699 (expand-file-name pr-ps-temp-file pr-temp-dir))
5703 (defun pr-interactive-n-up (mess)
5708 (str (pr-f-read-string (format fmt-prompt prompt mess) "1" nil "1"))
5718 (pr-f-read-string (format fmt-prompt prompt mess) str nil "1")))
5722 (defun pr-interactive-dir (mess)
5723 (let* ((dir-name (file-name-directory (or (buffer-file-name)
5742 (defun pr-interactive-regexp (mess)
5743 (pr-f-read-string (format "[%s] File regexp to print: " mess) "" nil ""))
5746 (defun pr-interactive-dir-args (mess)
5749 (pr-interactive-dir mess)
5751 (pr-interactive-regexp mess)))
5754 (defun pr-interactive-ps-dir-args (mess)
5757 (pr-interactive-n-up mess)
5759 (pr-interactive-dir mess)
5761 (pr-interactive-regexp mess)
5763 (and (not pr-spool-p)
5767 (defun pr-interactive-n-up-file (mess)
5770 (pr-interactive-n-up mess)
5772 (and (not pr-spool-p)
5776 (defun pr-interactive-n-up-inout (mess)
5779 (pr-interactive-n-up mess)
5781 (pr-ps-infile-preprint (concat mess " "))
5786 (defun pr-set-outfilename (filename-sym)
5787 (and (not pr-spool-p)
5792 (set filename-sym (pr-dosify-file-name (symbol-value filename-sym)))))
5795 (defun pr-set-n-up-and-filename (n-up-sym filename-sym mess)
5798 (set n-up-sym (pr-interactive-n-up mess)))
5800 (pr-set-outfilename filename-sym))
5803 (defun pr-set-dir-args (dir-sym regexp-sym mess)
5806 (set dir-sym (pr-interactive-dir mess)))
5809 (set regexp-sym (pr-interactive-regexp mess))))
5812 (defun pr-set-ps-dir-args (n-up-sym dir-sym regexp-sym filename-sym mess)
5815 (set n-up-sym (pr-interactive-n-up mess)))
5817 (pr-set-dir-args dir-sym regexp-sym mess)
5819 (pr-set-outfilename filename-sym))
5822 (defun pr-find-buffer-visiting (file)
5824 (find-buffer-visiting (if ps-windows-system
5828 (blist (buffer-list))
5832 (set-buffer (car blist))
5836 (string= (buffer-substring-no-properties
5847 (defun pr-file-list (dir file-regexp fun)
5849 (and (or pr-list-directory
5851 (let ((buffer (pr-find-buffer-visiting file))
5854 (and (or buffer
5857 (set-buffer (or buffer
5860 (or buffer
5861 (kill-buffer (current-buffer))))))))
5865 (defun pr-delete-file-if-exists (filename)
5866 (and (not pr-spool-p) (stringp filename) (file-exists-p filename)
5870 (defun pr-ps-file-list (n-up dir file-regexp filename)
5871 (pr-delete-file-if-exists (setq filename (pr-expand-file-name filename)))
5872 (let ((pr-spool-p t))
5873 (pr-file-list dir file-regexp
5875 (if (pr-auto-mode-p)
5876 (pr-ps-mode n-up filename)
5877 (pr-text2ps 'buffer n-up filename)))))
5878 (or pr-spool-p
5879 (pr-despool-print filename)))
5882 (defun pr-text2ps (kind n-up filename &optional from to)
5883 (pr-save-file-modes
5887 (pr-delete-file-if-exists filename)
5888 (cond (pr-faces-p
5889 (cond (pr-spool-p
5890 ;; pr-faces-p and pr-spool-p
5892 (cond ((eq kind 'buffer)
5893 (ps-spool-buffer-with-faces))
5898 ;; pr-faces-p and not pr-spool-p
5899 ((eq kind 'buffer)
5900 (ps-print-buffer-with-faces filename))
5905 (pr-spool-p
5906 ;; not pr-faces-p and pr-spool-p
5908 (cond ((eq kind 'buffer)
5909 (ps-spool-buffer))
5913 ;; not pr-faces-p and not pr-spool-p
5914 ((eq kind 'buffer)
5915 (ps-print-buffer filename))
5921 (defun pr-command (command)
5927 Else it uses `pr-path-alist' to find COMMAND, if find it then return it;
5930 When using `pr-path-alist' to find COMMAND, the entries `cygwin', `windows' and
5931 `unix' are used (see `pr-path-alist' for documentation).
5937 (pr-dosify-file-name
5938 (or (pr-find-command command)
5939 (pr-path-command (cond (pr-cygwin-system 'cygwin)
5948 (defun pr-path-command (symbol command sym-list)
5949 (let ((lpath (cdr (assq symbol pr-path-alist)))
5962 (pr-path-command path command
5966 (pr-find-command
5976 (defun pr-find-command (cmd)
6005 (defvar pr-i-window-configuration nil)
6007 (defvar pr-i-buffer nil)
6008 (defvar pr-i-region nil)
6009 (defvar pr-i-mode nil)
6010 (defvar pr-i-despool nil)
6011 (defvar pr-i-ps-as-is t)
6012 (defvar pr-i-n-up 1)
6013 (defvar pr-i-directory "./")
6014 (defvar pr-i-regexp "")
6015 (defvar pr-i-ps-file "")
6016 (defvar pr-i-out-file "")
6017 (defvar pr-i-answer-yes nil)
6018 (defvar pr-i-process 'buffer)
6019 (defvar pr-i-ps-send 'printer)
6022 (defvar pr-interface-map nil
6023 "Keymap for pr-interface.")
6025 (unless pr-interface-map
6026 (setq pr-interface-map (make-sparse-keymap))
6028 (pr-f-set-keymap-parents pr-interface-map (list widget-keymap))
6029 (pr-f-set-keymap-name pr-interface-map 'pr-interface-map))
6031 (pr-f-set-keymap-parents pr-interface-map widget-keymap)))
6032 (define-key pr-interface-map "q" 'pr-interface-quit)
6033 (define-key pr-interface-map "?" 'pr-interface-help))
6036 (defmacro pr-interface-save (&rest body)
6038 (set-buffer pr-i-buffer)
6042 (defun pr-create-interface ()
6044 (setq pr-i-buffer (buffer-name (current-buffer))
6045 pr-i-region (ps-mark-active-p)
6046 pr-i-mode (pr-mode-alist-p)
6047 pr-i-window-configuration (current-window-configuration))
6049 (put 'pr-i-process 'pr-widget-list nil)
6050 (put 'pr-i-ps-send 'pr-widget-list nil)
6053 (kill-buffer (get-buffer-create pr-buffer-name))
6054 (switch-to-buffer (get-buffer-create pr-buffer-name))
6057 (let ((versions (concat "printing v" pr-version
6062 (pr-insert-italic "\nCurrent Directory : " 1)
6063 (pr-insert-italic default-directory)
6065 (pr-insert-section-1) ; 1. Print
6066 (pr-insert-section-2) ; 2. PostScript Printer
6067 (pr-insert-section-3) ; 3. Text Printer
6072 (pr-insert-section-4) ; 4. Settings
6073 (pr-insert-section-5) ; 5. Customize
6074 (pr-insert-section-6) ; 6. Show Settings
6075 (pr-insert-section-7) ; 7. Help
6077 (use-local-map pr-interface-map)
6081 (and pr-i-region ; let region activated
6082 (pr-keep-region-active)))
6085 (defun pr-insert-section-1 ()
6087 (pr-insert-italic "\nPrint :" 1)
6091 (pr-insert-radio-button 'pr-i-process 'buffer)
6092 (pr-insert-menu "Buffer List" 'pr-i-buffer
6093 (let ((blist (buffer-list))
6096 (let ((name (buffer-name (car blist)))
6097 (ignore pr-buffer-name-ignore)
6113 (pr-interface-save
6114 (setq pr-i-region (ps-mark-active-p)
6115 pr-i-mode (pr-mode-alist-p)))
6116 (pr-update-checkbox 'pr-i-region)
6117 (pr-update-checkbox 'pr-i-mode)))
6119 (put 'pr-i-region 'pr-widget
6120 (pr-insert-checkbox
6122 'pr-i-region
6124 (let ((region-p (pr-interface-save
6127 (setq pr-i-region nil))
6129 (setq pr-i-region t)
6135 (setq pr-i-region nil)
6140 (put 'pr-i-mode 'pr-widget
6141 (pr-insert-checkbox
6143 'pr-i-mode
6145 (let ((mode-p (pr-interface-save
6146 (pr-mode-alist-p))))
6149 (setq pr-i-mode nil))
6151 (setq pr-i-mode t)
6157 "This buffer isn't in a mode that printing treats specially.")
6158 (setq pr-i-mode nil)
6164 (pr-insert-radio-button 'pr-i-process 'directory)
6169 :notify 'pr-interface-directory
6171 (if (pr-interface-directory widget)
6172 (pr-widget-field-action widget event)
6175 pr-i-directory)
6181 (setq pr-i-regexp (widget-value widget)))
6182 pr-i-regexp)
6185 (pr-insert-toggle 'pr-list-directory " List Directory Entry\n")
6188 (pr-insert-radio-button 'pr-i-process 'file)
6193 :notify 'pr-interface-infile
6195 (if (pr-interface-infile widget)
6196 (pr-widget-field-action widget event)
6199 pr-i-ps-file)
6201 (pr-insert-menu "PostScript Utility" 'pr-ps-utility
6202 (pr-choice-alist pr-ps-utility-alist)
6206 (pr-insert-toggle 'pr-i-ps-as-is " No Preprocessing"))
6209 (defun pr-insert-section-2 ()
6212 (pr-insert-italic "\n\nPostScript Printer : " 2 20)
6213 (pr-insert-menu "PostScript Printer" 'pr-ps-name
6214 (pr-choice-alist pr-ps-printer-alist))
6216 (put 'pr-i-despool 'pr-widget
6217 (pr-insert-checkbox
6219 'pr-i-despool
6221 (if pr-spool-p
6222 (setq pr-i-despool (not pr-i-despool))
6225 (setq pr-i-despool nil))
6226 (widget-value-set widget pr-i-despool)
6230 (pr-insert-button 'pr-interface-preview "Preview" " ")
6231 (pr-insert-button 'pr-interface-ps-print "Print" " ")
6232 (pr-insert-button 'pr-interface-quit "Quit")
6234 (pr-insert-radio-button 'pr-i-ps-send 'printer)
6237 (pr-insert-radio-button 'pr-i-ps-send 'file)
6242 :notify 'pr-interface-outfile
6244 (if (and (pr-interface-outfile widget)
6245 (or (not (file-exists-p pr-i-out-file))
6246 (setq pr-i-answer-yes
6248 (pr-widget-field-action widget event)
6251 pr-i-out-file)
6265 (setq pr-i-n-up value))
6268 pr-i-n-up))
6271 (defun pr-insert-section-3 ()
6273 (pr-insert-italic "\n\nText Printer : " 2 14)
6274 (pr-insert-menu "Text Printer" 'pr-txt-name
6275 (pr-choice-alist pr-txt-printer-alist)
6277 (pr-insert-button 'pr-interface-printify "Printify" " ")
6278 (pr-insert-button 'pr-interface-txt-print "Print" " ")
6279 (pr-insert-button 'pr-interface-quit "Quit"))
6282 (defun pr-insert-section-4 ()
6285 (pr-insert-checkbox "\n\n " 'ps-landscape-mode
6288 pr-file-landscape ps-landscape-mode))
6290 (pr-insert-toggle 'pr-auto-region " Auto Region ")
6291 (pr-insert-toggle 'pr-buffer-verbose " Verbose\n ")
6294 (pr-insert-toggle 'ps-print-header " Print Header ")
6295 (pr-insert-toggle 'pr-auto-mode " Auto Mode\n ")
6298 (pr-insert-toggle 'ps-print-header-frame " Print Header Frame ")
6299 (pr-insert-toggle 'pr-menu-lock " Menu Lock\n ")
6302 (pr-insert-toggle 'ps-line-number " Line Number\n ")
6305 (pr-insert-toggle 'ps-zebra-stripes " Zebra Stripes")
6306 (pr-insert-checkbox " "
6307 'pr-spool-p
6309 (setq pr-spool-p (not pr-spool-p))
6310 (unless pr-spool-p
6311 (setq pr-i-despool nil)
6312 (pr-update-checkbox 'pr-i-despool)))
6316 (pr-insert-checkbox "\n "
6320 pr-file-duplex ps-spool-duplex))
6322 (pr-insert-toggle 'pr-faces-p " Print with faces")
6325 (pr-insert-checkbox "\n "
6329 pr-file-tumble ps-spool-tumble))
6331 (pr-insert-toggle 'pr-print-using-ghostscript " Print via Ghostscript\n ")
6334 (pr-insert-toggle 'ps-print-upside-down " Upside-Down")
6335 (pr-insert-italic "\n\nSelect Pages : " 2 14)
6336 (pr-insert-menu "Page Parity" 'ps-even-or-odd-pages
6343 pr-even-or-odd-alist)))
6346 (defun pr-insert-section-5 ()
6348 (pr-insert-italic "\n\nCustomize : " 2 11)
6349 (pr-insert-button 'pr-customize "printing" " ")
6350 (pr-insert-button #'(lambda (&rest ignore) (ps-print-customize))
6352 (pr-insert-button 'lpr-customize "lpr"))
6355 (defun pr-insert-section-6 ()
6357 (pr-insert-italic "\nShow Settings : " 1 14)
6358 (pr-insert-button 'pr-show-pr-setup "printing" " ")
6359 (pr-insert-button 'pr-show-ps-setup "ps-print" " ")
6360 (pr-insert-button 'pr-show-lpr-setup "lpr"))
6363 (defun pr-insert-section-7 ()
6365 (pr-insert-italic "\nHelp : " 1 5)
6366 (pr-insert-button 'pr-interface-help "Interface Help" " ")
6367 (pr-insert-button 'pr-help "Menu Help" " ")
6368 (pr-insert-button 'pr-interface-quit "Quit" "\n ")
6369 (pr-insert-button 'pr-kill-help "Kill All Printing Help Buffer"))
6372 (defun pr-kill-help (&rest ignore)
6373 "Kill all printing help buffer."
6378 (let ((buffer (get-buffer (car help))))
6380 (when buffer
6381 (delete-windows-on buffer)
6382 (kill-buffer buffer)))))
6386 (defun pr-interface-quit (&rest ignore)
6387 "Kill the printing buffer interface and quit."
6389 (kill-buffer pr-buffer-name)
6390 (set-window-configuration pr-i-window-configuration))
6393 (defun pr-interface-help (&rest ignore)
6394 "printing buffer interface help."
6396 (pr-show-setup pr-interface-help-message "*Printing Interface Help*"))
6399 (defun pr-interface-txt-print (&rest ignore)
6404 ((eq pr-i-process 'directory)
6405 (pr-i-directory)
6406 (pr-interface-save
6407 (pr-txt-directory pr-i-directory pr-i-regexp)))
6408 ((eq pr-i-process 'buffer)
6409 (pr-interface-save
6410 (cond (pr-i-region
6411 (let ((pr-auto-mode pr-i-mode))
6412 (pr-txt-region)))
6413 (pr-i-mode
6414 (let (pr-auto-region)
6415 (pr-txt-mode)))
6417 (let (pr-auto-mode pr-auto-region)
6418 (pr-txt-buffer)))
6420 ((eq pr-i-process 'file)
6423 (error "Internal error: `pr-i-process' = %S" pr-i-process))
6431 (defun pr-interface-printify (&rest ignore)
6432 "Printify a buffer."
6436 ((eq pr-i-process 'directory)
6437 (pr-i-directory)
6438 (pr-interface-save
6439 (pr-printify-directory pr-i-directory pr-i-regexp)))
6440 ((eq pr-i-process 'buffer)
6441 (pr-interface-save
6442 (if pr-i-region
6443 (pr-printify-region)
6444 (pr-printify-buffer))))
6445 ((eq pr-i-process 'file)
6448 (error "Internal error: `pr-i-process' = %S" pr-i-process))
6456 (defun pr-interface-ps-print (&rest ignore)
6459 (pr-interface-ps 'pr-despool-ps-print 'pr-ps-directory-ps-print
6460 'pr-ps-file-ps-print 'pr-ps-file-up-ps-print
6461 'pr-ps-region-ps-print 'pr-ps-mode-ps-print
6462 'pr-ps-buffer-ps-print))
6465 (defun pr-interface-preview (&rest ignore)
6468 (pr-interface-ps 'pr-despool-preview 'pr-ps-directory-preview
6469 'pr-ps-file-preview 'pr-ps-file-up-preview
6470 'pr-ps-region-preview 'pr-ps-mode-preview
6471 'pr-ps-buffer-preview))
6474 (defun pr-interface-ps (ps-despool ps-directory ps-file ps-file-up ps-region
6475 ps-mode ps-buffer)
6477 (let ((outfile (or (and (eq pr-i-process 'file) pr-i-ps-as-is)
6478 (pr-i-ps-send))))
6480 ((and pr-i-despool pr-spool-p)
6481 (pr-interface-save
6483 (setq pr-i-despool nil)
6484 (pr-update-checkbox 'pr-i-despool))
6485 ((eq pr-i-process 'directory)
6486 (pr-i-directory)
6487 (pr-interface-save
6489 pr-i-n-up pr-i-directory pr-i-regexp outfile)))
6490 ((eq pr-i-process 'file)
6491 (cond ((or (file-directory-p pr-i-ps-file)
6492 (not (file-readable-p pr-i-ps-file)))
6494 (pr-i-ps-as-is
6495 (pr-interface-save
6496 (funcall ps-file pr-i-ps-file)))
6498 (pr-interface-save
6499 (funcall ps-file-up pr-i-n-up pr-i-ps-file outfile)))
6501 ((eq pr-i-process 'buffer)
6502 (pr-interface-save
6503 (cond (pr-i-region
6504 (let ((pr-auto-mode pr-i-mode))
6505 (funcall ps-region pr-i-n-up outfile)))
6506 (pr-i-mode
6507 (let (pr-auto-region)
6508 (funcall ps-mode pr-i-n-up outfile)))
6510 (let (pr-auto-mode pr-auto-region)
6511 (funcall ps-buffer pr-i-n-up outfile)))
6514 (error "Internal error: `pr-i-process' = %S" pr-i-process))
6522 (defun pr-i-ps-send ()
6523 (cond ((eq pr-i-ps-send 'printer)
6525 ((not (eq pr-i-ps-send 'file))
6526 (error "Internal error: `pr-i-ps-send' = %S" pr-i-ps-send))
6527 ((or (file-directory-p pr-i-out-file)
6528 (not (file-writable-p pr-i-out-file)))
6530 ((or (not (file-exists-p pr-i-out-file))
6531 pr-i-answer-yes
6532 (setq pr-i-answer-yes
6534 pr-i-out-file))))
6535 pr-i-out-file)
6540 (defun pr-i-directory ()
6541 (or (and (file-directory-p pr-i-directory)
6542 (file-readable-p pr-i-directory))
6546 (defun pr-interface-directory (widget &rest ignore)
6547 (and pr-buffer-verbose
6552 (setq pr-i-directory dir))))
6555 (defun pr-interface-infile (widget &rest ignore)
6556 (and pr-buffer-verbose
6561 (setq pr-i-ps-file file))))
6564 (defun pr-interface-outfile (widget &rest ignore)
6565 (setq pr-i-answer-yes nil)
6566 (and pr-buffer-verbose
6571 (setq pr-i-out-file file))))
6574 (defun pr-widget-field-action (widget event)
6575 (and (get-buffer "*Completions*") ; clean frame window
6581 (defun pr-insert-italic (str &optional from to)
6589 (defun pr-insert-checkbox (before var-sym fun label)
6598 (defun pr-insert-toggle (var-sym label)
6606 (defun pr-insert-button (fun label &optional separator)
6614 (defun pr-insert-menu (tag var-sym choices &optional before after &rest body)
6630 (defun pr-insert-radio-button (var-sym sym)
6632 (let ((wid-list (get var-sym 'pr-widget-list))
6639 (pr-update-radio-button (quote ,var-sym)))))))
6640 (put var-sym 'pr-widget-list (cons (cons wid sym) wid-list))))
6643 (defun pr-update-radio-button (var-sym)
6644 (let ((wid-list (get var-sym 'pr-widget-list)))
6653 (defun pr-update-checkbox (var-sym)
6654 (let ((wid (get var-sym 'pr-widget)))
6660 (defun pr-choice-alist (alist)