Mercurial > emacs
annotate lispref/os.texi @ 71710:dbbc0b93cfeb
(Forcing Redisplay, Displaying Messages, Temporary Displays, Font Selection,
Auto Faces, Font Lookup, Fringe Indicators, Display Margins, Image Descriptors,
Showing Images, Image Cache, Button Types, Making Buttons, Manipulating
Buttons, Button Buffer Commands, Display Table Format, Glyphs): Remove
@tindex.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 08 Jul 2006 18:11:49 +0000 |
parents | a6b7cfaf2ff5 |
children | 8bf060af43d7 |
rev | line source |
---|---|
6558 | 1 @c -*-texinfo-*- |
2 @c This is part of the GNU Emacs Lisp Reference Manual. | |
64889
e836425ee789
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64290
diff
changeset
|
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2002, 2003, |
68648
067115a6e738
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
66543
diff
changeset
|
4 @c 2004, 2005, 2006 Free Software Foundation, Inc. |
6558 | 5 @c See the file elisp.texi for copying conditions. |
6 @setfilename ../info/os | |
60996
acfc6c4c5fba
(System In): Change name of previous node.
Glenn Morris <rgm@gnu.org>
parents:
60452
diff
changeset
|
7 @node System Interface, Antinews, Display, Top |
6558 | 8 @chapter Operating System Interface |
9 | |
10 This chapter is about starting and getting out of Emacs, access to | |
9009 | 11 values in the operating system environment, and terminal input, output, |
6558 | 12 and flow control. |
13 | |
14 @xref{Building Emacs}, for related information. See also | |
15 @ref{Display}, for additional operating system status information | |
16 pertaining to the terminal and the screen. | |
17 | |
18 @menu | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
19 * Starting Up:: Customizing Emacs startup processing. |
6558 | 20 * Getting Out:: How exiting works (permanent or temporary). |
21 * System Environment:: Distinguish the name and kind of system. | |
22 * User Identification:: Finding the name and user id of the user. | |
23 * Time of Day:: Getting the current time. | |
64914
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
24 * Time Conversion:: Converting a time from numeric form |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
25 to calendrical data, and vice versa). |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
26 * Time Parsing:: Converting a time from numeric form to text |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
27 and vice versa. |
57989
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
28 * Processor Run Time:: Getting the run time used by Emacs. |
43037
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
29 * Time Calculations:: Adding, subtracting, comparing times, etc. |
6558 | 30 * Timers:: Setting a timer to call a function at a certain time. |
31 * Terminal Input:: Recording terminal input for debugging. | |
32 * Terminal Output:: Recording terminal output for debugging. | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
33 * Sound Output:: Playing sounds on the computer's speaker. |
46228 | 34 * X11 Keysyms:: Operating on key symbols for X Windows |
6558 | 35 * Batch Mode:: Running Emacs without terminal interaction. |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
36 * Session Management:: Saving and restoring state with X Session Management. |
6558 | 37 @end menu |
38 | |
39 @node Starting Up | |
40 @section Starting Up Emacs | |
41 | |
42 This section describes what Emacs does when it is started, and how you | |
43 can customize these actions. | |
44 | |
45 @menu | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
46 * Startup Summary:: Sequence of actions Emacs performs at startup. |
6558 | 47 * Init File:: Details on reading the init file (@file{.emacs}). |
48 * Terminal-Specific:: How the terminal-specific Lisp file is read. | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
49 * Command-Line Arguments:: How command-line arguments are processed, |
6558 | 50 and how you can customize them. |
51 @end menu | |
52 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
53 @node Startup Summary |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
54 @subsection Summary: Sequence of Actions at Startup |
6558 | 55 @cindex initialization |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
56 @cindex startup of Emacs |
6558 | 57 @cindex @file{startup.el} |
58 | |
59 The order of operations performed (in @file{startup.el}) by Emacs when | |
60 it is started up is as follows: | |
61 | |
62 @enumerate | |
63 @item | |
28603
cb9db16dba12
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27765
diff
changeset
|
64 It adds subdirectories to @code{load-path}, by running the file named |
cb9db16dba12
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27765
diff
changeset
|
65 @file{subdirs.el} in each directory in the list. Normally this file |
cb9db16dba12
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27765
diff
changeset
|
66 adds the directory's subdirectories to the list, and these will be |
cb9db16dba12
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27765
diff
changeset
|
67 scanned in their turn. The files @file{subdirs.el} are normally |
cb9db16dba12
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27765
diff
changeset
|
68 generated automatically by Emacs installation. |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
69 |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
70 @item |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
71 It sets the language environment and the terminal coding system, |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
72 if requested by environment variables such as @code{LANG}. |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
73 |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
74 @item |
6558 | 75 It loads the initialization library for the window system, if you are |
76 using a window system. This library's name is | |
77 @file{term/@var{windowsystem}-win.el}. | |
78 | |
79 @item | |
12098 | 80 It processes the initial options. (Some of them are handled |
81 even earlier than this.) | |
82 | |
83 @item | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
84 It initializes the window frame and faces, if appropriate. |
6558 | 85 |
86 @item | |
87 It runs the normal hook @code{before-init-hook}. | |
88 | |
89 @item | |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
90 It loads the library @file{site-start} (if any), unless the option |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
91 @samp{-Q} (or @samp{--no-site-file}) was specified. The library's file |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
92 name is usually @file{site-start.el}. |
6558 | 93 @cindex @file{site-start.el} |
94 | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
95 @item |
63583
99e9892a51d9
Fix formatting ugliness.
Richard M. Stallman <rms@gnu.org>
parents:
63525
diff
changeset
|
96 It loads your init file (usually @file{~/.emacs}), unless the option |
99e9892a51d9
Fix formatting ugliness.
Richard M. Stallman <rms@gnu.org>
parents:
63525
diff
changeset
|
97 @samp{-q} (or @samp{--no-init-file}), @samp{-Q}, or @samp{--batch} was |
99e9892a51d9
Fix formatting ugliness.
Richard M. Stallman <rms@gnu.org>
parents:
63525
diff
changeset
|
98 specified on the command line. The @samp{-u} option can specify |
99e9892a51d9
Fix formatting ugliness.
Richard M. Stallman <rms@gnu.org>
parents:
63525
diff
changeset
|
99 another user whose home directory should be used instead of @file{~}. |
6558 | 100 |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
101 @item |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
102 It loads the library @file{default} (if any), unless |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
103 @code{inhibit-default-init} is non-@code{nil}. (This is not done in |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
104 @samp{-batch} mode, or if @samp{-Q} or @samp{-q} was specified on the |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
105 command line.) The library's file name is usually @file{default.el}. |
6558 | 106 @cindex @file{default.el} |
107 | |
108 @item | |
109 It runs the normal hook @code{after-init-hook}. | |
110 | |
111 @item | |
112 It sets the major mode according to @code{initial-major-mode}, provided | |
113 the buffer @samp{*scratch*} is still current and still in Fundamental | |
114 mode. | |
115 | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
116 @item |
6558 | 117 It loads the terminal-specific Lisp file, if any, except when in batch |
118 mode or using a window system. | |
119 | |
120 @item | |
121 It displays the initial echo area message, unless you have suppressed | |
65171
b6de4c2b1b34
(Startup Summary): Fix the description of the initial startup message display.
Eli Zaretskii <eliz@gnu.org>
parents:
64914
diff
changeset
|
122 that with @code{inhibit-startup-echo-area-message}. |
6558 | 123 |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
124 @item |
12098 | 125 It processes the action arguments from the command line. |
6558 | 126 |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
127 @item |
27353
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
128 It runs @code{emacs-startup-hook} and then @code{term-setup-hook}. |
6558 | 129 |
130 @item | |
131 It calls @code{frame-notice-user-settings}, which modifies the | |
132 parameters of the selected frame according to whatever the init files | |
133 specify. | |
134 | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
135 @item |
6558 | 136 It runs @code{window-setup-hook}. @xref{Window Systems}. |
137 | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
138 @item |
9009 | 139 It displays copyleft, nonwarranty, and basic use information, provided |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
140 the value of @code{inhibit-startup-message} is @code{nil}, you didn't |
65171
b6de4c2b1b34
(Startup Summary): Fix the description of the initial startup message display.
Eli Zaretskii <eliz@gnu.org>
parents:
64914
diff
changeset
|
141 specify @samp{--no-splash} or @samp{-Q}. |
6558 | 142 @end enumerate |
143 | |
144 @defopt inhibit-startup-message | |
145 This variable inhibits the initial startup messages (the nonwarranty, | |
146 etc.). If it is non-@code{nil}, then the messages are not printed. | |
147 | |
148 This variable exists so you can set it in your personal init file, once | |
149 you are familiar with the contents of the startup message. Do not set | |
150 this variable in the init file of a new user, or in a way that affects | |
151 more than one user, because that would prevent new users from receiving | |
152 the information they are supposed to see. | |
153 @end defopt | |
154 | |
155 @defopt inhibit-startup-echo-area-message | |
156 This variable controls the display of the startup echo area message. | |
157 You can suppress the startup echo area message by adding text with this | |
25875 | 158 form to your init file: |
6558 | 159 |
160 @example | |
161 (setq inhibit-startup-echo-area-message | |
162 "@var{your-login-name}") | |
163 @end example | |
164 | |
25875 | 165 Emacs explicitly checks for an expression as shown above in your init |
166 file; your login name must appear in the expression as a Lisp string | |
167 constant. Other methods of setting | |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
168 @code{inhibit-startup-echo-area-message} to the same value do not |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
169 inhibit the startup message. |
6558 | 170 |
171 This way, you can easily inhibit the message for yourself if you wish, | |
25875 | 172 but thoughtless copying of your init file will not inhibit the message |
173 for someone else. | |
6558 | 174 @end defopt |
175 | |
176 @node Init File | |
25875 | 177 @subsection The Init File, @file{.emacs} |
6558 | 178 @cindex init file |
179 @cindex @file{.emacs} | |
180 | |
25875 | 181 When you start Emacs, it normally attempts to load your @dfn{init |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
182 file}, a file in your home directory. Its normal name is |
66543
673d94c09ed4
Document ~/.emacs.d/init.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
65171
diff
changeset
|
183 @file{.emacs}, but you can also call it @file{.emacs.el}. |
673d94c09ed4
Document ~/.emacs.d/init.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
65171
diff
changeset
|
184 Alternatively, you can use a file named @file{init.el} in a |
673d94c09ed4
Document ~/.emacs.d/init.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
65171
diff
changeset
|
185 subdirectory @file{.emacs.d}. Whichever place you use, you can also |
673d94c09ed4
Document ~/.emacs.d/init.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
65171
diff
changeset
|
186 compile the file (@pxref{Byte Compilation}); then the actual file |
673d94c09ed4
Document ~/.emacs.d/init.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
65171
diff
changeset
|
187 loaded will be @file{.emacs.elc} or @file{init.elc}. |
25875 | 188 |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
189 The command-line switches @samp{-q}, @samp{-Q}, and @samp{-u} |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
190 control whether and where to find the init file; @samp{-q} (and the |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
191 stronger @samp{-Q}) says not to load an init file, while @samp{-u |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
192 @var{user}} says to load @var{user}'s init file instead of yours. |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
193 @xref{Entering Emacs,,, emacs, The GNU Emacs Manual}. If neither |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
194 option is specified, Emacs uses the @code{LOGNAME} environment |
25875 | 195 variable, or the @code{USER} (most systems) or @code{USERNAME} (MS |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
196 systems) variable, to find your home directory and thus your init |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
197 file; this way, even if you have su'd, Emacs still loads your own init |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
198 file. If those environment variables are absent, though, Emacs uses |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
199 your user-id to find your home directory. |
6558 | 200 |
201 @cindex default init file | |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
202 A site may have a @dfn{default init file}, which is the library |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
203 named @file{default.el}. Emacs finds the @file{default.el} file |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
204 through the standard search path for libraries (@pxref{How Programs Do |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
205 Loading}). The Emacs distribution does not come with this file; sites |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
206 may provide one for local customizations. If the default init file |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
207 exists, it is loaded whenever you start Emacs, except in batch mode or |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
208 if @samp{-q} (or @samp{-Q}) is specified. But your own personal init |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
209 file, if any, is loaded first; if it sets @code{inhibit-default-init} |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
210 to a non-@code{nil} value, then Emacs does not subsequently load the |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
211 @file{default.el} file. |
6558 | 212 |
213 Another file for site-customization is @file{site-start.el}. Emacs | |
214 loads this @emph{before} the user's init file. You can inhibit the | |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
215 loading of this file with the option @samp{--no-site-file}. |
6558 | 216 |
12098 | 217 @defvar site-run-file |
22267
dfac7398266b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22252
diff
changeset
|
218 This variable specifies the site-customization file to load before the |
dfac7398266b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22252
diff
changeset
|
219 user's init file. Its normal value is @code{"site-start"}. The only |
dfac7398266b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22252
diff
changeset
|
220 way you can change it with real effect is to do so before dumping |
dfac7398266b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22252
diff
changeset
|
221 Emacs. |
12098 | 222 @end defvar |
223 | |
50475
b65aa1d740eb
Fix cross references.
Juanma Barranquero <lekktu@gmail.com>
parents:
49549
diff
changeset
|
224 @xref{Init Examples,, Init File Examples, emacs, The GNU Emacs Manual}, for |
6558 | 225 examples of how to make various commonly desired customizations in your |
226 @file{.emacs} file. | |
227 | |
228 @defopt inhibit-default-init | |
229 This variable prevents Emacs from loading the default initialization | |
230 library file for your session of Emacs. If its value is non-@code{nil}, | |
231 then the default library is not loaded. The default value is | |
232 @code{nil}. | |
233 @end defopt | |
234 | |
235 @defvar before-init-hook | |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
236 This normal hook is run, once, just before loading all the init files |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
237 (the user's init file, @file{default.el}, and/or @file{site-start.el}). |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
238 (The only way to change it with real effect is before dumping Emacs.) |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
239 @end defvar |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
240 |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
241 @defvar after-init-hook |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
242 This normal hook is run, once, just after loading all the init files |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
243 (the user's init file, @file{default.el}, and/or @file{site-start.el}), |
27353
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
244 before loading the terminal-specific library and processing the |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
245 command-line action arguments. |
27353
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
246 @end defvar |
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
247 |
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
248 @defvar emacs-startup-hook |
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
249 This normal hook is run, once, just after handling the command line |
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
250 arguments, just before @code{term-setup-hook}. |
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
251 @end defvar |
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
252 |
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
253 @defvar user-init-file |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
254 This variable holds the absolute file name of the user's init file. If the |
27353
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
255 actual init file loaded is a compiled file, such as @file{.emacs.elc}, |
611b3854d888
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27259
diff
changeset
|
256 the value refers to the corresponding source file. |
6558 | 257 @end defvar |
258 | |
259 @node Terminal-Specific | |
260 @subsection Terminal-Specific Initialization | |
261 @cindex terminal-specific initialization | |
262 | |
263 Each terminal type can have its own Lisp library that Emacs loads when | |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
264 run on that type of terminal. The library's name is constructed by |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
265 concatenating the value of the variable @code{term-file-prefix} and the |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
266 terminal type (specified by the environment variable @code{TERM}). |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
267 Normally, @code{term-file-prefix} has the value |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
268 @code{"term/"}; changing this is not recommended. Emacs finds the file |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
269 in the normal manner, by searching the @code{load-path} directories, and |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
270 trying the @samp{.elc} and @samp{.el} suffixes. |
6558 | 271 |
70640
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
272 @cindex Termcap |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
273 The usual function of a terminal-specific library is to enable |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
274 special keys to send sequences that Emacs can recognize. It may also |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
275 need to set or add to @code{function-key-map} if the Termcap or |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
276 Terminfo entry does not specify all the terminal's function keys. |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
277 @xref{Terminal Input}. |
6558 | 278 |
70640
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
279 When the name of the terminal type contains a hyphen, and no library |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
280 is found whose name is identical to the terminal's name, Emacs strips |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
281 from the terminal's name the last hyphen and everything that follows |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
282 it, and tries again. This process is repeated until Emacs finds a |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
283 matching library or until there are no more hyphens in the name (the |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
284 latter means the terminal doesn't have any library specific to it). |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
285 Thus, for example, if there are no @samp{aaa-48} and @samp{aaa-30} |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
286 libraries, Emacs will try the same library @file{term/aaa.el} for |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
287 terminal types @samp{aaa-48} and @samp{aaa-30-rv}. If necessary, the |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
288 library can evaluate @code{(getenv "TERM")} to find the full name of |
e617f5abce58
(Terminal-Specific): More accurate description of how Emacs searches for the
Eli Zaretskii <eliz@gnu.org>
parents:
69893
diff
changeset
|
289 the terminal type.@refill |
6558 | 290 |
25875 | 291 Your init file can prevent the loading of the |
6558 | 292 terminal-specific library by setting the variable |
293 @code{term-file-prefix} to @code{nil}. This feature is useful when | |
294 experimenting with your own peculiar customizations. | |
295 | |
296 You can also arrange to override some of the actions of the | |
297 terminal-specific library by setting the variable | |
298 @code{term-setup-hook}. This is a normal hook which Emacs runs using | |
299 @code{run-hooks} at the end of Emacs initialization, after loading both | |
25875 | 300 your init file and any terminal-specific libraries. You can |
6558 | 301 use this variable to define initializations for terminals that do not |
302 have their own libraries. @xref{Hooks}. | |
303 | |
304 @defvar term-file-prefix | |
305 @cindex @code{TERM} environment variable | |
306 If the @code{term-file-prefix} variable is non-@code{nil}, Emacs loads | |
307 a terminal-specific initialization file as follows: | |
308 | |
309 @example | |
310 (load (concat term-file-prefix (getenv "TERM"))) | |
311 @end example | |
312 | |
313 @noindent | |
314 You may set the @code{term-file-prefix} variable to @code{nil} in your | |
25875 | 315 init file if you do not wish to load the |
6558 | 316 terminal-initialization file. To do this, put the following in |
25875 | 317 your init file: @code{(setq term-file-prefix nil)}. |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
318 |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
319 On MS-DOS, if the environment variable @code{TERM} is not set, Emacs |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
320 uses @samp{internal} as the terminal type. |
6558 | 321 @end defvar |
322 | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
323 @defvar term-setup-hook |
9009 | 324 This variable is a normal hook that Emacs runs after loading your |
25875 | 325 init file, the default initialization file (if any) and the |
6558 | 326 terminal-specific Lisp file. |
327 | |
328 You can use @code{term-setup-hook} to override the definitions made by a | |
329 terminal-specific file. | |
330 @end defvar | |
331 | |
332 See @code{window-setup-hook} in @ref{Window Systems}, for a related | |
333 feature. | |
334 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
335 @node Command-Line Arguments |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
336 @subsection Command-Line Arguments |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
337 @cindex command-line arguments |
6558 | 338 |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
339 You can use command-line arguments to request various actions when you |
6558 | 340 start Emacs. Since you do not need to start Emacs more than once per |
341 day, and will often leave your Emacs session running longer than that, | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
342 command-line arguments are hardly ever used. As a practical matter, it |
6558 | 343 is best to avoid making the habit of using them, since this habit would |
344 encourage you to kill and restart Emacs unnecessarily often. These | |
345 options exist for two reasons: to be compatible with other editors (for | |
346 invocation by other programs) and to enable shell scripts to run | |
347 specific Lisp programs. | |
348 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
349 This section describes how Emacs processes command-line arguments, |
6558 | 350 and how you can customize them. |
351 | |
352 @ignore | |
353 (Note that some other editors require you to start afresh each time | |
354 you want to edit a file. With this kind of editor, you will probably | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
355 specify the file as a command-line argument. The recommended way to |
6558 | 356 use GNU Emacs is to start it only once, just after you log in, and do |
357 all your editing in the same Emacs process. Each time you want to edit | |
358 a different file, you visit it with the existing Emacs, which eventually | |
359 comes to have many files in it ready for editing. Usually you do not | |
360 kill the Emacs until you are about to log out.) | |
361 @end ignore | |
362 | |
363 @defun command-line | |
9009 | 364 This function parses the command line that Emacs was called with, |
25875 | 365 processes it, loads the user's init file and displays the |
9009 | 366 startup messages. |
6558 | 367 @end defun |
368 | |
369 @defvar command-line-processed | |
370 The value of this variable is @code{t} once the command line has been | |
371 processed. | |
372 | |
373 If you redump Emacs by calling @code{dump-emacs}, you may wish to set | |
374 this variable to @code{nil} first in order to cause the new dumped Emacs | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
375 to process its new command-line arguments. |
6558 | 376 @end defvar |
377 | |
378 @defvar command-switch-alist | |
379 @cindex switches on command line | |
380 @cindex options on command line | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
381 @cindex command-line options |
6558 | 382 The value of this variable is an alist of user-defined command-line |
383 options and associated handler functions. This variable exists so you | |
384 can add elements to it. | |
385 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
386 A @dfn{command-line option} is an argument on the command line, which |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
387 has the form: |
6558 | 388 |
389 @example | |
390 -@var{option} | |
391 @end example | |
392 | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
393 The elements of the @code{command-switch-alist} look like this: |
6558 | 394 |
395 @example | |
396 (@var{option} . @var{handler-function}) | |
397 @end example | |
398 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
399 The @sc{car}, @var{option}, is a string, the name of a command-line |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
400 option (not including the initial hyphen). The @var{handler-function} |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
401 is called to handle @var{option}, and receives the option name as its |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
402 sole argument. |
6558 | 403 |
404 In some cases, the option is followed in the command line by an | |
405 argument. In these cases, the @var{handler-function} can find all the | |
406 remaining command-line arguments in the variable | |
407 @code{command-line-args-left}. (The entire list of command-line | |
408 arguments is in @code{command-line-args}.) | |
409 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
410 The command-line arguments are parsed by the @code{command-line-1} |
69893
8bba8d71e8cd
(Command-Line Arguments): Update xref to emacs manual
Eli Zaretskii <eliz@gnu.org>
parents:
68648
diff
changeset
|
411 function in the @file{startup.el} file. See also @ref{Emacs |
8bba8d71e8cd
(Command-Line Arguments): Update xref to emacs manual
Eli Zaretskii <eliz@gnu.org>
parents:
68648
diff
changeset
|
412 Invocation, , Command Line Arguments for Emacs Invocation, emacs, The |
8bba8d71e8cd
(Command-Line Arguments): Update xref to emacs manual
Eli Zaretskii <eliz@gnu.org>
parents:
68648
diff
changeset
|
413 GNU Emacs Manual}. |
6558 | 414 @end defvar |
415 | |
416 @defvar command-line-args | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
417 The value of this variable is the list of command-line arguments passed |
6558 | 418 to Emacs. |
419 @end defvar | |
420 | |
421 @defvar command-line-functions | |
422 This variable's value is a list of functions for handling an | |
423 unrecognized command-line argument. Each time the next argument to be | |
424 processed has no special meaning, the functions in this list are called, | |
9009 | 425 in order of appearance, until one of them returns a non-@code{nil} |
6558 | 426 value. |
427 | |
428 These functions are called with no arguments. They can access the | |
429 command-line argument under consideration through the variable | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
430 @code{argi}, which is bound temporarily at this point. The remaining |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
431 arguments (not including the current one) are in the variable |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
432 @code{command-line-args-left}. |
6558 | 433 |
434 When a function recognizes and processes the argument in @code{argi}, it | |
435 should return a non-@code{nil} value to say it has dealt with that | |
436 argument. If it has also dealt with some of the following arguments, it | |
437 can indicate that by deleting them from @code{command-line-args-left}. | |
438 | |
439 If all of these functions return @code{nil}, then the argument is used | |
440 as a file name to visit. | |
441 @end defvar | |
442 | |
443 @node Getting Out | |
444 @section Getting Out of Emacs | |
445 @cindex exiting Emacs | |
446 | |
447 There are two ways to get out of Emacs: you can kill the Emacs job, | |
448 which exits permanently, or you can suspend it, which permits you to | |
449 reenter the Emacs process later. As a practical matter, you seldom kill | |
450 Emacs---only when you are about to log out. Suspending is much more | |
451 common. | |
452 | |
453 @menu | |
454 * Killing Emacs:: Exiting Emacs irreversibly. | |
455 * Suspending Emacs:: Exiting Emacs reversibly. | |
456 @end menu | |
457 | |
458 @node Killing Emacs | |
459 @comment node-name, next, previous, up | |
460 @subsection Killing Emacs | |
461 @cindex killing Emacs | |
462 | |
463 Killing Emacs means ending the execution of the Emacs process. The | |
464 parent process normally resumes control. The low-level primitive for | |
465 killing Emacs is @code{kill-emacs}. | |
466 | |
467 @defun kill-emacs &optional exit-data | |
468 This function exits the Emacs process and kills it. | |
469 | |
470 If @var{exit-data} is an integer, then it is used as the exit status | |
471 of the Emacs process. (This is useful primarily in batch operation; see | |
472 @ref{Batch Mode}.) | |
473 | |
474 If @var{exit-data} is a string, its contents are stuffed into the | |
475 terminal input buffer so that the shell (or whatever program next reads | |
476 input) can read them. | |
477 @end defun | |
478 | |
479 All the information in the Emacs process, aside from files that have | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
480 been saved, is lost when the Emacs process is killed. Because killing |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
481 Emacs inadvertently can lose a lot of work, Emacs queries for |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
482 confirmation before actually terminating if you have buffers that need |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
483 saving or subprocesses that are running. This is done in the function |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
484 @code{save-buffers-kill-emacs}, the higher level function from which |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
485 @code{kill-emacs} is usually called. |
6558 | 486 |
487 @defvar kill-emacs-query-functions | |
488 After asking the standard questions, @code{save-buffers-kill-emacs} | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
489 calls the functions in the list @code{kill-emacs-query-functions}, in |
6558 | 490 order of appearance, with no arguments. These functions can ask for |
491 additional confirmation from the user. If any of them returns | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
492 @code{nil}, @code{save-buffers-kill-emacs} does not kill Emacs, and |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
493 does not run the remaining functions in this hook. Calling |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
494 @code{kill-emacs} directly does not run this hook. |
6558 | 495 @end defvar |
496 | |
497 @defvar kill-emacs-hook | |
498 This variable is a normal hook; once @code{save-buffers-kill-emacs} is | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
499 finished with all file saving and confirmation, it calls |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
500 @code{kill-emacs} which runs the functions in this hook. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
501 @code{kill-emacs} does not run this hook in batch mode. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
502 |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
503 @code{kill-emacs} may be invoked directly (that is not via |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
504 @code{save-buffers-kill-emacs}) if the terminal is disconnected, or in |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
505 similar situations where interaction with the user is not possible. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
506 Thus, if your hook needs to interact with the user, put it on |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
507 @code{kill-emacs-query-functions}; if it needs to run regardless of |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
508 how Emacs is killed, put it on @code{kill-emacs-hook}. |
6558 | 509 @end defvar |
510 | |
511 @node Suspending Emacs | |
512 @subsection Suspending Emacs | |
513 @cindex suspending Emacs | |
514 | |
515 @dfn{Suspending Emacs} means stopping Emacs temporarily and returning | |
516 control to its superior process, which is usually the shell. This | |
517 allows you to resume editing later in the same Emacs process, with the | |
518 same buffers, the same kill ring, the same undo history, and so on. To | |
519 resume Emacs, use the appropriate command in the parent shell---most | |
520 likely @code{fg}. | |
521 | |
522 Some operating systems do not support suspension of jobs; on these | |
523 systems, ``suspension'' actually creates a new shell temporarily as a | |
524 subprocess of Emacs. Then you would exit the shell to return to Emacs. | |
525 | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
526 Suspension is not useful with window systems, because the Emacs job |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
527 may not have a parent that can resume it again, and in any case you can |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
528 give input to some other job such as a shell merely by moving to a |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
529 different window. Therefore, suspending is not allowed when Emacs is using |
35476 | 530 a window system (X or MS Windows). |
6558 | 531 |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
532 @defun suspend-emacs &optional string |
6558 | 533 This function stops Emacs and returns control to the superior process. |
534 If and when the superior process resumes Emacs, @code{suspend-emacs} | |
535 returns @code{nil} to its caller in Lisp. | |
536 | |
537 If @var{string} is non-@code{nil}, its characters are sent to be read | |
538 as terminal input by Emacs's superior shell. The characters in | |
539 @var{string} are not echoed by the superior shell; only the results | |
540 appear. | |
541 | |
542 Before suspending, @code{suspend-emacs} runs the normal hook | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
543 @code{suspend-hook}. |
6558 | 544 |
9009 | 545 After the user resumes Emacs, @code{suspend-emacs} runs the normal hook |
6558 | 546 @code{suspend-resume-hook}. @xref{Hooks}. |
547 | |
548 The next redisplay after resumption will redraw the entire screen, | |
549 unless the variable @code{no-redraw-on-reenter} is non-@code{nil} | |
550 (@pxref{Refresh Screen}). | |
551 | |
552 In the following example, note that @samp{pwd} is not echoed after | |
553 Emacs is suspended. But it is read and executed by the shell. | |
554 | |
555 @smallexample | |
556 @group | |
557 (suspend-emacs) | |
558 @result{} nil | |
559 @end group | |
560 | |
561 @group | |
562 (add-hook 'suspend-hook | |
563 (function (lambda () | |
564 (or (y-or-n-p | |
565 "Really suspend? ") | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
566 (error "Suspend canceled"))))) |
6558 | 567 @result{} (lambda nil |
568 (or (y-or-n-p "Really suspend? ") | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
569 (error "Suspend canceled"))) |
6558 | 570 @end group |
571 @group | |
572 (add-hook 'suspend-resume-hook | |
573 (function (lambda () (message "Resumed!")))) | |
574 @result{} (lambda nil (message "Resumed!")) | |
575 @end group | |
576 @group | |
577 (suspend-emacs "pwd") | |
578 @result{} nil | |
579 @end group | |
580 @group | |
581 ---------- Buffer: Minibuffer ---------- | |
582 Really suspend? @kbd{y} | |
583 ---------- Buffer: Minibuffer ---------- | |
584 @end group | |
585 | |
586 @group | |
587 ---------- Parent Shell ---------- | |
588 lewis@@slug[23] % /user/lewis/manual | |
589 lewis@@slug[24] % fg | |
590 @end group | |
591 | |
592 @group | |
593 ---------- Echo Area ---------- | |
594 Resumed! | |
595 @end group | |
596 @end smallexample | |
597 @end defun | |
598 | |
599 @defvar suspend-hook | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
600 This variable is a normal hook that Emacs runs before suspending. |
6558 | 601 @end defvar |
602 | |
603 @defvar suspend-resume-hook | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
604 This variable is a normal hook that Emacs runs on resuming |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
605 after a suspension. |
6558 | 606 @end defvar |
607 | |
608 @node System Environment | |
609 @section Operating System Environment | |
610 @cindex operating system environment | |
611 | |
612 Emacs provides access to variables in the operating system environment | |
613 through various functions. These variables include the name of the | |
52978
1a5c50faf357
Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents:
52842
diff
changeset
|
614 system, the user's @acronym{UID}, and so on. |
6558 | 615 |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
616 @defvar system-configuration |
63583
99e9892a51d9
Fix formatting ugliness.
Richard M. Stallman <rms@gnu.org>
parents:
63525
diff
changeset
|
617 This variable holds the standard GNU configuration name for the |
99e9892a51d9
Fix formatting ugliness.
Richard M. Stallman <rms@gnu.org>
parents:
63525
diff
changeset
|
618 hardware/software configuration of your system, as a string. The |
99e9892a51d9
Fix formatting ugliness.
Richard M. Stallman <rms@gnu.org>
parents:
63525
diff
changeset
|
619 convenient way to test parts of this string is with |
99e9892a51d9
Fix formatting ugliness.
Richard M. Stallman <rms@gnu.org>
parents:
63525
diff
changeset
|
620 @code{string-match}. |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
621 @end defvar |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
622 |
6558 | 623 @defvar system-type |
12098 | 624 The value of this variable is a symbol indicating the type of operating |
625 system Emacs is operating on. Here is a table of the possible values: | |
6558 | 626 |
627 @table @code | |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
628 @item alpha-vms |
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
629 VMS on the Alpha. |
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
630 |
6558 | 631 @item aix-v3 |
632 AIX. | |
633 | |
634 @item berkeley-unix | |
635 Berkeley BSD. | |
636 | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
637 @item cygwin |
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
638 Cygwin. |
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
639 |
12098 | 640 @item dgux |
641 Data General DGUX operating system. | |
642 | |
643 @item gnu | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
644 the GNU system (using the GNU kernel, which consists of the HURD and Mach). |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
645 |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
646 @item gnu/linux |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
647 A GNU/Linux system---that is, a variant GNU system, using the Linux |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
648 kernel. (These systems are the ones people often call ``Linux,'' but |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
649 actually Linux is just the kernel, not the whole system.) |
12098 | 650 |
6558 | 651 @item hpux |
12098 | 652 Hewlett-Packard HPUX operating system. |
6558 | 653 |
654 @item irix | |
655 Silicon Graphics Irix system. | |
656 | |
12098 | 657 @item ms-dos |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
658 Microsoft MS-DOS ``operating system.'' Emacs compiled with DJGPP for |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
659 MS-DOS binds @code{system-type} to @code{ms-dos} even when you run it on |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
660 MS-Windows. |
12098 | 661 |
662 @item next-mach | |
663 NeXT Mach-based system. | |
7277
6a2af30d33fe
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
7086
diff
changeset
|
664 |
6558 | 665 @item rtu |
666 Masscomp RTU, UCB universe. | |
667 | |
668 @item unisoft-unix | |
669 UniSoft UniPlus. | |
670 | |
671 @item usg-unix-v | |
672 AT&T System V. | |
673 | |
674 @item vax-vms | |
675 VAX VMS. | |
676 | |
12098 | 677 @item windows-nt |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
678 Microsoft windows NT. The same executable supports Windows 9X, but the |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
679 value of @code{system-type} is @code{windows-nt} in either case. |
12098 | 680 |
6558 | 681 @item xenix |
682 SCO Xenix 386. | |
683 @end table | |
684 | |
685 We do not wish to add new symbols to make finer distinctions unless it | |
686 is absolutely necessary! In fact, we hope to eliminate some of these | |
687 alternatives in the future. We recommend using | |
688 @code{system-configuration} to distinguish between different operating | |
689 systems. | |
690 @end defvar | |
691 | |
692 @defun system-name | |
693 This function returns the name of the machine you are running on. | |
694 @example | |
695 (system-name) | |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
696 @result{} "www.gnu.org" |
6558 | 697 @end example |
698 @end defun | |
699 | |
12067 | 700 The symbol @code{system-name} is a variable as well as a function. In |
701 fact, the function returns whatever value the variable | |
702 @code{system-name} currently holds. Thus, you can set the variable | |
703 @code{system-name} in case Emacs is confused about the name of your | |
704 system. The variable is also useful for constructing frame titles | |
705 (@pxref{Frame Titles}). | |
706 | |
707 @defvar mail-host-address | |
708 If this variable is non-@code{nil}, it is used instead of | |
709 @code{system-name} for purposes of generating email addresses. For | |
710 example, it is used when constructing the default value of | |
711 @code{user-mail-address}. @xref{User Identification}. (Since this is | |
712 done when Emacs starts up, the value actually used is the one saved when | |
713 Emacs was dumped. @xref{Building Emacs}.) | |
714 @end defvar | |
715 | |
32839 | 716 @deffn Command getenv var |
6558 | 717 @cindex environment variable access |
718 This function returns the value of the environment variable @var{var}, | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
719 as a string. @var{var} should be a string. If @var{var} is undefined |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
720 in the environment, @code{getenv} returns @code{nil}. If returns |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
721 @samp{""} if @var{var} is set but null. Within Emacs, the environment |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
722 variable values are kept in the Lisp variable @code{process-environment}. |
6558 | 723 |
724 @example | |
725 @group | |
726 (getenv "USER") | |
727 @result{} "lewis" | |
728 @end group | |
729 | |
730 @group | |
731 lewis@@slug[10] % printenv | |
732 PATH=.:/user/lewis/bin:/usr/bin:/usr/local/bin | |
733 USER=lewis | |
734 @end group | |
735 @group | |
736 TERM=ibmapa16 | |
737 SHELL=/bin/csh | |
738 HOME=/user/lewis | |
739 @end group | |
740 @end example | |
32924 | 741 @end deffn |
6558 | 742 |
743 @c Emacs 19 feature | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
744 @deffn Command setenv variable &optional value |
6558 | 745 This command sets the value of the environment variable named |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
746 @var{variable} to @var{value}. @var{variable} should be a string. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
747 Internally, Emacs Lisp can handle any string. However, normally |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
748 @var{variable} should be a valid shell identifier, that is, a sequence |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
749 of letters, digits and underscores, starting with a letter or |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
750 underscore. Otherwise, errors may occur if subprocesses of Emacs try |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
751 to access the value of @var{variable}. If @var{value} is omitted or |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
752 @code{nil}, @code{setenv} removes @var{variable} from the environment. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
753 Otherwise, @var{value} should be a string. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
754 |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
755 @code{setenv} works by modifying @code{process-environment}; binding |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
756 that variable with @code{let} is also reasonable practice. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
757 |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
758 @code{setenv} returns the new value of @var{variable}, or @code{nil} |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
759 if it removed @var{variable} from the environment. |
6558 | 760 @end deffn |
761 | |
762 @defvar process-environment | |
763 This variable is a list of strings, each describing one environment | |
764 variable. The functions @code{getenv} and @code{setenv} work by means | |
765 of this variable. | |
766 | |
767 @smallexample | |
768 @group | |
769 process-environment | |
770 @result{} ("l=/usr/stanford/lib/gnuemacs/lisp" | |
771 "PATH=.:/user/lewis/bin:/usr/class:/nfsusr/local/bin" | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
772 "USER=lewis" |
6558 | 773 @end group |
774 @group | |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
775 "TERM=ibmapa16" |
6558 | 776 "SHELL=/bin/csh" |
777 "HOME=/user/lewis") | |
778 @end group | |
779 @end smallexample | |
40311
a3a9223b152f
Clarify what happens with duplicates in process-environment.
Richard M. Stallman <rms@gnu.org>
parents:
39221
diff
changeset
|
780 |
a3a9223b152f
Clarify what happens with duplicates in process-environment.
Richard M. Stallman <rms@gnu.org>
parents:
39221
diff
changeset
|
781 If @code{process-environment} contains ``duplicate'' elements that |
a3a9223b152f
Clarify what happens with duplicates in process-environment.
Richard M. Stallman <rms@gnu.org>
parents:
39221
diff
changeset
|
782 specify the same environment variable, the first of these elements |
a3a9223b152f
Clarify what happens with duplicates in process-environment.
Richard M. Stallman <rms@gnu.org>
parents:
39221
diff
changeset
|
783 specifies the variable, and the other ``duplicates'' are ignored. |
6558 | 784 @end defvar |
785 | |
12098 | 786 @defvar path-separator |
787 This variable holds a string which says which character separates | |
788 directories in a search path (as found in an environment variable). Its | |
789 value is @code{":"} for Unix and GNU systems, and @code{";"} for MS-DOS | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
790 and MS-Windows. |
12098 | 791 @end defvar |
792 | |
28635
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
793 @defun parse-colon-path path |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
794 This function takes a search path string such as would be the value of |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
795 the @code{PATH} environment variable, and splits it at the separators, |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
796 returning a list of directory names. @code{nil} in this list stands for |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
797 ``use the current directory.'' Although the function's name says |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
798 ``colon,'' it actually uses the value of @code{path-separator}. |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
799 |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
800 @example |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
801 (parse-colon-path ":/foo:/bar") |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
802 @result{} (nil "/foo/" "/bar/") |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
803 @end example |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
804 @end defun |
cda2b6ed6aec
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
28603
diff
changeset
|
805 |
7086
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
806 @defvar invocation-name |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
807 This variable holds the program name under which Emacs was invoked. The |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
808 value is a string, and does not include a directory name. |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
809 @end defvar |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
810 |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
811 @defvar invocation-directory |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
812 This variable holds the directory from which the Emacs executable was |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
813 invoked, or perhaps @code{nil} if that directory cannot be determined. |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
814 @end defvar |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
815 |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
816 @defvar installation-directory |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
817 If non-@code{nil}, this is a directory within which to look for the |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
818 @file{lib-src} and @file{etc} subdirectories. This is non-@code{nil} |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
819 when Emacs can't find those directories in their standard installed |
9009 | 820 locations, but can find them in a directory related somehow to the one |
821 containing the Emacs executable. | |
7086
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
822 @end defvar |
075343a6b32b
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6558
diff
changeset
|
823 |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
824 @defun load-average &optional use-float |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
825 This function returns the current 1-minute, 5-minute, and 15-minute load |
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
826 averages, in a list. |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
827 |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
828 By default, the values are integers that are 100 times the system load |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
829 averages, which indicate the average number of processes trying to run. |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
830 If @var{use-float} is non-@code{nil}, then they are returned |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
831 as floating point numbers and without multiplying by 100. |
6558 | 832 |
52842
1cc25f9733cf
(System Environment): Clean up text for load-average errors.
Richard M. Stallman <rms@gnu.org>
parents:
52783
diff
changeset
|
833 If it is impossible to obtain the load average, this function signals |
1cc25f9733cf
(System Environment): Clean up text for load-average errors.
Richard M. Stallman <rms@gnu.org>
parents:
52783
diff
changeset
|
834 an error. On some platforms, access to load averages requires |
1cc25f9733cf
(System Environment): Clean up text for load-average errors.
Richard M. Stallman <rms@gnu.org>
parents:
52783
diff
changeset
|
835 installing Emacs as setuid or setgid so that it can read kernel |
1cc25f9733cf
(System Environment): Clean up text for load-average errors.
Richard M. Stallman <rms@gnu.org>
parents:
52783
diff
changeset
|
836 information, and that usually isn't advisable. |
52783 | 837 |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
838 If the 1-minute load average is available, but the 5- or 15-minute |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
839 averages are not, this function returns a shortened list containing |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
840 the available averages. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
841 |
6558 | 842 @example |
843 @group | |
844 (load-average) | |
845 @result{} (169 48 36) | |
846 @end group | |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
847 @group |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
848 (load-average t) |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
849 @result{} (1.69 0.48 0.36) |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
850 @end group |
6558 | 851 |
852 @group | |
853 lewis@@rocky[5] % uptime | |
854 11:55am up 1 day, 19:37, 3 users, | |
855 load average: 1.69, 0.48, 0.36 | |
856 @end group | |
857 @end example | |
858 @end defun | |
859 | |
860 @defun emacs-pid | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
861 This function returns the process @acronym{ID} of the Emacs process, |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
862 as an integer. |
6558 | 863 @end defun |
864 | |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
865 @defvar tty-erase-char |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
866 This variable holds the erase character that was selected |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
867 in the system's terminal driver, before Emacs was started. |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
868 The value is @code{nil} if Emacs is running under a window system. |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
869 @end defvar |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
870 |
6558 | 871 @defun setprv privilege-name &optional setp getprv |
872 This function sets or resets a VMS privilege. (It does not exist on | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
873 other systems.) The first argument is the privilege name, as a string. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
874 The second argument, @var{setp}, is @code{t} or @code{nil}, indicating |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
875 whether the privilege is to be turned on or off. Its default is |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
876 @code{nil}. The function returns @code{t} if successful, @code{nil} |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
877 otherwise. |
6558 | 878 |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
879 If the third argument, @var{getprv}, is non-@code{nil}, @code{setprv} |
6558 | 880 does not change the privilege, but returns @code{t} or @code{nil} |
881 indicating whether the privilege is currently enabled. | |
882 @end defun | |
883 | |
884 @node User Identification | |
885 @section User Identification | |
886 | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
887 @defvar init-file-user |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
888 This variable says which user's init files should be used by |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
889 Emacs---or @code{nil} if none. @code{""} stands for the user who |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
890 originally logged in. The value reflects command-line options such as |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
891 @samp{-q} or @samp{-u @var{user}}. |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
892 |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
893 Lisp packages that load files of customizations, or any other sort of |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
894 user profile, should obey this variable in deciding where to find it. |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
895 They should load the profile of the user name found in this variable. |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
896 If @code{init-file-user} is @code{nil}, meaning that the @samp{-q} |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
897 option was used, then Lisp packages should not load any customization |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
898 files or user profile. |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
899 @end defvar |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
900 |
12067 | 901 @defvar user-mail-address |
902 This holds the nominal email address of the user who is using Emacs. | |
13367
a3e8c1d2492f
Explain when user-mail-address is set.
Richard M. Stallman <rms@gnu.org>
parents:
12282
diff
changeset
|
903 Emacs normally sets this variable to a default value after reading your |
a3e8c1d2492f
Explain when user-mail-address is set.
Richard M. Stallman <rms@gnu.org>
parents:
12282
diff
changeset
|
904 init files, but not if you have already set it. So you can set the |
25875 | 905 variable to some other value in your init file if you do not |
13367
a3e8c1d2492f
Explain when user-mail-address is set.
Richard M. Stallman <rms@gnu.org>
parents:
12282
diff
changeset
|
906 want to use the default value. |
12067 | 907 @end defvar |
908 | |
909 @defun user-login-name &optional uid | |
910 If you don't specify @var{uid}, this function returns the name under | |
911 which the user is logged in. If the environment variable @code{LOGNAME} | |
912 is set, that value is used. Otherwise, if the environment variable | |
913 @code{USER} is set, that value is used. Otherwise, the value is based | |
52978
1a5c50faf357
Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents:
52842
diff
changeset
|
914 on the effective @acronym{UID}, not the real @acronym{UID}. |
12067 | 915 |
916 If you specify @var{uid}, the value is the user name that corresponds | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
917 to @var{uid} (which should be an integer), or @code{nil} if there is |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
918 no such user. |
6558 | 919 |
920 @example | |
921 @group | |
922 (user-login-name) | |
923 @result{} "lewis" | |
924 @end group | |
925 @end example | |
926 @end defun | |
927 | |
928 @defun user-real-login-name | |
929 This function returns the user name corresponding to Emacs's real | |
52978
1a5c50faf357
Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents:
52842
diff
changeset
|
930 @acronym{UID}. This ignores the effective @acronym{UID} and ignores the |
6558 | 931 environment variables @code{LOGNAME} and @code{USER}. |
932 @end defun | |
933 | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
934 @defun user-full-name &optional uid |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
935 This function returns the full name of the logged-in user---or the value |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
936 of the environment variable @code{NAME}, if that is set. |
6558 | 937 |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
938 @c "Bil" is the correct spelling. |
6558 | 939 @example |
940 @group | |
941 (user-full-name) | |
942 @result{} "Bil Lewis" | |
943 @end group | |
944 @end example | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
945 |
24848 | 946 If the Emacs job's user-id does not correspond to any known user (and |
947 provided @code{NAME} is not set), the value is @code{"unknown"}. | |
948 | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
949 If @var{uid} is non-@code{nil}, then it should be a number (a user-id) |
24848 | 950 or a string (a login name). Then @code{user-full-name} returns the full |
951 name corresponding to that user-id or login name. If you specify a | |
952 user-id or login name that isn't defined, it returns @code{nil}. | |
6558 | 953 @end defun |
954 | |
12067 | 955 @vindex user-full-name |
956 @vindex user-real-login-name | |
957 @vindex user-login-name | |
958 The symbols @code{user-login-name}, @code{user-real-login-name} and | |
959 @code{user-full-name} are variables as well as functions. The functions | |
960 return the same values that the variables hold. These variables allow | |
961 you to ``fake out'' Emacs by telling the functions what to return. The | |
962 variables are also useful for constructing frame titles (@pxref{Frame | |
963 Titles}). | |
964 | |
6558 | 965 @defun user-real-uid |
52978
1a5c50faf357
Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents:
52842
diff
changeset
|
966 This function returns the real @acronym{UID} of the user. |
51918
9fbd3ef3087d
(User Identification): user-uid, user-real-uid can return float.
Richard M. Stallman <rms@gnu.org>
parents:
50654
diff
changeset
|
967 The value may be a floating point number. |
6558 | 968 |
969 @example | |
970 @group | |
971 (user-real-uid) | |
972 @result{} 19 | |
973 @end group | |
974 @end example | |
975 @end defun | |
976 | |
977 @defun user-uid | |
52978
1a5c50faf357
Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents:
52842
diff
changeset
|
978 This function returns the effective @acronym{UID} of the user. |
51918
9fbd3ef3087d
(User Identification): user-uid, user-real-uid can return float.
Richard M. Stallman <rms@gnu.org>
parents:
50654
diff
changeset
|
979 The value may be a floating point number. |
6558 | 980 @end defun |
981 | |
982 @node Time of Day | |
983 @section Time of Day | |
984 | |
985 This section explains how to determine the current time and the time | |
986 zone. | |
987 | |
988 @defun current-time-string &optional time-value | |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
989 This function returns the current time and date as a human-readable |
6558 | 990 string. The format of the string is unvarying; the number of characters |
991 used for each part is always the same, so you can reliably use | |
12098 | 992 @code{substring} to extract pieces of it. It is wise to count the |
993 characters from the beginning of the string rather than from the end, as | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
994 additional information may some day be added at the end. |
6558 | 995 |
996 @c Emacs 19 feature | |
997 The argument @var{time-value}, if given, specifies a time to format | |
12098 | 998 instead of the current time. The argument should be a list whose first |
999 two elements are integers. Thus, you can use times obtained from | |
1000 @code{current-time} (see below) and from @code{file-attributes} | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1001 (@pxref{Definition of file-attributes}). @var{time-value} can also be |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1002 a cons of two integers, but this is considered obsolete. |
6558 | 1003 |
1004 @example | |
1005 @group | |
1006 (current-time-string) | |
1007 @result{} "Wed Oct 14 22:21:05 1987" | |
1008 @end group | |
1009 @end example | |
1010 @end defun | |
1011 | |
1012 @c Emacs 19 feature | |
1013 @defun current-time | |
1014 This function returns the system's time value as a list of three | |
1015 integers: @code{(@var{high} @var{low} @var{microsec})}. The integers | |
1016 @var{high} and @var{low} combine to give the number of seconds since | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1017 0:00 January 1, 1970 UTC (Coordinated Universal Time), which is |
27193 | 1018 @ifnottex |
6558 | 1019 @var{high} * 2**16 + @var{low}. |
27193 | 1020 @end ifnottex |
6558 | 1021 @tex |
9009 | 1022 $high*2^{16}+low$. |
6558 | 1023 @end tex |
1024 | |
1025 The third element, @var{microsec}, gives the microseconds since the | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1026 start of the current second (or 0 for systems that return time with |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1027 the resolution of only one second). |
6558 | 1028 |
1029 The first two elements can be compared with file time values such as you | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1030 get with the function @code{file-attributes}. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1031 @xref{Definition of file-attributes}. |
6558 | 1032 @end defun |
1033 | |
1034 @c Emacs 19 feature | |
1035 @defun current-time-zone &optional time-value | |
1036 This function returns a list describing the time zone that the user is | |
1037 in. | |
1038 | |
1039 The value has the form @code{(@var{offset} @var{name})}. Here | |
1040 @var{offset} is an integer giving the number of seconds ahead of UTC | |
1041 (east of Greenwich). A negative value means west of Greenwich. The | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1042 second element, @var{name}, is a string giving the name of the time |
6558 | 1043 zone. Both elements change when daylight savings time begins or ends; |
1044 if the user has specified a time zone that does not use a seasonal time | |
1045 adjustment, then the value is constant through time. | |
1046 | |
1047 If the operating system doesn't supply all the information necessary to | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1048 compute the value, the unknown elements of the list are @code{nil}. |
6558 | 1049 |
1050 The argument @var{time-value}, if given, specifies a time to analyze | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1051 instead of the current time. The argument should have the same form |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1052 as for @code{current-time-string} (see above). Thus, you can use |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1053 times obtained from @code{current-time} (see above) and from |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1054 @code{file-attributes}. @xref{Definition of file-attributes}. |
12067 | 1055 @end defun |
1056 | |
53433
5bf3c4457aa3
(Time of Day): Add set-time-zone-rule.
Richard M. Stallman <rms@gnu.org>
parents:
52978
diff
changeset
|
1057 @defun set-time-zone-rule tz |
5bf3c4457aa3
(Time of Day): Add set-time-zone-rule.
Richard M. Stallman <rms@gnu.org>
parents:
52978
diff
changeset
|
1058 This function specifies the local time zone according to @var{tz}. If |
5bf3c4457aa3
(Time of Day): Add set-time-zone-rule.
Richard M. Stallman <rms@gnu.org>
parents:
52978
diff
changeset
|
1059 @var{tz} is @code{nil}, that means to use an implementation-defined |
5bf3c4457aa3
(Time of Day): Add set-time-zone-rule.
Richard M. Stallman <rms@gnu.org>
parents:
52978
diff
changeset
|
1060 default time zone. If @var{tz} is @code{t}, that means to use |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1061 Universal Time. Otherwise, @var{tz} should be a string specifying a |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1062 time zone rule. |
53433
5bf3c4457aa3
(Time of Day): Add set-time-zone-rule.
Richard M. Stallman <rms@gnu.org>
parents:
52978
diff
changeset
|
1063 @end defun |
5bf3c4457aa3
(Time of Day): Add set-time-zone-rule.
Richard M. Stallman <rms@gnu.org>
parents:
52978
diff
changeset
|
1064 |
39202
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1065 @defun float-time &optional time-value |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1066 This function returns the current time as a floating-point number of |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1067 seconds since the epoch. The argument @var{time-value}, if given, |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1068 specifies a time to convert instead of the current time. The argument |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1069 should have the same form as for @code{current-time-string} (see |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1070 above). Thus, it accepts the output of @code{current-time} and |
39202
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1071 @code{file-attributes}. |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1072 |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1073 @emph{Warning}: Since the result is floating point, it may not be |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1074 exact. Do not use this function if precise time stamps are required. |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1075 @end defun |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1076 |
12067 | 1077 @node Time Conversion |
1078 @section Time Conversion | |
1079 | |
1080 These functions convert time values (lists of two or three integers) | |
64914
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1081 to calendrical information and vice versa. You can get time values |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1082 from the functions @code{current-time} (@pxref{Time of Day}) and |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1083 @code{file-attributes} (@pxref{Definition of file-attributes}). |
12067 | 1084 |
64914
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1085 Many operating systems are limited to time values that contain 32 bits |
15778
c96cee4f8be8
Explain range of time values, and what negative year numbers mean.
Richard M. Stallman <rms@gnu.org>
parents:
15762
diff
changeset
|
1086 of information; these systems typically handle only the times from |
c96cee4f8be8
Explain range of time values, and what negative year numbers mean.
Richard M. Stallman <rms@gnu.org>
parents:
15762
diff
changeset
|
1087 1901-12-13 20:45:52 UTC through 2038-01-19 03:14:07 UTC. However, some |
c96cee4f8be8
Explain range of time values, and what negative year numbers mean.
Richard M. Stallman <rms@gnu.org>
parents:
15762
diff
changeset
|
1088 operating systems have larger time values, and can represent times far |
c96cee4f8be8
Explain range of time values, and what negative year numbers mean.
Richard M. Stallman <rms@gnu.org>
parents:
15762
diff
changeset
|
1089 in the past or future. |
c96cee4f8be8
Explain range of time values, and what negative year numbers mean.
Richard M. Stallman <rms@gnu.org>
parents:
15762
diff
changeset
|
1090 |
64914
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1091 Time conversion functions always use the Gregorian calendar, even |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1092 for dates before the Gregorian calendar was introduced. Year numbers |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1093 count the number of years since the year 1 B.C., and do not skip zero |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1094 as traditional Gregorian years do; for example, the year number |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1095 @minus{}37 represents the Gregorian year 38 B.C@. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1096 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1097 @defun decode-time &optional time |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1098 This function converts a time value into calendrical information. If |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1099 you don't specify @var{time}, it decodes the current time. The return |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1100 value is a list of nine elements, as follows: |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1101 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1102 @example |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1103 (@var{seconds} @var{minutes} @var{hour} @var{day} @var{month} @var{year} @var{dow} @var{dst} @var{zone}) |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1104 @end example |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1105 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1106 Here is what the elements mean: |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1107 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1108 @table @var |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1109 @item seconds |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1110 The number of seconds past the minute, as an integer between 0 and 59. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1111 On some operating systems, this is 60 for leap seconds. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1112 @item minutes |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1113 The number of minutes past the hour, as an integer between 0 and 59. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1114 @item hour |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1115 The hour of the day, as an integer between 0 and 23. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1116 @item day |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1117 The day of the month, as an integer between 1 and 31. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1118 @item month |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1119 The month of the year, as an integer between 1 and 12. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1120 @item year |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1121 The year, an integer typically greater than 1900. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1122 @item dow |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1123 The day of week, as an integer between 0 and 6, where 0 stands for |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1124 Sunday. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1125 @item dst |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1126 @code{t} if daylight savings time is effect, otherwise @code{nil}. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1127 @item zone |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1128 An integer indicating the time zone, as the number of seconds east of |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1129 Greenwich. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1130 @end table |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1131 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1132 @strong{Common Lisp Note:} Common Lisp has different meanings for |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1133 @var{dow} and @var{zone}. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1134 @end defun |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1135 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1136 @defun encode-time seconds minutes hour day month year &optional zone |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1137 This function is the inverse of @code{decode-time}. It converts seven |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1138 items of calendrical data into a time value. For the meanings of the |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1139 arguments, see the table above under @code{decode-time}. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1140 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1141 Year numbers less than 100 are not treated specially. If you want them |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1142 to stand for years above 1900, or years above 2000, you must alter them |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1143 yourself before you call @code{encode-time}. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1144 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1145 The optional argument @var{zone} defaults to the current time zone and |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1146 its daylight savings time rules. If specified, it can be either a list |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1147 (as you would get from @code{current-time-zone}), a string as in the |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1148 @code{TZ} environment variable, @code{t} for Universal Time, or an |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1149 integer (as you would get from @code{decode-time}). The specified |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1150 zone is used without any further alteration for daylight savings time. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1151 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1152 If you pass more than seven arguments to @code{encode-time}, the first |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1153 six are used as @var{seconds} through @var{year}, the last argument is |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1154 used as @var{zone}, and the arguments in between are ignored. This |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1155 feature makes it possible to use the elements of a list returned by |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1156 @code{decode-time} as the arguments to @code{encode-time}, like this: |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1157 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1158 @example |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1159 (apply 'encode-time (decode-time @dots{})) |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1160 @end example |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1161 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1162 You can perform simple date arithmetic by using out-of-range values for |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1163 the @var{seconds}, @var{minutes}, @var{hour}, @var{day}, and @var{month} |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1164 arguments; for example, day 0 means the day preceding the given month. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1165 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1166 The operating system puts limits on the range of possible time values; |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1167 if you try to encode a time that is out of range, an error results. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1168 For instance, years before 1970 do not work on some systems; |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1169 on others, years as early as 1901 do work. |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1170 @end defun |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1171 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1172 @node Time Parsing |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1173 @section Parsing and Formatting Times |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1174 |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1175 These functions convert time values (lists of two or three integers) |
6ed6c1b79d36
(Time Parsing): New node split out of Time Conversion.
Richard M. Stallman <rms@gnu.org>
parents:
64889
diff
changeset
|
1176 to text in a string, and vice versa. |
15778
c96cee4f8be8
Explain range of time values, and what negative year numbers mean.
Richard M. Stallman <rms@gnu.org>
parents:
15762
diff
changeset
|
1177 |
43037
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1178 @defun date-to-time string |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1179 This function parses the time-string @var{string} and returns the |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1180 corresponding time value. |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1181 @end defun |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1182 |
26242 | 1183 @defun format-time-string format-string &optional time universal |
1184 This function converts @var{time} (or the current time, if @var{time} is | |
1185 omitted) to a string according to @var{format-string}. The argument | |
1186 @var{format-string} may contain @samp{%}-sequences which say to | |
1187 substitute parts of the time. Here is a table of what the | |
1188 @samp{%}-sequences mean: | |
12067 | 1189 |
1190 @table @samp | |
1191 @item %a | |
1192 This stands for the abbreviated name of the day of week. | |
1193 @item %A | |
1194 This stands for the full name of the day of week. | |
1195 @item %b | |
1196 This stands for the abbreviated name of the month. | |
1197 @item %B | |
1198 This stands for the full name of the month. | |
1199 @item %c | |
1200 This is a synonym for @samp{%x %X}. | |
1201 @item %C | |
12098 | 1202 This has a locale-specific meaning. In the default locale (named C), it |
1203 is equivalent to @samp{%A, %B %e, %Y}. | |
12067 | 1204 @item %d |
1205 This stands for the day of month, zero-padded. | |
1206 @item %D | |
1207 This is a synonym for @samp{%m/%d/%y}. | |
1208 @item %e | |
1209 This stands for the day of month, blank-padded. | |
1210 @item %h | |
1211 This is a synonym for @samp{%b}. | |
1212 @item %H | |
1213 This stands for the hour (00-23). | |
1214 @item %I | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1215 This stands for the hour (01-12). |
12067 | 1216 @item %j |
1217 This stands for the day of the year (001-366). | |
1218 @item %k | |
1219 This stands for the hour (0-23), blank padded. | |
1220 @item %l | |
1221 This stands for the hour (1-12), blank padded. | |
1222 @item %m | |
1223 This stands for the month (01-12). | |
1224 @item %M | |
1225 This stands for the minute (00-59). | |
1226 @item %n | |
1227 This stands for a newline. | |
1228 @item %p | |
1229 This stands for @samp{AM} or @samp{PM}, as appropriate. | |
1230 @item %r | |
1231 This is a synonym for @samp{%I:%M:%S %p}. | |
1232 @item %R | |
1233 This is a synonym for @samp{%H:%M}. | |
1234 @item %S | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1235 This stands for the seconds (00-59). |
12067 | 1236 @item %t |
1237 This stands for a tab character. | |
1238 @item %T | |
1239 This is a synonym for @samp{%H:%M:%S}. | |
1240 @item %U | |
1241 This stands for the week of the year (01-52), assuming that weeks | |
1242 start on Sunday. | |
1243 @item %w | |
1244 This stands for the numeric day of week (0-6). Sunday is day 0. | |
1245 @item %W | |
1246 This stands for the week of the year (01-52), assuming that weeks | |
1247 start on Monday. | |
1248 @item %x | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1249 This has a locale-specific meaning. In the default locale (named |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1250 @samp{C}), it is equivalent to @samp{%D}. |
12067 | 1251 @item %X |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1252 This has a locale-specific meaning. In the default locale (named |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1253 @samp{C}), it is equivalent to @samp{%T}. |
12067 | 1254 @item %y |
1255 This stands for the year without century (00-99). | |
1256 @item %Y | |
1257 This stands for the year with century. | |
1258 @item %Z | |
1259 This stands for the time zone abbreviation. | |
1260 @end table | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1261 |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1262 You can also specify the field width and type of padding for any of |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1263 these @samp{%}-sequences. This works as in @code{printf}: you write |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1264 the field width as digits in the middle of a @samp{%}-sequences. If you |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1265 start the field width with @samp{0}, it means to pad with zeros. If you |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1266 start the field width with @samp{_}, it means to pad with spaces. |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1267 |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1268 For example, @samp{%S} specifies the number of seconds since the minute; |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1269 @samp{%03S} means to pad this with zeros to 3 positions, @samp{%_3S} to |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1270 pad with spaces to 3 positions. Plain @samp{%3S} pads with zeros, |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1271 because that is how @samp{%S} normally pads to two positions. |
26242 | 1272 |
1273 The characters @samp{E} and @samp{O} act as modifiers when used between | |
1274 @samp{%} and one of the letters in the table above. @samp{E} specifies | |
26288 | 1275 using the current locale's ``alternative'' version of the date and time. |
1276 In a Japanese locale, for example, @code{%Ex} might yield a date format | |
1277 based on the Japanese Emperors' reigns. @samp{E} is allowed in | |
1278 @samp{%Ec}, @samp{%EC}, @samp{%Ex}, @samp{%EX}, @samp{%Ey}, and | |
1279 @samp{%EY}. | |
26242 | 1280 |
26288 | 1281 @samp{O} means to use the current locale's ``alternative'' |
1282 representation of numbers, instead of the ordinary decimal digits. This | |
1283 is allowed with most letters, all the ones that output numbers. | |
26242 | 1284 |
1285 If @var{universal} is non-@code{nil}, that means to describe the time as | |
1286 Universal Time; @code{nil} means describe it using what Emacs believes | |
1287 is the local time zone (see @code{current-time-zone}). | |
26696
ef5e7bbe6f19
Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents:
26288
diff
changeset
|
1288 |
ef5e7bbe6f19
Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents:
26288
diff
changeset
|
1289 This function uses the C library function @code{strftime} to do most of |
ef5e7bbe6f19
Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents:
26288
diff
changeset
|
1290 the work. In order to communicate with that function, it first encodes |
ef5e7bbe6f19
Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents:
26288
diff
changeset
|
1291 its argument using the coding system specified by |
ef5e7bbe6f19
Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents:
26288
diff
changeset
|
1292 @code{locale-coding-system} (@pxref{Locales}); after @code{strftime} |
ef5e7bbe6f19
Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents:
26288
diff
changeset
|
1293 returns the resulting string, @code{format-time-string} decodes the |
ef5e7bbe6f19
Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents:
26288
diff
changeset
|
1294 string using that same coding system. |
12067 | 1295 @end defun |
1296 | |
43037
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1297 @defun seconds-to-time seconds |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1298 This function converts @var{seconds}, a floating point number of |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1299 seconds since the epoch, to a time value and returns that. To perform |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1300 the inverse conversion, use @code{float-time}. |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1301 @end defun |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1302 |
57989
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1303 @node Processor Run Time |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1304 @section Processor Run time |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1305 |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1306 @defun get-internal-run-time |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1307 This function returns the processor run time used by Emacs as a list |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1308 of three integers: @code{(@var{high} @var{low} @var{microsec})}. The |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1309 integers @var{high} and @var{low} combine to give the number of |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1310 seconds, which is |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1311 @ifnottex |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1312 @var{high} * 2**16 + @var{low}. |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1313 @end ifnottex |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1314 @tex |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1315 $high*2^{16}+low$. |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1316 @end tex |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1317 |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1318 The third element, @var{microsec}, gives the microseconds (or 0 for |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1319 systems that return time with the resolution of only one second). |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1320 |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1321 If the system doesn't provide a way to determine the processor run |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1322 time, get-internal-run-time returns the same time as current-time. |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1323 @end defun |
2f160b3f3283
(Processor Run Time): New section documenting get-internal-run-time.
Eli Zaretskii <eliz@gnu.org>
parents:
56617
diff
changeset
|
1324 |
43037
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1325 @node Time Calculations |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1326 @section Time Calculations |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1327 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1328 These functions perform calendrical computations using time values |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1329 (the kind of list that @code{current-time} returns). |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1330 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1331 @defun time-less-p t1 t2 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1332 This returns @code{t} if time value @var{t1} is less than time value |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1333 @var{t2}. |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1334 @end defun |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1335 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1336 @defun time-subtract t1 t2 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1337 This returns the time difference @var{t1} @minus{} @var{t2} between |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1338 two time values, in the same format as a time value. |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1339 @end defun |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1340 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1341 @defun time-add t1 t2 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1342 This returns the sum of two time values, one of which ought to |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1343 represent a time difference rather than a point in time. |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1344 Here is how to add a number of seconds to a time value: |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1345 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1346 @example |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1347 (time-add @var{time} (seconds-to-time @var{seconds})) |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1348 @end example |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1349 @end defun |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1350 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1351 @defun time-to-days time |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1352 This function returns the number of days between the beginning of year |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1353 1 and @var{time}. |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1354 @end defun |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1355 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1356 @defun time-to-day-in-year time |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1357 This returns the day number within the year corresponding to @var{time}. |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1358 @end defun |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1359 |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1360 @defun date-leap-year-p year |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1361 This function returns @code{t} if @var{year} is a leap year. |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1362 @end defun |
2f863ec2724c
Document date-to-time and seconds-to-time.
Richard M. Stallman <rms@gnu.org>
parents:
40311
diff
changeset
|
1363 |
6558 | 1364 @node Timers |
12098 | 1365 @section Timers for Delayed Execution |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1366 @cindex timer |
6558 | 1367 |
50654
07caa9606def
(Timers): Explain about timers and quitting.
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
1368 You can set up a @dfn{timer} to call a function at a specified |
07caa9606def
(Timers): Explain about timers and quitting.
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
1369 future time or after a certain length of idleness. |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1370 |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1371 Emacs cannot run timers at any arbitrary point in a Lisp program; it |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1372 can run them only when Emacs could accept output from a subprocess: |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1373 namely, while waiting or inside certain primitive functions such as |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
1374 @code{sit-for} or @code{read-event} which @emph{can} wait. Therefore, a |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1375 timer's execution may be delayed if Emacs is busy. However, the time of |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1376 execution is very precise if Emacs is idle. |
6558 | 1377 |
50654
07caa9606def
(Timers): Explain about timers and quitting.
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
1378 Emacs binds @code{inhibit-quit} to @code{t} before calling the timer |
07caa9606def
(Timers): Explain about timers and quitting.
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
1379 function, because quitting out of many timer functions can leave |
07caa9606def
(Timers): Explain about timers and quitting.
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
1380 things in an inconsistent state. This is normally unproblematical |
07caa9606def
(Timers): Explain about timers and quitting.
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
1381 because most timer functions don't do a lot of work. Indeed, for a |
54037 | 1382 timer to call a function that takes substantial time to run is likely |
50654
07caa9606def
(Timers): Explain about timers and quitting.
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
1383 to be annoying. |
07caa9606def
(Timers): Explain about timers and quitting.
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
1384 |
59270
08777d10acff
(Timers): Update previous change.
Richard M. Stallman <rms@gnu.org>
parents:
59190
diff
changeset
|
1385 It is usually a bad idea for timer functions to alter buffer |
08777d10acff
(Timers): Update previous change.
Richard M. Stallman <rms@gnu.org>
parents:
59190
diff
changeset
|
1386 contents. When they do, they usually should call @code{undo-boundary} |
08777d10acff
(Timers): Update previous change.
Richard M. Stallman <rms@gnu.org>
parents:
59190
diff
changeset
|
1387 both before and after changing the buffer, to separate the timer's |
59390
70a8ca9b81e0
(Timers): Clarify previous change.
Richard M. Stallman <rms@gnu.org>
parents:
59270
diff
changeset
|
1388 changes from user commands' changes and prevent a single undo entry |
70a8ca9b81e0
(Timers): Clarify previous change.
Richard M. Stallman <rms@gnu.org>
parents:
59270
diff
changeset
|
1389 from growing to be quite large. |
59190
6142d449ffb8
(Timers): Discuss timers vs editing the buffer and undo.
Richard M. Stallman <rms@gnu.org>
parents:
57989
diff
changeset
|
1390 |
63525
da42b07587f1
(Timers): Timers should save and restore the match data if they change it.
Luc Teirlinck <teirllm@auburn.edu>
parents:
60996
diff
changeset
|
1391 If a timer function calls functions that can change the match data, |
da42b07587f1
(Timers): Timers should save and restore the match data if they change it.
Luc Teirlinck <teirllm@auburn.edu>
parents:
60996
diff
changeset
|
1392 it should save and restore the match data. @xref{Saving Match Data}. |
da42b07587f1
(Timers): Timers should save and restore the match data if they change it.
Luc Teirlinck <teirllm@auburn.edu>
parents:
60996
diff
changeset
|
1393 |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1394 @deffn Command run-at-time time repeat function &rest args |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1395 This sets up a timer that calls the function @var{function} with |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1396 arguments @var{args} at time @var{time}. If @var{repeat} is a number |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1397 (integer or floating point), the timer also runs every @var{repeat} |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1398 seconds after that. If @var{repeat} is @code{nil}, the timer runs |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1399 only once. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1400 |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1401 @var{time} may specify an absolute or a relative time. |
6558 | 1402 |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
1403 Absolute times may be specified in a wide variety of formats; this |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1404 function tries to accept all the commonly used date formats. The most |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1405 convenient formats are strings. Valid such formats include these two, |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1406 |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1407 @example |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1408 @var{year}-@var{month}-@var{day} @var{hour}:@var{min}:@var{sec} @var{timezone} |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1409 |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1410 @var{hour}:@var{min}:@var{sec} @var{timezone} @var{month}/@var{day}/@var{year} |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1411 @end example |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1412 |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1413 @noindent |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1414 where in both examples all fields are numbers; the format that |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1415 @code{current-time-string} returns is also allowed, and many others |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1416 as well. |
6558 | 1417 |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1418 To specify a relative time as a string, use numbers followed by units. |
6558 | 1419 For example: |
1420 | |
1421 @table @samp | |
1422 @item 1 min | |
1423 denotes 1 minute from now. | |
1424 @item 1 min 5 sec | |
1425 denotes 65 seconds from now. | |
1426 @item 1 min 2 sec 3 hour 4 day 5 week 6 fortnight 7 month 8 year | |
1427 denotes exactly 103 months, 123 days, and 10862 seconds from now. | |
1428 @end table | |
1429 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1430 For relative time values, Emacs considers a month to be exactly thirty |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1431 days, and a year to be exactly 365.25 days. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1432 |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1433 Not all convenient formats are strings. If @var{time} is a number |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1434 (integer or floating point), that specifies a relative time measured |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1435 in seconds. |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1436 |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1437 In most cases, @var{repeat} has no effect on when @emph{first} call |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1438 takes place---@var{time} alone specifies that. There is one exception: |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1439 if @var{time} is @code{t}, then the timer runs whenever the time is a |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1440 multiple of @var{repeat} seconds after the epoch. This is useful for |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1441 functions like @code{display-time}. |
9009 | 1442 |
1443 The function @code{run-at-time} returns a timer value that identifies | |
1444 the particular scheduled future action. You can use this value to call | |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1445 @code{cancel-timer} (see below). |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1446 @end deffn |
6558 | 1447 |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1448 @defmac with-timeout (seconds timeout-forms@dots{}) body@dots{} |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1449 Execute @var{body}, but give up after @var{seconds} seconds. If |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1450 @var{body} finishes before the time is up, @code{with-timeout} returns |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1451 the value of the last form in @var{body}. If, however, the execution of |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1452 @var{body} is cut short by the timeout, then @code{with-timeout} |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1453 executes all the @var{timeout-forms} and returns the value of the last |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1454 of them. |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1455 |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1456 This macro works by setting a timer to run after @var{seconds} seconds. If |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1457 @var{body} finishes before that time, it cancels the timer. If the |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1458 timer actually runs, it terminates execution of @var{body}, then |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1459 executes @var{timeout-forms}. |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1460 |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1461 Since timers can run within a Lisp program only when the program calls a |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1462 primitive that can wait, @code{with-timeout} cannot stop executing |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1463 @var{body} while it is in the midst of a computation---only when it |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1464 calls one of those primitives. So use @code{with-timeout} only with a |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1465 @var{body} that waits for input, not one that does a long computation. |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1466 @end defmac |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1467 |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1468 The function @code{y-or-n-p-with-timeout} provides a simple way to use |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1469 a timer to avoid waiting too long for an answer. @xref{Yes-or-No |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1470 Queries}. |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1471 |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1472 @deffn Command run-with-idle-timer secs repeat function &rest args |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1473 Set up a timer which runs when Emacs has been idle for @var{secs} |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1474 seconds. The value of @var{secs} may be an integer or a floating point |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1475 number. |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1476 |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1477 If @var{repeat} is @code{nil}, the timer runs just once, the first time |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1478 Emacs remains idle for a long enough time. More often @var{repeat} is |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1479 non-@code{nil}, which means to run the timer @emph{each time} Emacs |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1480 remains idle for @var{secs} seconds. |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1481 |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1482 The function @code{run-with-idle-timer} returns a timer value which you |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1483 can use in calling @code{cancel-timer} (see below). |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1484 @end deffn |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1485 |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1486 @cindex idleness |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1487 Emacs becomes ``idle'' when it starts waiting for user input, and it |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1488 remains idle until the user provides some input. If a timer is set for |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1489 five seconds of idleness, it runs approximately five seconds after Emacs |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1490 first becomes idle. Even if @var{repeat} is non-@code{nil}, this timer |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1491 will not run again as long as Emacs remains idle, because the duration |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1492 of idleness will continue to increase and will not go down to five |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1493 seconds again. |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1494 |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1495 Emacs can do various things while idle: garbage collect, autosave or |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1496 handle data from a subprocess. But these interludes during idleness do |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1497 not interfere with idle timers, because they do not reset the clock of |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1498 idleness to zero. An idle timer set for 600 seconds will run when ten |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1499 minutes have elapsed since the last user command was finished, even if |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1500 subprocess output has been accepted thousands of times within those ten |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1501 minutes, and even if there have been garbage collections and autosaves. |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1502 |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1503 When the user supplies input, Emacs becomes non-idle while executing the |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1504 input. Then it becomes idle again, and all the idle timers that are |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1505 set up to repeat will subsequently run another time, one by one. |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1506 |
6558 | 1507 @defun cancel-timer timer |
1508 Cancel the requested action for @var{timer}, which should be a value | |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1509 previously returned by @code{run-at-time} or @code{run-with-idle-timer}. |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1510 This cancels the effect of that call to one of these functions; the |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1511 arrival of the specified time will not cause anything special to happen. |
6558 | 1512 @end defun |
1513 | |
1514 @node Terminal Input | |
1515 @section Terminal Input | |
1516 @cindex terminal input | |
1517 | |
1518 This section describes functions and variables for recording or | |
1519 manipulating terminal input. See @ref{Display}, for related | |
1520 functions. | |
1521 | |
1522 @menu | |
1523 * Input Modes:: Options for how input is processed. | |
1524 * Translating Input:: Low level conversion of some characters or events | |
1525 into others. | |
1526 * Recording Input:: Saving histories of recent or all input events. | |
1527 @end menu | |
1528 | |
1529 @node Input Modes | |
1530 @subsection Input Modes | |
1531 @cindex input modes | |
1532 @cindex terminal input modes | |
1533 | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1534 @defun set-input-mode interrupt flow meta &optional quit-char |
6558 | 1535 This function sets the mode for reading keyboard input. If |
1536 @var{interrupt} is non-null, then Emacs uses input interrupts. If it is | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1537 @code{nil}, then it uses @sc{cbreak} mode. The default setting is |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1538 system-dependent. Some systems always use @sc{cbreak} mode regardless |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1539 of what is specified. |
6558 | 1540 |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1541 When Emacs communicates directly with X, it ignores this argument and |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1542 uses interrupts if that is the way it knows how to communicate. |
6558 | 1543 |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1544 If @var{flow} is non-@code{nil}, then Emacs uses @sc{xon/xoff} |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1545 (@kbd{C-q}, @kbd{C-s}) flow control for output to the terminal. This |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
1546 has no effect except in @sc{cbreak} mode. |
6558 | 1547 |
1548 @c Emacs 19 feature | |
1549 The argument @var{meta} controls support for input character codes | |
1550 above 127. If @var{meta} is @code{t}, Emacs converts characters with | |
1551 the 8th bit set into Meta characters. If @var{meta} is @code{nil}, | |
1552 Emacs disregards the 8th bit; this is necessary when the terminal uses | |
1553 it as a parity bit. If @var{meta} is neither @code{t} nor @code{nil}, | |
1554 Emacs uses all 8 bits of input unchanged. This is good for terminals | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1555 that use 8-bit character sets. |
6558 | 1556 |
1557 @c Emacs 19 feature | |
1558 If @var{quit-char} is non-@code{nil}, it specifies the character to | |
1559 use for quitting. Normally this character is @kbd{C-g}. | |
1560 @xref{Quitting}. | |
1561 @end defun | |
1562 | |
1563 The @code{current-input-mode} function returns the input mode settings | |
1564 Emacs is currently using. | |
1565 | |
1566 @c Emacs 19 feature | |
1567 @defun current-input-mode | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1568 This function returns the current mode for reading keyboard input. It |
6558 | 1569 returns a list, corresponding to the arguments of @code{set-input-mode}, |
1570 of the form @code{(@var{interrupt} @var{flow} @var{meta} @var{quit})} in | |
1571 which: | |
1572 @table @var | |
1573 @item interrupt | |
1574 is non-@code{nil} when Emacs is using interrupt-driven input. If | |
1575 @code{nil}, Emacs is using @sc{cbreak} mode. | |
1576 @item flow | |
1577 is non-@code{nil} if Emacs uses @sc{xon/xoff} (@kbd{C-q}, @kbd{C-s}) | |
22138
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1578 flow control for output to the terminal. This value is meaningful only |
d4ac295a98b3
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21682
diff
changeset
|
1579 when @var{interrupt} is @code{nil}. |
6558 | 1580 @item meta |
12098 | 1581 is @code{t} if Emacs treats the eighth bit of input characters as |
6558 | 1582 the meta bit; @code{nil} means Emacs clears the eighth bit of every |
1583 input character; any other value means Emacs uses all eight bits as the | |
1584 basic character code. | |
1585 @item quit | |
1586 is the character Emacs currently uses for quitting, usually @kbd{C-g}. | |
1587 @end table | |
1588 @end defun | |
1589 | |
1590 @node Translating Input | |
1591 @subsection Translating Input Events | |
1592 @cindex translating input events | |
1593 | |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1594 This section describes features for translating input events into |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1595 other input events before they become part of key sequences. These |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1596 features apply to each event in the order they are described here: each |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1597 event is first modified according to @code{extra-keyboard-modifiers}, |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1598 then translated through @code{keyboard-translate-table} (if applicable), |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1599 and finally decoded with the specified keyboard coding system. If it is |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1600 being read as part of a key sequence, it is then added to the sequence |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1601 being read; then subsequences containing it are checked first with |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1602 @code{function-key-map} and then with @code{key-translation-map}. |
6558 | 1603 |
1604 @c Emacs 19 feature | |
1605 @defvar extra-keyboard-modifiers | |
1606 This variable lets Lisp programs ``press'' the modifier keys on the | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1607 keyboard. The value is a character. Only the modifiers of the |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1608 character matter. Each time the user types a keyboard key, it is |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1609 altered as if those modifier keys were held down. For instance, if |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1610 you bind @code{extra-keyboard-modifiers} to @code{?\C-\M-a}, then all |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1611 keyboard input characters typed during the scope of the binding will |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1612 have the control and meta modifiers applied to them. The character |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1613 @code{?\C-@@}, equivalent to the integer 0, does not count as a control |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1614 character for this purpose, but as a character with no modifiers. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1615 Thus, setting @code{extra-keyboard-modifiers} to zero cancels any |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1616 modification. |
6558 | 1617 |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1618 When using a window system, the program can ``press'' any of the |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1619 modifier keys in this way. Otherwise, only the @key{CTL} and @key{META} |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1620 keys can be virtually pressed. |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1621 |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1622 Note that this variable applies only to events that really come from |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1623 the keyboard, and has no effect on mouse events or any other events. |
6558 | 1624 @end defvar |
1625 | |
1626 @defvar keyboard-translate-table | |
1627 This variable is the translate table for keyboard characters. It lets | |
1628 you reshuffle the keys on the keyboard without changing any command | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1629 bindings. Its value is normally a char-table, or else @code{nil}. |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1630 (It can also be a string or vector, but this is considered obsolete.) |
6558 | 1631 |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1632 If @code{keyboard-translate-table} is a char-table |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1633 (@pxref{Char-Tables}), then each character read from the keyboard is |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1634 looked up in this char-table. If the value found there is |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1635 non-@code{nil}, then it is used instead of the actual input character. |
6558 | 1636 |
1637 Note that this translation is the first thing that happens to a | |
1638 character after it is read from the terminal. Record-keeping features | |
1639 such as @code{recent-keys} and dribble files record the characters after | |
1640 translation. | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1641 |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1642 Note also that this translation is done before the characters are |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1643 supplied to input methods (@pxref{Input Methods}). Use |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1644 @code{translation-table-for-input} (@pxref{Translation of Characters}), |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1645 if you want to translate characters after input methods operate. |
6558 | 1646 @end defvar |
1647 | |
1648 @defun keyboard-translate from to | |
1649 This function modifies @code{keyboard-translate-table} to translate | |
1650 character code @var{from} into character code @var{to}. It creates | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1651 the keyboard translate table if necessary. |
6558 | 1652 @end defun |
1653 | |
60452
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1654 Here's an example of using the @code{keyboard-translate-table} to |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1655 make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1656 operations: |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1657 |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1658 @example |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1659 (keyboard-translate ?\C-x 'control-x) |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1660 (keyboard-translate ?\C-c 'control-c) |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1661 (keyboard-translate ?\C-v 'control-v) |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1662 (global-set-key [control-x] 'kill-region) |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1663 (global-set-key [control-c] 'kill-ring-save) |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1664 (global-set-key [control-v] 'yank) |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1665 @end example |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1666 |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1667 @noindent |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1668 On a graphical terminal that supports extended @acronym{ASCII} input, |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1669 you can still get the standard Emacs meanings of one of those |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1670 characters by typing it with the shift key. That makes it a different |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1671 character as far as keyboard translation is concerned, but it has the |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1672 same usual meaning. |
53520941e72d
(Translating Input): Replace flow-control example
Richard M. Stallman <rms@gnu.org>
parents:
60269
diff
changeset
|
1673 |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1674 The remaining translation features translate subsequences of key |
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1675 sequences being read. They are implemented in @code{read-key-sequence} |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1676 and have no effect on input read with @code{read-event}. |
15762
9305e83c313d
Lots of timer feature updates.
Richard M. Stallman <rms@gnu.org>
parents:
13367
diff
changeset
|
1677 |
6558 | 1678 @defvar function-key-map |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1679 This variable holds a keymap that describes the character sequences sent |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1680 by function keys on an ordinary character terminal. This keymap has the |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1681 same structure as other keymaps, but is used differently: it specifies |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1682 translations to make while reading key sequences, rather than bindings |
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1683 for key sequences. |
6558 | 1684 |
1685 If @code{function-key-map} ``binds'' a key sequence @var{k} to a vector | |
1686 @var{v}, then when @var{k} appears as a subsequence @emph{anywhere} in a | |
1687 key sequence, it is replaced with the events in @var{v}. | |
1688 | |
1689 For example, VT100 terminals send @kbd{@key{ESC} O P} when the | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1690 keypad @key{PF1} key is pressed. Therefore, we want Emacs to translate |
6558 | 1691 that sequence of events into the single event @code{pf1}. We accomplish |
1692 this by ``binding'' @kbd{@key{ESC} O P} to @code{[pf1]} in | |
1693 @code{function-key-map}, when using a VT100. | |
1694 | |
1695 Thus, typing @kbd{C-c @key{PF1}} sends the character sequence @kbd{C-c | |
1696 @key{ESC} O P}; later the function @code{read-key-sequence} translates | |
1697 this back into @kbd{C-c @key{PF1}}, which it returns as the vector | |
1698 @code{[?\C-c pf1]}. | |
1699 | |
1700 Entries in @code{function-key-map} are ignored if they conflict with | |
1701 bindings made in the minor mode, local, or global keymaps. The intent | |
1702 is that the character sequences that function keys send should not have | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1703 command bindings in their own right---but if they do, the ordinary |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1704 bindings take priority. |
6558 | 1705 |
1706 The value of @code{function-key-map} is usually set up automatically | |
1707 according to the terminal's Terminfo or Termcap entry, but sometimes | |
1708 those need help from terminal-specific Lisp files. Emacs comes with | |
1709 terminal-specific files for many common terminals; their main purpose is | |
1710 to make entries in @code{function-key-map} beyond those that can be | |
1711 deduced from Termcap and Terminfo. @xref{Terminal-Specific}. | |
1712 @end defvar | |
1713 | |
1714 @defvar key-translation-map | |
1715 This variable is another keymap used just like @code{function-key-map} | |
1716 to translate input events into other events. It differs from | |
1717 @code{function-key-map} in two ways: | |
1718 | |
1719 @itemize @bullet | |
1720 @item | |
1721 @code{key-translation-map} goes to work after @code{function-key-map} is | |
1722 finished; it receives the results of translation by | |
1723 @code{function-key-map}. | |
1724 | |
1725 @item | |
56617
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1726 Non-prefix bindings in @code{key-translation-map} override actual key |
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1727 bindings. For example, if @kbd{C-x f} has a non-prefix binding in |
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1728 @code{key-translation-map}, that translation takes effect even though |
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1729 @kbd{C-x f} also has a key binding in the global map. |
6558 | 1730 @end itemize |
1731 | |
56617
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1732 Note however that actual key bindings can have an effect on |
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1733 @code{key-translation-map}, even though they are overridden by it. |
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1734 Indeed, actual key bindings override @code{function-key-map} and thus |
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1735 may alter the key sequence that @code{key-translation-map} receives. |
64290
25e7c854aa97
(Translating Input): Fix typo.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
63583
diff
changeset
|
1736 Clearly, it is better to avoid this type of situation. |
56617
8685ad649821
(Translating Input): Only non-prefix bindings in `key-translation-map'
Luc Teirlinck <teirllm@auburn.edu>
parents:
56369
diff
changeset
|
1737 |
6558 | 1738 The intent of @code{key-translation-map} is for users to map one |
1739 character set to another, including ordinary characters normally bound | |
1740 to @code{self-insert-command}. | |
1741 @end defvar | |
1742 | |
1743 @cindex key translation function | |
1744 You can use @code{function-key-map} or @code{key-translation-map} for | |
1745 more than simple aliases, by using a function, instead of a key | |
1746 sequence, as the ``translation'' of a key. Then this function is called | |
1747 to compute the translation of that key. | |
1748 | |
1749 The key translation function receives one argument, which is the prompt | |
1750 that was specified in @code{read-key-sequence}---or @code{nil} if the | |
1751 key sequence is being read by the editor command loop. In most cases | |
1752 you can ignore the prompt value. | |
1753 | |
1754 If the function reads input itself, it can have the effect of altering | |
1755 the event that follows. For example, here's how to define @kbd{C-c h} | |
1756 to turn the character that follows into a Hyper character: | |
1757 | |
1758 @example | |
12282
586e3ea81792
updates for version 19.29 made by melissa; also needed to check out files
Melissa Weisshaus <melissa@gnu.org>
parents:
12098
diff
changeset
|
1759 @group |
6558 | 1760 (defun hyperify (prompt) |
1761 (let ((e (read-event))) | |
1762 (vector (if (numberp e) | |
21007
66d807bdc5b4
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
20103
diff
changeset
|
1763 (logior (lsh 1 24) e) |
6558 | 1764 (if (memq 'hyper (event-modifiers e)) |
1765 e | |
1766 (add-event-modifier "H-" e)))))) | |
1767 | |
1768 (defun add-event-modifier (string e) | |
1769 (let ((symbol (if (symbolp e) e (car e)))) | |
1770 (setq symbol (intern (concat string | |
1771 (symbol-name symbol)))) | |
12282
586e3ea81792
updates for version 19.29 made by melissa; also needed to check out files
Melissa Weisshaus <melissa@gnu.org>
parents:
12098
diff
changeset
|
1772 @end group |
586e3ea81792
updates for version 19.29 made by melissa; also needed to check out files
Melissa Weisshaus <melissa@gnu.org>
parents:
12098
diff
changeset
|
1773 @group |
6558 | 1774 (if (symbolp e) |
1775 symbol | |
1776 (cons symbol (cdr e))))) | |
1777 | |
1778 (define-key function-key-map "\C-ch" 'hyperify) | |
12282
586e3ea81792
updates for version 19.29 made by melissa; also needed to check out files
Melissa Weisshaus <melissa@gnu.org>
parents:
12098
diff
changeset
|
1779 @end group |
6558 | 1780 @end example |
1781 | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1782 Finally, if you have enabled keyboard character set decoding using |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1783 @code{set-keyboard-coding-system}, decoding is done after the |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1784 translations listed above. @xref{Terminal I/O Encoding}. In future |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1785 Emacs versions, character set decoding may be done before the other |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1786 translations. |
6558 | 1787 |
1788 @node Recording Input | |
1789 @subsection Recording Input | |
1790 | |
1791 @defun recent-keys | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1792 This function returns a vector containing the last 100 input events from |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1793 the keyboard or mouse. All input events are included, whether or not |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1794 they were used as parts of key sequences. Thus, you always get the last |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1795 100 input events, not counting events generated by keyboard macros. |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1796 (These are excluded because they are less interesting for debugging; it |
9009 | 1797 should be enough to see the events that invoked the macros.) |
39202
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1798 |
557aaff6fb23
(Time of Day): Document float-time.
Eli Zaretskii <eliz@gnu.org>
parents:
36873
diff
changeset
|
1799 A call to @code{clear-this-command-keys} (@pxref{Command Loop Info}) |
39221
68b26e98aef6
Clarify recent changes.
Richard M. Stallman <rms@gnu.org>
parents:
39202
diff
changeset
|
1800 causes this function to return an empty vector immediately afterward. |
6558 | 1801 @end defun |
1802 | |
26242 | 1803 @deffn Command open-dribble-file filename |
6558 | 1804 @cindex dribble file |
1805 This function opens a @dfn{dribble file} named @var{filename}. When a | |
1806 dribble file is open, each input event from the keyboard or mouse (but | |
1807 not those from keyboard macros) is written in that file. A | |
1808 non-character event is expressed using its printed representation | |
1809 surrounded by @samp{<@dots{}>}. | |
1810 | |
1811 You close the dribble file by calling this function with an argument | |
1812 of @code{nil}. | |
1813 | |
1814 This function is normally used to record the input necessary to | |
1815 trigger an Emacs bug, for the sake of a bug report. | |
1816 | |
1817 @example | |
1818 @group | |
1819 (open-dribble-file "~/dribble") | |
1820 @result{} nil | |
1821 @end group | |
1822 @end example | |
1823 @end deffn | |
1824 | |
1825 See also the @code{open-termscript} function (@pxref{Terminal Output}). | |
1826 | |
1827 @node Terminal Output | |
1828 @section Terminal Output | |
1829 @cindex terminal output | |
1830 | |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
1831 The terminal output functions send output to a text terminal, or keep |
6558 | 1832 track of output sent to the terminal. The variable @code{baud-rate} |
1833 tells you what Emacs thinks is the output speed of the terminal. | |
1834 | |
1835 @defvar baud-rate | |
1836 This variable's value is the output speed of the terminal, as far as | |
1837 Emacs knows. Setting this variable does not change the speed of actual | |
1838 data transmission, but the value is used for calculations such as | |
1839 padding. It also affects decisions about whether to scroll part of the | |
9009 | 1840 screen or repaint---even when using a window system. (We designed it |
6558 | 1841 this way despite the fact that a window system has no true ``output |
1842 speed'', to give you a way to tune these decisions.) | |
1843 | |
1844 The value is measured in baud. | |
1845 @end defvar | |
1846 | |
1847 If you are running across a network, and different parts of the | |
1848 network work at different baud rates, the value returned by Emacs may be | |
1849 different from the value used by your local terminal. Some network | |
1850 protocols communicate the local terminal speed to the remote machine, so | |
1851 that Emacs and other programs can get the proper value, but others do | |
1852 not. If Emacs has the wrong value, it makes decisions that are less | |
1853 than optimal. To fix the problem, set @code{baud-rate}. | |
1854 | |
1855 @defun baud-rate | |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1856 This obsolete function returns the value of the variable |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1857 @code{baud-rate}. |
6558 | 1858 @end defun |
1859 | |
1860 @defun send-string-to-terminal string | |
1861 This function sends @var{string} to the terminal without alteration. | |
1862 Control characters in @var{string} have terminal-dependent effects. | |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
1863 This function operates only on text terminals. |
6558 | 1864 |
1865 One use of this function is to define function keys on terminals that | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1866 have downloadable function key definitions. For example, this is how (on |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1867 certain terminals) to define function key 4 to move forward four |
6558 | 1868 characters (by transmitting the characters @kbd{C-u C-f} to the |
1869 computer): | |
1870 | |
1871 @example | |
1872 @group | |
1873 (send-string-to-terminal "\eF4\^U\^F") | |
1874 @result{} nil | |
1875 @end group | |
1876 @end example | |
1877 @end defun | |
1878 | |
1879 @deffn Command open-termscript filename | |
1880 @cindex termscript file | |
1881 This function is used to open a @dfn{termscript file} that will record | |
1882 all the characters sent by Emacs to the terminal. It returns | |
1883 @code{nil}. Termscript files are useful for investigating problems | |
1884 where Emacs garbles the screen, problems that are due to incorrect | |
1885 Termcap entries or to undesirable settings of terminal options more | |
1886 often than to actual Emacs bugs. Once you are certain which characters | |
1887 were actually output, you can determine reliably whether they correspond | |
1888 to the Termcap specifications in use. | |
1889 | |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1890 You close the termscript file by calling this function with an |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1891 argument of @code{nil}. |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1892 |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
1893 See also @code{open-dribble-file} in @ref{Recording Input}. |
6558 | 1894 |
1895 @example | |
1896 @group | |
1897 (open-termscript "../junk/termscript") | |
1898 @result{} nil | |
1899 @end group | |
1900 @end example | |
1901 @end deffn | |
1902 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1903 @node Sound Output |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1904 @section Sound Output |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1905 @cindex sound |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1906 |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1907 To play sound using Emacs, use the function @code{play-sound}. Only |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1908 certain systems are supported; if you call @code{play-sound} on a system |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1909 which cannot really do the job, it gives an error. Emacs version 20 and |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1910 earlier did not support sound at all. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1911 |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1912 The sound must be stored as a file in RIFF-WAVE format (@samp{.wav}) |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1913 or Sun Audio format (@samp{.au}). |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1914 |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1915 @defun play-sound sound |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1916 This function plays a specified sound. The argument, @var{sound}, has |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1917 the form @code{(sound @var{properties}...)}, where the @var{properties} |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1918 consist of alternating keywords (particular symbols recognized |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1919 specially) and values corresponding to them. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1920 |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1921 Here is a table of the keywords that are currently meaningful in |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1922 @var{sound}, and their meanings: |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1923 |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1924 @table @code |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1925 @item :file @var{file} |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1926 This specifies the file containing the sound to play. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1927 If the file name is not absolute, it is expanded against |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1928 the directory @code{data-directory}. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1929 |
27259
c41efa6c4be1
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27193
diff
changeset
|
1930 @item :data @var{data} |
c41efa6c4be1
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27193
diff
changeset
|
1931 This specifies the sound to play without need to refer to a file. The |
c41efa6c4be1
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27193
diff
changeset
|
1932 value, @var{data}, should be a string containing the same bytes as a |
c41efa6c4be1
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27193
diff
changeset
|
1933 sound file. We recommend using a unibyte string. |
c41efa6c4be1
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
27193
diff
changeset
|
1934 |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1935 @item :volume @var{volume} |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1936 This specifies how loud to play the sound. It should be a number in the |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1937 range of 0 to 1. The default is to use whatever volume has been |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1938 specified before. |
33951
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1939 |
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1940 @item :device @var{device} |
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1941 This specifies the system device on which to play the sound, as a |
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1942 string. The default device is system-dependent. |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1943 @end table |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1944 |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1945 Before actually playing the sound, @code{play-sound} |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1946 calls the functions in the list @code{play-sound-functions}. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1947 Each function is called with one argument, @var{sound}. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1948 @end defun |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1949 |
33951
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1950 @defun play-sound-file file &optional volume device |
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1951 This function is an alternative interface to playing a sound @var{file} |
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1952 specifying an optional @var{volume} and @var{device}. |
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1953 @end defun |
ac7551c36926
Doc play-sound-file and sound :device.
Dave Love <fx@gnu.org>
parents:
32924
diff
changeset
|
1954 |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1955 @defvar play-sound-functions |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1956 A list of functions to be called before playing a sound. Each function |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1957 is called with one argument, a property list that describes the sound. |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1958 @end defvar |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1959 |
46228 | 1960 @node X11 Keysyms |
1961 @section Operating on X11 Keysyms | |
6558 | 1962 |
1963 To define system-specific X11 keysyms, set the variable | |
1964 @code{system-key-alist}. | |
1965 | |
1966 @defvar system-key-alist | |
1967 This variable's value should be an alist with one element for each | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1968 system-specific keysym. Each element has the form @code{(@var{code} |
6558 | 1969 . @var{symbol})}, where @var{code} is the numeric keysym code (not |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
1970 including the ``vendor specific'' bit, |
27193 | 1971 @ifnottex |
24934 | 1972 -2**28), |
27193 | 1973 @end ifnottex |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
1974 @tex |
24934 | 1975 $-2^{28}$), |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1976 @end tex |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1977 and @var{symbol} is the name for the function key. |
6558 | 1978 |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1979 For example @code{(168 . mute-acute)} defines a system-specific key (used |
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
1980 by HP X servers) whose numeric code is |
27193 | 1981 @ifnottex |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1982 -2**28 |
27193 | 1983 @end ifnottex |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
47870
diff
changeset
|
1984 @tex |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1985 $-2^{28}$ |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1986 @end tex |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1987 + 168. |
6558 | 1988 |
21682
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1989 It is not crucial to exclude from the alist the keysyms of other X |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1990 servers; those do no harm, as long as they don't conflict with the ones |
90da2489c498
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
21007
diff
changeset
|
1991 used by the X server actually in use. |
12067 | 1992 |
22252
40089afa2b1d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
22138
diff
changeset
|
1993 The variable is always local to the current terminal, and cannot be |
12067 | 1994 buffer-local. @xref{Multiple Displays}. |
6558 | 1995 @end defvar |
1996 | |
46228 | 1997 You can specify which keysyms Emacs should use for the Meta, Alt, Hyper, and Super modifiers by setting these variables: |
1998 | |
1999 @defvar x-alt-keysym | |
2000 @defvarx x-meta-keysym | |
2001 @defvarx x-hyper-keysym | |
2002 @defvarx x-super-keysym | |
2003 The name of the keysym that should stand for the Alt modifier | |
2004 (respectively, for Meta, Hyper, and Super). For example, here is | |
2005 how to swap the Meta and Alt modifiers within Emacs: | |
2006 @lisp | |
2007 (setq x-alt-keysym 'meta) | |
2008 (setq x-meta-keysym 'alt) | |
2009 @end lisp | |
2010 @end defvar | |
2011 | |
6558 | 2012 @node Batch Mode |
2013 @section Batch Mode | |
2014 @cindex batch mode | |
2015 @cindex noninteractive use | |
2016 | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
2017 The command-line option @samp{-batch} causes Emacs to run |
6558 | 2018 noninteractively. In this mode, Emacs does not read commands from the |
2019 terminal, it does not alter the terminal modes, and it does not expect | |
2020 to be outputting to an erasable screen. The idea is that you specify | |
2021 Lisp programs to run; when they are finished, Emacs should exit. The | |
2022 way to specify the programs to run is with @samp{-l @var{file}}, which | |
60269
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
2023 loads the library named @var{file}, or @samp{-f @var{function}}, which |
cf30c1463800
(Startup Summary): Correct the options; add missing ones.
Richard M. Stallman <rms@gnu.org>
parents:
59390
diff
changeset
|
2024 calls @var{function} with no arguments, or @samp{--eval @var{form}}. |
6558 | 2025 |
2026 Any Lisp program output that would normally go to the echo area, | |
25751
467b88fab665
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
25479
diff
changeset
|
2027 either using @code{message}, or using @code{prin1}, etc., with @code{t} |
12098 | 2028 as the stream, goes instead to Emacs's standard error descriptor when |
36873 | 2029 in batch mode. Similarly, input that would normally come from the |
2030 minibuffer is read from the standard input descriptor. | |
2031 Thus, Emacs behaves much like a noninteractive | |
6558 | 2032 application program. (The echo area output that Emacs itself normally |
2033 generates, such as command echoing, is suppressed entirely.) | |
2034 | |
2035 @defvar noninteractive | |
2036 This variable is non-@code{nil} when Emacs is running in batch mode. | |
2037 @end defvar | |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2038 |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2039 @node Session Management |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2040 @section Session Management |
43829
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2041 @cindex session manager |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2042 |
43829
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2043 Emacs supports the X Session Management Protocol for suspension and |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2044 restart of applications. In the X Window System, a program called the |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2045 @dfn{session manager} has the responsibility to keep track of the |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2046 applications that are running. During shutdown, the session manager |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2047 asks applications to save their state, and delays the actual shutdown |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2048 until they respond. An application can also cancel the shutdown. |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2049 |
43829
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2050 When the session manager restarts a suspended session, it directs |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2051 these applications to individually reload their saved state. It does |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2052 this by specifying a special command-line argument that says what |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2053 saved session to restore. For Emacs, this argument is @samp{--smid |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2054 @var{session}}. |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2055 |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2056 @defvar emacs-save-session-functions |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2057 Emacs supports saving state by using a hook called |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2058 @code{emacs-save-session-functions}. Each function in this hook is |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2059 called when the session manager tells Emacs that the window system is |
56369
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
2060 shutting down. The functions are called with no arguments and with the |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
2061 current buffer set to a temporary buffer. Each function can use |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
2062 @code{insert} to add Lisp code to this buffer. At the end, Emacs |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
2063 saves the buffer in a file that a subsequent Emacs invocation will |
6578797626ea
Various small changes in addition to:
Luc Teirlinck <teirllm@auburn.edu>
parents:
56353
diff
changeset
|
2064 load in order to restart the saved session. |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2065 |
43829
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2066 If a function in @code{emacs-save-session-functions} returns |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2067 non-@code{nil}, Emacs tells the session manager to cancel the |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2068 shutdown. |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2069 @end defvar |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2070 |
56353 | 2071 Here is an example that just inserts some text into @samp{*scratch*} when |
43829
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2072 Emacs is restarted by the session manager. |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2073 |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2074 @example |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2075 @group |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2076 (add-hook 'emacs-save-session-functions 'save-yourself-test) |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2077 @end group |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2078 |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2079 @group |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2080 (defun save-yourself-test () |
43829
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2081 (insert "(save-excursion |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2082 (switch-to-buffer \"*scratch*\") |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2083 (insert \"I am restored\"))") |
7e937c00ff00
Clean up session manager node.
Richard M. Stallman <rms@gnu.org>
parents:
43822
diff
changeset
|
2084 nil) |
43822
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2085 @end group |
340b4384f4ac
(Session Management): New node about X Session management.
Jan Djärv <jan.h.d@swipnet.se>
parents:
43037
diff
changeset
|
2086 @end example |
52401 | 2087 |
2088 @ignore | |
2089 arch-tag: 8378814a-30d7-467c-9615-74a80b9988a7 | |
2090 @end ignore |