]> code.delx.au - gnu-emacs/blobdiff - lisp/flow-ctrl.el
(shell-command-on-region):
[gnu-emacs] / lisp / flow-ctrl.el
index bcd2c152b4fbb681e3e672905a32b9c3a66accb3..d6af524a49e91b7994d1511b1658b2c244c28371 100644 (file)
@@ -1,8 +1,14 @@
-;;; Help for lusers on cu(1) or terminals with wired-in ^S/^Q flow control
-;;;
+;;; flow-ctrl.el --- help for lusers on cu(1) or ttys with wired-in ^S/^Q flow control
+
 ;;; Copyright (C) 1990 Free Software Foundation, Inc.
 ;;; Copyright (C) 1991 Kevin Gallagher
-;;; Adapted for Emacs 19 by Eric S. Raymond <eric@snark.thyrsus.com>
+
+;; Author Kevin Gallagher
+;; Maintainer: FSF
+;; Adapted-By: ESR
+;; Keywords: hardware
+
+;;; This file is part of GNU Emacs.
 ;;;
 ;;; GNU Emacs is distributed in the hope that it will be useful, but
 ;;; WITHOUT ANY WARRANTY.  No author or distributor accepts
 ;;; your rights and responsibilities.  It should be in a file named
 ;;; COPYING.  Among other things, the Copyright notice and this notice
 ;;; must be preserved on all copies.
-;;;
+
+;;; Commentary:
 
 ;;;; Terminals that use XON/XOFF flow control can cause problems with
-;;;; GNU Emacs users.  This file contains elisp code that makes it
+;;;; GNU Emacs users.  This file contains Emacs Lisp code that makes it
 ;;;; easy for a user to deal with this problem, when using such a
 ;;;; terminal. 
 ;;;;      
 ;;; Portability note: This uses (getenv "TERM"), and therefore probably
 ;;; won't work outside of UNIX-like environments.
 
+;;; Code:
+
 (defun evade-flow-control ()
-  "Replace C-s with C-\ and C-q with C-^ and tell emacs to pass C-s
-and C-q characters to OS."
+  "Enable use of flow control; let user type C-s as C-\ and C-q as C-^."
   (interactive)
   ;; Tell emacs to pass C-s and C-q to OS.
-  (set-input-mode nil t)
+  (set-input-mode nil t nil)
   ;; Initialize translate table, saving previous mappings, if any.
   (let ((the-table (make-string 128 0)))
     (let ((i 0)
@@ -65,22 +73,26 @@ and C-q characters to OS."
              ":  use C-\\ for C-s  and  use C-^ for C-q."))
   (sleep-for 2)) ; Give user a chance to see message.
 
-(defun memstr= (e s)
+(defun evade-flow-control-memstr= (e s)
   (cond ((null s) nil)
        ((string= e (car s)) t)
-       (t (memstr= e (cdr s)))))
+       (t (evade-flow-control-memstr= e (cdr s)))))
 
 ;;;###autoload
 (defun evade-flow-control-on (&rest losing-terminal-types)
+  "Enable flow control if using one of a specified set of terminal types.
+Use `(evade-flow-control-on \"vt100\" \"h19\")' to enable flow control
+on VT-100 and H19 terminals.  When flow control is enabled,
+you must type C-\\ to get the effect of a C-s, and type C-^
+to get the effect of a C-q."
   (let ((term (getenv "TERM"))
        hyphend)
     ;; Strip off hyphen and what follows
     (while (setq hyphend (string-match "[-_][^-_]+$" term))
       (setq term (substring term 0 hyphend)))
-    (and (memstr= term losing-terminal-types) (evade-flow-control)))
+    (and (evade-flow-control-memstr= term losing-terminal-types) (evade-flow-control)))
   )
 
-;;; flow-ctrl.el ends here
-
 (provide 'flow-ctrl)
 
+;;; flow-ctrl.el ends here