annotate lisp/lpr.el @ 25976:8565fbac98d7

Use "pop3" as the POP service name on all platforms, instead of using "pop" on Unix and "pop3" on Windows NT. "pop3" has been the standard service name since RFC 1340 was published in July 1992, so I think it's safe to start using it by default.
author Gerd Moellmann <gerd@gnu.org>
date Sun, 10 Oct 1999 23:07:36 +0000
parents 1874c3236349
children af8d23cd7220
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 617
diff changeset
1 ;;; lpr.el --- print Emacs buffer on line printer.
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 617
diff changeset
2
7300
cc7cd83ccf3f Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 5462
diff changeset
3 ;; Copyright (C) 1985, 1988, 1992, 1994 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
5 ;; Maintainer: FSF
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
6 ;; Keywords: unix
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
7
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13894
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13894
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13894
diff changeset
23 ;; Boston, MA 02111-1307, USA.
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1671
diff changeset
25 ;;; Commentary:
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1671
diff changeset
26
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1671
diff changeset
27 ;; Commands to send the region or a buffer your printer. Entry points
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1671
diff changeset
28 ;; are `lpr-buffer', `print-buffer', lpr-region', or `print-region'; option
22679
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
29 ;; variables include `printer-name', `lpr-switches' and `lpr-command'.
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1671
diff changeset
30
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
31 ;;; Code:
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
33 (defgroup lpr nil
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
34 "Print Emacs buffer on line printer"
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
35 :group 'wp)
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
36
22679
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
37 ;;;###autoload
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
38 (defcustom printer-name
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
39 (if (memq system-type '(ms-dos windows-nt)) "PRN")
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
40 "*The name of a local printer to which data is sent for printing.
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
41 \(Note that PostScript files are sent to `ps-printer-name', which see.\)
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
42
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
43 On Unix-like systems, a string value should be a name understood by
24091
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
44 lpr's -P option; otherwise the value should be nil.
22679
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
45
24091
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
46 On MS-DOS and MS-Windows systems, a string value is taken as the name of
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
47 a printer device or port, provided `lpr-command' is set to \"\".
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
48 Typical non-default settings would be \"LPT1\" to \"LPT3\" for parallel
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
49 printers, or \"COM1\" to \"COM4\" or \"AUX\" for serial printers, or
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
50 \"//hostname/printer\" for a shared network printer. You can also set
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
51 it to the name of a file, in which case the output gets appended to that
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
52 file. If you want to discard the printed output, set this to \"NUL\"."
23264
359e6eb97e11 (printer-name): Fix customize type.
Andreas Schwab <schwab@suse.de>
parents: 22679
diff changeset
53 :type '(choice ; could use string but then we lose completion for files.
359e6eb97e11 (printer-name): Fix customize type.
Andreas Schwab <schwab@suse.de>
parents: 22679
diff changeset
54 (file :tag "Name")
359e6eb97e11 (printer-name): Fix customize type.
Andreas Schwab <schwab@suse.de>
parents: 22679
diff changeset
55 (const :tag "Default" nil))
22679
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
56 :group 'lpr)
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
57
269
2ca8cdb96a9f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 262
diff changeset
58 ;;;###autoload
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
59 (defcustom lpr-switches nil
13803
e0bae9f528fe (lpr-switches, lpr-add-switches): Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 11831
diff changeset
60 "*List of strings to pass as extra options for the printer program.
22679
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
61 It is recommended to set `printer-name' instead of including an explicit
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
62 switch on this list.
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
63 See `lpr-command'."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
64 :type '(repeat (string :tag "Argument"))
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
65 :group 'lpr)
5267
f7ea27a729b8 (lpr-headers-switches): Treat hpux like usg-unix-v.
Richard M. Stallman <rms@gnu.org>
parents: 5004
diff changeset
66
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
67 (defcustom lpr-add-switches (eq system-type 'berkeley-unix)
13803
e0bae9f528fe (lpr-switches, lpr-add-switches): Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 11831
diff changeset
68 "*Non-nil means construct -T and -J options for the printer program.
e0bae9f528fe (lpr-switches, lpr-add-switches): Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 11831
diff changeset
69 These are made assuming that the program is `lpr';
e0bae9f528fe (lpr-switches, lpr-add-switches): Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 11831
diff changeset
70 if you are using some other incompatible printer program,
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
71 this variable should be nil."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
72 :type 'boolean
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
73 :group 'lpr)
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74
1068
2fee5d1fe47e entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 922
diff changeset
75 ;;;###autoload
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
76 (defcustom lpr-command
24091
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
77 (cond
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
78 ((memq system-type '(ms-dos windows-nt))
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
79 "")
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
80 ((memq system-type '(usg-unix-v dgux hpux irix))
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
81 "lp")
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
82 (t
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
83 "lpr"))
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
84 "*Name of program for printing a file.
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
85
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
86 On MS-DOS and MS-Windows systems, if the value is an empty string then
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
87 Emacs will write directly to the printer port named by `printer-name'.
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
88 The programs `print' and `nprint' (the standard print programs on
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
89 Windows NT and Novell Netware respectively) are handled specially, using
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
90 `printer-name' as the destination for output; any other program is
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
91 treated like `lpr' except that an explicit filename is given as the last
1874c3236349 (printer-name): Update docstring about usage on MS-DOS
Andrew Innes <andrewi@gnu.org>
parents: 23264
diff changeset
92 argument."
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
93 :type 'string
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
94 :group 'lpr)
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
10637
6e25c10f6fe8 (lpr-headers-switches): Default is nil.
Richard M. Stallman <rms@gnu.org>
parents: 10054
diff changeset
96 ;; Default is nil, because that enables us to use pr -f
6e25c10f6fe8 (lpr-headers-switches): Default is nil.
Richard M. Stallman <rms@gnu.org>
parents: 10054
diff changeset
97 ;; which is more reliable than pr with no args, which is what lpr -p does.
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
98 (defcustom lpr-headers-switches nil
13894
eeee95f4d989 (lpr-page-header-switches, lpr-headers-switches): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13803
diff changeset
99 "*List of strings of options to request page headings in the printer program.
10637
6e25c10f6fe8 (lpr-headers-switches): Default is nil.
Richard M. Stallman <rms@gnu.org>
parents: 10054
diff changeset
100 If nil, we run `lpr-page-header-program' to make page headings
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
101 and print the result."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
102 :type '(repeat (string :tag "Argument"))
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
103 :group 'lpr)
5267
f7ea27a729b8 (lpr-headers-switches): Treat hpux like usg-unix-v.
Richard M. Stallman <rms@gnu.org>
parents: 5004
diff changeset
104
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
105 (defcustom print-region-function nil
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 "Function to call to print the region on a printer.
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
107 See definition of `print-region-1' for calling conventions."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
108 :type 'function
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
109 :group 'lpr)
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
111 (defcustom lpr-page-header-program "pr"
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
112 "*Name of program for adding page headers to a file."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
113 :type 'string
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
114 :group 'lpr)
9187
8cf9181c119e (print-region-1): Use them instead of just pr.
Richard M. Stallman <rms@gnu.org>
parents: 8598
diff changeset
115
17813
2e13bced7aff (lpr-page-header-switches): Use -F, not -f.
Richard M. Stallman <rms@gnu.org>
parents: 17695
diff changeset
116 ;; Berkeley systems support -F, and GNU pr supports both -f and -F,
2e13bced7aff (lpr-page-header-switches): Use -F, not -f.
Richard M. Stallman <rms@gnu.org>
parents: 17695
diff changeset
117 ;; So it looks like -F is a better default.
17865
bbcdcb97c227 (lpr-page-header-switches): Remove extra paren.
Richard M. Stallman <rms@gnu.org>
parents: 17813
diff changeset
118 (defcustom lpr-page-header-switches '("-F")
13894
eeee95f4d989 (lpr-page-header-switches, lpr-headers-switches): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13803
diff changeset
119 "*List of strings to use as options for the page-header-generating program.
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
120 The variable `lpr-page-header-program' specifies the program to use."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
121 :type '(repeat string)
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14188
diff changeset
122 :group 'lpr)
9187
8cf9181c119e (print-region-1): Use them instead of just pr.
Richard M. Stallman <rms@gnu.org>
parents: 8598
diff changeset
123
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 216
diff changeset
124 ;;;###autoload
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 (defun lpr-buffer ()
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 "Print buffer contents as with Unix command `lpr'.
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 `lpr-switches' is a list of extra switches (strings) to pass to lpr."
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 (interactive)
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 (print-region-1 (point-min) (point-max) lpr-switches nil))
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 216
diff changeset
131 ;;;###autoload
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 (defun print-buffer ()
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 "Print buffer contents as with Unix command `lpr -p'.
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 `lpr-switches' is a list of extra switches (strings) to pass to lpr."
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 (interactive)
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 (print-region-1 (point-min) (point-max) lpr-switches t))
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 216
diff changeset
138 ;;;###autoload
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 (defun lpr-region (start end)
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 "Print region contents as with Unix command `lpr'.
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 `lpr-switches' is a list of extra switches (strings) to pass to lpr."
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 (interactive "r")
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 (print-region-1 start end lpr-switches nil))
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 216
diff changeset
145 ;;;###autoload
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 (defun print-region (start end)
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 "Print region contents as with Unix command `lpr -p'.
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 `lpr-switches' is a list of extra switches (strings) to pass to lpr."
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 (interactive "r")
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 (print-region-1 start end lpr-switches t))
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 (defun print-region-1 (start end switches page-headers)
8113
6a12a2845ccc (print-region-1): Essentially undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 8021
diff changeset
153 ;; On some MIPS system, having a space in the job name
6a12a2845ccc (print-region-1): Essentially undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 8021
diff changeset
154 ;; crashes the printer demon. But using dashes looks ugly
6a12a2845ccc (print-region-1): Essentially undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 8021
diff changeset
155 ;; and it seems to annoying to do for that MIPS system.
6a12a2845ccc (print-region-1): Essentially undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 8021
diff changeset
156 (let ((name (concat (buffer-name) " Emacs buffer"))
8020
23deb92071c6 (print-region-1): Don't include a space in the job name.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
157 (title (concat (buffer-name) " Emacs buffer"))
21569
c1f86e273a38 (print-region-1): Stop using binary-process-{in,out}put,
Eli Zaretskii <eliz@gnu.org>
parents: 20278
diff changeset
158 ;; Make pipes use the same coding system as
c1f86e273a38 (print-region-1): Stop using binary-process-{in,out}put,
Eli Zaretskii <eliz@gnu.org>
parents: 20278
diff changeset
159 ;; writing the buffer to a file would.
c1f86e273a38 (print-region-1): Stop using binary-process-{in,out}put,
Eli Zaretskii <eliz@gnu.org>
parents: 20278
diff changeset
160 (coding-system-for-write
c1f86e273a38 (print-region-1): Stop using binary-process-{in,out}put,
Eli Zaretskii <eliz@gnu.org>
parents: 20278
diff changeset
161 (or coding-system-for-write buffer-file-coding-system))
c1f86e273a38 (print-region-1): Stop using binary-process-{in,out}put,
Eli Zaretskii <eliz@gnu.org>
parents: 20278
diff changeset
162 (coding-system-for-read
c1f86e273a38 (print-region-1): Stop using binary-process-{in,out}put,
Eli Zaretskii <eliz@gnu.org>
parents: 20278
diff changeset
163 (or coding-system-for-read buffer-file-coding-system))
10708
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
164 (width tab-width)
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
165 switch-string)
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 (save-excursion
10708
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
167 (if page-headers
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
168 (if lpr-headers-switches
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
169 ;; It is possible to use an lpr option
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
170 ;; to get page headers.
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
171 (setq switches (append (if (stringp lpr-headers-switches)
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
172 (list lpr-headers-switches)
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
173 lpr-headers-switches)
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
174 switches))))
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
175 (setq switch-string
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
176 (if switches (concat " with options "
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
177 (mapconcat 'identity switches " "))
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
178 ""))
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
179 (message "Spooling%s..." switch-string)
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 (if (/= tab-width 8)
10700
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
181 (let ((new-coords (print-region-new-buffer start end)))
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
182 (setq start (car new-coords) end (cdr new-coords))
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 (setq tab-width width)
4446
ff1f9d7addd9 (print-region-1): Make END a marker so untabify relocates it.
Richard M. Stallman <rms@gnu.org>
parents: 2382
diff changeset
184 (save-excursion
ff1f9d7addd9 (print-region-1): Make END a marker so untabify relocates it.
Richard M. Stallman <rms@gnu.org>
parents: 2382
diff changeset
185 (goto-char end)
ff1f9d7addd9 (print-region-1): Make END a marker so untabify relocates it.
Richard M. Stallman <rms@gnu.org>
parents: 2382
diff changeset
186 (setq end (point-marker)))
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 (untabify (point-min) (point-max))))
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 (if page-headers
5267
f7ea27a729b8 (lpr-headers-switches): Treat hpux like usg-unix-v.
Richard M. Stallman <rms@gnu.org>
parents: 5004
diff changeset
189 (if lpr-headers-switches
10708
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
190 ;; We handled this above by modifying SWITCHES.
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
191 nil
10637
6e25c10f6fe8 (lpr-headers-switches): Default is nil.
Richard M. Stallman <rms@gnu.org>
parents: 10054
diff changeset
192 ;; Run a separate program to get page headers.
10700
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
193 (let ((new-coords (print-region-new-buffer start end)))
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
194 (setq start (car new-coords) end (cdr new-coords)))
10670
f759e91a1654 (lpr-add-switches): Renamed from lpr-add-options.
Richard M. Stallman <rms@gnu.org>
parents: 10643
diff changeset
195 (apply 'call-process-region start end lpr-page-header-program
f759e91a1654 (lpr-add-switches): Renamed from lpr-add-options.
Richard M. Stallman <rms@gnu.org>
parents: 10643
diff changeset
196 t t nil
20278
17c72edb5980 (print-region-1): When running pr, use -h always.
Karl Heuer <kwzh@gnu.org>
parents: 17865
diff changeset
197 (nconc (list "-h" title)
10670
f759e91a1654 (lpr-add-switches): Renamed from lpr-add-options.
Richard M. Stallman <rms@gnu.org>
parents: 10643
diff changeset
198 lpr-page-header-switches))
5267
f7ea27a729b8 (lpr-headers-switches): Treat hpux like usg-unix-v.
Richard M. Stallman <rms@gnu.org>
parents: 5004
diff changeset
199 (setq start (point-min) end (point-max))))
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 (apply (or print-region-function 'call-process-region)
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 (nconc (list start end lpr-command
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 nil nil nil)
10670
f759e91a1654 (lpr-add-switches): Renamed from lpr-add-options.
Richard M. Stallman <rms@gnu.org>
parents: 10643
diff changeset
203 (nconc (and lpr-add-switches
f759e91a1654 (lpr-add-switches): Renamed from lpr-add-options.
Richard M. Stallman <rms@gnu.org>
parents: 10643
diff changeset
204 (list "-J" name))
f759e91a1654 (lpr-add-switches): Renamed from lpr-add-options.
Richard M. Stallman <rms@gnu.org>
parents: 10643
diff changeset
205 ;; These belong in pr if we are using that.
f759e91a1654 (lpr-add-switches): Renamed from lpr-add-options.
Richard M. Stallman <rms@gnu.org>
parents: 10643
diff changeset
206 (and lpr-add-switches lpr-headers-switches
f759e91a1654 (lpr-add-switches): Renamed from lpr-add-options.
Richard M. Stallman <rms@gnu.org>
parents: 10643
diff changeset
207 (list "-T" title))
22679
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
208 (and (stringp printer-name)
08902da4c832 (printer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 21569
diff changeset
209 (list (concat "-P" printer-name)))
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 switches)))
4446
ff1f9d7addd9 (print-region-1): Make END a marker so untabify relocates it.
Richard M. Stallman <rms@gnu.org>
parents: 2382
diff changeset
211 (if (markerp end)
ff1f9d7addd9 (print-region-1): Make END a marker so untabify relocates it.
Richard M. Stallman <rms@gnu.org>
parents: 2382
diff changeset
212 (set-marker end nil))
10708
8a15461d4f64 (print-region-1): Include print options in echo area msgs.
Richard M. Stallman <rms@gnu.org>
parents: 10700
diff changeset
213 (message "Spooling%s...done" switch-string))))
155
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214
5dfb6532c1b1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 ;; This function copies the text between start and end
10700
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
216 ;; into a new buffer, makes that buffer current.
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
217 ;; It returns the new range to print from the new current buffer
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
218 ;; as (START . END).
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
219
5267
f7ea27a729b8 (lpr-headers-switches): Treat hpux like usg-unix-v.
Richard M. Stallman <rms@gnu.org>
parents: 5004
diff changeset
220 (defun print-region-new-buffer (ostart oend)
10700
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
221 (if (string= (buffer-name) " *spool temp*")
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
222 (cons ostart oend)
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
223 (let ((oldbuf (current-buffer)))
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
224 (set-buffer (get-buffer-create " *spool temp*"))
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
225 (widen) (erase-buffer)
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
226 (insert-buffer-substring oldbuf ostart oend)
f6f235bc26ba (print-region-new-buffer): Return new start and end.
Richard M. Stallman <rms@gnu.org>
parents: 10670
diff changeset
227 (cons (point-min) (point-max)))))
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 617
diff changeset
228
2382
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
229 (defun printify-region (begin end)
17695
5788aa5f0fd0 (printify-region): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17414
diff changeset
230 "Replace nonprinting characters in region with printable representations.
5788aa5f0fd0 (printify-region): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17414
diff changeset
231 The printable representations use ^ (for ASCII control characters) or hex.
5788aa5f0fd0 (printify-region): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17414
diff changeset
232 The characters tab, linefeed, space, return and formfeed are not affected."
2382
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
233 (interactive "r")
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
234 (save-excursion
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
235 (goto-char begin)
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
236 (let (c)
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
237 (while (re-search-forward "[\^@-\^h\^k\^n-\^_\177-\377]" end t)
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
238 (setq c (preceding-char))
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
239 (delete-backward-char 1)
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
240 (insert
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
241 (if (< c ?\ )
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
242 (format "\\^%c" (+ c ?@))
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
243 (format "\\%02x" c)))))))
030b76db285a (printify-buffer) Added, debugged from Roland McGrath's printify-buffer code
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
244
11831
7e5af94d9527 Add provide call.
Karl Heuer <kwzh@gnu.org>
parents: 10708
diff changeset
245 (provide 'lpr)
7e5af94d9527 Add provide call.
Karl Heuer <kwzh@gnu.org>
parents: 10708
diff changeset
246
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 617
diff changeset
247 ;;; lpr.el ends here