Mercurial > emacs
view lisp/flow-ctrl.el @ 109555:05e7e7c46ff0
Use const, move declarations to header files.
* src/buffer.c (Fset_buffer_multibyte): Remove local extern declaration.
* src/character.c (strwidth, parse_str_to_multibyte): Add const.
* src/character.h (strwidth, parse_str_to_multibyte): Likewise.
* src/charset.c (add_to_log): Remove declaration.
* src/composite.c (syms_of_composite): Remove local extern declarations.
* src/data.c (Finteractive_form): Use const.
* src/dired.c (scmp): Add const.
(directory_files_internal): Remove local extern declaration.
* src/dispextern.h (add_to_log): Remove declaration.
(x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
(x_frame_get_and_record_arg, x_default_parameter): Add const.
* src/dispnew.c: Remove duplicate #include <unistd.h>.
(update_window, update_frame_1, init_display): Remove local extern
declarations.
* src/editfns.c (region_limit, syms_of_editfns): Remove local extern
declarations.
* src/emacs.c (main): Remove local extern declaration.
* src/font.c (Qnormal, QCtype, QCfamily, QCweight, QCslant, QCwidth)
(QCheight, QCsize, QCname): Remove declarations.
* src/frame.c (x_get_resource_string, x_get_string_resource)
(x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
(x_default_parameter): Use const.
* src/image.c (QCwidth, QCheight, QCforeground, QCbackground, QCfile)
(QCdata, QCtype, Qcenter): Remove declarations.
* src/keyboard.h (do_mouse_tracking): Add declaration.
* src/minibuf.c (Qmouse_face): Remove declaration.
* src/msdos.c (IT_note_mouse_highlight): Remove local extern declaration.
* src/xdisp.c (do_mouse_tracking): Remove declaration.
(add_to_log): Use const.
* src/xfaces.c (Qmouse_face): Remove declaration.
(face_color_gray_p, tty_defined_color, defined_color)
(face_color_gray_p, face_color_supported_p). Add const.
* src/xfns.c: Include xlwmenu.h when USE_LUCID.
(x_defined_color, xic_set_xfontset): Use const.
(Fx_hide_tip): Remove local extern declaration.
* src/xselect.c (selection_data_to_lisp_data)
(x_property_data_to_lisp):
* src/xrdb.c (x_get_string_resource, file_p)
(x_get_customization_string, magic_file_p, search_magic_path)
(get_system_app, get_user_app, x_load_resources, x_get_resource)
(x_get_string_resource): Use const.
* src/xterm.c (xlwmenu_window_p, xlwmenu_redisplay): Remove declarations.
(x_text_icon, x_check_errors, x_connection_closed): Use const.
* src/xterm.h (x_get_customization_string, x_load_resources)
(x_get_resource, x_text_icon, x_text_icon, x_check_errors)
(x_check_errors, x_property_data_to_lisp, defined_color)
(xic_set_xfontset, x_defined_color): Use const.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Mon, 26 Jul 2010 20:52:35 -0700 |
parents | 1d1d5d9bd884 |
children | 376148b31b5e |
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, 1994, 2001, 2002, 2003, 2004, 2005, 2006, ;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Author: Kevin Gallagher ;; Maintainer: FSF ;; Adapted-By: ESR ;; Keywords: hardware ;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>. ;;; 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: (defvar flow-control-c-s-replacement ?\034 "Character that replaces C-s, when flow control handling is enabled.") (defvar flow-control-c-q-replacement ?\036 "Character that replaces C-q, when flow control handling is enabled.") (put 'keyboard-translate-table 'char-table-extra-slots 0) ;;;###autoload (defun enable-flow-control (&optional argument) "Toggle flow control handling. When handling is enabled, user can type C-s as C-\\, and C-q as C-^. With arg, enable flow control mode if arg is positive, otherwise disable." (interactive "P") (if (if argument ;; Argument means enable if arg is positive. (<= (prefix-numeric-value argument) 0) ;; No arg means toggle. (nth 1 (current-input-mode))) (progn ;; Turn flow control off, and stop exchanging chars. (set-input-mode t nil (nth 2 (current-input-mode))) (if keyboard-translate-table (progn (aset keyboard-translate-table flow-control-c-s-replacement nil) (aset keyboard-translate-table ?\^s nil) (aset keyboard-translate-table flow-control-c-q-replacement nil) (aset keyboard-translate-table ?\^q nil)))) ;; Turn flow control on. ;; 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. (cond ((null keyboard-translate-table) (setq keyboard-translate-table (make-char-table 'keyboard-translate-table nil))) ((char-table-p keyboard-translate-table) (setq keyboard-translate-table (copy-sequence keyboard-translate-table))) (t (let ((the-table (make-char-table 'keyboard-translate-table nil))) (let ((i 0) (j (length keyboard-translate-table))) (while (< i j) (aset the-table i (elt keyboard-translate-table i)) (setq i (1+ i)))) (setq keyboard-translate-table the-table)))) ;; Swap C-s and C-\ (aset keyboard-translate-table flow-control-c-s-replacement ?\^s) (aset keyboard-translate-table ?\^s flow-control-c-s-replacement) ;; Swap C-q and C-^ (aset keyboard-translate-table flow-control-c-q-replacement ?\^q) (aset keyboard-translate-table ?\^q flow-control-c-q-replacement) (message "XON/XOFF adjustment for %s: use %s for C-s, and use %s for C-q" (getenv "TERM") (single-key-description flow-control-c-s-replacement) (single-key-description flow-control-c-q-replacement)) (sleep-for 2))) ; Give user a chance to see message. ;;;###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) ;; Look for TERM in LOSING-TERMINAL-TYPES. ;; If we don't find it literally, try stripping off words ;; from the end, one by one. (while (and term (not (member term losing-terminal-types))) ;; Strip off last hyphen and what follows, then try again. (if (setq hyphend (string-match "[-_][^-_]+$" term)) (setq term (substring term 0 hyphend)) (setq term nil))) (if term (enable-flow-control)))) (provide 'flow-ctrl) ;; arch-tag: 0eb7b19e-0d93-4e0b-9ea2-72b574076a56 ;;; flow-ctrl.el ends here