Mercurial > emacs
view lisp/lpr.el @ 1515:8cc7bc81d2aa
* keyboard.c: #include dispextern.h.
(recursive_edit_unwind, command_loop, Fthis_command_keys): Declare
these to return Lisp_Objects at the very top of the file, to avoid
having them implicitly declared as ints.
(echo_char): Use EQ to compare C to help_char.
(read_char): Remember to apply XFASTINT to the return value of
Flength before using it. Apply XINT to c when clearing its high
bits and meta bits, and when writing it to the dribble file.
(read_char_menu_prompt): Use EQ to compare obj with
menu_prompt_more_char and its control-character analog.
(read_key_sequence): Declare PROMPT to be char *, not a
Lisp_Object. Use the appropriate accessors on keybuf when looking
for ASCII function key sequences.
* keyboard.c (echobuf): Make this 300 characters, not 100. This
isn't a real fix, but it's quick.
* keyboard.c (read_char): When returning an unread switch-frame
event, jump to reread_first to return it, rather than reread; this
makes sure the event gets echoed (if appropriate) and goes into
this_command_keys.
* keyboard.c (read_key_sequence): If the key sequence starts with
a mouse click, read the key sequence using the keymaps of the
buffer clicked on, not the current buffer.
* keyboard.c (unread_switch_frame): Make this static, to indicate
that nobody outside of this file uses it.
* keyboard.c (follow_key): Ask get_keymap_1 to perform autoloads.
(read_key_sequence): When pursuing potential bindings in the
function key map, ask get_keymap_1 to perform autoloading. This
is hardly important, but it's consistent.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Sat, 31 Oct 1992 05:21:45 +0000 |
parents | c4943aceac8f |
children | 21e2defc55c0 |
line wrap: on
line source
;;; lpr.el --- print Emacs buffer on line printer. ;; Copyright (C) 1985, 1988, 1992 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: unix ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ;;; Code: ;;;###autoload (defconst lpr-switches nil "\ *List of strings to pass as extra switch args to lpr when it is invoked.") ;;;###autoload (defconst lpr-command (if (memq system-type '(usg-unix-v hpux silicon-graphics-unix)) "lp" "lpr") "\ *Shell command for printing a file") (defvar print-region-function nil "Function to call to print the region on a printer. See definition of `print-region-1' for calling conventions.") ;;;###autoload (defun lpr-buffer () "Print buffer contents as with Unix command `lpr'. `lpr-switches' is a list of extra switches (strings) to pass to lpr." (interactive) (print-region-1 (point-min) (point-max) lpr-switches nil)) ;;;###autoload (defun print-buffer () "Print buffer contents as with Unix command `lpr -p'. `lpr-switches' is a list of extra switches (strings) to pass to lpr." (interactive) (print-region-1 (point-min) (point-max) lpr-switches t)) ;;;###autoload (defun lpr-region (start end) "Print region contents as with Unix command `lpr'. `lpr-switches' is a list of extra switches (strings) to pass to lpr." (interactive "r") (print-region-1 start end lpr-switches nil)) ;;;###autoload (defun print-region (start end) "Print region contents as with Unix command `lpr -p'. `lpr-switches' is a list of extra switches (strings) to pass to lpr." (interactive "r") (print-region-1 start end lpr-switches t)) (defun print-region-1 (start end switches page-headers) (let ((name (concat (buffer-name) " Emacs buffer")) (width tab-width)) (save-excursion (message "Spooling...") (if (/= tab-width 8) (progn (print-region-new-buffer start end) (setq tab-width width) (untabify (point-min) (point-max)))) (if page-headers (if (eq system-type 'usg-unix-v) (progn (print-region-new-buffer start end) (call-process-region start end "pr" t t nil)) ;; On BSD, use an option to get page headers. (setq switches (cons "-p" switches)))) (apply (or print-region-function 'call-process-region) (nconc (list start end lpr-command nil nil nil) (nconc (and (eq system-type 'berkeley-unix) (list "-J" name "-T" name)) switches))) (message "Spooling...done")))) ;; This function copies the text between start and end ;; into a new buffer, makes that buffer current, ;; and sets start and end to the buffer bounds. ;; start and end are used free. (defun print-region-new-buffer (start end) (or (string= (buffer-name) " *spool temp*") (let ((oldbuf (current-buffer))) (set-buffer (get-buffer-create " *spool temp*")) (widen) (erase-buffer) (insert-buffer-substring oldbuf start end) (setq start (point-min) end (point-max))))) ;;; lpr.el ends here