annotate lisp/flow-ctrl.el @ 17846:c427501449a1

(display_text_line): Move the code to fill out the line with the newline's face to the end of the newline code. Add changes (commented out) to record ellipsis positions in charstarts.
author Richard M. Stallman <rms@gnu.org>
date Fri, 16 May 1997 07:32:59 +0000
parents b04d97d778f6
children 37645a051842
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
793
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
1 ;;; flow-ctrl.el --- help for lusers on cu(1) or ttys with wired-in ^S/^Q flow control
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
2
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
3 ;; Copyright (C) 1990, 1991, 1994 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 844
diff changeset
4
793
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
5 ;; Author Kevin Gallagher
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
6 ;; Maintainer: FSF
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
7 ;; Adapted-By: ESR
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
8 ;; Keywords: hardware
660
08eb386dd0f3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
9
6736
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
10 ;; This file is part of GNU Emacs.
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
11
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
15 ;; any later version.
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
16
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
20 ;; GNU General Public License for more details.
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
21
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5643
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
25 ;; Boston, MA 02111-1307, USA.
793
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
26
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
27 ;;; Commentary:
541
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
29 ;; Terminals that use XON/XOFF flow control can cause problems with
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
30 ;; GNU Emacs users. This file contains Emacs Lisp code that makes it
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
31 ;; easy for a user to deal with this problem, when using such a
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
32 ;; terminal.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
33 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
34 ;; To invoke these adjustments, a user need only invoke the function
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
35 ;; enable-flow-control-on with a list of terminal types in his/her own
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
36 ;; .emacs file. As arguments, give it the names of one or more terminal
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
37 ;; types in use by that user which require flow control adjustments.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
38 ;; Here's an example:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
39 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
40 ;; (enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
541
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
42 ;; Portability note: This uses (getenv "TERM"), and therefore probably
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13796
diff changeset
43 ;; won't work outside of UNIX-like environments.
541
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44
793
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
45 ;;; Code:
6fb68a1460a6 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
46
5506
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
47 (defvar flow-control-c-s-replacement ?\034
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
48 "Character that replaces C-s, when flow control handling is enabled.")
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
49 (defvar flow-control-c-q-replacement ?\036
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
50 "Character that replaces C-q, when flow control handling is enabled.")
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
51
13272
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
52 (put 'keyboard-translate-table 'char-table-extra-slots 0)
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
53
1855
80c1064620a8 (enable-flow-control...): Renamed from evade...
Richard M. Stallman <rms@gnu.org>
parents: 1848
diff changeset
54 ;;;###autoload
5506
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
55 (defun enable-flow-control (&optional argument)
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
56 "Toggle flow control handling.
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
57 When handling is enabled, user can type C-s as C-\\, and C-q as C-^.
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
58 With arg, enable flow control mode if arg is positive, otherwise disable."
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
59 (interactive "P")
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
60 (if (if argument
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
61 ;; Argument means enable if arg is positive.
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
62 (<= (prefix-numeric-value argument) 0)
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
63 ;; No arg means toggle.
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
64 (nth 1 (current-input-mode)))
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
65 (progn
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
66 ;; Turn flow control off, and stop exchanging chars.
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
67 (set-input-mode t nil (nth 2 (current-input-mode)))
7731
3cfe5791ddfb (enable-flow-control): Fix bugs turning off flow ctrl.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
68 (if keyboard-translate-table
3cfe5791ddfb (enable-flow-control): Fix bugs turning off flow ctrl.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
69 (progn
13272
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
70 (aset keyboard-translate-table flow-control-c-s-replacement nil)
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
71 (aset keyboard-translate-table ?\^s nil)
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
72 (aset keyboard-translate-table flow-control-c-q-replacement nil)
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
73 (aset keyboard-translate-table ?\^q nil))))
5506
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
74 ;; Turn flow control on.
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
75 ;; Tell emacs to pass C-s and C-q to OS.
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
76 (set-input-mode nil t (nth 2 (current-input-mode)))
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
77 ;; Initialize translate table, saving previous mappings, if any.
13272
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
78 (cond ((null keyboard-translate-table)
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
79 (setq keyboard-translate-table
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
80 (make-char-table 'keyboard-translate-table nil)))
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
81 ((char-table-p keyboard-translate-table)
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
82 (setq keyboard-translate-table
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
83 (copy-sequence keyboard-translate-table)))
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
84 (t
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
85 (let ((the-table (make-char-table 'keyboard-translate-table nil)))
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
86 (let ((i 0)
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
87 (j (length keyboard-translate-table)))
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
88 (while (< i j)
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
89 (aset the-table i (elt keyboard-translate-table i))
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
90 (setq i (1+ i))))
7ee88c335076 (enable-flow-control): Use a char-table.
Richard M. Stallman <rms@gnu.org>
parents: 9716
diff changeset
91 (setq keyboard-translate-table the-table))))
5506
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
92 ;; Swap C-s and C-\
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
93 (aset keyboard-translate-table flow-control-c-s-replacement ?\^s)
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
94 (aset keyboard-translate-table ?\^s flow-control-c-s-replacement)
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
95 ;; Swap C-q and C-^
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
96 (aset keyboard-translate-table flow-control-c-q-replacement ?\^q)
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
97 (aset keyboard-translate-table ?\^q flow-control-c-q-replacement)
14314
b04d97d778f6 (enable-flow-control): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
98 (message "XON/XOFF adjustment for %s: use %s for C-s, and use %s for C-q"
b04d97d778f6 (enable-flow-control): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
99 (getenv "TERM")
b04d97d778f6 (enable-flow-control): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
100 (single-key-description flow-control-c-s-replacement)
b04d97d778f6 (enable-flow-control): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
101 (single-key-description flow-control-c-q-replacement))
5506
9b694015caec (enable-flow-control): Use prefix argument like minor modes.
Richard M. Stallman <rms@gnu.org>
parents: 3660
diff changeset
102 (sleep-for 2))) ; Give user a chance to see message.
541
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 ;;;###autoload
1855
80c1064620a8 (enable-flow-control...): Renamed from evade...
Richard M. Stallman <rms@gnu.org>
parents: 1848
diff changeset
105 (defun enable-flow-control-on (&rest losing-terminal-types)
669
4c64c671426f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 660
diff changeset
106 "Enable flow control if using one of a specified set of terminal types.
1855
80c1064620a8 (enable-flow-control...): Renamed from evade...
Richard M. Stallman <rms@gnu.org>
parents: 1848
diff changeset
107 Use `(enable-flow-control-on \"vt100\" \"h19\")' to enable flow control
669
4c64c671426f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 660
diff changeset
108 on VT-100 and H19 terminals. When flow control is enabled,
677
7a9b4ea68565 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 669
diff changeset
109 you must type C-\\ to get the effect of a C-s, and type C-^
669
4c64c671426f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 660
diff changeset
110 to get the effect of a C-q."
541
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 (let ((term (getenv "TERM"))
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 hyphend)
13796
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
113 ;; Look for TERM in LOSING-TERMINAL-TYPES.
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
114 ;; If we don't find it literally, try stripping off words
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
115 ;; from the end, one by one.
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
116 (while (and term (not (member term losing-terminal-types)))
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
117 ;; Strip off last hyphen and what follows, then try again.
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
118 (if (setq hyphend (string-match "[-_][^-_]+$" term))
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
119 (setq term (substring term 0 hyphend))
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
120 (setq term nil)))
5643
860d91d72063 (enable-flow-control-on): Do nothing if no TERM.
Richard M. Stallman <rms@gnu.org>
parents: 5506
diff changeset
121 (if term
13796
116a22176b36 (enable-flow-control-on): Try the whole TERM name
Karl Heuer <kwzh@gnu.org>
parents: 13272
diff changeset
122 (enable-flow-control))))
541
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 (provide 'flow-ctrl)
1c956f448a00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125
660
08eb386dd0f3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
126 ;;; flow-ctrl.el ends here