+(defcustom lpr-switches nil
+ "*List of strings to pass as extra options for the printer program.
+It is recommended to set `printer-name' instead of including an explicit
+switch on this list.
+See `lpr-command'."
+ :type '(repeat (string :tag "Argument"))
+ :group 'lpr)
+
+(defcustom lpr-add-switches (memq system-type '(berkeley-unix gnu/linux))
+ "*Non-nil means construct `-T' and `-J' options for the printer program.
+These are made assuming that the program is `lpr';
+if you are using some other incompatible printer program,
+this variable should be nil."
+ :type 'boolean
+ :group 'lpr)
+
+(defcustom lpr-printer-switch
+ (if lpr-lp-system
+ "-d "
+ "-P")
+ "*Printer switch, that is, something like \"-P\", \"-d \", \"/D:\", etc.
+This switch is used in conjunction with `printer-name'."
+ :type '(choice :menu-tag "Printer Name Switch"
+ :tag "Printer Name Switch"
+ (const :tag "None" nil)
+ (string :tag "Printer Switch"))
+ :group 'lpr)
+
+;;;###autoload
+(defcustom lpr-command
+ (cond
+ (lpr-windows-system
+ "")
+ (lpr-lp-system
+ "lp")
+ (t
+ "lpr"))
+ "*Name of program for printing a file.
+
+On MS-DOS and MS-Windows systems, if the value is an empty string then
+Emacs will write directly to the printer port named by `printer-name'.
+The programs `print' and `nprint' (the standard print programs on
+Windows NT and Novell Netware respectively) are handled specially, using
+`printer-name' as the destination for output; any other program is
+treated like `lpr' except that an explicit filename is given as the last
+argument."
+ :type 'string
+ :group 'lpr)