;;; printing.el --- printing utilities
-;; Copyright (C) 2000, 2001, 2003, 2004, 2005,
-;; 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2001, 2003-2014 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
"printing.el, v 6.9.3 <2007/12/09 vinicius>
Please send all bug fixes and enhancements to
- Vinicius Jose Latorre <viniciusjl@ig.com.br>
+ bug-gnu-emacs@gnu.org and Vinicius Jose Latorre <viniciusjl@ig.com.br>
")
;; This file is part of GNU Emacs.
;;
;; One way to set variables is by calling `pr-customize', customize all
;; variables and save the customization by future sessions (see Options
-;; section). Other way is by coding your settings on Emacs init file (that is,
-;; ~/.emacs file), see below for a first setting template that it should be
-;; inserted on your ~/.emacs file (or c:/_emacs, if you're using Windows 9x/NT
-;; or MS-DOS):
+;; section). Other way is by adding code to your init file; see below
+;; for a first setting template that it should be inserted on your
+;; init file:
;;
;; * Example of setting for Windows system:
;;
;; Using `printing'
;; ----------------
;;
-;; To use `printing' insert in your ~/.emacs file (or c:/_emacs, if you're
-;; using Windows 9x/NT or MS-DOS):
+;; To use `printing' insert in your init file:
;;
;; (require 'printing)
;; ;; ...some user settings...
;; `pr-auto-region' Non-nil means region is automagically detected.
;;
;; `pr-auto-mode' Non-nil means major-mode specific printing is
-;; prefered over normal printing.
+;; preferred over normal printing.
;;
;; `pr-mode-alist' Specify an alist for a major-mode and printing
;; function.
(defconst pr-cygwin-system
- (and ps-windows-system (getenv "OSTYPE")
+ (and lpr-windows-system (getenv "OSTYPE")
(string-match "cygwin" (getenv "OSTYPE"))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GNU Emacs Definitions
+(eval-and-compile
+ (unless (featurep 'xemacs)
+ (defvar pr-menu-bar nil
+ "Specify Printing menu-bar entry.")))
(cond
((featurep 'xemacs) ; XEmacs
(defun pr-menu-char-width ()
(frame-char-width))
- (defvar pr-menu-bar nil
- "Specify Printing menu-bar entry.")
-
;; GNU Emacs
;; Menu binding
;; Replace existing "print" item by "Printing" item.
(eval-when-compile
(require 'easymenu)) ; to avoid compilation gripes
+ (declare-function easy-menu-add-item "easymenu"
+ (map path item &optional before))
+ (declare-function easy-menu-remove-item "easymenu" (map path name))
+
(eval-and-compile
- (cond
- ;; GNU Emacs 20
- ((< emacs-major-version 21)
- (defun pr-global-menubar (pr-menu-spec)
- (require 'easymenu)
- (easy-menu-change '("tools") "Printing" pr-menu-spec pr-menu-print-item)
- (when pr-menu-print-item
- (easy-menu-remove-item nil '("tools") pr-menu-print-item)
- (setq pr-menu-print-item nil
- pr-menu-bar (vector 'menu-bar 'tools
- (pr-get-symbol "Printing")))))
- )
- ;; GNU Emacs 21 & 22
- (t
(defun pr-global-menubar (pr-menu-spec)
(require 'easymenu)
(let ((menu-file (if (= emacs-major-version 21)
(t
(easy-menu-add-item global-map menu-file
(easy-menu-create-menu "Print" pr-menu-spec)))
- )))
- )))
+ ))))
(eval-and-compile
(cond
- (ps-windows-system
+ (lpr-windows-system
;; GNU Emacs for Windows 9x/NT
(defun pr-menu-position (entry index horizontal)
(let ((pos (cdr (mouse-pixel-position))))
"Ensure the proper directory separator depending on the OS.
That is, if Emacs is running on DOS/Windows, ensure dos/windows-style directory
separator; otherwise, ensure unix-style directory separator."
- (if (or pr-cygwin-system ps-windows-system)
+ (if (or pr-cygwin-system lpr-windows-system)
(subst-char-in-string ?/ ?\\ path)
(subst-char-in-string ?\\ ?/ path)))
(defcustom pr-path-style
(if (and (not pr-cygwin-system)
- ps-windows-system)
+ lpr-windows-system)
'windows
'unix)
- "*Specify which path style to use for external commands.
+ "Specify which path style to use for external commands.
Valid values are:
'((unix PATH)
(cygwin PATH)
(windows PATH))
- "*Specify an alist for command paths.
+ "Specify an alist for command paths.
It's used to find commands used for printing package, like gv, gs, gsview.exe,
mpage, print.exe, etc. See also `pr-command' function.
(defcustom pr-txt-name 'default
- "*Specify a printer for printing a text file.
+ "Specify a printer for printing a text file.
The printer name symbol should be defined on `pr-txt-printer-alist' (see it for
documentation).
(defcustom pr-txt-printer-alist
(list (list 'default lpr-command nil
(cond ((boundp 'printer-name) printer-name)
- (ps-windows-system "PRN")
+ (lpr-windows-system "PRN")
(t nil)
)))
;; Examples:
;; (PRN "" nil "PRN")
;; (standard "redpr.exe" nil "")
;; )
- "*Specify an alist of all text printers (text printer database).
+ "Specify an alist of all text printers (text printer database).
The alist element has the form:
Where:
SYMBOL It's a symbol to identify a text printer. It's for
- `pr-txt-name' variable setting and for menu selection.
+ setting option `pr-txt-name' and for menu selection.
Examples:
'prt_06a
'my_printer
(defcustom pr-ps-name 'default
- "*Specify a printer for printing a PostScript file.
+ "Specify a printer for printing a PostScript file.
This printer name symbol should be defined on `pr-ps-printer-alist' (see it for
documentation).
(defcustom pr-ps-printer-alist
(list (list 'default lpr-command nil
- (cond (ps-windows-system nil)
- (ps-lp-system "-d")
+ (cond (lpr-windows-system nil)
+ (lpr-lp-system "-d")
(t "-P"))
(or (getenv "PRINTER") (getenv "LPDEST") ps-printer-name)))
;; Examples:
;; (PRN "" nil "" "PRN")
;; (standard "redpr.exe" nil "" "")
;; )
- "*Specify an alist for all PostScript printers (PostScript printer database).
+ "Specify an alist for all PostScript printers (PostScript printer database).
The alist element has the form:
Where:
SYMBOL It's a symbol to identify a PostScript printer. It's for
- `pr-ps-name' variable setting and for menu selection.
+ setting option `pr-ps-name' and for menu selection.
Examples:
'prt_06a
'my_printer
`http://bama.ua.edu/cgi-bin/man-cgi?lp'
`http://www.mediacollege.com/cgi-bin/man/page.cgi?section=all&topic=lp'
-* GNU utilities for Win32 (cp.exe)
+* GNU utilities for w32 (cp.exe)
`http://unxutils.sourceforge.net/'
"
:type '(repeat
;; hacked from `temporary-file-directory' variable in files.el
(file-name-as-directory
(or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
- (cond (ps-windows-system "c:/temp")
+ (cond (lpr-windows-system "c:/temp")
(t "/tmp")
)))))
- "*Specify a directory for temporary files during printing.
+ "Specify a directory for temporary files during printing.
See also `pr-ps-temp-file' and `pr-file-modes'."
:type '(directory :tag "Temporary Directory")
(defcustom pr-ps-temp-file "prspool-"
- "*Specify PostScript temporary file name prefix.
+ "Specify PostScript temporary file name prefix.
See also `pr-temp-dir' and `pr-file-modes'."
:type '(file :tag "PostScript Temporary File Name")
;; So, by default, only the session owner have permission to deal with files
;; generated by `printing'.
(defcustom pr-file-modes ?\600
- "*Specify the file permission bits for newly created files.
+ "Specify the file permission bits for newly created files.
It should be an integer; only the low 9 bits are used.
(defcustom pr-gv-command
- (if ps-windows-system
+ (if lpr-windows-system
"gsview32.exe"
"gv")
- "*Specify path and name of the gsview/gv utility.
+ "Specify path and name of the gsview/gv utility.
See also `pr-path-alist'.
(defcustom pr-gs-command
- (if ps-windows-system
+ (if lpr-windows-system
"gswin32.exe"
"gs")
- "*Specify path and name of the ghostscript utility.
+ "Specify path and name of the ghostscript utility.
See also `pr-path-alist'.
(defcustom pr-gs-switches
- (if ps-windows-system
+ (if lpr-windows-system
'("-q -dNOPAUSE -Ic:/gs/gs5.50;c:/gs/gs5.50/fonts")
'("-q -dNOPAUSE -I/usr/share/ghostscript/5.10"))
- "*Specify ghostscript switches. See the documentation on GS for more info.
+ "Specify ghostscript switches. See the documentation on GS for more info.
It's a list of strings, where each string is one or more ghostscript switches.
(defcustom pr-gs-device
- (if ps-windows-system
+ (if lpr-windows-system
"mswinpr2"
"uniprint")
- "*Specify the ghostscript device switch value (-sDEVICE=).
+ "Specify the ghostscript device switch value (-sDEVICE=).
A note on the gs switches:
(defcustom pr-gs-resolution 300
- "*Specify ghostscript resolution switch value (-r).
+ "Specify ghostscript resolution switch value (-r).
A note on the gs switches:
(defcustom pr-print-using-ghostscript nil
- "*Non-nil means print using ghostscript.
+ "Non-nil means print using ghostscript.
This is useful if you don't have a PostScript printer, so you could use the
ghostscript to print a PostScript file.
(defcustom pr-faces-p nil
- "*Non-nil means print with face attributes."
+ "Non-nil means print with face attributes."
:type 'boolean
:group 'printing)
(defcustom pr-spool-p nil
- "*Non-nil means spool printing in a buffer."
+ "Non-nil means spool printing in a buffer."
:type 'boolean
:group 'printing)
(defcustom pr-file-landscape nil
- "*Non-nil means print PostScript file in landscape orientation."
+ "Non-nil means print PostScript file in landscape orientation."
:type 'boolean
:group 'printing)
(defcustom pr-file-duplex nil
- "*Non-nil means print PostScript file in duplex mode."
+ "Non-nil means print PostScript file in duplex mode."
:type 'boolean
:group 'printing)
(defcustom pr-file-tumble nil
- "*Non-nil means print PostScript file in tumble mode.
+ "Non-nil means print PostScript file in tumble mode.
If tumble is off, produces a printing suitable for binding on the left or
right.
(defcustom pr-auto-region t
- "*Non-nil means region is automagically detected.
+ "Non-nil means region is automagically detected.
Note that this will only work if you're using transient mark mode.
(defcustom pr-auto-mode t
- "*Non-nil means major-mode specific printing is prefered over normal printing.
+ "Non-nil means major-mode specific printing is preferred over normal printing.
That is, if current major-mode is declared in `pr-mode-alist', the `*-buffer*'
and `*-region*' commands will behave like `*-mode*' commands; otherwise,
nil
)
)
- "*Specify an alist for a major-mode and printing functions.
+ "Specify an alist for a major-mode and printing functions.
To customize a major mode printing, just declare the customization in
`pr-mode-alist' and invoke some of `*-mode*' commands. An example for major
nil, it's used (point-max).
PS-PRINT It's a symbol function for PostScript printing. It's invoked
- with 3 arguments: n-up printing, file name and the list:
+ with three arguments: n-up printing, file name and the list:
(HEADER-LINES LEFT-HEADER RIGHT-HEADER DEFAULT...).
Usually PS-PRINT function prepares the environment or buffer
(defcustom pr-ps-utility 'mpage
- "*Specify PostScript utility symbol.
+ "Specify PostScript utility symbol.
This utility symbol should be defined on `pr-ps-utility-alist' (see it for
documentation).
;; '((psnup "c:/psutils/psnup" ("-q") "-P%s" "-%d" "-l" nil nil " " nil
;; (pr-file-duplex . nil) (pr-file-tumble . nil))
;; )
- "*Specify an alist for PostScript utility processing (PS utility database).
+ "Specify an alist for PostScript utility processing (PS utility database).
The alist element has the form:
(defcustom pr-menu-lock t
- "*Non-nil means menu is locked while selecting toggle options.
+ "Non-nil means menu is locked while selecting toggle options.
See also `pr-menu-char-height' and `pr-menu-char-width'."
:type 'boolean
(defcustom pr-menu-char-height (pr-menu-char-height)
- "*Specify menu char height in pixels.
+ "Specify menu char height in pixels.
This variable is used to guess which vertical position should be locked the
menu, so don't forget to adjust it if menu position is not ok.
(defcustom pr-menu-char-width (pr-menu-char-width)
- "*Specify menu char width in pixels.
+ "Specify menu char width in pixels.
This variable is used to guess which horizontal position should be locked the
menu, so don't forget to adjust it if menu position is not ok.
(pr-file-duplex . nil) ; settings
(pr-file-tumble . nil))
)
- "*Specify an alist for settings in general.
+ "Specify an alist for settings in general.
The elements have the following form:
The example above has two setting groups: no-duplex and
no-duplex-and-landscape. When setting no-duplex is activated
- through `inherits-from:' (see `pr-ps-utility', `pr-mode-alist'
- and `pr-ps-printer-alist'), the variables pr-file-duplex and
- pr-file-tumble are both set to nil.
+ through `inherits-from:' (see option `pr-ps-utility',
+ `pr-mode-alist' and `pr-ps-printer-alist'), the variables
+ pr-file-duplex and pr-file-tumble are both set to nil.
Now when setting no-duplex-and-landscape is activated through
`inherits-from:', the variable pr-file-landscape is set to nil
(defcustom pr-visible-entry-list
'(postscript text postscript-options postscript-process printing help)
- "*Specify a list of Printing menu visible entries.
+ "Specify a list of Printing menu visible entries.
Valid values with the corresponding menu parts are:
(defcustom pr-delete-temp-file t
- "*Non-nil means delete temporary files.
+ "Non-nil means delete temporary files.
Set `pr-delete-temp-file' to nil, if the following message (or a similar)
happens when printing:
(defcustom pr-list-directory nil
- "*Non-nil means list directory when processing a directory.
+ "Non-nil means list directory when processing a directory.
That is, any subdirectories (and the superdirectory) of the directory (given as
argument of functions below) are also printed (as dired-mode listings).
(defcustom pr-buffer-name "*Printing Interface*"
- "*Specify the name of the buffer interface for printing package.
+ "Specify the name of the buffer interface for printing package.
It's used by `pr-interface'."
:type 'string
(defcustom pr-buffer-name-ignore
(list (regexp-quote pr-buffer-name) ; ignore printing interface buffer
"^ .*$") ; ignore invisible buffers
- "*Specify a regexp list for buffer names to be ignored in interface buffer.
+ "Specify a regexp list for buffer names to be ignored in interface buffer.
NOTE: Case is important for matching, that is, `case-fold-search' is always
nil.
(defcustom pr-buffer-verbose t
- "*Non-nil means to be verbose when editing a field in interface buffer.
+ "Non-nil means to be verbose when editing a field in interface buffer.
It's used by `pr-interface'."
:type 'boolean
(defun pr-menu-bind ()
"Install `printing' menu in the menubar.
-
-On Emacs 20, it replaces the Tools/Print menu by Tools/Printing menu.
-
-On Emacs 21 and 22, it replaces the File/Print* menu entries by File/Print
-menu.
-
+This replaces the File/Print* menu entries with a File/Print sub-menu.
Calls `pr-update-menus' to adjust menus."
(interactive)
(pr-global-menubar pr-menu-spec)
"\n\n
The printing interface buffer has the same functionality as the printing menu.
The major difference is that the states (like sending PostScript generated to a
-file, n-up printing, etc.) are set and saved between priting buffer
+file, n-up printing, etc.) are set and saved between printing buffer
activation. Also, the landscape, duplex and tumble values are the same for
PostScript file and directory/buffer/region/mode processing; using menu, there
are different value sets for PostScript file and directory/buffer/region/mode
For more information, type \\[pr-interface-help]."
(interactive)
- (save-excursion
- (set-buffer (or buffer (current-buffer)))
+ (with-current-buffer (or buffer (current-buffer))
(pr-create-interface)))
(if (string= pr-ps-command "")
;; default action
(let ((ps-spool-buffer (get-buffer-create ps-spool-buffer-name)))
- (save-excursion
- (set-buffer ps-spool-buffer)
+ (with-current-buffer ps-spool-buffer
(erase-buffer)
(insert-file-contents-literally file))
(pr-despool-print))
;;;###autoload
(defun pr-toggle-region ()
- "Toggle auto region."
+ "Toggle whether the region is automagically detected."
(interactive)
(pr-toggle-region-menu t))
;;;###autoload
-(defun pr-customize (&rest ignore)
+(defun pr-customize (&rest _ignore)
"Customization of the `printing' group."
(interactive)
(customize-group 'printing))
;;;###autoload
-(defun lpr-customize (&rest ignore)
+(defun lpr-customize (&rest _ignore)
"Customization of the `lpr' group."
(interactive)
(customize-group 'lpr))
;;;###autoload
-(defun pr-help (&rest ignore)
+(defun pr-help (&rest _ignore)
"Help for the printing package."
(interactive)
(pr-show-setup pr-help-message "*Printing Help*"))
"Interactively select a PostScript utility."
(interactive)
(pr-menu-set-utility-title
- (pr-complete-alist "Postscript utility"
+ (pr-complete-alist "PostScript utility"
pr-ps-utility-alist pr-ps-utility)))
;;;###autoload
-(defun pr-show-ps-setup (&rest ignore)
+(defun pr-show-ps-setup (&rest _ignore)
"Show current ps-print settings."
(interactive)
(pr-show-setup (ps-setup) "*PS Setup*"))
;;;###autoload
-(defun pr-show-pr-setup (&rest ignore)
+(defun pr-show-pr-setup (&rest _ignore)
"Show current printing settings."
(interactive)
(pr-show-setup (pr-setup) "*PR Setup*"))
;;;###autoload
-(defun pr-show-lpr-setup (&rest ignore)
+(defun pr-show-lpr-setup (&rest _ignore)
"Show current lpr settings."
(interactive)
(pr-show-setup (lpr-setup) "*LPR Setup*"))
M-x pr-ps-fast-fire RET
The command prompts the user for a N-UP value and printing will
- immediatelly be done using the current active printer.
+ immediately be done using the current active printer.
C-u M-x pr-ps-fast-fire RET
C-u 0 M-x pr-ps-fast-fire RET
The command prompts the user for a N-UP value and also for a current
- PostScript printer, then printing will immediatelly be done using the new
+ PostScript printer, then printing will immediately be done using the new
current active printer.
C-u 1 M-x pr-ps-fast-fire RET
If it's nil, send the image to the printer.
If it's a list or an integer lesser or equal to zero, the command prompts
- the user for a current PostScript printer, then printing will immediatelly
+ the user for a current PostScript printer, then printing will immediately
be done using the new current active printer.
If it's an integer equal to 1, the command prompts the user for a file name
instead of sending it to the printer.
If it's a symbol which it's defined in `pr-ps-printer-alist', it's the new
- active printer and printing will immediatelly be done using the new active
+ active printer and printing will immediately be done using the new active
printer.
Otherwise, send the image to the printer.
If it's nil, the printing is sent to the current active text printer.
If it's a symbol which it's defined in `pr-txt-printer-alist', it's the new
- active printer and printing will immediatelly be done using the new active
+ active printer and printing will immediately be done using the new active
printer.
If it's non-nil, the command prompts the user for a new active text printer.
(ps-comment-string "pr-ps-printer-switch" pr-ps-printer-switch)
(ps-comment-string "pr-ps-printer " pr-ps-printer)
(ps-comment-string "pr-cygwin-system " pr-cygwin-system)
- (ps-comment-string "ps-windows-system " ps-windows-system)
- (ps-comment-string "ps-lp-system " ps-lp-system)
+ (ps-comment-string "lpr-windows-system " lpr-windows-system)
+ (ps-comment-string "lpr-lp-system " lpr-lp-system)
nil
'(14 . pr-path-style)
'(14 . pr-path-alist)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; mh-e (adapted from mh-e-init.el -- Tom Vogels <tov@ece.cmu.edu>)
-
-(defalias 'pr-mh-get-msg-num 'mh-get-msg-num)
-(defalias 'pr-mh-show 'mh-show)
-(defalias 'pr-mh-start-of-uncleaned-message 'mh-start-of-uncleaned-message)
-(defvar mh-show-buffer nil)
+(declare-function mh-get-msg-num "mh-utils" (error-if-no-message))
+(declare-function mh-show "mh-show" (&optional message redisplay-flag))
+(declare-function mh-start-of-uncleaned-message "mh-show" ())
+(defvar mh-show-buffer)
(defun pr-article-date ()
(defun pr-mh-current-message ()
"Go to mh-inbox current message."
- (let ((msg (or (pr-mh-get-msg-num nil) 0)))
- (pr-mh-show)
+ (let ((msg (or (mh-get-msg-num nil) 0)))
+ (mh-show)
(set-buffer mh-show-buffer)
(goto-char (point-min))
- (pr-mh-start-of-uncleaned-message)
+ (mh-start-of-uncleaned-message)
(message "Printing message %d" msg)))
(symbol-value summary-buffer))
(symbol-value summary-default))))
(and (get-buffer buf)
- (save-excursion
- (set-buffer buf)
+ (with-current-buffer buf
(pr-mode-print n-up filename header-list)))))
(symbol-value summary-buffer))
(symbol-value summary-default))))
(and (get-buffer buf)
- (save-excursion
- (set-buffer buf)
+ (with-current-buffer buf
(pr-mode-lpr header-list)))))
pr-ps-printer (nth 3 ps))
(or (stringp pr-ps-command)
(setq pr-ps-command
- (cond (ps-windows-system "print")
- (ps-lp-system "lp")
+ (cond (lpr-windows-system "print")
+ (lpr-lp-system "lp")
(t "lpr")
)))
(or (stringp pr-ps-printer-switch)
(setq pr-ps-printer-switch
- (cond (ps-windows-system "/D:")
- (ps-lp-system "-d")
+ (cond (lpr-windows-system "/D:")
+ (lpr-lp-system "-d")
(t "-P")
)))
(pr-eval-alist (nthcdr 4 ps)))
pr-txt-printer (nth 2 txt)))
(or (stringp pr-txt-command)
(setq pr-txt-command
- (cond (ps-windows-system "print")
- (ps-lp-system "lp")
+ (cond (lpr-windows-system "print")
+ (lpr-lp-system "lp")
(t "lpr")
)))
(pr-update-mode-line))
(defun pr-toggle-file-duplex-menu (&optional no-menu)
+ "Toggle whether to print PostScript files in duplex mode."
(interactive)
(pr-toggle 'pr-file-duplex "PS file duplex" nil 7 5 nil
'("PostScript Print" "File") no-menu))
(defun pr-toggle-file-tumble-menu (&optional no-menu)
+ "Toggle whether to print PostScript files in tumble mode."
(interactive)
(pr-toggle 'pr-file-tumble "PS file tumble" nil 8 5 nil
'("PostScript Print" "File") no-menu))
(defun pr-toggle-file-landscape-menu (&optional no-menu)
+ "Toggle whether to print PostScript files in landscape orientation."
(interactive)
(pr-toggle 'pr-file-landscape "PS file landscape" nil 6 5 nil
'("PostScript Print" "File") no-menu))
(defun pr-toggle-ghostscript-menu (&optional no-menu)
+ "Toggle whether to print using ghostscript."
(interactive)
(pr-toggle 'pr-print-using-ghostscript "Printing using ghostscript"
'postscript-process 2 12 'toggle nil no-menu))
(defun pr-toggle-faces-menu (&optional no-menu)
+ "Toggle whether to print with face attributes."
(interactive)
(pr-toggle 'pr-faces-p "Printing with faces"
'postscript-process 1 12 'toggle nil no-menu))
(defun pr-toggle-spool-menu (&optional no-menu)
+ "Toggle whether to spool printing in a buffer."
(interactive)
(pr-toggle 'pr-spool-p "Spooling printing"
'postscript-process 0 12 'toggle nil no-menu))
(defun pr-toggle-duplex-menu (&optional no-menu)
+ "Toggle whether to generate PostScript for a two-sided printer."
(interactive)
(pr-toggle 'ps-spool-duplex "Printing duplex"
'postscript-options 5 12 'toggle nil no-menu))
(defun pr-toggle-tumble-menu (&optional no-menu)
+ "Toggle how pages on opposite sides of a sheet are oriented."
(interactive)
(pr-toggle 'ps-spool-tumble "Tumble"
'postscript-options 6 12 'toggle nil no-menu))
(defun pr-toggle-landscape-menu (&optional no-menu)
+ "Toggle whether to print in landscape mode."
(interactive)
(pr-toggle 'ps-landscape-mode "Landscape"
'postscript-options 0 12 'toggle nil no-menu))
(defun pr-toggle-upside-down-menu (&optional no-menu)
+ "Toggle whether to print upside-down (that is, rotated by 180 degrees)."
(interactive)
(pr-toggle 'ps-print-upside-down "Upside-Down"
'postscript-options 7 12 'toggle nil no-menu))
(defun pr-toggle-line-menu (&optional no-menu)
+ "Toggle whether to means print line numbers."
(interactive)
(pr-toggle 'ps-line-number "Line number"
'postscript-options 3 12 'toggle nil no-menu))
(defun pr-toggle-zebra-menu (&optional no-menu)
+ "Toggle whether to print zebra stripes."
(interactive)
(pr-toggle 'ps-zebra-stripes "Zebra stripe"
'postscript-options 4 12 'toggle nil no-menu))
(defun pr-toggle-header-menu (&optional no-menu)
+ "Toggle whether to print a header at the top of each page."
(interactive)
(pr-toggle 'ps-print-header "Print header"
'postscript-options 1 12 'toggle nil no-menu))
(defun pr-toggle-header-frame-menu (&optional no-menu)
+ "Toggle whether to draw a gaudy frame around the header."
(interactive)
(pr-toggle 'ps-print-header-frame "Print header frame"
'postscript-options 2 12 'toggle nil no-menu))
(defun pr-toggle-lock-menu (&optional no-menu)
+ "Toggle whether the menu is locked while selecting toggle options."
(interactive)
(pr-toggle 'pr-menu-lock "Menu lock"
'printing 2 12 'toggle nil no-menu))
(defun pr-toggle-region-menu (&optional no-menu)
+ "Toggle whether the region is automagically detected."
(interactive)
(pr-toggle 'pr-auto-region "Auto region"
'printing 0 12 'toggle nil no-menu))
(defun pr-toggle-mode-menu (&optional no-menu)
+ "Toggle whether major-mode specific printing is preferred over normal printing."
(interactive)
(pr-toggle 'pr-auto-mode "Auto mode"
'printing 1 12 'toggle nil no-menu))
(defun pr-show-setup (settings buffer-name)
(with-output-to-temp-buffer buffer-name
(princ settings)
- (print-help-return-message)))
+ (help-print-return-message)))
(defun pr-complete-alist (prompt alist default)
status)
(setq args (pr-remove-nil-from-list args))
;; *Printing Command Output* == show command & args
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(goto-char (point-max))
(insert (format "%s %S\n" cmd args)))
;; *Printing Command Output* == show any return message from command
((quit error)
(error-message-string data)))))
;; *Printing Command Output* == show exit status
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(goto-char (point-max))
(insert (format "Exit status: %s\n\n" status)))
;; message if error status
(defun pr-switches (switches mess)
(or (listp switches)
(error "%S should have a list of strings" mess))
- (ps-flatten-list ; dynamic evaluation
+ (lpr-flatten-list ; dynamic evaluation
(mapcar 'ps-eval-switch switches)))
(let* ((dir-name (file-name-directory (or (buffer-file-name)
default-directory)))
(fmt-prompt (concat "%s[" mess "] Directory to print: "))
- (dir (read-file-name (format fmt-prompt "")
- "" dir-name nil dir-name))
+ (dir (read-directory-name (format fmt-prompt "")
+ "" dir-name nil dir-name))
prompt)
(while (cond ((not (file-directory-p dir))
(ding)
(setq prompt "Directory is unreadable! "))
(t nil))
(setq dir-name (file-name-directory dir)
- dir (read-file-name (format fmt-prompt prompt)
- "" dir-name nil dir-name)))
+ dir (read-directory-name (format fmt-prompt prompt)
+ "" dir-name nil dir-name)))
(file-name-as-directory dir)))
(defun pr-find-buffer-visiting (file)
(if (not (file-directory-p file))
- (find-buffer-visiting (if ps-windows-system
+ (find-buffer-visiting (if lpr-windows-system
(downcase file)
file))
(let ((truename (file-truename file))
(blist (buffer-list))
found)
(while (and (not found) blist)
- (save-excursion
- (set-buffer (car blist))
+ (with-current-buffer (car blist)
(and (eq major-mode 'dired-mode)
(save-excursion
(goto-char (point-min))
pop-up-frames)
(and (or buffer
(file-readable-p file))
- (save-excursion
- (set-buffer (or buffer
- (find-file-noselect file)))
+ (with-current-buffer (or buffer
+ (find-file-noselect file))
(funcall fun)
(or buffer
(kill-buffer (current-buffer))))))))
(pr-dosify-file-name
(or (pr-find-command command)
(pr-path-command (cond (pr-cygwin-system 'cygwin)
- (ps-windows-system 'windows)
+ (lpr-windows-system 'windows)
(t 'unix))
(file-name-nondirectory command)
nil)
(defun pr-find-command (cmd)
- (if ps-windows-system
+ (if lpr-windows-system
;; windows system
(let ((ext (cons (file-name-extension cmd t)
(list ".exe" ".bat" ".com")))
(defmacro pr-interface-save (&rest body)
- `(save-excursion
- (set-buffer pr-i-buffer)
+ `(with-current-buffer pr-i-buffer
,@body))
(and pr-i-region ; let region activated
(pr-keep-region-active)))
+(declare-function widget-field-action "wid-edit" (widget &optional _event))
+(declare-function widget-value-set "wid-edit" (widget value))
(defun pr-insert-section-1 ()
;; 1. Print:
(pr-insert-checkbox
"\n "
'pr-i-region
- #'(lambda (widget &rest ignore)
+ #'(lambda (widget &rest _ignore)
(let ((region-p (pr-interface-save
(ps-mark-active-p))))
(cond ((null (widget-value widget)) ; widget is nil
(pr-insert-checkbox
" "
'pr-i-mode
- #'(lambda (widget &rest ignore)
+ #'(lambda (widget &rest _ignore)
(let ((mode-p (pr-interface-save
(pr-mode-alist-p))))
(cond
(widget-create 'regexp
:size 58
:format "\n File Regexp : %v\n"
- :notify (lambda (widget &rest ignore)
+ :notify (lambda (widget &rest _ignore)
(setq pr-i-regexp (widget-value widget)))
pr-i-regexp)
;; 1b. Directory: List Directory Entry
(pr-insert-checkbox
" "
'pr-i-despool
- #'(lambda (widget &rest ignore)
+ #'(lambda (widget &rest _ignore)
(if pr-spool-p
(setq pr-i-despool (not pr-i-despool))
(ding)
'integer
:size 3
:format "\n N-Up : %v"
- :notify (lambda (widget &rest ignore)
+ :notify (lambda (widget &rest _ignore)
(let ((value (if (string= (widget-apply widget :value-get) "")
0
(widget-value widget))))
;; 4. Settings:
;; 4. Settings: Landscape Auto Region Verbose
(pr-insert-checkbox "\n\n " 'ps-landscape-mode
- #'(lambda (&rest ignore)
+ #'(lambda (&rest _ignore)
(setq ps-landscape-mode (not ps-landscape-mode)
pr-file-landscape ps-landscape-mode))
" Landscape ")
(pr-insert-toggle 'ps-zebra-stripes " Zebra Stripes")
(pr-insert-checkbox " "
'pr-spool-p
- #'(lambda (&rest ignore)
+ #'(lambda (&rest _ignore)
(setq pr-spool-p (not pr-spool-p))
(unless pr-spool-p
(setq pr-i-despool nil)
;; 4. Settings: Duplex Print with faces
(pr-insert-checkbox "\n "
'ps-spool-duplex
- #'(lambda (&rest ignore)
+ #'(lambda (&rest _ignore)
(setq ps-spool-duplex (not ps-spool-duplex)
pr-file-duplex ps-spool-duplex))
" Duplex ")
;; 4. Settings: Tumble Print via Ghostscript
(pr-insert-checkbox "\n "
'ps-spool-tumble
- #'(lambda (&rest ignore)
+ #'(lambda (&rest _ignore)
(setq ps-spool-tumble (not ps-spool-tumble)
pr-file-tumble ps-spool-tumble))
" Tumble ")
;; 5. Customize:
(pr-insert-italic "\n\nCustomize : " 2 11)
(pr-insert-button 'pr-customize "printing" " ")
- (pr-insert-button #'(lambda (&rest ignore) (ps-print-customize))
+ (pr-insert-button #'(lambda (&rest _ignore) (ps-print-customize))
"ps-print" " ")
(pr-insert-button 'lpr-customize "lpr"))
(pr-insert-button 'pr-kill-help "Kill All Printing Help Buffer"))
-(defun pr-kill-help (&rest ignore)
+(defun pr-kill-help (&rest _ignore)
"Kill all printing help buffer."
(interactive)
(let ((help '("*Printing Interface Help*" "*Printing Help*"
(recenter (- (window-height) 2)))
-(defun pr-interface-quit (&rest ignore)
+(defun pr-interface-quit (&rest _ignore)
"Kill the printing buffer interface and quit."
(interactive)
(kill-buffer pr-buffer-name)
(set-window-configuration pr-i-window-configuration))
-(defun pr-interface-help (&rest ignore)
+(defun pr-interface-help (&rest _ignore)
"printing buffer interface help."
(interactive)
(pr-show-setup pr-interface-help-message "*Printing Interface Help*"))
-(defun pr-interface-txt-print (&rest ignore)
+(defun pr-interface-txt-print (&rest _ignore)
"Print using lpr package."
(interactive)
(condition-case data
(message "%s" (error-message-string data)))))
-(defun pr-interface-printify (&rest ignore)
+(defun pr-interface-printify (&rest _ignore)
"Printify a buffer."
(interactive)
(condition-case data
(message "%s" (error-message-string data)))))
-(defun pr-interface-ps-print (&rest ignore)
+(defun pr-interface-ps-print (&rest _ignore)
"Print using ps-print package."
(interactive)
(pr-interface-ps 'pr-despool-ps-print 'pr-ps-directory-ps-print
'pr-ps-buffer-ps-print))
-(defun pr-interface-preview (&rest ignore)
+(defun pr-interface-preview (&rest _ignore)
"Preview a PostScript file."
(interactive)
(pr-interface-ps 'pr-despool-preview 'pr-ps-directory-preview
(error "Please specify be a readable directory")))
-(defun pr-interface-directory (widget &rest ignore)
+(defun pr-interface-directory (widget &rest _ignore)
(and pr-buffer-verbose
(message "You can use M-TAB or ESC TAB for file completion"))
(let ((dir (widget-value widget)))
(setq pr-i-directory dir))))
-(defun pr-interface-infile (widget &rest ignore)
+(defun pr-interface-infile (widget &rest _ignore)
(and pr-buffer-verbose
(message "You can use M-TAB or ESC TAB for file completion"))
(let ((file (widget-value widget)))
(setq pr-i-ps-file file))))
-(defun pr-interface-outfile (widget &rest ignore)
+(defun pr-interface-outfile (widget &rest _ignore)
(setq pr-i-answer-yes nil)
(and pr-buffer-verbose
(message "You can use M-TAB or ESC TAB for file completion"))
(defun pr-insert-toggle (var-sym label)
(widget-create 'checkbox
- :notify `(lambda (&rest ignore)
+ :notify `(lambda (&rest _ignore)
(setq ,var-sym (not ,var-sym)))
(symbol-value var-sym))
(widget-insert label))
:format "%v"
:inline t
:value ,var-sym
- :notify (lambda (widget &rest ignore)
+ :notify (lambda (widget &rest _ignore)
(setq ,var-sym (widget-value widget))
,@body)
:void '(choice-item :format "%[%t%]"
'radio-button
:format " %[%v%]"
:value (eq ,var-sym (quote ,sym))
- :notify (lambda (&rest ignore)
+ :notify (lambda (&rest _ignore)
(setq ,var-sym (quote ,sym))
(pr-update-radio-button (quote ,var-sym)))))))
(put var-sym 'pr-widget-list (cons (cons wid sym) wid-list))))
(provide 'printing)
-;; arch-tag: 9ce9ac3f-0f60-4370-900b-1943215d9d18
;;; printing.el ends here