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