annotate man/lispref/os.texi @ 622:11502791fc1c

[xemacs-hg @ 2001-06-22 01:49:57 by ben] dired-msw.c: Fix problem noted by Michael Sperber with directories containing [] and code that destructively modifies an existing string. term\AT386.el: Fix warnings. term\apollo.el: Removed. Kill kill kill. Sync with FSF and remove most crap. term\linux.el: Removed. Sync with FSF. Don't define most defns, because they are automatically defined by termcap. But do add defns for keys that normally get defined as f13, f14, etc. and really ought to be shift-f3, shift-f4, etc. (NOTE: I did this based on Cygwin, which emulates the Linux console. I would appreciate it if someone on Linux could verify.) term\cygwin.el: New. Load term/linux. term\lk201.el, term\news.el, term\vt100.el: Sync with FSF. Fix warnings. dialog-gtk.el: Fix warning. For 21.4: help.el, update-elc.el: Compile in proper order. Maybe for 21.4: keydefs.el: Add a defn for M-?, previously undefined, to access help -- in case the terminal is not set up right, or f1 gets redefined. README: Rewrite.
author ben
date Fri, 22 Jun 2001 01:50:04 +0000
parents 576fb035e263
children 30958064156d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 @c -*-texinfo-*-
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 @c This is part of the XEmacs Lisp Reference Manual.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @c See the file lispref.texi for copying conditions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 @setfilename ../../info/os.info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 @node System Interface, X-Windows, Processes, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 @chapter Operating System Interface
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 This chapter is about starting and getting out of Emacs, access to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 values in the operating system environment, and terminal input, output,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 and flow control.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 @xref{Building XEmacs}, for related information. See also
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 @ref{Display}, for additional operating system status information
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 pertaining to the terminal and the screen.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 * Starting Up:: Customizing XEmacs start-up processing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 * Getting Out:: How exiting works (permanent or temporary).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 * System Environment:: Distinguish the name and kind of system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 * User Identification:: Finding the name and user id of the user.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 * Time of Day:: Getting the current time.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 * Time Conversion:: Converting a time from numeric form to a string, or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 to calendrical data (or vice versa).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 * Timers:: Setting a timer to call a function at a certain time.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 * Terminal Input:: Recording terminal input for debugging.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 * Terminal Output:: Recording terminal output for debugging.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 * Flow Control:: How to turn output flow control on or off.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 * Batch Mode:: Running XEmacs without terminal interaction.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 @ignore
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 * Special Keysyms:: Defining system-specific key symbols for X windows.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 @end ignore
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 @node Starting Up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 @section Starting Up XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 This section describes what XEmacs does when it is started, and how you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 can customize these actions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 * Start-up Summary:: Sequence of actions XEmacs performs at start-up.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 * Init File:: Details on reading the init file (@file{.emacs}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 * Terminal-Specific:: How the terminal-specific Lisp file is read.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 * Command Line Arguments:: How command line arguments are processed,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 and how you can customize them.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 @node Start-up Summary
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 @subsection Summary: Sequence of Actions at Start Up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 @cindex initialization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 @cindex start up of XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 @cindex @file{startup.el}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 The order of operations performed (in @file{startup.el}) by XEmacs when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 it is started up is as follows:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 It loads the initialization library for the window system, if you are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 using a window system. This library's name is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 @file{term/@var{windowsystem}-win.el}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 It processes the initial options. (Some of them are handled
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 even earlier than this.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 It initializes the X window frame and faces, if appropriate.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 It runs the normal hook @code{before-init-hook}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 It loads the library @file{site-start}, unless the option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 @samp{-no-site-file} was specified. The library's file name is usually
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 @file{site-start.el}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 @cindex @file{site-start.el}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
80 @item
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 It loads the file @file{~/.emacs} unless @samp{-q} was specified on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 the command line. (This is not done in @samp{-batch} mode.) The @samp{-u}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 option can specify the user name whose home directory should be used
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 instead of @file{~}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
86 @item
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 It loads the library @file{default} unless @code{inhibit-default-init}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 is non-@code{nil}. (This is not done in @samp{-batch} mode or if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 @samp{-q} was specified on the command line.) The library's file name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 is usually @file{default.el}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 @cindex @file{default.el}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 It runs the normal hook @code{after-init-hook}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 It sets the major mode according to @code{initial-major-mode}, provided
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 the buffer @samp{*scratch*} is still current and still in Fundamental
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
101 @item
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 It loads the terminal-specific Lisp file, if any, except when in batch
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 mode or using a window system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 It displays the initial echo area message, unless you have suppressed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 that with @code{inhibit-startup-echo-area-message}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
109 @item
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 It processes the action arguments from the command line.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
112 @item
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 It runs @code{term-setup-hook}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 It calls @code{frame-notice-user-settings}, which modifies the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 parameters of the selected frame according to whatever the init files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 specify.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
120 @item
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 It runs @code{window-setup-hook}. @xref{Terminal-Specific}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
123 @item
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 It displays copyleft, nonwarranty, and basic use information, provided
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 there were no remaining command line arguments (a few steps above) and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 the value of @code{inhibit-startup-message} is @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 @defopt inhibit-startup-message
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 This variable inhibits the initial startup messages (the nonwarranty,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 etc.). If it is non-@code{nil}, then the messages are not printed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 This variable exists so you can set it in your personal init file, once
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 you are familiar with the contents of the startup message. Do not set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 this variable in the init file of a new user, or in a way that affects
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 more than one user, because that would prevent new users from receiving
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 the information they are supposed to see.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 @end defopt
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 @defopt inhibit-startup-echo-area-message
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 This variable controls the display of the startup echo area message.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 You can suppress the startup echo area message by adding text with this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 form to your @file{.emacs} file:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 (setq inhibit-startup-echo-area-message
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 "@var{your-login-name}")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 Simply setting @code{inhibit-startup-echo-area-message} to your login
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 name is not sufficient to inhibit the message; Emacs explicitly checks
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 whether @file{.emacs} contains an expression as shown above. Your login
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 name must appear in the expression as a Lisp string constant.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 This way, you can easily inhibit the message for yourself if you wish,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 but thoughtless copying of your @file{.emacs} file will not inhibit the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 message for someone else.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 @end defopt
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 @node Init File
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 @subsection The Init File: @file{.emacs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 @cindex init file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 @cindex @file{.emacs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 When you start XEmacs, it normally attempts to load the file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 @file{.emacs} from your home directory. This file, if it exists, must
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 contain Lisp code. It is called your @dfn{init file}. The command line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 switches @samp{-q} and @samp{-u} affect the use of the init file;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 @samp{-q} says not to load an init file, and @samp{-u} says to load a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 specified user's init file instead of yours. @xref{Entering XEmacs,,,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 xemacs, The XEmacs User's Manual}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 @cindex default init file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 A site may have a @dfn{default init file}, which is the library named
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 @file{default.el}. XEmacs finds the @file{default.el} file through the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 standard search path for libraries (@pxref{How Programs Do Loading}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 The XEmacs distribution does not come with this file; sites may provide
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 one for local customizations. If the default init file exists, it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 loaded whenever you start Emacs, except in batch mode or if @samp{-q} is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 specified. But your own personal init file, if any, is loaded first; if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 it sets @code{inhibit-default-init} to a non-@code{nil} value, then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 XEmacs does not subsequently load the @file{default.el} file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 Another file for site-customization is @file{site-start.el}. Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 loads this @emph{before} the user's init file. You can inhibit the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 loading of this file with the option @samp{-no-site-file}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 @defvar site-run-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 This variable specifies the site-customization file to load
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 before the user's init file. Its normal value is @code{"site-start"}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 If there is a great deal of code in your @file{.emacs} file, you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 should move it into another file named @file{@var{something}.el},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 byte-compile it (@pxref{Byte Compilation}), and make your @file{.emacs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 file load the other file using @code{load} (@pxref{Loading}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 @xref{Init File Examples,,, xemacs, The XEmacs User's Manual}, for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 examples of how to make various commonly desired customizations in your
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 @file{.emacs} file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 @defopt inhibit-default-init
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 This variable prevents XEmacs from loading the default initialization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 library file for your session of XEmacs. If its value is non-@code{nil},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 then the default library is not loaded. The default value is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 @end defopt
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 @defvar before-init-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 @defvarx after-init-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 These two normal hooks are run just before, and just after, loading of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 the user's init file, @file{default.el}, and/or @file{site-start.el}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 @node Terminal-Specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 @subsection Terminal-Specific Initialization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 @cindex terminal-specific initialization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 Each terminal type can have its own Lisp library that XEmacs loads when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 run on that type of terminal. For a terminal type named @var{termtype},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 the library is called @file{term/@var{termtype}}. XEmacs finds the file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 by searching the @code{load-path} directories as it does for other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 files, and trying the @samp{.elc} and @samp{.el} suffixes. Normally,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 terminal-specific Lisp library is located in @file{emacs/lisp/term}, a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 subdirectory of the @file{emacs/lisp} directory in which most XEmacs Lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 libraries are kept.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 The library's name is constructed by concatenating the value of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 variable @code{term-file-prefix} and the terminal type. Normally,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 @code{term-file-prefix} has the value @code{"term/"}; changing this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 is not recommended.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 The usual function of a terminal-specific library is to enable special
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 keys to send sequences that XEmacs can recognize. It may also need to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 set or add to @code{function-key-map} if the Termcap entry does not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 specify all the terminal's function keys. @xref{Terminal Input}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 @cindex Termcap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 When the name of the terminal type contains a hyphen, only the part of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 the name before the first hyphen is significant in choosing the library
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 name. Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 the @file{term/aaa} library. If necessary, the library can evaluate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 @code{(getenv "TERM")} to find the full name of the terminal
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 type.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 Your @file{.emacs} file can prevent the loading of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 terminal-specific library by setting the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 @code{term-file-prefix} to @code{nil}. This feature is useful when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 experimenting with your own peculiar customizations.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 You can also arrange to override some of the actions of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 terminal-specific library by setting the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 @code{term-setup-hook}. This is a normal hook which XEmacs runs using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 @code{run-hooks} at the end of XEmacs initialization, after loading both
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255 your @file{.emacs} file and any terminal-specific libraries. You can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 use this variable to define initializations for terminals that do not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 have their own libraries. @xref{Hooks}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 @defvar term-file-prefix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 @cindex @code{TERM} environment variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 If the @code{term-file-prefix} variable is non-@code{nil}, XEmacs loads
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 a terminal-specific initialization file as follows:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 (load (concat term-file-prefix (getenv "TERM")))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 You may set the @code{term-file-prefix} variable to @code{nil} in your
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 @file{.emacs} file if you do not wish to load the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 terminal-initialization file. To do this, put the following in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 your @file{.emacs} file: @code{(setq term-file-prefix nil)}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
275 @defvar term-setup-hook
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 This variable is a normal hook that XEmacs runs after loading your
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 @file{.emacs} file, the default initialization file (if any) and the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 terminal-specific Lisp file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 You can use @code{term-setup-hook} to override the definitions made by a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 terminal-specific file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 @defvar window-setup-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 This variable is a normal hook which XEmacs runs after loading your
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 @file{.emacs} file and the default initialization file (if any), after
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 loading terminal-specific Lisp code, and after running the hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 @code{term-setup-hook}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 @node Command Line Arguments
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 @subsection Command Line Arguments
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 @cindex command line arguments
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 You can use command line arguments to request various actions when you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 start XEmacs. Since you do not need to start XEmacs more than once per
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 day, and will often leave your XEmacs session running longer than that,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 command line arguments are hardly ever used. As a practical matter, it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 is best to avoid making the habit of using them, since this habit would
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 encourage you to kill and restart XEmacs unnecessarily often. These
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 options exist for two reasons: to be compatible with other editors (for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 invocation by other programs) and to enable shell scripts to run
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 specific Lisp programs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 This section describes how Emacs processes command line arguments,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 and how you can customize them.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 @ignore
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 (Note that some other editors require you to start afresh each time
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 you want to edit a file. With this kind of editor, you will probably
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 specify the file as a command line argument. The recommended way to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 use XEmacs is to start it only once, just after you log in, and do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 all your editing in the same XEmacs process. Each time you want to edit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 a different file, you visit it with the existing XEmacs, which eventually
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 comes to have many files in it ready for editing. Usually you do not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 kill the XEmacs until you are about to log out.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 @end ignore
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 @defun command-line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 This function parses the command line that XEmacs was called with,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 processes it, loads the user's @file{.emacs} file and displays the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 startup messages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 @defvar command-line-processed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 The value of this variable is @code{t} once the command line has been
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 processed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 If you redump XEmacs by calling @code{dump-emacs}, you may wish to set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 this variable to @code{nil} first in order to cause the new dumped XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 to process its new command line arguments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 @defvar command-switch-alist
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 @cindex switches on command line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 @cindex options on command line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 @cindex command line options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 The value of this variable is an alist of user-defined command-line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 options and associated handler functions. This variable exists so you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 can add elements to it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 A @dfn{command line option} is an argument on the command line of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 form:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 -@var{option}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
349 The elements of the @code{command-switch-alist} look like this:
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 (@var{option} . @var{handler-function})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 The @var{handler-function} is called to handle @var{option} and receives
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 the option name as its sole argument.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 In some cases, the option is followed in the command line by an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 argument. In these cases, the @var{handler-function} can find all the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 remaining command-line arguments in the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 @code{command-line-args-left}. (The entire list of command-line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 arguments is in @code{command-line-args}.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 The command line arguments are parsed by the @code{command-line-1}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 function in the @file{startup.el} file. See also @ref{Command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 Switches, , Command Line Switches and Arguments, xemacs, The XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 User's Manual}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 @defvar command-line-args
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371 The value of this variable is the list of command line arguments passed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 to XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 @defvar command-line-functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 This variable's value is a list of functions for handling an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 unrecognized command-line argument. Each time the next argument to be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 processed has no special meaning, the functions in this list are called,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 in order of appearance, until one of them returns a non-@code{nil}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 These functions are called with no arguments. They can access the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383 command-line argument under consideration through the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384 @code{argi}. The remaining arguments (not including the current one)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 are in the variable @code{command-line-args-left}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387 When a function recognizes and processes the argument in @code{argi}, it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 should return a non-@code{nil} value to say it has dealt with that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 argument. If it has also dealt with some of the following arguments, it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 can indicate that by deleting them from @code{command-line-args-left}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 If all of these functions return @code{nil}, then the argument is used
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 as a file name to visit.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 @node Getting Out
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 @section Getting out of XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 @cindex exiting XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 There are two ways to get out of XEmacs: you can kill the XEmacs job,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 which exits permanently, or you can suspend it, which permits you to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 reenter the XEmacs process later. As a practical matter, you seldom kill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 XEmacs---only when you are about to log out. Suspending is much more
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 common.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 * Killing XEmacs:: Exiting XEmacs irreversibly.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 * Suspending XEmacs:: Exiting XEmacs reversibly.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 @node Killing XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 @subsection Killing XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 @cindex killing XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 Killing XEmacs means ending the execution of the XEmacs process. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 parent process normally resumes control. The low-level primitive for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 killing XEmacs is @code{kill-emacs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
419 @deffn Command kill-emacs &optional exit-data
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 This function exits the XEmacs process and kills it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 If @var{exit-data} is an integer, then it is used as the exit status
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423 of the XEmacs process. (This is useful primarily in batch operation; see
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424 @ref{Batch Mode}.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 If @var{exit-data} is a string, its contents are stuffed into the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 terminal input buffer so that the shell (or whatever program next reads
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 input) can read them.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
429 @end deffn
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 All the information in the XEmacs process, aside from files that have
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432 been saved, is lost when the XEmacs is killed. Because killing XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 inadvertently can lose a lot of work, XEmacs queries for confirmation
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 before actually terminating if you have buffers that need saving or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 subprocesses that are running. This is done in the function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 @code{save-buffers-kill-emacs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438 @defvar kill-emacs-query-functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 After asking the standard questions, @code{save-buffers-kill-emacs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 calls the functions in the list @code{kill-buffer-query-functions}, in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 order of appearance, with no arguments. These functions can ask for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 additional confirmation from the user. If any of them returns
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 non-@code{nil}, XEmacs is not killed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 @defvar kill-emacs-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447 This variable is a normal hook; once @code{save-buffers-kill-emacs} is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448 finished with all file saving and confirmation, it runs the functions in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 this hook.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452 @node Suspending XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453 @subsection Suspending XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 @cindex suspending XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
455
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
456 @dfn{Suspending XEmacs} means stopping XEmacs temporarily and returning
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
457 control to its superior process, which is usually the shell. This
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458 allows you to resume editing later in the same XEmacs process, with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459 same buffers, the same kill ring, the same undo history, and so on. To
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
460 resume XEmacs, use the appropriate command in the parent shell---most
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
461 likely @code{fg}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463 Some operating systems do not support suspension of jobs; on these
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464 systems, ``suspension'' actually creates a new shell temporarily as a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
465 subprocess of XEmacs. Then you would exit the shell to return to XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467 Suspension is not useful with window systems such as X, because the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468 XEmacs job may not have a parent that can resume it again, and in any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 case you can give input to some other job such as a shell merely by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
470 moving to a different window. Therefore, suspending is not allowed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471 when XEmacs is an X client.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
473 @deffn Command suspend-emacs &optional stuffstring
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 This function stops XEmacs and returns control to the superior process.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475 If and when the superior process resumes XEmacs, @code{suspend-emacs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 returns @code{nil} to its caller in Lisp.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
478 If optional arg @var{stuffstring} is non-@code{nil}, its characters are
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
479 sent to be read as terminal input by XEmacs's superior shell. The
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
480 characters in @var{stuffstring} are not echoed by the superior shell;
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
481 only the results appear.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483 Before suspending, @code{suspend-emacs} runs the normal hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 @code{suspend-hook}. In Emacs version 18, @code{suspend-hook} was not a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 normal hook; its value was a single function, and if its value was
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 non-@code{nil}, then @code{suspend-emacs} returned immediately without
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487 actually suspending anything.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 After the user resumes XEmacs, @code{suspend-emacs} runs the normal hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 @code{suspend-resume-hook}. @xref{Hooks}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492 The next redisplay after resumption will redraw the entire screen,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
493 unless the variable @code{no-redraw-on-reenter} is non-@code{nil}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
494 (@pxref{Refresh Screen}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
496 In the following example, note that @samp{pwd} is not echoed after
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497 XEmacs is suspended. But it is read and executed by the shell.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
499 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
500 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
501 (suspend-emacs)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
502 @result{} nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
503 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
504
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
505 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
506 (add-hook 'suspend-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
507 (function (lambda ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
508 (or (y-or-n-p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
509 "Really suspend? ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
510 (error "Suspend cancelled")))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
511 @result{} (lambda nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
512 (or (y-or-n-p "Really suspend? ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
513 (error "Suspend cancelled")))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
514 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
515 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
516 (add-hook 'suspend-resume-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
517 (function (lambda () (message "Resumed!"))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
518 @result{} (lambda nil (message "Resumed!"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
519 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
520 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
521 (suspend-emacs "pwd")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
522 @result{} nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
523 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
524 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
525 ---------- Buffer: Minibuffer ----------
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
526 Really suspend? @kbd{y}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
527 ---------- Buffer: Minibuffer ----------
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
528 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
529
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
530 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
531 ---------- Parent Shell ----------
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
532 lewis@@slug[23] % /user/lewis/manual
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
533 lewis@@slug[24] % fg
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
534 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
535
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
536 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
537 ---------- Echo Area ----------
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
538 Resumed!
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
539 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
540 @end smallexample
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
541 @end deffn
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
542
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
543 @defvar suspend-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
544 This variable is a normal hook run before suspending.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
545 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
546
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
547 @defvar suspend-resume-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
548 This variable is a normal hook run after suspending.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
549 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
550
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
551 @node System Environment
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
552 @section Operating System Environment
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
553 @cindex operating system environment
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
554
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
555 XEmacs provides access to variables in the operating system environment
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
556 through various functions. These variables include the name of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
557 system, the user's @sc{uid}, and so on.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
558
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
559 @defvar system-type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
560 The value of this variable is a symbol indicating the type of operating
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
561 system XEmacs is operating on. Here is a table of the possible values:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
562
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
563 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
564 @item aix-v3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
565 AIX.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
566
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
567 @item berkeley-unix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
568 Berkeley BSD.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
569
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
570 @item dgux
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
571 Data General DGUX operating system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
572
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
573 @item gnu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
574 A GNU system using the GNU HURD and Mach.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
575
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
576 @item hpux
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
577 Hewlett-Packard HPUX operating system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
578
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
579 @item irix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
580 Silicon Graphics Irix system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
581
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
582 @item linux
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
583 A GNU system using the Linux kernel.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
584
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
585 @item ms-dos
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
586 Microsoft MS-DOS ``operating system.''
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
587
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
588 @item next-mach
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
589 NeXT Mach-based system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
590
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
591 @item rtu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
592 Masscomp RTU, UCB universe.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
593
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
594 @item unisoft-unix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
595 UniSoft UniPlus.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
596
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
597 @item usg-unix-v
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
598 AT&T System V.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
599
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
600 @item windows-nt
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
601 Microsoft windows NT.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
602
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
603 @item xenix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
604 SCO Xenix 386.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
605 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
606
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
607 We do not wish to add new symbols to make finer distinctions unless it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
608 is absolutely necessary! In fact, we hope to eliminate some of these
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
609 alternatives in the future. We recommend using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
610 @code{system-configuration} to distinguish between different operating
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
611 systems.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
612 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
613
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
614 @defvar system-configuration
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
615 This variable holds the three-part configuration name for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
616 hardware/software configuration of your system, as a string. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
617 convenient way to test parts of this string is with @code{string-match}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
618 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
619
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
620 @defun system-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
621 This function returns the name of the machine you are running on.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
622 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
623 (system-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
624 @result{} "prep.ai.mit.edu"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
625 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
626 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
627
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
628 @vindex system-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
629 The symbol @code{system-name} is a variable as well as a function. In
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
630 fact, the function returns whatever value the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
631 @code{system-name} currently holds. Thus, you can set the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
632 @code{system-name} in case Emacs is confused about the name of your
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
633 system. The variable is also useful for constructing frame titles
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
634 (@pxref{Frame Titles}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
635
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
636 @defvar mail-host-address
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
637 If this variable is non-@code{nil}, it is used instead of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
638 @code{system-name} for purposes of generating email addresses. For
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
639 example, it is used when constructing the default value of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
640 @code{user-mail-address}. @xref{User Identification}. (Since this is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
641 done when XEmacs starts up, the value actually used is the one saved when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
642 XEmacs was dumped. @xref{Building XEmacs}.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
643 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
644
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
645 @deffn Command getenv var &optional interactivep
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
646 @cindex environment variable access
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
647 This function returns the value of the environment variable @var{var},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
648 as a string. Within XEmacs, the environment variable values are kept in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
649 the Lisp variable @code{process-environment}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
650
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
651 When invoked interactively, @code{getenv} prints the value in the echo area.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
652
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
653 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
654 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
655 (getenv "USER")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
656 @result{} "lewis"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
657 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
658
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
659 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
660 lewis@@slug[10] % printenv
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
661 PATH=.:/user/lewis/bin:/usr/bin:/usr/local/bin
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
662 USER=lewis
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
663 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
664 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
665 TERM=ibmapa16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
666 SHELL=/bin/csh
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
667 HOME=/user/lewis
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
668 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
669 @end example
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
670 @end deffn
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
671
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
672 @deffn Command setenv variable &optional value unset
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
673 This command sets the value of the environment variable named
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
674 @var{variable} to @var{value}. Both arguments should be strings. This
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
675 function works by modifying @code{process-environment}; binding that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
676 variable with @code{let} is also reasonable practice.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
677 @end deffn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
678
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
679 @defvar process-environment
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
680 This variable is a list of strings, each describing one environment
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
681 variable. The functions @code{getenv} and @code{setenv} work by
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
682 manipulating this variable.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
683
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
684 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
685 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
686 process-environment
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
687 @result{} ("l=/usr/stanford/lib/gnuemacs/lisp"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
688 "PATH=.:/user/lewis/bin:/usr/class:/nfsusr/local/bin"
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
689 "USER=lewis"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
690 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
691 @group
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
692 "TERM=ibmapa16"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
693 "SHELL=/bin/csh"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
694 "HOME=/user/lewis")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
695 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
696 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
697 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
698
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
699 @defvar path-separator
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
700 This variable holds a string which says which character separates
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
701 directories in a search path (as found in an environment variable). Its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
702 value is @code{":"} for Unix and GNU systems, and @code{";"} for MS-DOS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
703 and Windows NT.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
704 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
705
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
706 @defvar invocation-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
707 This variable holds the program name under which Emacs was invoked. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
708 value is a string, and does not include a directory name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
709 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
710
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
711 @defvar invocation-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
712 This variable holds the directory from which the Emacs executable was
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
713 invoked, or perhaps @code{nil} if that directory cannot be determined.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
714 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
715
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
716 @defvar installation-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
717 If non-@code{nil}, this is a directory within which to look for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
718 @file{lib-src} and @file{etc} subdirectories. This is non-@code{nil}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
719 when Emacs can't find those directories in their standard installed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
720 locations, but can find them in a directory related somehow to the one
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
721 containing the Emacs executable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
722 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
723
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
724 @defun load-average &optional use-floats
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
725 This function returns a list of the current 1-minute, 5-minute and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
726 15-minute load averages. The values are integers that are 100 times the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
727 system load averages. (The load averages indicate the number of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
728 processes trying to run.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
729
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
730 When @var{use-floats} is non-@code{nil}, floats will be returned instead
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
731 of integers. These floats are not multiplied by 100.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
732
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
733 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
734 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
735 (load-average)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
736 @result{} (169 158 164)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
737 (load-average t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
738 @result{} (1.69921875 1.58984375 1.640625)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
739 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
740
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
741 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
742 lewis@@rocky[5] % uptime
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
743 8:06pm up 16 day(s), 21:57, 40 users,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
744 load average: 1.68, 1.59, 1.64
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
745 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
746 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
747
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
748 If the 5-minute or 15-minute load averages are not available, return a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
749 shortened list, containing only those averages which are available.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
750
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
751 On some systems, this function may require special privileges to run, or
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
752 it may be unimplemented for the particular system type. In that case,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
753 the function will signal an error.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
754 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
755
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
756 @defun emacs-pid
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
757 This function returns the process @sc{id} of the Emacs process.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
758 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
759
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
760 @node User Identification
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
761 @section User Identification
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
762
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
763 @defvar user-mail-address
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
764 This holds the nominal email address of the user who is using Emacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
765 When Emacs starts up, it computes a default value that is usually right,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
766 but users often set this themselves when the default value is not right.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
767 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
768
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
769 @defun user-login-name &optional uid
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
770 If you don't specify @var{uid}, this function returns the name under
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
771 which the user is logged in. If the environment variable @code{LOGNAME}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
772 is set, that value is used. Otherwise, if the environment variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
773 @code{USER} is set, that value is used. Otherwise, the value is based
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
774 on the effective @sc{uid}, not the real @sc{uid}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
775
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
776 If you specify @var{uid}, the value is the user name that corresponds
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
777 to @var{uid} (which should be an integer).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
778
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
779 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
780 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
781 (user-login-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
782 @result{} "lewis"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
783 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
784 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
785 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
786
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
787 @defun user-real-login-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
788 This function returns the user name corresponding to Emacs's real
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
789 @sc{uid}. This ignores the effective @sc{uid} and ignores the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
790 environment variables @code{LOGNAME} and @code{USER}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
791 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
792
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
793 @defvar user-full-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
794 This variable holds the name of the user running this Emacs. It is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
795 initialized at startup time from the value of @code{NAME} environment
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
796 variable. You can change the value of this variable to alter the result
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
797 of the @code{user-full-name} function.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
798 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
799
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
800 @defun user-full-name &optional user
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
801 This function returns the full name of @var{user}. If @var{user} is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
802 @code{nil}, it defaults to the user running this Emacs. In that case,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
803 the value of @code{user-full-name} variable, if non-@code{nil}, will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
804 used.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
805
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
806 If @var{user} is specified explicitly, @code{user-full-name} variable is
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
807 ignored.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
808
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
809 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
810 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
811 (user-full-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
812 @result{} "Hrvoje Niksic"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
813 (setq user-full-name "Hrvoje \"Niksa\" Niksic")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
814 (user-full-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
815 @result{} "Hrvoje \"Niksa\" Niksic"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
816 (user-full-name "hniksic")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
817 @result{} "Hrvoje Niksic"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
818 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
819 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
820 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
821
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
822 @vindex user-full-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
823 @vindex user-real-login-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
824 @vindex user-login-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
825 The symbols @code{user-login-name}, @code{user-real-login-name} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
826 @code{user-full-name} are variables as well as functions. The functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
827 return the same values that the variables hold. These variables allow
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
828 you to ``fake out'' Emacs by telling the functions what to return. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
829 variables are also useful for constructing frame titles (@pxref{Frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
830 Titles}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
831
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
832 @defun user-real-uid
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
833 This function returns the real @sc{uid} of the user.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
834
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
835 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
836 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
837 (user-real-uid)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
838 @result{} 19
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
839 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
840 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
841 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
842
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
843 @defun user-uid
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
844 This function returns the effective @sc{uid} of the user.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
845 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
846
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
847 @defun user-home-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
848 This function returns the ``@code{HOME}'' directory of the user, and is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
849 intended to replace occurrences of ``@code{(getenv "HOME")}''. Under
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
850 Unix systems, the following is done:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
851
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
852 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
853 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
854 Return the value of ``@code{(getenv "HOME")}'', if set.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
855
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
856 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
857 Return ``/'', as a fallback, but issue a warning. (Future versions of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
858 XEmacs will also attempt to lookup the @code{HOME} directory via
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
859 @code{getpwent()}, but this has not yet been implemented.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
860 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
861
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
862 Under MS Windows, this is done:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
863
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
864 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
865 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
866 Return the value of ``@code{(getenv "HOME")}'', if set.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
867
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
868 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
869 If the environment variables @code{HOMEDRIVE} and @code{HOMEDIR} are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
870 both set, return the concatenation (the following description uses MS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
871 Windows environment variable substitution syntax):
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
872 @code{%HOMEDRIVE%%HOMEDIR%}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
873
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
874 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
875 Return ``C:\'', as a fallback, but issue a warning.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
876 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
877 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
878
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
879 @node Time of Day
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
880 @section Time of Day
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
881
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
882 This section explains how to determine the current time and the time
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
883 zone.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
884
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
885 @defun current-time-string &optional time-value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
886 This function returns the current time and date as a humanly-readable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
887 string. The format of the string is unvarying; the number of characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
888 used for each part is always the same, so you can reliably use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
889 @code{substring} to extract pieces of it. It is wise to count the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
890 characters from the beginning of the string rather than from the end, as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
891 additional information may be added at the end.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
892
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
893 @c Emacs 19 feature
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
894 The argument @var{time-value}, if given, specifies a time to format
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
895 instead of the current time. The argument should be a list whose first
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
896 two elements are integers. Thus, you can use times obtained from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
897 @code{current-time} (see below) and from @code{file-attributes}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
898 (@pxref{File Attributes}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
899
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
900 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
901 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
902 (current-time-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
903 @result{} "Wed Oct 14 22:21:05 1987"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
904 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
905 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
906 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
907
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
908 @c Emacs 19 feature
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
909 @defun current-time
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
910 This function returns the system's time value as a list of three
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
911 integers: @code{(@var{high} @var{low} @var{microsec})}. The integers
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
912 @var{high} and @var{low} combine to give the number of seconds since
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
913 0:00 January 1, 1970, which is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
914 @ifinfo
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
915 @var{high} * 2**16 + @var{low}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
916 @end ifinfo
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
917 @tex
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
918 $high*2^{16}+low$.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
919 @end tex
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
920
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
921 The third element, @var{microsec}, gives the microseconds since the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
922 start of the current second (or 0 for systems that return time only on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
923 the resolution of a second).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
924
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
925 The first two elements can be compared with file time values such as you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
926 get with the function @code{file-attributes}. @xref{File Attributes}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
927 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
928
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
929 @c Emacs 19 feature
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
930 @defun current-time-zone &optional time-value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
931 This function returns a list describing the time zone that the user is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
932 in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
933
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
934 The value has the form @code{(@var{offset} @var{name})}. Here
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
935 @var{offset} is an integer giving the number of seconds ahead of UTC
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
936 (east of Greenwich). A negative value means west of Greenwich. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
937 second element, @var{name} is a string giving the name of the time
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
938 zone. Both elements change when daylight savings time begins or ends;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
939 if the user has specified a time zone that does not use a seasonal time
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
940 adjustment, then the value is constant through time.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
941
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
942 If the operating system doesn't supply all the information necessary to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
943 compute the value, both elements of the list are @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
944
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
945 The argument @var{time-value}, if given, specifies a time to analyze
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
946 instead of the current time. The argument should be a cons cell
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
947 containing two integers, or a list whose first two elements are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
948 integers. Thus, you can use times obtained from @code{current-time}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
949 (see above) and from @code{file-attributes} (@pxref{File Attributes}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
950 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
951
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
952 @node Time Conversion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
953 @section Time Conversion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
954
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
955 These functions convert time values (lists of two or three integers)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
956 to strings or to calendrical information. There is also a function to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
957 convert calendrical information to a time value. You can get time
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
958 values from the functions @code{current-time} (@pxref{Time of Day}) and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
959 @code{file-attributes} (@pxref{File Attributes}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
960
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
961 @defun format-time-string format-string &optional time
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
962 This function converts @var{time} to a string according to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
963 @var{format-string}. If @var{time} is omitted, it defaults to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
964 current time. The argument @var{format-string} may contain
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
965 @samp{%}-sequences which say to substitute parts of the time. Here is a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
966 table of what the @samp{%}-sequences mean:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
967
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
968 @table @samp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
969 @item %a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
970 This stands for the abbreviated name of the day of week.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
971 @item %A
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
972 This stands for the full name of the day of week.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
973 @item %b
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
974 This stands for the abbreviated name of the month.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
975 @item %B
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
976 This stands for the full name of the month.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
977 @item %c
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
978 This is a synonym for @samp{%x %X}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
979 @item %C
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
980 This has a locale-specific meaning. In the default locale (named C), it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
981 is equivalent to @samp{%A, %B %e, %Y}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
982 @item %d
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
983 This stands for the day of month, zero-padded.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
984 @item %D
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
985 This is a synonym for @samp{%m/%d/%y}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
986 @item %e
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
987 This stands for the day of month, blank-padded.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
988 @item %h
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
989 This is a synonym for @samp{%b}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
990 @item %H
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
991 This stands for the hour (00-23).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
992 @item %I
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
993 This stands for the hour (00-12).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
994 @item %j
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
995 This stands for the day of the year (001-366).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
996 @item %k
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
997 This stands for the hour (0-23), blank padded.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
998 @item %l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
999 This stands for the hour (1-12), blank padded.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1000 @item %m
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1001 This stands for the month (01-12).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1002 @item %M
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1003 This stands for the minute (00-59).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1004 @item %n
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1005 This stands for a newline.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1006 @item %p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1007 This stands for @samp{AM} or @samp{PM}, as appropriate.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1008 @item %r
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1009 This is a synonym for @samp{%I:%M:%S %p}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1010 @item %R
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1011 This is a synonym for @samp{%H:%M}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1012 @item %S
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1013 This stands for the seconds (00-60).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1014 @item %t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1015 This stands for a tab character.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1016 @item %T
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1017 This is a synonym for @samp{%H:%M:%S}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1018 @item %U
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1019 This stands for the week of the year (01-52), assuming that weeks
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1020 start on Sunday.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1021 @item %w
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1022 This stands for the numeric day of week (0-6). Sunday is day 0.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1023 @item %W
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1024 This stands for the week of the year (01-52), assuming that weeks
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1025 start on Monday.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1026 @item %x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1027 This has a locale-specific meaning. In the default locale (named C), it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1028 is equivalent to @samp{%D}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1029 @item %X
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1030 This has a locale-specific meaning. In the default locale (named C), it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1031 is equivalent to @samp{%T}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1032 @item %y
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1033 This stands for the year without century (00-99).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1034 @item %Y
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1035 This stands for the year with century.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1036 @item %Z
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1037 This stands for the time zone abbreviation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1038 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1039 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1040
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1041 @defun decode-time &optional specified-time
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1042 This function converts a time value into calendrical information. The
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1043 optional @var{specified-time} should be a list of
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1044 (@var{high} @var{low} . @var{ignored}) or (@var{high} . @var{low}), as from
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1045 @code{current-time} and @code{file-attributes}, or @code{nil} to use the
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1046 current time.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1047
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1048 The return value is a list of nine elements, as follows:
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1049
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1050 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1051 (@var{seconds} @var{minutes} @var{hour} @var{day} @var{month} @var{year} @var{dow} @var{dst} @var{zone})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1052 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1053
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1054 Here is what the elements mean:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1055
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1056 @table @var
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1057 @item sec
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1058 The number of seconds past the minute, as an integer between 0 and 59.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1059 @item minute
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1060 The number of minutes past the hour, as an integer between 0 and 59.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1061 @item hour
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1062 The hour of the day, as an integer between 0 and 23.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1063 @item day
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1064 The day of the month, as an integer between 1 and 31.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1065 @item month
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1066 The month of the year, as an integer between 1 and 12.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1067 @item year
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1068 The year, an integer typically greater than 1900.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1069 @item dow
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1070 The day of week, as an integer between 0 and 6, where 0 stands for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1071 Sunday.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1072 @item dst
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1073 @code{t} if daylight savings time is effect, otherwise @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1074 @item zone
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1075 An integer indicating the time zone, as the number of seconds east of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1076 Greenwich.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1077 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1078
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1079 Note that Common Lisp has different meanings for @var{dow} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1080 @var{zone}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1081 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1082
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1083 @defun encode-time seconds minutes hour day month year &optional zone
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1084 This function is the inverse of @code{decode-time}. It converts seven
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1085 items of calendrical data into a time value. For the meanings of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1086 arguments, see the table above under @code{decode-time}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1087
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1088 Year numbers less than 100 are treated just like other year numbers. If
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1089 you want them to stand for years above 1900, you must alter them yourself
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1090 before you call @code{encode-time}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1091
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1092 The optional argument @var{zone} defaults to the current time zone and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1093 its daylight savings time rules. If specified, it can be either a list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1094 (as you would get from @code{current-time-zone}) or an integer (as you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1095 would get from @code{decode-time}). The specified zone is used without
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1096 any further alteration for daylight savings time.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1097 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1098
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1099 @node Timers
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1100 @section Timers for Delayed Execution
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1101
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1102 You can set up a timer to call a function at a specified future time.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1103
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1104 @c All different in FSF 19
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1105 @defun add-timeout secs function object &optional resignal
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1106 This function adds a timeout, to be signaled after the timeout period
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1107 has elapsed. @var{secs} is a number of seconds, expressed as an integer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1108 or a float. @var{function} will be called after that many seconds have
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1109 elapsed, with one argument, the given @var{object}. If the optional
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1110 @var{resignal} argument is provided, then after this timeout expires,
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1111 @code{add-timeout} will automatically be called again with
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1112 @var{resignal} as the first argument.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1113
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1114 This function returns an object which is the @dfn{id} of this particular
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1115 timeout. You can pass that object to @code{disable-timeout} to turn off
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1116 the timeout before it has been signalled.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1117
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1118 The number of seconds may be expressed as a floating-point number, in which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1119 case some fractional part of a second will be used. Caveat: the usable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1120 timeout granularity will vary from system to system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1121
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1122 Adding a timeout causes a timeout event to be returned by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1123 @code{next-event}, and the function will be invoked by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1124 @code{dispatch-event}, so if XEmacs is in a tight loop, the function will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1125 not be invoked until the next call to sit-for or until the return to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1126 top-level (the same is true of process filters).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1127
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1128 WARNING: if you are thinking of calling add-timeout from inside of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1129 callback function as a way of resignalling a timeout, think again. There
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1130 is a race condition. That's why the @var{resignal} argument exists.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1131
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1132 (NOTE: In FSF Emacs, this function is called @code{run-at-time} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1133 has different semantics.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1134 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1135
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1136 @defun disable-timeout id
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1137 Cancel the requested action for @var{id}, which should be a value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1138 previously returned by @code{add-timeout}. This cancels the effect of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1139 that call to @code{add-timeout}; the arrival of the specified time will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1140 not cause anything special to happen.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1141 (NOTE: In FSF Emacs, this function is called @code{cancel-timer}.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1142 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1143
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1144 @node Terminal Input
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1145 @section Terminal Input
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1146 @cindex terminal input
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1147
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1148 This section describes functions and variables for recording or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1149 manipulating terminal input. See @ref{Display}, for related
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1150 functions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1151
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1152 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1153 * Input Modes:: Options for how input is processed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1154 * Translating Input:: Low level conversion of some characters or events
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1155 into others.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1156 * Recording Input:: Saving histories of recent or all input events.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1157 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1158
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1159 @node Input Modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1160 @subsection Input Modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1161 @cindex input modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1162 @cindex terminal input modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1163
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1164 @defun set-input-mode interrupt flow meta &optional quit-char console
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1165 This function sets the mode for reading keyboard input. If
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1166 @var{interrupt} is non-null, then XEmacs uses input interrupts. If it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1167 @code{nil}, then it uses @sc{cbreak} mode. When XEmacs communicates
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1168 directly with X, it ignores this argument and uses interrupts if that is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1169 the way it knows how to communicate.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1170
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1171 If @var{flow} is non-@code{nil}, then XEmacs uses @sc{xon/xoff} (@kbd{C-q},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1172 @kbd{C-s}) flow control for output to the terminal. This has no effect except
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1173 in @sc{cbreak} mode. @xref{Flow Control}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1174
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1175 The default setting is system dependent. Some systems always use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1176 @sc{cbreak} mode regardless of what is specified.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1177
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1178 @c Emacs 19 feature
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1179 The argument @var{meta} controls support for input character codes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1180 above 127. If @var{meta} is @code{t}, XEmacs converts characters with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1181 the 8th bit set into Meta characters. If @var{meta} is @code{nil},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1182 XEmacs disregards the 8th bit; this is necessary when the terminal uses
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1183 it as a parity bit. If @var{meta} is neither @code{t} nor @code{nil},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1184 XEmacs uses all 8 bits of input unchanged. This is good for terminals
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1185 using European 8-bit character sets.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1186
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1187 @c Emacs 19 feature
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1188 If @var{quit-char} is non-@code{nil}, it specifies the character to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1189 use for quitting. Normally this character is @kbd{C-g}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1190 @xref{Quitting}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1191 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1192
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1193 The @code{current-input-mode} function returns the input mode settings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1194 XEmacs is currently using.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1195
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1196 @c Emacs 19 feature
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1197 @defun current-input-mode &optional console
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1198 This function returns current mode for reading keyboard input. It
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1199 returns a list, corresponding to the arguments of @code{set-input-mode},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1200 of the form @code{(@var{interrupt} @var{flow} @var{meta} @var{quit})} in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1201 which:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1202 @table @var
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1203 @item interrupt
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1204 is non-@code{nil} when XEmacs is using interrupt-driven input. If
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1205 @code{nil}, Emacs is using @sc{cbreak} mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1206 @item flow
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1207 is non-@code{nil} if XEmacs uses @sc{xon/xoff} (@kbd{C-q}, @kbd{C-s})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1208 flow control for output to the terminal. This value has no effect
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1209 unless @var{interrupt} is non-@code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1210 @item meta
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1211 is @code{t} if XEmacs treats the eighth bit of input characters as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1212 the meta bit; @code{nil} means XEmacs clears the eighth bit of every
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1213 input character; any other value means XEmacs uses all eight bits as the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1214 basic character code.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1215 @item quit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1216 is the character XEmacs currently uses for quitting, usually @kbd{C-g}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1217 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1218 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1219
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1220 @node Translating Input
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1221 @subsection Translating Input Events
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1222 @cindex translating input events
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1223
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1224 This section describes features for translating input events into other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1225 input events before they become part of key sequences.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1226
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1227 @ignore Not in XEmacs yet.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1228 @c Emacs 19 feature
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1229 @defvar extra-keyboard-modifiers
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1230 This variable lets Lisp programs ``press'' the modifier keys on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1231 keyboard. The value is a bit mask:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1232
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1233 @table @asis
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1234 @item 1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1235 The @key{SHIFT} key.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1236 @item 2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1237 The @key{LOCK} key.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1238 @item 4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1239 The @key{CTL} key.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1240 @item 8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1241 The @key{META} key.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1242 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1243
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1244 Each time the user types a keyboard key, it is altered as if the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1245 modifier keys specified in the bit mask were held down.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1246
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1247 When using X windows, the program can ``press'' any of the modifier
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1248 keys in this way. Otherwise, only the @key{CTL} and @key{META} keys can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1249 be virtually pressed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1250 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1251
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1252 @defvar keyboard-translate-table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1253 This variable is the translate table for keyboard characters. It lets
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1254 you reshuffle the keys on the keyboard without changing any command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1255 bindings. Its value must be a string or @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1256
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1257 If @code{keyboard-translate-table} is a string, then each character read
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1258 from the keyboard is looked up in this string and the character in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1259 string is used instead. If the string is of length @var{n}, character codes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1260 @var{n} and up are untranslated.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1261
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1262 In the example below, we set @code{keyboard-translate-table} to a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1263 string of 128 characters. Then we fill it in to swap the characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1264 @kbd{C-s} and @kbd{C-\} and the characters @kbd{C-q} and @kbd{C-^}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1265 Subsequently, typing @kbd{C-\} has all the usual effects of typing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1266 @kbd{C-s}, and vice versa. (@xref{Flow Control} for more information on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1267 this subject.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1268
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1269 @cindex flow control example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1270 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1271 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1272 (defun evade-flow-control ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1273 "Replace C-s with C-\ and C-q with C-^."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1274 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1275 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1276 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1277 (let ((the-table (make-string 128 0)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1278 (let ((i 0))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1279 (while (< i 128)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1280 (aset the-table i i)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1281 (setq i (1+ i))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1282 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1283 ;; @r{Swap @kbd{C-s} and @kbd{C-\}.}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1284 (aset the-table ?\034 ?\^s)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1285 (aset the-table ?\^s ?\034)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1286 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1287 ;; @r{Swap @kbd{C-q} and @kbd{C-^}.}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1288 (aset the-table ?\036 ?\^q)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1289 (aset the-table ?\^q ?\036)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1290 (setq keyboard-translate-table the-table)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1291 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1292 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1293
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1294 Note that this translation is the first thing that happens to a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1295 character after it is read from the terminal. Record-keeping features
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1296 such as @code{recent-keys} and dribble files record the characters after
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1297 translation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1298 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1299
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1300 @defun keyboard-translate &rest pairs
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1301 This function modifies @code{keyboard-translate-table} to translate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1302 character code @var{from} into character code @var{to}. It creates
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1303 or enlarges the translate table if necessary. Multiple
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1304 @var{from}-@var{to} pairs may be specified.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1305 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1306 @end ignore
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1307
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1308 @defvar function-key-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1309 This variable holds a keymap that describes the character sequences
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1310 sent by function keys on an ordinary character terminal. This keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1311 uses the same data structure as other keymaps, but is used differently: it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1312 specifies translations to make while reading events.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1313
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1314 If @code{function-key-map} ``binds'' a key sequence @var{k} to a vector
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1315 @var{v}, then when @var{k} appears as a subsequence @emph{anywhere} in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1316 key sequence, it is replaced with the events in @var{v}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1317
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1318 For example, VT100 terminals send @kbd{@key{ESC} O P} when the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1319 keypad PF1 key is pressed. Therefore, we want XEmacs to translate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1320 that sequence of events into the single event @code{pf1}. We accomplish
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1321 this by ``binding'' @kbd{@key{ESC} O P} to @code{[pf1]} in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1322 @code{function-key-map}, when using a VT100.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1323
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1324 Thus, typing @kbd{C-c @key{PF1}} sends the character sequence @kbd{C-c
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1325 @key{ESC} O P}; later the function @code{read-key-sequence} translates
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1326 this back into @kbd{C-c @key{PF1}}, which it returns as the vector
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1327 @code{[?\C-c pf1]}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1328
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1329 Entries in @code{function-key-map} are ignored if they conflict with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1330 bindings made in the minor mode, local, or global keymaps. The intent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1331 is that the character sequences that function keys send should not have
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1332 command bindings in their own right.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1333
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1334 The value of @code{function-key-map} is usually set up automatically
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1335 according to the terminal's Terminfo or Termcap entry, but sometimes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1336 those need help from terminal-specific Lisp files. XEmacs comes with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1337 terminal-specific files for many common terminals; their main purpose is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1338 to make entries in @code{function-key-map} beyond those that can be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1339 deduced from Termcap and Terminfo. @xref{Terminal-Specific}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1340
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1341 Emacs versions 18 and earlier used totally different means of detecting
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1342 the character sequences that represent function keys.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1343 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1344
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1345 @defvar key-translation-map
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1346 This variable is another keymap used just like @code{function-key-map}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1347 to translate input events into other events. It differs from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1348 @code{function-key-map} in two ways:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1349
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1350 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1351 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1352 @code{key-translation-map} goes to work after @code{function-key-map} is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1353 finished; it receives the results of translation by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1354 @code{function-key-map}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1355
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1356 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1357 @code{key-translation-map} overrides actual key bindings.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1358 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1359
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1360 The intent of @code{key-translation-map} is for users to map one
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1361 character set to another, including ordinary characters normally bound
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1362 to @code{self-insert-command}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1363 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1364
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1365 @cindex key translation function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1366 You can use @code{function-key-map} or @code{key-translation-map} for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1367 more than simple aliases, by using a function, instead of a key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1368 sequence, as the ``translation'' of a key. Then this function is called
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1369 to compute the translation of that key.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1370
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1371 The key translation function receives one argument, which is the prompt
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1372 that was specified in @code{read-key-sequence}---or @code{nil} if the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1373 key sequence is being read by the editor command loop. In most cases
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1374 you can ignore the prompt value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1375
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1376 If the function reads input itself, it can have the effect of altering
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1377 the event that follows. For example, here's how to define @kbd{C-c h}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1378 to turn the character that follows into a Hyper character:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1379
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1380 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1381 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1382 (defun hyperify (prompt)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1383 (let ((e (read-event)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1384 (vector (if (numberp e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1385 (logior (lsh 1 20) e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1386 (if (memq 'hyper (event-modifiers e))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1387 e
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1388 (add-event-modifier "H-" e))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1389
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1390 (defun add-event-modifier (string e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1391 (let ((symbol (if (symbolp e) e (car e))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1392 (setq symbol (intern (concat string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1393 (symbol-name symbol))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1394 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1395 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1396 (if (symbolp e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1397 symbol
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1398 (cons symbol (cdr e)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1399
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1400 (define-key function-key-map "\C-ch" 'hyperify)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1401 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1402 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1403
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1404 @pindex iso-transl
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1405 @cindex Latin-1 character set (input)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1406 @cindex ISO Latin-1 characters (input)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1407 The @file{iso-transl} library uses this feature to provide a way of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1408 inputting non-ASCII Latin-1 characters.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1409
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1410 @node Recording Input
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1411 @subsection Recording Input
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1412
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1413 @defun recent-keys &optional number
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1414 This function returns a vector containing recent input events from the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1415 keyboard or mouse. By default, 100 events are recorded, which is how
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1416 many @code{recent-keys} returns.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1417
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1418 All input events are included, whether or not they were used as parts of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1419 key sequences. Thus, you always get the last 100 inputs, not counting
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1420 keyboard macros. (Events from keyboard macros are excluded because they
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1421 are less interesting for debugging; it should be enough to see the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1422 events that invoked the macros.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1423
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1424 If @var{number} is specified, not more than @var{number} events will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1425 returned. You may change the number of stored events using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1426 @code{set-recent-keys-ring-size}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1427 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1429 @defun recent-keys-ring-size
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1430 This function returns the number of recent events stored internally.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1431 This is also the maximum number of events @code{recent-keys} can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1432 return. By default, 100 events are stored.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1433 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1434
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1435 @defun set-recent-keys-ring-size size
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1436 This function changes the number of events stored by XEmacs and returned
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1437 by @code{recent-keys}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1438
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1439 For example, @code{(set-recent-keys-ring-size 250)} will make XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1440 remember last 250 events and will make @code{recent-keys} return last
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1441 250 events by default.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1442 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1443
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1444 @deffn Command open-dribble-file filename
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1445 @cindex dribble file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1446 This function opens a @dfn{dribble file} named @var{filename}. When a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1447 dribble file is open, each input event from the keyboard or mouse (but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1448 not those from keyboard macros) is written in that file. A
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1449 non-character event is expressed using its printed representation
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1450 surrounded by @samp{<@dots{}>}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1451
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1452 You close the dribble file by calling this function with an argument
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1453 of @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1454
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1455 This function is normally used to record the input necessary to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1456 trigger an XEmacs bug, for the sake of a bug report.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1457
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1458 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1459 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1460 (open-dribble-file "~/dribble")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1461 @result{} nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1462 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1463 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1464 @end deffn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1465
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1466 See also the @code{open-termscript} function (@pxref{Terminal Output}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1467
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1468 @node Terminal Output
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1469 @section Terminal Output
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1470 @cindex terminal output
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1471
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1472 The terminal output functions send output to the terminal or keep
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1473 track of output sent to the terminal. The function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1474 @code{device-baud-rate} tells you what XEmacs thinks is the output speed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1475 of the terminal.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1476
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1477 @defun device-baud-rate &optional device
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1478 This function's value is the output speed of the terminal associated
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1479 with @var{device}, as far as XEmacs knows. @var{device} defaults to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1480 selected device (usually the only device) if omitted. Changing this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1481 value does not change the speed of actual data transmission, but the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1482 value is used for calculations such as padding. This value has no
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1483 effect for window-system devices. (This is different in FSF Emacs, where
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1484 the baud rate also affects decisions about whether to scroll part of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1485 screen or repaint, even when using a window system.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1486
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1487 The value is measured in bits per second.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1488 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1489
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1490 XEmacs attempts to automatically initialize the baud rate by querying
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1491 the terminal. If you are running across a network, however, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1492 different parts of the network work are at different baud rates, the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1493 value returned by XEmacs may be different from the value used by your
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1494 local terminal. Some network protocols communicate the local terminal
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1495 speed to the remote machine, so that XEmacs and other programs can get
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1496 the proper value, but others do not. If XEmacs has the wrong value, it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1497 makes decisions that are less than optimal. To fix the problem, use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1498 @code{set-device-baud-rate}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1499
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1500 @defun set-device-baud-rate device baud-rate
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1501 This function sets the output speed of @var{device}. See
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1502 @code{device-baud-rate}. @var{device} defaults to the selected device
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1503 (usually the only device) if @code{nil}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1504 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1505
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1506 @defun send-string-to-terminal char-or-string &optional stdout-p device
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1507 This function sends @var{char-or-string} to the terminal without
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1508 alteration. Control characters in @var{char-or-string} have
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1509 terminal-dependent effects.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1510
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1511 If @var{device} is @code{nil}, this function writes to XEmacs's
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1512 stderr, or to stdout if @var{stdout-p} is non-@code{nil}. Otherwise,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1513 @var{device} should be a tty or stream device, and the function writes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1514 to the device's normal or error output, according to @var{stdout-p}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1515
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1516 One use of this function is to define function keys on terminals that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1517 have downloadable function key definitions. For example, this is how on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1518 certain terminals to define function key 4 to move forward four
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1519 characters (by transmitting the characters @kbd{C-u C-f} to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1520 computer):
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1521
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1522 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1523 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1524 (send-string-to-terminal "\eF4\^U\^F")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1525 @result{} nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1526 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1527 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1528 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1529
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1530 @deffn Command open-termscript filename
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1531 @cindex termscript file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1532 This function is used to open a @dfn{termscript file} that will record
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1533 all the characters sent by XEmacs to the terminal. (If there are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1534 multiple tty or stream devices, all characters sent to all such devices
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1535 are recorded.) The function returns @code{nil}. Termscript files are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1536 useful for investigating problems where XEmacs garbles the screen,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1537 problems that are due to incorrect Termcap entries or to undesirable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1538 settings of terminal options more often than to actual XEmacs bugs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1539 Once you are certain which characters were actually output, you can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1540 determine reliably whether they correspond to the Termcap specifications
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1541 in use.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1542
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1543 A @code{nil} value for @var{filename} stops recording terminal output.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1544
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1545 See also @code{open-dribble-file} in @ref{Terminal Input}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1546
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1547 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1548 @group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1549 (open-termscript "../junk/termscript")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1550 @result{} nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1551 @end group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1552 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1553 @end deffn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1554
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1555 @ignore Not in XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1556 @node Special Keysyms
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1557 @section System-Specific X11 Keysyms
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1558
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1559 To define system-specific X11 keysyms, set the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1560 @code{system-key-alist}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1561
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1562 @defvar system-key-alist
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1563 This variable's value should be an alist with one element for each
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1564 system-specific keysym. An element has this form: @code{(@var{code}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1565 . @var{symbol})}, where @var{code} is the numeric keysym code (not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1566 including the ``vendor specific'' bit, 1 << 28), and @var{symbol} is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1567 name for the function key.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1568
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1569 For example @code{(168 . mute-acute)} defines a system-specific key used
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1570 by HP X servers whose numeric code is (1 << 28) + 168.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1571
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1572 It is not a problem if the alist defines keysyms for other X servers, as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1573 long as they don't conflict with the ones used by the X server actually
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1574 in use.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1575
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1576 The variable is always local to the current X terminal and cannot be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1577 buffer-local. @xref{Multiple Displays}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1578 @end defvar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1579 @end ignore
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1580
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1581 @node Flow Control
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1582 @section Flow Control
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1583 @cindex flow control characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1584
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1585 This section attempts to answer the question ``Why does XEmacs choose
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1586 to use flow-control characters in its command character set?'' For a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1587 second view on this issue, read the comments on flow control in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1588 @file{emacs/INSTALL} file from the distribution; for help with Termcap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1589 entries and DEC terminal concentrators, see @file{emacs/etc/TERMS}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1590
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1591 @cindex @kbd{C-s}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1592 @cindex @kbd{C-q}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1593 At one time, most terminals did not need flow control, and none used
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1594 @code{C-s} and @kbd{C-q} for flow control. Therefore, the choice of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1595 @kbd{C-s} and @kbd{C-q} as command characters was uncontroversial.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1596 XEmacs, for economy of keystrokes and portability, used nearly all the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1597 @sc{ascii} control characters, with mnemonic meanings when possible;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1598 thus, @kbd{C-s} for search and @kbd{C-q} for quote.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1599
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1600 Later, some terminals were introduced which required these characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1601 for flow control. They were not very good terminals for full-screen
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1602 editing, so XEmacs maintainers did not pay attention. In later years,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1603 flow control with @kbd{C-s} and @kbd{C-q} became widespread among
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1604 terminals, but by this time it was usually an option. And the majority
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1605 of users, who can turn flow control off, were unwilling to switch to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1606 less mnemonic key bindings for the sake of flow control.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1607
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1608 So which usage is ``right'', XEmacs's or that of some terminal and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1609 concentrator manufacturers? This question has no simple answer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1610
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1611 One reason why we are reluctant to cater to the problems caused by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1612 @kbd{C-s} and @kbd{C-q} is that they are gratuitous. There are other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1613 techniques (albeit less common in practice) for flow control that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1614 preserve transparency of the character stream. Note also that their use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1615 for flow control is not an official standard. Interestingly, on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1616 model 33 teletype with a paper tape punch (which is very old), @kbd{C-s}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1617 and @kbd{C-q} were sent by the computer to turn the punch on and off!
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1618
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1619 As X servers and other window systems replace character-only
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1620 terminals, this problem is gradually being cured. For the mean time,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1621 XEmacs provides a convenient way of enabling flow control if you want it:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1622 call the function @code{enable-flow-control}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1623
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1624 @deffn Command enable-flow-control &optional argument
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1625 This function enables use of @kbd{C-s} and @kbd{C-q} for output flow
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1626 control, and provides the characters @kbd{C-\} and @kbd{C-^} as aliases
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1627 for them using @code{keyboard-translate-table} (@pxref{Translating Input}).
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1628
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1629 With optional argument @var{argument} (interactively the prefix
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1630 argument), enable flow control mode if @var{argument} is positive; else
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1631 disable it.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
1632 @end deffn
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1633
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1634 You can use the function @code{enable-flow-control-on} in your
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1635 @file{.emacs} file to enable flow control automatically on certain
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1636 terminal types.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1637
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1638 @defun enable-flow-control-on &rest termtypes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1639 This function enables flow control, and the aliases @kbd{C-\} and @kbd{C-^},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1640 if the terminal type is one of @var{termtypes}. For example:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1641
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1642 @smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1643 (enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1644 @end smallexample
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1645 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1646
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1647 Here is how @code{enable-flow-control} does its job:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1648
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1649 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1650 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1651 @cindex @sc{cbreak}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1652 It sets @sc{cbreak} mode for terminal input, and tells the operating
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1653 system to handle flow control, with @code{(set-input-mode nil t)}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1654
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1655 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1656 It sets up @code{keyboard-translate-table} to translate @kbd{C-\} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1657 @kbd{C-^} into @kbd{C-s} and @kbd{C-q}. Except at its very
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1658 lowest level, XEmacs never knows that the characters typed were anything
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1659 but @kbd{C-s} and @kbd{C-q}, so you can in effect type them as @kbd{C-\}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1660 and @kbd{C-^} even when they are input for other commands.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1661 @xref{Translating Input}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1662 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1663
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1664 If the terminal is the source of the flow control characters, then once
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1665 you enable kernel flow control handling, you probably can make do with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1666 less padding than normal for that terminal. You can reduce the amount
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1667 of padding by customizing the Termcap entry. You can also reduce it by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1668 setting @code{baud-rate} to a smaller value so that XEmacs uses a smaller
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1669 speed when calculating the padding needed. @xref{Terminal Output}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1670
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1671 @node Batch Mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1672 @section Batch Mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1673 @cindex batch mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1674 @cindex noninteractive use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1675
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1676 The command line option @samp{-batch} causes XEmacs to run
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1677 noninteractively. In this mode, XEmacs does not read commands from the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1678 terminal, it does not alter the terminal modes, and it does not expect
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1679 to be outputting to an erasable screen. The idea is that you specify
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1680 Lisp programs to run; when they are finished, XEmacs should exit. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1681 way to specify the programs to run is with @samp{-l @var{file}}, which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1682 loads the library named @var{file}, and @samp{-f @var{function}}, which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1683 calls @var{function} with no arguments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1684
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1685 Any Lisp program output that would normally go to the echo area,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1686 either using @code{message} or using @code{prin1}, etc., with @code{t}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1687 as the stream, goes instead to XEmacs's standard error descriptor when
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1688 in batch mode. Thus, XEmacs behaves much like a noninteractive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1689 application program. (The echo area output that XEmacs itself normally
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1690 generates, such as command echoing, is suppressed entirely.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1691
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1692 @defun noninteractive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1693 This function returns non-@code{nil} when XEmacs is running in batch mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1694 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1695
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1696 @defvar noninteractive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1697 This variable is non-@code{nil} when XEmacs is running in batch mode.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1698 Setting this variable to @code{nil}, however, will not change whether
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1699 XEmacs is running in batch mode, and will not change the return value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1700 of the @code{noninteractive} function.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1701 @end defvar