Change in quoting.
[bpt/emacs.git] / man / cmdargs.texi
CommitLineData
6bf7aab6
DL
1@c This is part of the Emacs manual.
2@c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions.
4@node Command Arguments, Antinews, Service, Top
5@appendix Command Line Arguments
6@cindex command line arguments
7@cindex arguments (command line)
8@cindex options (command line)
9@cindex switches (command line)
10@cindex startup (command line arguments)
11
12 GNU Emacs supports command line arguments to request various actions
13when invoking Emacs. These are for compatibility with other editors and
14for sophisticated activities. We don't recommend using them for
15ordinary editing.
16
17 Arguments starting with @samp{-} are @dfn{options}. Other arguments
18specify files to visit. Emacs visits the specified files while it
19starts up. The last file name on your command line becomes the current
20buffer; the other files are also present in other buffers. As usual,
21the special argument @samp{--} says that all subsequent arguments
22are file names, not options, even if they start with @samp{-}.
23
24 Emacs command options can specify many things, such as the size and
25position of the X window Emacs uses, its colors, and so on. A few
26options support advanced usage, such as running Lisp functions on files
27in batch mode. The sections of this chapter describe the available
28options, arranged according to their purpose.
29
30 There are two ways of writing options: the short forms that start with
31a single @samp{-}, and the long forms that start with @samp{--}. For
32example, @samp{-d} is a short form and @samp{--display} is the
33corresponding long form.
34
35 The long forms with @samp{--} are easier to remember, but longer to
36type. However, you don't have to spell out the whole option name; any
37unambiguous abbreviation is enough. When a long option takes an
38argument, you can use either a space or an equal sign to separate the
39option name and the argument. Thus, you can write either
40@samp{--display sugar-bombs:0.0} or @samp{--display=sugar-bombs:0.0}.
41We recommend an equal sign because it makes the relationship clearer,
42and the tables below always show an equal sign.
43
44@cindex initial options (command line)
45@cindex action options (command line)
46 Most options specify how to initialize Emacs, or set parameters for
47the Emacs session. We call them @dfn{initial options}. A few options
48specify things to do: for example, load libraries, call functions, or
49exit Emacs. These are called @dfn{action options}. These and file
50names together are called @dfn{action arguments}. Emacs processes all
51the action arguments in the order they are written.
52
53@menu
54* Action Arguments:: Arguments to visit files, load libraries,
55 and call functions.
56* Initial Options:: Arguments that take effect while starting Emacs.
57* Command Example:: Examples of using command line arguments.
58* Resume Arguments:: Specifying arguments when you resume a running Emacs.
59* Environment:: Environment variables that Emacs uses.
60
61* Display X:: Changing the default display and using remote login.
62* Font X:: Choosing a font for text, under X.
63* Colors X:: Choosing colors, under X.
64* Window Size X:: Start-up window size, under X.
65* Borders X:: Internal and external borders, under X.
66* Title X:: Specifying the initial frame's title.
67* Icons X:: Choosing what sort of icon to use, under X.
68* Resources X:: Advanced use of classes and resources, under X.
69* Lucid Resources:: X resources for Lucid menus.
70* Motif Resources:: X resources for Motif menus.
71@end menu
72
73@node Action Arguments
74@appendixsec Action Arguments
75
76 Here is a table of the action arguments and options:
77
78@table @samp
79@item @var{file}
ca99d4bd
GM
80@itemx --visit @var{file}
81@itemx --file @var{file}
6bf7aab6
DL
82Visit @var{file} using @code{find-file}. @xref{Visiting}.
83
84@item +@var{linenum} @var{file}
85Visit @var{file} using @code{find-file}, then go to line number
86@var{linenum} in it.
87
88@need 3000
89@item -l @var{file}
90@itemx --load=@var{file}
91Load a Lisp library named @var{file} with the function @code{load}.
92@xref{Lisp Libraries}. The library can be found either in the current
93directory, or in the Emacs library search path as specified
60a96371 94with @env{EMACSLOADPATH} (@pxref{General Variables}).
6bf7aab6
DL
95
96@item -f @var{function}
97@itemx --funcall=@var{function}
98Call Lisp function @var{function} with no arguments.
99
100@item --eval @var{expression}
ca99d4bd 101@itemx --execute @var{expression}
6bf7aab6
DL
102Evaluate Lisp expression @var{expression}.
103
104@item --insert=@var{file}
105Insert the contents of @var{file} into the current buffer. This is like
106what @kbd{M-x insert-file} does. @xref{Misc File Ops}.
107
108@item --kill
109Exit from Emacs without asking for confirmation.
110@end table
111
112@vindex command-line-args
113 The init file can access the values of the action arguments as the
114elements of a list in the variable @code{command-line-args}. The init
115file can override the normal processing of the action arguments, or
116define new ones, by reading and setting this variable.
117
118@node Initial Options
119@appendixsec Initial Options
120
121 The initial options specify parameters for the Emacs session. This
122section describes the more general initial options; some other options
97878c08
EZ
123specifically related to the X Window System appear in the following
124sections.
6bf7aab6
DL
125
126 Some initial options affect the loading of init files. The normal
127actions of Emacs are to first load @file{site-start.el} if it exists,
128then your own init file @file{~/.emacs} if it exists, and finally
129@file{default.el} if it exists; certain options prevent loading of some
130of these files or substitute other files for them.
131
132@table @samp
133@item -t @var{device}
134@itemx --terminal=@var{device}
135Use @var{device} as the device for terminal input and output.
136
137@item -d @var{display}
138@itemx --display=@var{display}
139Use the X Window System and use the display named @var{display} to open
140the initial Emacs frame.
141
142@item -nw
143@itemx --no-windows
54e33bb3
EZ
144Don't communicate directly with the window system, disregarding the
145@env{DISPLAY} environment variable even if it is set. This forces Emacs
146to run as if the display were a character terminal.
6bf7aab6
DL
147
148@need 3000
149@cindex batch mode
150@item -batch
151@itemx --batch
152Run Emacs in @dfn{batch mode}, which means that the text being edited is
153not displayed and the standard terminal interrupt characters such as
154@kbd{C-z} and @kbd{C-c} continue to have their normal effect. Emacs in
155batch mode outputs to @code{stderr} only what would normally be printed
156in the echo area under program control.
157
158Batch mode is used for running programs written in Emacs Lisp from
159shell scripts, makefiles, and so on. Normally the @samp{-l} option
160or @samp{-f} option will be used as well, to invoke a Lisp program
161to do the batch processing.
162
163@samp{-batch} implies @samp{-q} (do not load an init file). It also causes
164Emacs to kill itself after all command options have been processed. In
165addition, auto-saving is not done except in buffers for which it has been
166explicitly requested.
167
168@item -q
169@itemx --no-init-file
170Do not load your Emacs init file @file{~/.emacs}, or @file{default.el}
171either.
172
173@item --no-site-file
174Do not load @file{site-start.el}. The options @samp{-q}, @samp{-u}
175and @samp{-batch} have no effect on the loading of this file---this is
176the only option that blocks it.
177
178@item -u @var{user}
179@itemx --user=@var{user}
180Load @var{user}'s Emacs init file @file{~@var{user}/.emacs} instead of
181your own.
182
183@item --debug-init
184Enable the Emacs Lisp debugger for errors in the init file.
185
186@item --unibyte
56bfaffd 187@cindex unibyte operation, command-line argument
6bf7aab6
DL
188Set up to do almost everything with single-byte buffers and strings.
189All buffers and strings are unibyte unless you (or a Lisp program)
4b1ad19a
RS
190explicitly ask for a multibyte buffer or string. (Note that Emacs
191always loads Lisp files in multibyte mode, even if @samp{--unibyte} is
192specified; see @ref{Enabling Multibyte}.) Setting the environment
193variable @env{EMACS_UNIBYTE} has the same effect.
6bf7aab6
DL
194
195@item --multibyte
60a96371 196Inhibit the effect of @env{EMACS_UNIBYTE}, so that Emacs
6bf7aab6
DL
197uses multibyte characters by default, as usual.
198@end table
199
200@node Command Example
201@appendixsec Command Argument Example
202
203 Here is an example of using Emacs with arguments and options. It
204assumes you have a Lisp program file called @file{hack-c.el} which, when
205loaded, performs some useful operation on the current buffer, expected
206to be a C program.
207
208@example
209emacs -batch foo.c -l hack-c -f save-buffer >& log
210@end example
211
212@noindent
213This says to visit @file{foo.c}, load @file{hack-c.el} (which makes
214changes in the visited file), save @file{foo.c} (note that
215@code{save-buffer} is the function that @kbd{C-x C-s} is bound to), and
216then exit back to the shell (because of @samp{-batch}). @samp{-batch}
217also guarantees there will be no problem redirecting output to
218@file{log}, because Emacs will not assume that it has a display terminal
219to work with.
220
221@node Resume Arguments
222@appendixsec Resuming Emacs with Arguments
223
224 You can specify action arguments for Emacs when you resume it after
225a suspension. To prepare for this, put the following code in your
226@file{.emacs} file (@pxref{Hooks}):
227
228@example
229(add-hook 'suspend-hook 'resume-suspend-hook)
230(add-hook 'suspend-resume-hook 'resume-process-args)
231@end example
232
233 As further preparation, you must execute the shell script
234@file{emacs.csh} (if you use csh as your shell) or @file{emacs.bash} (if
235you use bash as your shell). These scripts define an alias named
236@code{edit}, which will resume Emacs giving it new command line
237arguments such as files to visit.
238
239 Only action arguments work properly when you resume Emacs. Initial
240arguments are not recognized---it's too late to execute them anyway.
241
242 Note that resuming Emacs (with or without arguments) must be done from
243within the shell that is the parent of the Emacs job. This is why
244@code{edit} is an alias rather than a program or a shell script. It is
245not possible to implement a resumption command that could be run from
246other subjobs of the shell; no way to define a command that could be
60a96371 247made the value of @env{EDITOR}, for example. Therefore, this feature
6bf7aab6
DL
248does not take the place of the Emacs Server feature (@pxref{Emacs
249Server}).
250
251 The aliases use the Emacs Server feature if you appear to have a
252server Emacs running. However, they cannot determine this with complete
253accuracy. They may think that a server is still running when in
254actuality you have killed that Emacs, because the file
255@file{/tmp/.esrv@dots{}} still exists. If this happens, find that
256file and delete it.
257
258@node Environment
259@appendixsec Environment Variables
260@cindex environment variables
261
4b1ad19a
RS
262 The @dfn{environment} is a feature of the operating system; it
263consists of a collection of variables with names and values. Each
264variable is called an @dfn{environment variable}; environment variable
265names are case-sensitive, and it is conventional to use upper case
266letters only. The values are all text strings.
6bf7aab6 267
4b1ad19a
RS
268 What makes the environment useful is that subprocesses inherit the
269environment automatically from their parent process. This means you
270can set up an environment variable in your login shell, and all the
271programs you run (including Emacs) will automatically see it.
272Subprocesses of Emacs (such as shells, compilers, and version-control
273software) inherit the environment from Emacs, too.
274
275@findex setenv
276@findex getenv
277 Inside Emacs, the command @kbd{M-x getenv} gets the value of an
278environment variable. @kbd{M-x setenv} sets a variable in the Emacs
279environment. The way to set environment variables outside of Emacs
280depends on the operating system, and especially the shell that you are
281using. For example, here's how to set the environment variable
282@env{ORGANIZATION} to @samp{not very much} using Bash:
6bf7aab6
DL
283
284@example
285export ORGANIZATION="not very much"
286@end example
287
288@noindent
289and here's how to do it in csh or tcsh:
290
291@example
292setenv ORGANIZATION "not very much"
293@end example
294
4b1ad19a
RS
295 When Emacs is set-up to use the X Window System, it inherits the use
296of a large number of environment variables from the X libraries. See
6bf7aab6
DL
297the X documentation for more information.
298
299@menu
300* General Variables:: Environment variables that all versions of Emacs use.
301* Misc Variables:: Certain system-specific variables.
302@end menu
303
304@node General Variables
305@appendixsubsec General Variables
306
4b1ad19a
RS
307 Here is an alphabetical list of specific environment variables that
308have special meanings in Emacs, giving the name of each variable and
309its meaning. Most of these variables are also used by some other
310programs. Emacs does not require any of these environment variables
311to be set, but it uses their values if they are set.
312
60a96371 313@table @env
6bf7aab6
DL
314@item AUTHORCOPY
315The name of a file used to archive news articles posted with the @sc{gnus}
316package.
317@item CDPATH
318Used by the @code{cd} command to search for the directory you specify,
319when you specify a relative directory name.
320@item DOMAINNAME
321The name of the Internet domain that the machine running Emacs is
322located in. Used by the @sc{gnus} package.
323@item EMACS_UNIBYTE
56bfaffd 324@cindex unibyte operation, environment variable
4b1ad19a
RS
325Defining this environment variable with a nonempty value directs Emacs
326to do almost everything with single-byte buffers and strings. It is
327equivalent to using the @samp{--unibyte} command-line option on each
328invocation. @xref{Initial Options}.
6bf7aab6 329@item EMACSDATA
4b1ad19a
RS
330Directory for the architecture-independent files that come with Emacs.
331This is used to initialize the Lisp variable @code{data-directory}.
18a349f5 332@item EMACSDOC
4b1ad19a
RS
333Directory for the documentation string file,
334@file{DOC-@var{emacsversion}}. This is used to initialize the Lisp
335variable @code{data-directory}.
6bf7aab6 336@item EMACSLOADPATH
4b1ad19a
RS
337A colon-separated list of directories to search for Emacs Lisp
338files---used to initialize @code{load-path}.
6bf7aab6 339@item EMACSPATH
4b1ad19a
RS
340A colon-separated list of directories to search for executable
341files---used to initialize @code{exec-path}.
6bf7aab6 342@item ESHELL
60a96371 343Used for shell-mode to override the @env{SHELL} environment variable.
6bf7aab6
DL
344@item HISTFILE
345The name of the file that shell commands are saved in between logins.
346This variable defaults to @file{~/.history} if you use (t)csh as shell,
347to @file{~/.bash_history} if you use bash, to @file{~/.sh_history} if
348you use ksh, and to @file{~/.history} otherwise.
349@item HOME
350The location of the user's files in the directory tree; used for
351expansion of file names starting with a tilde (@file{~}). On MS-DOS, it
352defaults to the directory from which Emacs was started, with @samp{/bin}
353removed from the end if it was present.
354@item HOSTNAME
355The name of the machine that Emacs is running on.
356@item INCPATH
357A colon-separated list of directories. Used by the @code{complete} package
358to search for files.
359@item INFOPATH
4b1ad19a 360A colon-separated list of directories to search for Info files in.
fbc164de 361@item LC_ALL
6bf7aab6 362@itemx LC_CTYPE
fbc164de 363@itemx LANG
4b1ad19a
RS
364The user's preferred locale. (The first of these environment
365variables with a nonempty value specifies the locale.) A locale name
366which contains @samp{8859-@var{n}}, @samp{8859_@var{n}} or
367@samp{8859@var{n}}, where @var{n} is between 1 and 4, automatically
368specifies the @samp{Latin-@var{n}} language environment when Emacs
369starts up. If @var{n} is 9, that specifies @samp{Latin-5}.
370
371The locale value you specify with one of these three variables is
372matched against entries in @code{locale-language-names},
fbc164de 373@code{locale-charset-language-names}, and
4b1ad19a
RS
374@code{locale-preferred-coding-systems}, to select a default language
375environment and coding system. @xref{Language Environments}.
6bf7aab6 376@item LOGNAME
60a96371 377The user's login name. See also @env{USER}.
6bf7aab6
DL
378@item MAIL
379The name of the user's system mail inbox.
380@item MAILRC
4b1ad19a
RS
381Name of file containing mail aliases. (The default is
382@file{~/.mailrc}.)
6bf7aab6 383@item MH
4b1ad19a 384Name of setup file for the mh system. (The default is @file{~/.mh_profile}.)
6bf7aab6
DL
385@item NAME
386The real-world name of the user.
387@item NNTPSERVER
388The name of the news server. Used by the mh and @sc{gnus} packages.
389@item ORGANIZATION
390The name of the organization to which you belong. Used for setting the
391`Organization:' header in your posts from the @sc{gnus} package.
392@item PATH
4b1ad19a
RS
393A colon-separated list of directories in which executables reside.
394(On MS-DOS, it is semicolon-separated instead.) This is used to
395initialize the Emacs Lisp variable @code{exec-path}.
6bf7aab6
DL
396@item PWD
397If set, this should be the default directory when Emacs was started.
398@item REPLYTO
399If set, this specifies an initial value for the variable
400@code{mail-default-reply-to}. @xref{Mail Headers}.
401@item SAVEDIR
402The name of a directory in which news articles are saved by default.
403Used by the @sc{gnus} package.
404@item SHELL
405The name of an interpreter used to parse and execute programs run from
406inside Emacs.
b370b3b0 407@cindex background mode, on @code{xterm}
6bf7aab6
DL
408@item TERM
409The name of the terminal that Emacs is running on. The variable must be
410set unless Emacs is run in batch mode. On MS-DOS, it defaults to
411@samp{internal}, which specifies a built-in terminal emulation that
b370b3b0
EZ
412handles the machine's own display. If the value of @env{TERM} indicates
413that Emacs runs in non-windowed mode from @code{xterm} or a similar
414terminal emulator, the background mode defaults to @samp{light}, and
415Emacs will choose colors that are appropriate for a light background.
6bf7aab6
DL
416@item TERMCAP
417The name of the termcap library file describing how to program the
60a96371 418terminal specified by the @env{TERM} variable. This defaults to
6bf7aab6
DL
419@file{/etc/termcap}.
420@item TMPDIR
421Used by the Emerge package as a prefix for temporary files.
422@item TZ
423This specifies the current time zone and possibly also daylight savings
424information. On MS-DOS, the default is based on country code; see the
425file @file{msdos.c} for details.
426@item USER
60a96371 427The user's login name. See also @env{LOGNAME}. On MS-DOS, this
6bf7aab6
DL
428defaults to @samp{root}.
429@item VERSION_CONTROL
430Used to initialize the @code{version-control} variable (@pxref{Backup
431Names}).
432@end table
433
434@node Misc Variables
435@appendixsubsec Miscellaneous Variables
436
437These variables are used only on particular configurations:
438
60a96371 439@table @env
6bf7aab6
DL
440@item COMSPEC
441On MS-DOS, the name of the command interpreter to use. This is used to
60a96371 442make a default value for the @env{SHELL} environment variable.
6bf7aab6
DL
443
444@item NAME
60a96371 445On MS-DOS, this variable defaults to the value of the @env{USER}
6bf7aab6
DL
446variable.
447
448@item TEMP
449@itemx TMP
450On MS-DOS, these specify the name of the directory for storing temporary
451files in.
452
453@item EMACSTEST
454On MS-DOS, this specifies a file to use to log the operation of the
455internal terminal emulator. This feature is useful for submitting bug
456reports.
457
458@item EMACSCOLORS
459Used on MS-DOS systems to set screen colors early, so that the screen
460won't momentarily flash the default colors when Emacs starts up. The
461value of this variable should be two-character encoding of the
462foreground (the first character) and the background (the second
463character) colors of the default face. Each character should be the
464hexadecimal code for the desired color on a standard PC text-mode
465display.
466
467The PC display usually supports only eight background colors. However,
468Emacs switches the DOS display to a mode where all 16 colors can be used
469for the background, so all four bits of the background color are
470actually used.
471
472@item WINDOW_GFX
473Used when initializing the Sun windows system.
474@end table
475
476@node Display X
477@appendixsec Specifying the Display Name
97878c08 478@cindex display name (X Window System)
60a96371 479@cindex @env{DISPLAY} environment variable
6bf7aab6 480
60a96371 481 The environment variable @env{DISPLAY} tells all X clients, including
6bf7aab6
DL
482Emacs, where to display their windows. Its value is set up by default
483in ordinary circumstances, when you start an X server and run jobs
484locally. Occasionally you may need to specify the display yourself; for
485example, if you do a remote login and want to run a client program
486remotely, displaying on your local screen.
487
488 With Emacs, the main reason people change the default display is to
489let them log into another system, run Emacs on that system, but have the
490window displayed at their local terminal. You might need to use login
491to another system because the files you want to edit are there, or
492because the Emacs executable file you want to run is there.
493
60a96371 494 The syntax of the @env{DISPLAY} environment variable is
6bf7aab6
DL
495@samp{@var{host}:@var{display}.@var{screen}}, where @var{host} is the
496host name of the X Window System server machine, @var{display} is an
497arbitrarily-assigned number that distinguishes your server (X terminal)
498from other servers on the same machine, and @var{screen} is a
499rarely-used field that allows an X server to control multiple terminal
500screens. The period and the @var{screen} field are optional. If
501included, @var{screen} is usually zero.
502
503 For example, if your host is named @samp{glasperle} and your server is
504the first (or perhaps the only) server listed in the configuration, your
60a96371 505@env{DISPLAY} is @samp{glasperle:0.0}.
6bf7aab6
DL
506
507 You can specify the display name explicitly when you run Emacs, either
60a96371 508by changing the @env{DISPLAY} variable, or with the option @samp{-d
6bf7aab6
DL
509@var{display}} or @samp{--display=@var{display}}. Here is an example:
510
511@smallexample
512emacs --display=glasperle:0 &
513@end smallexample
514
515 You can inhibit the direct use of X with the @samp{-nw} option. This
516is also an initial option. It tells Emacs to display using ordinary
517ASCII on its controlling terminal.
518
519 Sometimes, security arrangements prevent a program on a remote system
520from displaying on your local system. In this case, trying to run Emacs
521produces messages like this:
522
523@smallexample
524Xlib: connection to "glasperle:0.0" refused by server
525@end smallexample
526
527@noindent
528You might be able to overcome this problem by using the @code{xhost}
529command on the local system to give permission for access from your
530remote machine.
531
532@node Font X
533@appendixsec Font Specification Options
97878c08 534@cindex font name (X Window System)
6bf7aab6
DL
535
536 By default, Emacs displays text in the font named @samp{9x15}, which
537makes each character nine pixels wide and fifteen pixels high. You can
538specify a different font on your command line through the option
539@samp{-fn @var{name}}.
540
541@table @samp
542@item -fn @var{name}
543Use font @var{name} as the default font.
544
545@item --font=@var{name}
546@samp{--font} is an alias for @samp{-fn}.
547@end table
548
549 Under X, each font has a long name which consists of eleven words or
550numbers, separated by dashes. Some fonts also have shorter
551nicknames---@samp{9x15} is such a nickname. You can use either kind of
552name. You can use wildcard patterns for the font name; then Emacs lets
553X choose one of the fonts that match the pattern. Here is an example,
554which happens to specify the font whose nickname is @samp{6x13}:
555
556@smallexample
557emacs -fn "-misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1" &
558@end smallexample
559
560@noindent
561You can also specify the font in your @file{.Xdefaults} file:
562
563@smallexample
564emacs.font: -misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1
565@end smallexample
566
567 A long font name has the following form:
568
569@smallexample
570-@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{}
571@dots{}-@var{pixels}-@var{height}-@var{horiz}-@var{vert}-@var{spacing}-@var{width}-@var{charset}
572@end smallexample
573
574@table @var
575@item family
576This is the name of the font family---for example, @samp{courier}.
577@item weight
578This is normally @samp{bold}, @samp{medium} or @samp{light}. Other
579words may appear here in some font names.
580@item slant
581This is @samp{r} (roman), @samp{i} (italic), @samp{o} (oblique),
582@samp{ri} (reverse italic), or @samp{ot} (other).
583@item widthtype
584This is normally @samp{condensed}, @samp{extended}, @samp{semicondensed}
585or @samp{normal}. Other words may appear here in some font names.
586@item style
587This is an optional additional style name. Usually it is empty---most
588long font names have two hyphens in a row at this point.
589@item pixels
590This is the font height, in pixels.
591@item height
592This is the font height on the screen, measured in tenths of a printer's
593point---approximately 1/720 of an inch. In other words, it is the point
594size of the font, times ten. For a given vertical resolution,
595@var{height} and @var{pixels} are proportional; therefore, it is common
596to specify just one of them and use @samp{*} for the other.
597@item horiz
598This is the horizontal resolution, in pixels per inch, of the screen for
599which the font is intended.
600@item vert
601This is the vertical resolution, in dots per inch, of the screen for
602which the font is intended. Normally the resolution of the fonts on
603your system is the right value for your screen; therefore, you normally
604specify @samp{*} for this and @var{horiz}.
605@item spacing
606This is @samp{m} (monospace), @samp{p} (proportional) or @samp{c}
607(character cell). Emacs can use @samp{m} and @samp{c} fonts.
608@item width
609This is the average character width, in pixels, multiplied by ten.
610@item charset
611This is the character set that the font depicts.
612Normally you should use @samp{iso8859-1}.
613@end table
614
615 Use only fixed-width fonts---that is, fonts in which all characters
616have the same width; Emacs cannot yet handle display properly for
617variable-width fonts. Any font with @samp{m} or @samp{c} in the
618@var{spacing} field of the long name is a fixed-width font. Here's how
619to use the @code{xlsfonts} program to list all the fixed-width fonts
620available on your system:
621
622@example
623xlsfonts -fn '*x*' | egrep "^[0-9]+x[0-9]+"
624xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-m*'
625xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-c*'
626@end example
627
628@noindent
629To see what a particular font looks like, use the @code{xfd} command.
630For example:
631
632@example
633xfd -fn 6x13
634@end example
635
636@noindent
637displays the entire font @samp{6x13}.
638
639 While running Emacs, you can set the font of the current frame
640(@pxref{Frame Parameters}) or for a specific kind of text
641(@pxref{Faces}).
642
643@node Colors X
644@appendixsec Window Color Options
97878c08 645@cindex color of window (X Window System)
54e33bb3 646@cindex text colors, from command line
6bf7aab6 647
54e33bb3
EZ
648@findex list-colors-display
649@cindex available colors
6bf7aab6
DL
650 On a color display, you can specify which color to use for various
651parts of the Emacs display. To find out what colors are available on
54e33bb3 652your system, type @kbd{M-x list-colors-display}, or press
4b1ad19a 653@kbd{C-Mouse-2} and select @samp{Display Colors} from the pop-up menu.
54e33bb3
EZ
654If you do not specify colors, on windowed displays the default for the
655background is white and the default for all other colors is black. On a
656monochrome display, the foreground is black, the background is white,
657and the border is gray if the display supports that. On terminals, the
658background is usually black and the foreground is white.
6bf7aab6 659
54e33bb3 660 Here is a list of the command-line options for specifying colors:
6bf7aab6
DL
661
662@table @samp
663@item -fg @var{color}
664@itemx --foreground-color=@var{color}
665Specify the foreground color.
666@item -bg @var{color}
667@itemx --background-color=@var{color}
668Specify the background color.
669@item -bd @var{color}
670@itemx --border-color=@var{color}
671Specify the color of the border of the X window.
672@item -cr @var{color}
673@itemx --cursor-color=@var{color}
674Specify the color of the Emacs cursor which indicates where point is.
675@item -ms @var{color}
676@itemx --mouse-color=@var{color}
677Specify the color for the mouse cursor when the mouse is in the Emacs window.
678@item -r
679@itemx --reverse-video
680Reverse video---swap the foreground and background colors.
681@end table
682
683 For example, to use a coral mouse cursor and a slate blue text cursor,
684enter:
685
686@example
687emacs -ms coral -cr 'slate blue' &
688@end example
689
690 You can reverse the foreground and background colors through the
691@samp{-r} option or with the X resource @samp{reverseVideo}.
692
4b1ad19a
RS
693 The @samp{-fg}, @code{-bg}, and @code{-rv} options function on
694character terminals as well as on window systems.
54e33bb3 695
6bf7aab6
DL
696@node Window Size X
697@appendixsec Options for Window Geometry
97878c08 698@cindex geometry (X Window System)
6bf7aab6
DL
699
700 The @samp{-geometry} option controls the size and position of the
701initial Emacs frame. Here is the format for specifying the window
702geometry:
703
704@table @samp
705@item -g @var{width}x@var{height}@r{@{}+-@r{@}}@var{xoffset}@r{@{}+-@r{@}}@var{yoffset}
706Specify window size @var{width} and @var{height} (measured in character
707columns and lines), and positions @var{xoffset} and @var{yoffset}
708(measured in pixels).
709
710@item --geometry=@var{width}x@var{height}@r{@{}+-@r{@}}@var{xoffset}@r{@{}+-@r{@}}@var{yoffset}
711This is another way of writing the same thing.
712@end table
713
714@noindent
715@code{@r{@{}+-@r{@}}} means either a plus sign or a minus sign. A plus
716sign before @var{xoffset} means it is the distance from the left side of
717the screen; a minus sign means it counts from the right side. A plus
718sign before @var{yoffset} means it is the distance from the top of the
719screen, and a minus sign there indicates the distance from the bottom.
720The values @var{xoffset} and @var{yoffset} may themselves be positive or
721negative, but that doesn't change their meaning, only their direction.
722
723 Emacs uses the same units as @code{xterm} does to interpret the geometry.
724The @var{width} and @var{height} are measured in characters, so a large font
725creates a larger frame than a small font. The @var{xoffset} and
726@var{yoffset} are measured in pixels.
727
728 Since the mode line and the echo area occupy the last 2 lines of the
729frame, the height of the initial text window is 2 less than the height
730specified in your geometry. In non-X-toolkit versions of Emacs,
731the menu bar also takes one line of the specified number.
732
733 You do not have to specify all of the fields in the geometry
734specification.
735
736 If you omit both @var{xoffset} and @var{yoffset}, the window manager
737decides where to put the Emacs frame, possibly by letting you place
738it with the mouse. For example, @samp{164x55} specifies a window 164
739columns wide, enough for two ordinary width windows side by side, and 55
740lines tall.
741
742 The default width for Emacs is 80 characters and the default height is
74340 lines. You can omit either the width or the height or both. If
744you start the geometry with an integer, Emacs interprets it as the
745width. If you start with an @samp{x} followed by an integer, Emacs
746interprets it as the height. Thus, @samp{81} specifies just the width;
747@samp{x45} specifies just the height.
748
749 If you start with @samp{+} or @samp{-}, that introduces an offset,
750which means both sizes are omitted. Thus, @samp{-3} specifies the
751@var{xoffset} only. (If you give just one offset, it is always
752@var{xoffset}.) @samp{+3-3} specifies both the @var{xoffset} and the
753@var{yoffset}, placing the frame near the bottom left of the screen.
754
755 You can specify a default for any or all of the fields in
756@file{.Xdefaults} file, and then override selected fields with a
757@samp{--geometry} option.
758
759@node Borders X
760@appendixsec Internal and External Borders
97878c08 761@cindex borders (X Window System)
6bf7aab6
DL
762
763 An Emacs frame has an internal border and an external border. The
764internal border is an extra strip of the background color around all
765four edges of the frame. Emacs itself adds the internal border. The
766external border is added by the window manager outside the internal
767border; it may contain various boxes you can click on to move or iconify
768the window.
769
770@table @samp
771@item -ib @var{width}
772@itemx --internal-border=@var{width}
773Specify @var{width} as the width of the internal border.
774
775@item -bw @var{width}
776@itemx --border-width=@var{width}
777Specify @var{width} as the width of the main border.
778@end table
779
780 When you specify the size of the frame, that does not count the
781borders. The frame's position is measured from the outside edge of the
782external border.
783
784 Use the @samp{-ib @var{n}} option to specify an internal border
785@var{n} pixels wide. The default is 1. Use @samp{-bw @var{n}} to
786specify the width of the external border (though the window manager may
787not pay attention to what you specify). The default width of the
788external border is 2.
789
790@node Title X
791@appendixsec Frame Titles
792
793 An Emacs frame may or may not have a specified title. The frame
794title, if specified, appears in window decorations and icons as the name
795of the frame. If an Emacs frame has no specified title, the default
796title is the name of the executable program (if there is only one frame)
797or the selected window's buffer name (if there is more than one frame).
798
799 You can specify a title for the initial Emacs frame with a command
800line option:
801
802@table @samp
803@item -title @var{title}
804@itemx --title=@var{title}
805@itemx -T @var{title}
806Specify @var{title} as the title for the initial Emacs frame.
807@end table
808
809 The @samp{--name} option (@pxref{Resources X}) also specifies the title
810for the initial Emacs frame.
811
812@node Icons X
813@appendixsec Icons
97878c08 814@cindex icons (X Window System)
6bf7aab6
DL
815
816 Most window managers allow the user to ``iconify'' a frame, removing
817it from sight, and leaving a small, distinctive ``icon'' window in its
818place. Clicking on the icon window makes the frame itself appear again.
819If you have many clients running at once, you can avoid cluttering up
820the screen by iconifying most of the clients.
821
822@table @samp
823@item -i
824@itemx --icon-type
825Use a picture of a gnu as the Emacs icon.
826
827@item -iconic
828@itemx --iconic
829Start Emacs in iconified state.
830@end table
831
832 The @samp{-i} or @samp{--icon-type} option tells Emacs to use an icon
833window containing a picture of the GNU gnu. If omitted, Emacs lets the
834window manager choose what sort of icon to use---usually just a small
835rectangle containing the frame's title.
836
837 The @samp{-iconic} option tells Emacs to begin running as an icon,
838rather than opening a frame right away. In this situation, the icon
839window provides only indication that Emacs has started; the usual text
840frame doesn't appear until you deiconify it.
841
842@node Resources X
843@appendixsec X Resources
844@cindex resources
845
846 Programs running under the X Window System organize their user options
847under a hierarchy of classes and resources. You can specify default
848values for these options in your X resources file, usually named
849@file{~/.Xdefaults}.
850
851 Each line in the file specifies a value for one option or for a
852collection of related options, for one program or for several programs
853(optionally even for all programs).
854
855 Programs define named resources with particular meanings. They also
856define how to group resources into named classes. For instance, in
857Emacs, the @samp{internalBorder} resource controls the width of the
858internal border, and the @samp{borderWidth} resource controls the width
859of the external border. Both of these resources are part of the
860@samp{BorderWidth} class. Case distinctions are significant in these
861names.
862
863 In @file{~/.Xdefaults}, you can specify a value for a single resource
864on one line, like this:
865
866@example
867emacs.borderWidth: 2
868@end example
869
870@noindent
871Or you can use a class name to specify the same value for all resources
872in that class. Here's an example:
873
874@example
875emacs.BorderWidth: 2
876@end example
877
878 If you specify a value for a class, it becomes the default for all
879resources in that class. You can specify values for individual
880resources as well; these override the class value, for those particular
881resources. Thus, this example specifies 2 as the default width for all
882borders, but overrides this value with 4 for the external border:
883
884@example
885emacs.Borderwidth: 2
886emacs.borderwidth: 4
887@end example
888
889 The order in which the lines appear in the file does not matter.
890Also, command-line options always override the X resources file.
891
892 The string @samp{emacs} in the examples above is also a resource
893name. It actually represents the name of the executable file that you
894invoke to run Emacs. If Emacs is installed under a different name, it
895looks for resources under that name instead of @samp{emacs}.
896
897@table @samp
898@item -name @var{name}
899@itemx --name=@var{name}
900Use @var{name} as the resource name (and the title) for the initial
901Emacs frame. This option does not affect subsequent frames, but Lisp
902programs can specify frame names when they create frames.
903
904If you don't specify this option, the default is to use the Emacs
905executable's name as the resource name.
906
907@item -xrm @var{resource-values}
908@itemx --xrm=@var{resource-values}
909Specify X resource values for this Emacs job (see below).
910@end table
911
912 For consistency, @samp{-name} also specifies the name to use for
913other resource values that do not belong to any particular frame.
914
915 The resources that name Emacs invocations also belong to a class; its
916name is @samp{Emacs}. If you write @samp{Emacs} instead of
917@samp{emacs}, the resource applies to all frames in all Emacs jobs,
918regardless of frame titles and regardless of the name of the executable
919file. Here is an example:
920
921@example
922Emacs.BorderWidth: 2
923Emacs.borderWidth: 4
924@end example
925
926 You can specify a string of additional resource values for Emacs to
927use with the command line option @samp{-xrm @var{resources}}. The text
928@var{resources} should have the same format that you would use inside a file
929of X resources. To include multiple resource specifications in
930@var{data}, put a newline between them, just as you would in a file.
931You can also use @samp{#include "@var{filename}"} to include a file full
932of resource specifications. Resource values specified with @samp{-xrm}
933take precedence over all other resource specifications.
934
935 The following table lists the resource names that designate options
936for Emacs, each with the class that it belongs to:
937
938@table @asis
939@item @code{background} (class @code{Background})
940Background color name.
941
942@item @code{bitmapIcon} (class @code{BitmapIcon})
943Use a bitmap icon (a picture of a gnu) if @samp{on}, let the window
944manager choose an icon if @samp{off}.
945
946@item @code{borderColor} (class @code{BorderColor})
947Color name for the external border.
948
949@item @code{borderWidth} (class @code{BorderWidth})
950Width in pixels of the external border.
951
952@item @code{cursorColor} (class @code{Foreground})
953Color name for text cursor (point).
954
955@item @code{font} (class @code{Font})
956Font name for text (or fontset name, @pxref{Fontsets}).
957
958@item @code{foreground} (class @code{Foreground})
959Color name for text.
960
961@item @code{geometry} (class @code{Geometry})
962Window size and position. Be careful not to specify this resource as
963@samp{emacs*geometry}, because that may affect individual menus as well
964as the Emacs frame itself.
965
966If this resource specifies a position, that position applies only to the
967initial Emacs frame (or, in the case of a resource for a specific frame
968name, only that frame). However, the size if specified here applies to
969all frames.
970
971@item @code{iconName} (class @code{Title})
972Name to display in the icon.
973
974@item @code{internalBorder} (class @code{BorderWidth})
975Width in pixels of the internal border.
976
75141154
DL
977@item @code{lineSpacing} (class LineSpacing)
978@cindex line spacing
979@cindex leading
980Additional space (@dfn{leading}) between lines in pixels.
981
6bf7aab6
DL
982@item @code{menuBar} (class @code{MenuBar})
983Give frames menu bars if @samp{on}; don't have menu bars if @samp{off}.
984
ec4f0ef8 985@item @code{toolBar} (class @code{ToolBar})
4b1ad19a
RS
986Number of lines to reserve for the tool bar. A zero value suppresses
987the tool bar. If the value is non-zero and
988@code{auto-resize-tool-bars} is non-@code{nil}, the tool bar's size
989will be changed automatically so that all tool bar items are visible.
ec4f0ef8 990
6bf7aab6
DL
991@item @code{minibuffer} (class @code{Minibuffer})
992If @samp{none}, don't make a minibuffer in this frame.
993It will use a separate minibuffer frame instead.
994
995@item @code{paneFont} (class @code{Font})
996Font name for menu pane titles, in non-toolkit versions of Emacs.
997
998@item @code{pointerColor} (class @code{Foreground})
999Color of the mouse cursor.
1000
4b1ad19a 1001@ignore
75141154 1002@item @code{privateColormap} (class @code{PrivateColormap})
4b1ad19a
RS
1003If @samp{on}, use a private colormap, in the case where the ``default
1004visual'' of class PseudoColor and Emacs is using it.
1005@end ignore
75141154 1006
6bf7aab6
DL
1007@item @code{reverseVideo} (class @code{ReverseVideo})
1008Switch foreground and background default colors if @samp{on}, use colors as
1009specified if @samp{off}.
1010
75141154
DL
1011@item @code{screenGamma} (class @code{ScreenGamma})
1012@cindex gamma correction
4b1ad19a
RS
1013Gamma correction for colors, equivalent to the frame parameter
1014@code{screen-gamma}.
6bf7aab6
DL
1015
1016@item @code{selectionFont} (class @code{Font})
1017Font name for pop-up menu items, in non-toolkit versions of Emacs. (For
1018toolkit versions, see @ref{Lucid Resources}, also see @ref{Motif
1019Resources}.)
1020
75141154 1021@item @code{synchronous} (class @code{Synchronous})
4b1ad19a
RS
1022Run Emacs in synchronous mode if @samp{on}. Synchronous mode is
1023useful for debugging X problems.
75141154 1024
6bf7aab6
DL
1025@item @code{title} (class @code{Title})
1026Name to display in the title bar of the initial Emacs frame.
75141154
DL
1027
1028@item @code{verticalScrollBars} (class @code{ScrollBars})
1029Give frames scroll bars if @samp{on}; don't have scroll bars if
1030@samp{off}.
6bf7aab6
DL
1031@end table
1032
1033 Here are resources for controlling the appearance of particular faces
1034(@pxref{Faces}):
1035
1036@table @code
1037@item @var{face}.attributeFont
1038Font for face @var{face}.
1039@item @var{face}.attributeForeground
1040Foreground color for face @var{face}.
1041@item @var{face}.attributeBackground
1042Background color for face @var{face}.
1043@item @var{face}.attributeUnderline
1044Underline flag for face @var{face}. Use @samp{on} or @samp{true} for
1045yes.
1046@end table
1047
1048@node Lucid Resources
1049@section Lucid Menu X Resources
1050@cindex Menu X Resources (Lucid widgets)
1051@cindex Lucid Widget X Resources
1052
1053 If the Emacs installed at your site was built to use the X toolkit
1054with the Lucid menu widgets, then the menu bar is a separate widget and
1055has its own resources. The resource names contain @samp{pane.menubar}
1056(following, as always, the name of the Emacs invocation or @samp{Emacs}
1057which stands for all Emacs invocations). Specify them like this:
1058
1059@example
1060Emacs.pane.menubar.@var{resource}: @var{value}
1061@end example
1062
1063@noindent
1064For example, to specify the font @samp{8x16} for the menu-bar items,
1065write this:
1066
1067@example
1068Emacs.pane.menubar.font: 8x16
1069@end example
1070
1071@noindent
1072Resources for @emph{non-menubar} toolkit pop-up menus have
1073@samp{menu*}, in like fashion. For example, to specify the font
1074@samp{8x16} for the pop-up menu items, write this:
1075
1076@example
1077Emacs.menu*.font: 8x16
1078@end example
1079
1080@noindent
1081For dialog boxes, use @samp{dialog} instead of @samp{menu}:
1082
1083@example
1084Emacs.dialog*.font: 8x16
1085@end example
1086
1087@noindent
1088Experience shows that on some systems you may need to add
1089@samp{shell.}@: before the @samp{pane.menubar} or @samp{menu*}. On
1090some other systems, you must not add @samp{shell.}.
1091
1092 Here is a list of the specific resources for menu bars and pop-up menus:
1093
1094@table @code
1095@item font
1096Font for menu item text.
1097@item foreground
1098Color of the foreground.
1099@item background
1100Color of the background.
1101@item buttonForeground
1102In the menu bar, the color of the foreground for a selected item.
1103@item horizontalSpacing
1104Horizontal spacing in pixels between items. Default is 3.
1105@item verticalSpacing
1106Vertical spacing in pixels between items. Default is 1.
1107@item arrowSpacing
1108Horizontal spacing between the arrow (which indicates a submenu) and
1109the associated text. Default is 10.
1110@item shadowThickness
1111Thickness of shadow line around the widget.
5e9efc68 1112@item margin
4b1ad19a
RS
1113The margin of the menu bar, in characters. The default of 4 makes the
1114menu bar appear like the LessTif/Motif one.
6bf7aab6
DL
1115@end table
1116
1117@node Motif Resources
1118@section Motif Menu X Resources
1119@cindex Menu X Resources (Motif widgets)
1120@cindex Motif Widget X Resources
1121
1122 If the Emacs installed at your site was built to use the X toolkit
1123with the Motif widgets, then the menu bar is a separate widget and has
1124its own resources. The resource names contain @samp{pane.menubar}
1125(following, as always, the name of the Emacs invocation or @samp{Emacs}
1126which stands for all Emacs invocations). Specify them like this:
1127
1128@smallexample
1129Emacs.pane.menubar.@var{subwidget}.@var{resource}: @var{value}
1130@end smallexample
1131
1132 Each individual string in the menu bar is a subwidget; the subwidget's
1133name is the same as the menu item string. For example, the word
1134@samp{Files} in the menu bar is part of a subwidget named
1135@samp{emacs.pane.menubar.Files}. Most likely, you want to specify the
1136same resources for the whole menu bar. To do this, use @samp{*} instead
1137of a specific subwidget name. For example, to specify the font
1138@samp{8x16} for the menu-bar items, write this:
1139
1140@smallexample
1141Emacs.pane.menubar.*.fontList: 8x16
1142@end smallexample
1143
1144@noindent
1145This also specifies the resource value for submenus.
1146
1147 Each item in a submenu in the menu bar also has its own name for X
1148resources; for example, the @samp{Files} submenu has an item named
1149@samp{Save Buffer}. A resource specification for a submenu item looks
1150like this:
1151
1152@smallexample
1153Emacs.pane.menubar.popup_*.@var{menu}.@var{item}.@var{resource}: @var{value}
1154@end smallexample
1155
1156@noindent
1157For example, here's how to specify the font for the @samp{Save Buffer}
1158item:
1159
1160@smallexample
1161Emacs.pane.menubar.popup_*.Files.Save Buffer.fontList: 8x16
1162@end smallexample
1163
1164@noindent
1165For an item in a second-level submenu, such as @samp{Check Message}
1166under @samp{Spell} under @samp{Edit}, the resource fits this template:
1167
1168@smallexample
1169Emacs.pane.menubar.popup_*.popup_*.@var{menu}.@var{resource}: @var{value}
1170@end smallexample
1171
1172@noindent
1173For example,
1174
1175@smallexample
1176Emacs.pane.menubar.popup_*.popup_*.Spell.Check Message: @var{value}
1177@end smallexample
1178
1179 It's impossible to specify a resource for all the menu-bar items
1180without also specifying it for the submenus as well. So if you want the
1181submenu items to look different from the menu bar itself, you must ask
1182for that in two steps. First, specify the resource for all of them;
1183then, override the value for submenus alone. Here is an example:
1184
1185@smallexample
1186Emacs.pane.menubar.*.fontList: 8x16
1187Emacs.pane.menubar.popup_*.fontList: 8x16
1188@end smallexample
1189
1190@noindent
1191For toolkit pop-up menus, use @samp{menu*} instead of
1192@samp{pane.menubar}. For example, to specify the font @samp{8x16} for
1193the pop-up menu items, write this:
1194
1195@smallexample
1196Emacs.menu*.fontList: 8x16
1197@end smallexample
1198
1199@iftex
1200@medbreak
1201@end iftex
1202 Here is a list of the specific resources for menu bars and pop-up menus:
1203
1204@table @code
1205@item armColor
1206The color to show in an armed button.
1207@item fontList
1208The font to use.
1209@item marginBottom
1210@itemx marginHeight
1211@itemx marginLeft
1212@itemx marginRight
1213@itemx marginTop
1214@itemx marginWidth
1215Amount of space to leave around the item, within the border.
1216@item borderWidth
1217The width of border around the menu item, on all sides.
1218@item shadowThickness
1219The width of the border shadow.
1220@item bottomShadowColor
1221The color for the border shadow, on the bottom and the right.
1222@item topShadowColor
1223The color for the border shadow, on the top and the left.
1224@end table