Mercurial > emacs
view lisp/flow-ctrl.el @ 5225:95a44cfa9e17
(make_lispy_event): Offset the event code here.
Special handling for "dead accent" keysyms.
(lispy_accent_codes, lispy_accent_keys): New variables.
(quit_throw_to_read_char): Don't switch frames if
internal_last_event_frame is not a frame.
(kbd_buffer_store_event, make_lispy_event)
(stuff_buffered_input): `code' of an event is now an int.
(make_lispy_movement): If we have a frame but pos is not
in a window, return an event with the frame.
(read_key_sequence): Don't return if in middle
of possible function-key-map sequence, if the bindings were all
found by case conversion.
(set_waiting_for_input): Code testing echo_flag deleted.
(echo_flag, echo_now): Vars deleted.
(read_key_sequence): Bind case_converted at top level.
Clear it at replay_sequence.
(follow_key): Never clear *CASE_CONVERTED.
(syms_of_keyboard): Define Lisp var track-mouse.
(follow_key): New arg case_converted.
(read_key_sequence): Pass the new arg.
If key has a binding via case-conversion, that does not prevent
use of function_key_map.
(read_char): Call prepare_menu_bars.
(tracking_off): Call prepare_menu_bars.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 23 Dec 1993 00:52:50 +0000 |
parents | 41a282d1b176 |
children | 9b694015caec |
line wrap: on
line source
;;; flow-ctrl.el --- help for lusers on cu(1) or ttys with wired-in ^S/^Q flow control ;;; Copyright (C) 1990, 1991 Free Software Foundation, Inc. ;; 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 ;;; RESPONSIBILITY TO anyone for the consequences of using it or for ;;; whether it serves any particular purpose or works at all, unless ;;; he says so in writing. Refer to the GNU Emacs General Public ;;; License for full details. ;;; ;;; Everyone is granted permission to copy, modify and redistribute ;;; GNU Emacs, but only under the conditions described in the GNU ;;; Emacs General Public License. A copy of this license is supposed ;;; to have been given to you along with GNU Emacs so you can know ;;; 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 Emacs Lisp code that makes it ;;;; easy for a user to deal with this problem, when using such a ;;;; terminal. ;;;; ;;;; To invoke these adjustments, a user need only invoke the function ;;;; enable-flow-control-on with a list of terminal types in his/her own ;;;; .emacs file. As arguments, give it the names of one or more terminal ;;;; types in use by that user which require flow control adjustments. ;;;; Here's an example: ;;;; ;;;; (enable-flow-control-on "vt200" "vt300" "vt101" "vt131") ;;; Portability note: This uses (getenv "TERM"), and therefore probably ;;; won't work outside of UNIX-like environments. ;;; Code: ;;;###autoload (defun enable-flow-control () "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 (nth 2 (current-input-mode))) ;; Initialize translate table, saving previous mappings, if any. (let ((the-table (make-string 128 0))) (let ((i 0) (j (length keyboard-translate-table))) (while (< i j) (aset the-table i (elt keyboard-translate-table i)) (setq i (1+ i))) (while (< i 128) (aset the-table i i) (setq i (1+ i)))) (setq keyboard-translate-table the-table)) ;; Swap C-s and C-\ (aset keyboard-translate-table ?\034 ?\^s) (aset keyboard-translate-table ?\^s ?\034) ;; Swap C-q and C-^ (aset keyboard-translate-table ?\036 ?\^q) (aset keyboard-translate-table ?\^q ?\036) (message (concat "XON/XOFF adjustment for " (getenv "TERM") ": use C-\\ for C-s and use C-^ for C-q.")) (sleep-for 2)) ; Give user a chance to see message. (defun enable-flow-control-memstr= (e s) (cond ((null s) nil) ((string= e (car s)) t) (t (enable-flow-control-memstr= e (cdr s))))) ;;;###autoload (defun enable-flow-control-on (&rest losing-terminal-types) "Enable flow control if using one of a specified set of terminal types. Use `(enable-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 (enable-flow-control-memstr= term losing-terminal-types) (enable-flow-control)))) (provide 'flow-ctrl) ;;; flow-ctrl.el ends here