Mercurial > emacs
annotate lisp/flow-ctrl.el @ 26059:2a7f35e0072b
(Fminibuffer_complete_and_exit): Supply value for new
ESCAPE_FROM_EDGE parameter to Ffield_beginning.
(Fminibuffer_complete_word): Use
Ffield_beginning to find the prompt end.
(Fminibuffer_complete_and_exit): Test for an empty
input string by seeing where the field begins, instead of
looking at text-properties.
(read_minibuf): Don't save minibuffer prompt length on
minibuf_save_list.
Don't initialize minibuffer prompt length.
Wrap prompt text-properties around the entire prompt.
Add 'prompt text-property to prompt.
Get final value with Ffield_string instead of make_buffer_string.
(read_minibuf_unwind): Don't restore minibuffer prompt length from
minibuf_save_list.
(do_completion): Get minibuffer input with Ffield_string
instead of Fbuffer_string.
Erase minibuffer input with Ferase_field instead of erase_buffer.
(Fminibuffer_complete_and_exit): Likewise.
Test whether buffer is empty by looking for the 'prompt text
property at the end.
Set prompt length by looking for the end of the prompt text property,
and save prompt length for later use (since there is no longer a
buffer variable to get it from).
(Fminibuffer_prompt_width, Fminibuffer_prompt_end): Functions removed.
(syms_of_minibuf): Remove initializations of
Sminibuffer_prompt_width and Sminibuffer_prompt_end.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Sun, 17 Oct 1999 12:55:49 +0000 |
parents | b04d97d778f6 |
children | 37645a051842 |
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 | 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 | 23 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
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 | 28 |
14169 | 29 ;; Terminals that use XON/XOFF flow control can cause problems with |
30 ;; GNU Emacs users. This file contains Emacs Lisp code that makes it | |
31 ;; easy for a user to deal with this problem, when using such a | |
32 ;; terminal. | |
33 ;; | |
34 ;; To invoke these adjustments, a user need only invoke the function | |
35 ;; enable-flow-control-on with a list of terminal types in his/her own | |
36 ;; .emacs file. As arguments, give it the names of one or more terminal | |
37 ;; types in use by that user which require flow control adjustments. | |
38 ;; Here's an example: | |
39 ;; | |
40 ;; (enable-flow-control-on "vt200" "vt300" "vt101" "vt131") | |
541 | 41 |
14169 | 42 ;; Portability note: This uses (getenv "TERM"), and therefore probably |
43 ;; won't work outside of UNIX-like environments. | |
541 | 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 | 103 |
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 | 111 (let ((term (getenv "TERM")) |
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 | 123 |
124 (provide 'flow-ctrl) | |
125 | |
660
08eb386dd0f3
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
126 ;;; flow-ctrl.el ends here |