annotate lisp/term/vt-control.el @ 5067:7d7ae8db0341

add functions `stable-union' and `stable-intersection' to do stable set operations -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-02-22 Ben Wing <ben@xemacs.org> * cl-seq.el: * cl-seq.el (stable-union): New. * cl-seq.el (stable-intersection): New. New functions to do stable set operations, i.e. preserve the order of the elements in the argument lists, and prefer LIST1 over LIST2 when ordering the combined result. The result looks as much like LIST1 as possible, followed (in the case of `stable-union') by any necessary elements from LIST2, in order. This is contrary to `union' and `intersection', which are not required to be order- preserving and are not -- they prefer LIST2 and output results in backwards order.
author Ben Wing <ben@xemacs.org>
date Mon, 22 Feb 2010 21:23:02 -0600
parents 376386a54a3c
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 ;;; vt-control.el --- Common VTxxx control functions
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 ;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 ;; Author: Rob Riepel <riepel@networking.stanford.edu>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 ;; Maintainer: Rob Riepel <riepel@networking.stanford.edu>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 ;; Keywords: terminals
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 ;; any later version.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 ;; GNU General Public License for more details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 ;;; Commentary:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 ;; The functions contained in this file send various VT control codes
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 ;; to the terminal where emacs is running. The following functions are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 ;; available.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 ;; Function Action
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 ;; vt-wide set wide screen (132 characters)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 ;; vt-narrow set narrow screen (80 characters)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 ;; vt-toggle-screen toggle wide/narrow screen
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 ;; vt-keypad-on set applications keypad on
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 ;; vt-keypad-off set applications keypad off
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 ;; vt-numlock toggle applications keypad on/off
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 ;;; Usage:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 ;; To use enable these functions, simply load this file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 ;; Note: vt-control makes no effort to determine how the terminal is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 ;; initially set. It assumes the terminal starts with a width
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 ;; of 80 characters and the applications keypad enabled. Nor
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 ;; does vt-control try to restore the terminal when emacs is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 ;; killed or suspended.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 ;;; Code:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 ;;; Global variables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 (defvar vt-applications-keypad-p t
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 "If non-nil, keypad is in applications mode.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 (defvar vt-wide-p nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 "If non-nil, the screen is 132 characters wide.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 ;;; Screen width functions.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 (defun vt-wide nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 "Set the screen 132 characters wide."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 (send-string-to-terminal "\e[?3h")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 (set-frame-width (selected-frame) 132)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 (setq vt-wide-p t))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 (defun vt-narrow nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 "Set the screen 80 characters wide."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 (send-string-to-terminal "\e[?3l")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 (set-frame-width (selected-frame) 80)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 (setq vt-wide-p nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 (defun vt-toggle-screen nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 "Toggle between 80 and 132 character screen width."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 (if vt-wide-p (vt-narrow) (vt-wide)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 ;;; Applications keypad functions.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 (defun vt-keypad-on (&optional tell)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 "Turn on the VT applications keypad."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 (send-string-to-terminal "\e[\e=")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 (setq vt-applications-keypad-p t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 (if (or tell (interactive-p)) (message "Applications keypad enabled.")))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 (defun vt-keypad-off (&optional tell)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94 "Turn off the VT applications keypad."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 (interactive "p")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 (send-string-to-terminal "\e[\e>")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 (setq vt-applications-keypad-p nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98 (if (or tell (interactive-p)) (message "Applications keypad disabled.")))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100 (defun vt-numlock nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 "Toggle VT application keypad on and off."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 (if vt-applications-keypad-p (vt-keypad-off (interactive-p))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104 (vt-keypad-on (interactive-p))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 ;;; vt-control.el ends here