;;; printing.el --- printing utilities
-;; Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 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"))))
;; To avoid compilation gripes
-(or (fboundp 'subst-char-in-string) ; hacked from subr.el
- (defun subst-char-in-string (fromchar tochar string &optional inplace)
- "Replace FROMCHAR with TOCHAR in STRING each time it occurs.
+;; Emacs has this since at least 21.1.
+(when (featurep 'xemacs)
+ (or (fboundp 'subst-char-in-string) ; hacked from subr.el
+ (defun subst-char-in-string (fromchar tochar string &optional inplace)
+ "Replace FROMCHAR with TOCHAR in STRING each time it occurs.
Unless optional argument INPLACE is non-nil, return a new string."
- (let ((i (length string))
- (newstr (if inplace string (copy-sequence string))))
- (while (> (setq i (1- i)) 0)
- (if (eq (aref newstr i) fromchar)
- (aset newstr i tochar)))
- newstr)))
-
-
-(or (fboundp 'make-temp-file) ; hacked from subr.el
- (defun make-temp-file (prefix &optional dir-flag suffix)
+ (let ((i (length string))
+ (newstr (if inplace string (copy-sequence string))))
+ (while (> (setq i (1- i)) 0)
+ (if (eq (aref newstr i) fromchar)
+ (aset newstr i tochar)))
+ newstr))))
+
+
+;; Emacs has this since at least 21.1, but the SUFFIX argument
+;; (which this file uses) only since 22.1. So the fboundp test
+;; wasn't even correct/adequate. Whatever, no-one is using
+;; this file on older Emacs version, so it's irrelevant.
+(when (featurep 'xemacs)
+ (or (fboundp 'make-temp-file) ; hacked from subr.el
+ (defun make-temp-file (prefix &optional dir-flag suffix)
"Create a temporary file.
The returned file name (created by appending some random characters at the end
of PREFIX, and expanding against `temporary-file-directory' if necessary),
nil)
file)
;; Reset the umask.
- (set-default-file-modes umask)))))
+ (set-default-file-modes umask))))))
(eval-when-compile
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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
(defun pr-global-menubar (pr-menu-spec)
(require 'easymenu)
(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.
(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:
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-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:
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.
(defcustom pr-gv-command
- (if ps-windows-system
+ (if lpr-windows-system
"gsview32.exe"
"gv")
"Specify path and name of the gsview/gv utility.
(defcustom pr-gs-command
- (if ps-windows-system
+ (if lpr-windows-system
"gswin32.exe"
"gs")
"Specify path and name of the ghostscript utility.
(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.
(defcustom pr-gs-device
- (if ps-windows-system
+ (if lpr-windows-system
"mswinpr2"
"uniprint")
"Specify the ghostscript device switch value (-sDEVICE=).
(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, 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
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
(defmacro pr-save-file-modes (&rest body)
- "Set temporally file modes to `pr-file-modes'."
- `(let ((pr--default-file-modes (default-file-modes))) ; save default
- (set-default-file-modes pr-file-modes)
- ,@body
- (set-default-file-modes pr--default-file-modes))) ; restore default
-
+ "Execute BODY with file permissions temporarily set to `pr-file-modes'."
+ (declare (obsolete with-file-modes "24.5"))
+ `(with-file-modes pr-file-modes ,@body))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Keys & Menus
(defalias 'pr-get-symbol
- (if (fboundp 'easy-menu-intern) ; hacked from easymenu.el
- 'easy-menu-intern
- (lambda (s) (if (stringp s) (intern s) s))))
+ (if (featurep 'emacs) 'easy-menu-intern ; since 22.1
+ (if (fboundp 'easy-menu-intern) ; hacked from easymenu.el
+ 'easy-menu-intern
+ (lambda (s) (if (stringp s) (intern s) s)))))
(defconst 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
send the image to the printer. If FILENAME is a string, save the PostScript
image in a file with that name."
(interactive (list (ps-print-preprint current-prefix-arg)))
- (pr-save-file-modes
- (let ((ps-lpr-command (pr-command pr-ps-command))
- (ps-lpr-switches pr-ps-switches)
- (ps-printer-name-option pr-ps-printer-switch)
- (ps-printer-name pr-ps-printer))
- (ps-despool filename))))
+ (with-file-modes pr-file-modes
+ (let ((ps-lpr-command (pr-command pr-ps-command))
+ (ps-lpr-switches pr-ps-switches)
+ (ps-printer-name-option pr-ps-printer-switch)
+ (ps-printer-name pr-ps-printer))
+ (ps-despool filename))))
;;;###autoload
;;;###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)
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))
(goto-char (point-max))
(insert (format "%s %S\n" cmd args)))
;; *Printing Command Output* == show any return message from command
- (pr-save-file-modes
- (setq status
- (condition-case data
- (apply 'call-process cmd nil buffer nil args)
- ((quit error)
- (error-message-string data)))))
+ (with-file-modes pr-file-modes
+ (setq status
+ (condition-case data
+ (apply 'call-process cmd nil buffer nil args)
+ ((quit error)
+ (error-message-string data)))))
;; *Printing Command Output* == show exit status
(with-current-buffer buffer
(goto-char (point-max))
(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))
(defun pr-text2ps (kind n-up filename &optional from to)
- (pr-save-file-modes
- (let ((ps-n-up-printing n-up)
- (ps-spool-config (and (eq ps-spool-config 'setpagedevice)
- 'setpagedevice)))
- (pr-delete-file-if-exists filename)
- (cond (pr-faces-p
- (cond (pr-spool-p
- ;; pr-faces-p and pr-spool-p
- ;; here FILENAME arg is ignored
- (cond ((eq kind 'buffer)
- (ps-spool-buffer-with-faces))
- ((eq kind 'region)
- (ps-spool-region-with-faces (or from (point))
- (or to (mark))))
- ))
- ;; pr-faces-p and not pr-spool-p
- ((eq kind 'buffer)
- (ps-print-buffer-with-faces filename))
- ((eq kind 'region)
- (ps-print-region-with-faces (or from (point))
- (or to (mark)) filename))
- ))
- (pr-spool-p
- ;; not pr-faces-p and pr-spool-p
- ;; here FILENAME arg is ignored
- (cond ((eq kind 'buffer)
- (ps-spool-buffer))
- ((eq kind 'region)
- (ps-spool-region (or from (point)) (or to (mark))))
- ))
- ;; not pr-faces-p and not pr-spool-p
- ((eq kind 'buffer)
- (ps-print-buffer filename))
- ((eq kind 'region)
- (ps-print-region (or from (point)) (or to (mark)) filename))
- ))))
+ (with-file-modes pr-file-modes
+ (let ((ps-n-up-printing n-up)
+ (ps-spool-config (and (eq ps-spool-config 'setpagedevice)
+ 'setpagedevice)))
+ (pr-delete-file-if-exists filename)
+ (cond (pr-faces-p
+ (cond (pr-spool-p
+ ;; pr-faces-p and pr-spool-p
+ ;; here FILENAME arg is ignored
+ (cond ((eq kind 'buffer)
+ (ps-spool-buffer-with-faces))
+ ((eq kind 'region)
+ (ps-spool-region-with-faces (or from (point))
+ (or to (mark))))
+ ))
+ ;; pr-faces-p and not pr-spool-p
+ ((eq kind 'buffer)
+ (ps-print-buffer-with-faces filename))
+ ((eq kind 'region)
+ (ps-print-region-with-faces (or from (point))
+ (or to (mark)) filename))
+ ))
+ (pr-spool-p
+ ;; not pr-faces-p and pr-spool-p
+ ;; here FILENAME arg is ignored
+ (cond ((eq kind 'buffer)
+ (ps-spool-buffer))
+ ((eq kind 'region)
+ (ps-spool-region (or from (point)) (or to (mark))))
+ ))
+ ;; not pr-faces-p and not pr-spool-p
+ ((eq kind 'buffer)
+ (ps-print-buffer filename))
+ ((eq kind 'region)
+ (ps-print-region (or from (point)) (or to (mark)) filename))
+ ))))
(defun pr-command (command)
(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")))
(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
(defun pr-i-directory ()
- (or (and (file-directory-p pr-i-directory)
- (file-readable-p pr-i-directory))
+ (or (file-accessible-directory-p pr-i-directory)
(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)))
- (and (file-directory-p dir)
- (file-readable-p dir)
+ (and (file-accessible-directory-p dir)
(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))))