Add 2007 to copyright years.
[bpt/emacs.git] / man / faq.texi
CommitLineData
554f8e67 1\input texinfo @c -*- mode: texinfo; -*-
71e68827 2@c %**start of header
35ab2989 3@setfilename ../info/efaq
71e68827
DL
4@settitle GNU Emacs FAQ
5@c %**end of header
6
7@setchapternewpage odd
8
ed5c18e2 9@c This is used in many places
b6f2e1f5 10@set VER 22.1
ed5c18e2 11
215e2336
RF
12@c This file is maintained by Romain Francoise <rfrancoise@gnu.org>.
13@c Feel free to install changes without prior permission (but I'd
14@c appreciate a notice if you do).
15
18f952d5 16@copying
4e6835db
GM
17Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007
18Free Software Foundation, Inc.@*
ed5c18e2 19Copyright 1994,1995,1996,1997,1998,1999,2000 Reuven M. Lerner@*
010bb2f0
DL
20Copyright 1992,1993 Steven Byrnes@*
21Copyright 1990,1991,1992 Joseph Brian Wells@*
71e68827 22
18f952d5 23@quotation
71e68827 24This list of frequently asked questions about GNU Emacs with answers
ef4da64f 25(``FAQ'') may be translated into other languages, transformed into other
71e68827
DL
26formats (e.g. Texinfo, Info, WWW, WAIS), and updated with new information.
27
28The same conditions apply to any derivative of the FAQ as apply to the FAQ
29itself. Every copy of the FAQ must include this notice or an approved
30translation, information on who is currently maintaining the FAQ and how to
31contact them (including their e-mail address), and information on where the
32latest version of the FAQ is archived (including FTP information).
33
34The FAQ may be copied and redistributed under these conditions, except that
35the FAQ may not be embedded in a larger literary work unless that work
36itself allows free copying and redistribution.
0d17cd5c 37
b6f2e1f5
RF
38[This version has been heavily edited since it was included in the Emacs
39distribution.]
18f952d5
KB
40@end quotation
41@end copying
0d17cd5c 42
18f952d5
KB
43@dircategory Emacs
44@direntry
45* Emacs FAQ: (efaq). Frequently Asked Questions about Emacs.
46@end direntry
71e68827
DL
47
48@c The @titlepage stuff only appears in the printed version
49@titlepage
50@sp 10
51@center @titlefont{GNU Emacs FAQ}
52
53@c The following two commands start the copyright page.
54@page
55@vskip 0pt plus 1filll
18f952d5 56@insertcopying
71e68827
DL
57@end titlepage
58
59@node Top, FAQ notation, (dir), (dir)
60
61This is the GNU Emacs FAQ, last updated on @today{}.
62
5f7b8867
RF
63This FAQ is maintained as a part of GNU Emacs. If you find any errors,
64or have any suggestions, please use @kbd{M-x report-emacs-bug} to report
65them.
71e68827
DL
66
67@menu
7a2fe6fa
TTN
68* FAQ notation::
69* General questions::
70* Getting help::
71* Status of Emacs::
72* Common requests::
73* Bugs and problems::
74* Compiling and installing Emacs::
75* Finding Emacs and related packages::
76* Major packages and programs::
77* Key bindings::
78* Alternate character sets::
79* Mail and news::
80* Concept index::
71e68827
DL
81@end menu
82
83@c ------------------------------------------------------------
84@node FAQ notation, General questions, Top, Top
85@chapter FAQ notation
86@cindex FAQ notation
87
ed5c18e2 88This chapter describes notation used in the GNU Emacs FAQ, as well as in
71e68827
DL
89the Emacs documentation. Consult this section if this is the first time
90you are reading the FAQ, or if you are confused by notation or terms
91used in the FAQ.
92
93@menu
7a2fe6fa
TTN
94* Basic keys::
95* Extended commands::
96* On-line manual::
97* File-name conventions::
98* Common acronyms::
71e68827
DL
99@end menu
100
101@node Basic keys, Extended commands, FAQ notation, FAQ notation
718fb8a1 102@section What do these mean: @kbd{C-h}, @kbd{C-M-a}, @key{RET}, @kbd{@key{ESC} a}, etc.?
71e68827
DL
103@cindex Basic keys
104@cindex Control key, notation for
105@cindex @key{Meta} key, notation for
ed5c18e2 106@cindex Control-Meta characters, notation for
71e68827 107@cindex @kbd{C-h}, definition of
718fb8a1 108@cindex @kbd{C-M-h}, definition of
71e68827
DL
109@cindex @key{DEL}, definition of
110@cindex @key{ESC}, definition of
111@cindex @key{LFD}, definition of
112@cindex @key{RET}, definition of
113@cindex @key{SPC}, definition of
114@cindex @key{TAB}, definition of
ed5c18e2 115@cindex Notation for keys
71e68827
DL
116
117@itemize @bullet
118
119@item
120@kbd{C-x}: press the @key{x} key while holding down the @key{Control} key
121
122@item
123@kbd{M-x}: press the @key{x} key while holding down the @key{Meta} key
ed5c18e2 124(if your computer doesn't have a @key{Meta} key, @pxref{No Meta key})
71e68827
DL
125
126@item
127@kbd{M-C-x}: press the @key{x} key while holding down both @key{Control}
128and @key{Meta}
129
130@item
131@kbd{C-M-x}: a synonym for the above
132
133@item
134@key{LFD}: Linefeed or Newline; same as @kbd{C-j}
135
136@item
137@key{RET}: @key{Return}, sometimes marked @key{Enter}; same as @kbd{C-m}
138
139@item
ed5c18e2
EZ
140@key{DEL}: @key{Delete}, usually @strong{not} the same as
141@key{Backspace}; same as @kbd{C-?} (see @ref{Backspace invokes help}, if
142deleting invokes Emacs help)
71e68827
DL
143
144@item
145@key{ESC}: Escape; same as @kbd{C-[}
146
147@item
148@key{TAB}: Tab; same as @kbd{C-i}
149
150@item
151@key{SPC}: Space bar
152
153@end itemize
154
155Key sequences longer than one key (and some single-key sequences) are
ed5c18e2
EZ
156written inside quotes or on lines by themselves, like this:
157
158@display
159 @kbd{M-x frobnicate-while-foo RET}
160@end display
161
162@noindent
163Any real spaces in such a key sequence should be ignored; only @key{SPC}
164really means press the space key.
71e68827 165
76dd3692 166The @acronym{ASCII} code sent by @kbd{C-x} (except for @kbd{C-?}) is the value
71e68827 167that would be sent by pressing just @key{x} minus 96 (or 64 for
f8635375 168upper-case @key{X}) and will be from 0 to 31. On Unix and GNU/Linux
76dd3692
EZ
169terminals, the @acronym{ASCII} code sent by @kbd{M-x} is the sum of 128 and the
170@acronym{ASCII} code that would be sent by pressing just @key{x}. Essentially,
ed5c18e2
EZ
171@key{Control} turns off bits 5 and 6 and @key{Meta} turns on bit
1727@footnote{
173DOS and Windows terminals don't set bit 7 when the @key{Meta} key is
174pressed.}.
71e68827 175
76dd3692 176@kbd{C-?} (aka @key{DEL}) is @acronym{ASCII} code 127. It is a misnomer to call
ed5c18e2 177@kbd{C-?} a ``control'' key, since 127 has both bits 5 and 6 turned ON.
76dd3692 178Also, on very few keyboards does @kbd{C-?} generate @acronym{ASCII} code 127.
71e68827 179
ed438271
EZ
180@inforef{Text Characters, Text Characters, emacs}, and @inforef{Keys,
181Keys, emacs}, for more information. (@xref{On-line manual}, for more
182information about Info.)
71e68827
DL
183
184@node Extended commands, On-line manual, Basic keys, FAQ notation
185@section What does @file{M-x @var{command}} mean?
186@cindex Extended commands
187@cindex Commands, extended
188@cindex M-x, meaning of
189
190@kbd{M-x @var{command}} means type @kbd{M-x}, then type the name of the
ed5c18e2 191command, then type @key{RET}. (@xref{Basic keys}, if you're not sure
71e68827
DL
192what @kbd{M-x} and @key{RET} mean.)
193
194@kbd{M-x} (by default) invokes the command
195@code{execute-extended-command}. This command allows you to run any
196Emacs command if you can remember the command's name. If you can't
197remember the command's name, you can type @key{TAB} and @key{SPC} for
198completion, @key{?} for a list of possibilities, and @kbd{M-p} and
ed5c18e2
EZ
199@kbd{M-n} (or up-arrow and down-arrow on terminals that have these
200editing keys) to see previous commands entered. An Emacs @dfn{command}
201is an @dfn{interactive} Emacs function.
71e68827 202
ed5c18e2 203@cindex @key{Do} key
71e68827
DL
204Your system administrator may have bound other key sequences to invoke
205@code{execute-extended-command}. A function key labeled @kbd{Do} is a
ed5c18e2 206good candidate for this, on keyboards that have such a key.
71e68827 207
ed5c18e2
EZ
208If you need to run non-interactive Emacs functions, see @ref{Evaluating
209Emacs Lisp code}.
71e68827 210
f8635375 211@node On-line manual, File-name conventions, Extended commands, FAQ notation
71e68827
DL
212@section How do I read topic XXX in the on-line manual?
213@cindex On-line manual, reading topics in
214@cindex Reading topics in the on-line manual
215@cindex Finding topics in the on-line manual
216@cindex Info, finding topics in
217
ed5c18e2
EZ
218When we refer you to some @var{topic} in the on-line manual, you can
219read this manual node inside Emacs (assuming nothing is broken) by
220typing @kbd{C-h i m emacs @key{RET} m @var{topic} @key{RET}}.
71e68827
DL
221
222This invokes Info, the GNU hypertext documentation browser. If you don't
223already know how to use Info, type @key{?} from within Info.
224
ed5c18e2
EZ
225If we refer to @var{topic}:@var{subtopic}, type @kbd{C-h i m emacs
226@key{RET} m @var{topic} @key{RET} m @var{subtopic} @key{RET}}.
71e68827 227
ed5c18e2
EZ
228If these commands don't work as expected, your system administrator may
229not have installed the Info files, or may have installed them
230improperly. In this case you should complain.
71e68827 231
0d17cd5c 232@xref{Getting a printed manual}, if you would like a paper copy of the
71e68827
DL
233Emacs manual.
234
f8635375 235@node File-name conventions, Common acronyms, On-line manual, FAQ notation
71e68827 236@section What are @file{etc/SERVICE}, @file{src/config.h}, and @file{lisp/default.el}?
f8635375
EZ
237@cindex File-name conventions
238@cindex Conventions for file names
71e68827
DL
239@cindex Directories and files that come with Emacs
240
241These are files that come with Emacs. The Emacs distribution is divided
242into subdirectories; the important ones are @file{etc}, @file{lisp}, and
243@file{src}.
244
245If you use Emacs, but don't know where it is kept on your system, start
246Emacs, then type @kbd{C-h v data-directory @key{RET}}. The directory
247name displayed by this will be the full pathname of the installed
ed5c18e2
EZ
248@file{etc} directory. (This full path is recorded in the Emacs variable
249@code{data-directory}, and @kbd{C-h v} displays the value and the
250documentation of a variable.)
71e68827
DL
251
252The location of your Info directory (i.e., where on-line documentation
253is stored) is kept in the variable @code{Info-default-directory-list}. Use
ed5c18e2 254@kbd{C-h v Info-default-directory-list @key{RET}} to see the value of
71e68827
DL
255this variable, which will be a list of directory names. The last
256directory in that list is probably where most Info files are stored. By
257default, Info documentation is placed in @file{/usr/local/info}.
258
ed5c18e2
EZ
259Some of these files are available individually via FTP or e-mail; see
260@ref{Informational files for Emacs}. They all are available in the
261source distribution. Many of the files in the @file{etc} directory are
ed438271 262also available via the Emacs @samp{Help} menu, or by typing @kbd{C-h ?}
ed5c18e2 263(@kbd{M-x help-for-help}).
71e68827
DL
264
265Your system administrator may have removed the @file{src} directory and
266many files from the @file{etc} directory.
267
f8635375 268@node Common acronyms, , File-name conventions, FAQ notation
71e68827
DL
269@section What are FSF, LPF, OSF, GNU, RMS, FTP, and GPL?
270@cindex FSF, definition of
271@cindex LPF, definition of
272@cindex OSF, definition of
273@cindex GNU, definition of
274@cindex RMS, definition of
275@cindex Stallman, Richard, acronym for
276@cindex Richard Stallman, acronym for
277@cindex FTP, definition of
278@cindex GPL, definition of
279@cindex Acronyms, definitions for
280@cindex Common acronyms, definitions for
281
282@table @asis
283
284@item FSF
285Free Software Foundation
286
287@item LPF
288League for Programming Freedom
289
290@item OSF
291Open Software Foundation
292
293@item GNU
294GNU's Not Unix
295
296@item RMS
297Richard Matthew Stallman
298
299@item FTP
300File Transfer Protocol
301
302@item GPL
303GNU General Public License
304
305@end table
306
307Avoid confusing the FSF, the LPF, and the OSF. The LPF opposes
308look-and-feel copyrights and software patents. The FSF aims to make
309high quality free software available for everyone. The OSF is a
310consortium of computer vendors which develops commercial software for
311Unix systems.
312
ed5c18e2 313The word ``free'' in the title of the Free Software Foundation refers to
982f3b82 314``freedom,'' not ``zero cost.'' Anyone can charge any price for
71e68827
DL
315GPL-covered software that they want to. However, in practice, the
316freedom enforced by the GPL leads to low prices, because you can always
ed5c18e2 317get the software for less money from someone else, since everyone has
71e68827
DL
318the right to resell or give away GPL-covered software.
319
320@c ------------------------------------------------------------
321@node General questions, Getting help, FAQ notation, Top
322@chapter General questions
323@cindex General questions
324
ed5c18e2 325This chapter contains general questions having to do with Emacs, the
71e68827
DL
326Free Software Foundation, and related organizations.
327
328@menu
7a2fe6fa
TTN
329* The LPF::
330* Real meaning of copyleft::
331* Guidelines for newsgroup postings::
332* Newsgroup archives::
333* Reporting bugs::
334* Unsubscribing from Emacs lists::
335* Contacting the FSF::
71e68827
DL
336@end menu
337
338@node The LPF, Real meaning of copyleft, General questions, General questions
339@section What is the LPF?
340@cindex LPF, description of
341@cindex League for Programming Freedom
342@cindex Software patents, opposition to
343@cindex Patents for software, opposition to
344
345The LPF opposes the expanding danger of software patents and
346look-and-feel copyrights. To get more information, feel free to contact
347the LPF via e-mail or otherwise. You may also contact
ed5c18e2 348@email{jbw@@cs.bu.edu, Joe Wells}; he will be happy to talk to you
71e68827
DL
349about the LPF.
350
351You can find more information about the LPF in the file @file{etc/LPF}.
352More papers describing the LPF's views are available on the Internet and
ed5c18e2 353also from @uref{http://lpf.ai.mit.edu/, the LPF home page}.
71e68827
DL
354
355@node Real meaning of copyleft, Guidelines for newsgroup postings, The LPF, General questions
356@section What is the real legal meaning of the GNU copyleft?
357@cindex Copyleft, real meaning of
358@cindex GPL, real meaning of
359@cindex General Public License, real meaning of
360@cindex Discussion of the GPL
361
362The real legal meaning of the GNU General Public License (copyleft) will
363only be known if and when a judge rules on its validity and scope.
364There has never been a copyright infringement case involving the GPL to
365set any precedents. Please take any discussion regarding this issue to
366the newsgroup @uref{news:gnu.misc.discuss}, which was created to hold the
367extensive flame wars on the subject.
368
369RMS writes:
370
371@quotation
372The legal meaning of the GNU copyleft is less important than the spirit,
373which is that Emacs is a free software project and that work pertaining
ed5c18e2
EZ
374to Emacs should also be free software. ``Free'' means that all users
375have the freedom to study, share, change and improve Emacs. To make
376sure everyone has this freedom, pass along source code when you
377distribute any version of Emacs or a related program, and give the
378recipients the same freedom that you enjoyed.
71e68827
DL
379@end quotation
380
381@node Guidelines for newsgroup postings, Newsgroup archives, Real meaning of copyleft, General questions
382@section What are appropriate messages for @uref{news:gnu.emacs.help}, @uref{news:gnu.emacs.bug}, @uref{news:comp.emacs}, etc.?
383@cindex Newsgroups, appropriate messages for
384@cindex GNU newsgroups, appropriate messages for
385@cindex Usenet groups, appropriate messages for
386@cindex Mailing lists, appropriate messages for
ed5c18e2 387@cindex Posting messages to newsgroups
71e68827 388
ed5c18e2
EZ
389@cindex GNU mailing lists
390The file @file{etc/MAILINGLISTS} describes the purpose of each GNU
391mailing list. (@xref{Informational files for Emacs}, if you want a copy
71e68827
DL
392of the file.) For those lists which are gatewayed with newsgroups, it
393lists both the newsgroup name and the mailing list address.
394
ed5c18e2
EZ
395The newsgroup @uref{news:comp.emacs} is for discussion of Emacs programs
396in general. This includes Emacs along with various other
397implementations, such as XEmacs, JOVE, MicroEmacs, Freemacs, MG,
398Unipress, CCA, and Epsilon.
71e68827
DL
399
400Many people post Emacs questions to @uref{news:comp.emacs} because they
ed5c18e2
EZ
401don't receive any of the @code{gnu.*} newsgroups. Arguments have been
402made both for and against posting GNU-Emacs-specific material to
71e68827
DL
403@uref{news:comp.emacs}. You have to decide for yourself.
404
ed5c18e2
EZ
405Messages advocating ``non-free'' software are considered unacceptable on
406any of the @code{gnu.*} newsgroups except for @uref{news:gnu.misc.discuss},
71e68827 407which was created to hold the extensive flame-wars on the subject.
ed5c18e2 408``Non-free'' software includes any software for which the end user can't
71e68827 409freely modify the source code and exchange enhancements. Be careful to
ed5c18e2
EZ
410remove the @code{gnu.*} groups from the @samp{Newsgroups:} line when
411posting a followup that recommends such software.
71e68827
DL
412
413@uref{news:gnu.emacs.bug} is a place where bug reports appear, but avoid
ed5c18e2 414posting bug reports to this newsgroup directly (@pxref{Reporting bugs}).
71e68827
DL
415
416@node Newsgroup archives, Reporting bugs, Guidelines for newsgroup postings, General questions
417@section Where can I get old postings to @uref{news:gnu.emacs.help} and other GNU groups?
280bd713 418@cindex Archived postings from @code{gnu.emacs.help}
71e68827
DL
419@cindex Usenet archives for GNU groups
420@cindex Old Usenet postings for GNU groups
421
422The FSF has maintained archives of all of the GNU mailing lists for many
423years, although there may be some unintentional gaps in coverage. The
424archive is not particularly well organized or easy to retrieve
425individual postings from, but pretty much everything is there.
426
037724a0 427The archive is at @uref{ftp://lists.gnu.org/}.
71e68827 428
bf247b6e 429The archive can be browsed over the web at
037724a0 430@uref{http://lists.gnu.org/archive/html/, the GNU mail archive}.
71e68827
DL
431
432Web-based Usenet search services, such as
037724a0
JL
433@uref{http://groups.google.com/groups/dir?sel=33592484, Google}, also
434archive the @code{gnu.*} groups.
435
436You can read the archives of the @code{gnu.*} groups and post new
437messages at @uref{http://gmane.org/, Gmane}.
71e68827
DL
438
439@node Reporting bugs, Unsubscribing from Emacs lists, Newsgroup archives, General questions
440@section Where should I report bugs and other problems with Emacs?
441@cindex Bug reporting
442@cindex Good bug reports
443@cindex How to submit a bug report
444@cindex Reporting bugs
445
037724a0
JL
446The correct way to report Emacs bugs is to use the command
447@kbd{M-x report-emacs-bug}. It sets up a mail buffer with the
448essential information and the correct e-mail address which is
449@email{bug-gnu-emacs@@gnu.org} for the released versions of Emacs.
450Anything sent to @email{bug-gnu-emacs@@gnu.org} also appears in the
71e68827
DL
451newsgroup @uref{news:gnu.emacs.bug}, but please use e-mail instead of
452news to submit the bug report. This ensures a reliable return address
453so you can be contacted for further details.
454
ed5c18e2 455Be sure to read the ``Bugs'' section of the Emacs manual before reporting
037724a0
JL
456a bug! The manual describes in detail how to submit a useful bug
457report (@pxref{Bugs, , Reporting Bugs, emacs, The GNU Emacs Manual}).
458(@xref{On-line manual}, if you don't know how to read the manual.)
71e68827
DL
459
460RMS says:
461
462@quotation
463Sending bug reports to @email{help-gnu-emacs@@gnu.org} (which has the
464effect of posting on @uref{news:gnu.emacs.help}) is undesirable because
465it takes the time of an unnecessarily large group of people, most of
466whom are just users and have no idea how to fix these problem.
467@email{bug-gnu-emacs@@gnu.org} reaches a much smaller group of people
468who are more likely to know what to do and have expressed a wish to
469receive more messages about Emacs than the others.
470@end quotation
471
472RMS says it is sometimes fine to post to @uref{news:gnu.emacs.help}:
473
474@quotation
475If you have reported a bug and you don't hear about a possible fix,
476then after a suitable delay (such as a week) it is okay to post on
ed5c18e2 477@code{gnu.emacs.help} asking if anyone can help you.
71e68827
DL
478@end quotation
479
480If you are unsure whether you have found a bug, consider the following
481non-exhaustive list, courtesy of RMS:
482
483@quotation
484If Emacs crashes, that is a bug. If Emacs gets compilation errors
485while building, that is a bug. If Emacs crashes while building, that
486is a bug. If Lisp code does not do what the documentation says it
487does, that is a bug.
488@end quotation
489
490@node Unsubscribing from Emacs lists, Contacting the FSF, Reporting bugs, General questions
491@section How do I unsubscribe from this mailing list?
492@cindex Unsubscribing from GNU mailing lists
493@cindex Removing yourself from GNU mailing lists
494
ed5c18e2
EZ
495If you are receiving a GNU mailing list named @var{list}, you might be
496able to unsubscribe from it by sending a request to the address
497@email{@var{list}-request@@gnu.org}. However, this will not work if you are
71e68827
DL
498not listed on the main mailing list, but instead receive the mail from a
499distribution point. In that case, you will have to track down at which
500distribution point you are listed. Inspecting the @samp{Received} headers
ed5c18e2
EZ
501on the mail messages may help, along with liberal use of the @samp{EXPN} or
502@samp{VRFY} sendmail commands through @samp{telnet @var{site-address}
503smtp}. Ask your postmaster for help, if you cannot figure out these
504details.
71e68827
DL
505
506@node Contacting the FSF, , Unsubscribing from Emacs lists, General questions
507@section What is the current address of the FSF?
508@cindex Snail mail address of the FSF
509@cindex Postal address of the FSF
510@cindex Contracting the FSF
511@cindex Free Software Foundation, contacting
512
513@table @asis
514
515@item E-mail
516gnu@@gnu.org
517
518@item Telephone
519+1-617-542-5942
520
521@item Fax
522+1-617-542-2652
523
524@item World Wide Web
525@uref{http://www.gnu.org/}
526
527@item Postal address
528Free Software Foundation@*
364c38d3
LK
52951 Franklin Street, Fifth Floor@*
530Boston, MA 02110-1301@*
71e68827
DL
531USA@*
532
533@end table
534
ed5c18e2
EZ
535@cindex Ordering GNU software
536For details on how to order items directly from the FSF, see the
4a9cbbf8 537@uref{http://www.gnu.org/order/order.html, GNU Web site}.
71e68827
DL
538
539@c ------------------------------------------------------------
540@node Getting help, Status of Emacs, General questions, Top
541@chapter Getting help
542@cindex Getting help
543
ed5c18e2 544This chapter tells you how to get help with Emacs
71e68827
DL
545
546@menu
7a2fe6fa
TTN
547* Basic editing::
548* Learning how to do something::
549* Getting a printed manual::
550* Emacs Lisp documentation::
551* Installing Texinfo documentation::
552* Printing a Texinfo file::
553* Viewing Info files outside of Emacs::
554* Informational files for Emacs::
555* Help installing Emacs::
556* Obtaining the FAQ::
71e68827
DL
557@end menu
558
559@node Basic editing, Learning how to do something, Getting help, Getting help
560@section I'm just starting Emacs; how do I do basic editing?
561@cindex Basic editing with Emacs
562@cindex Beginning editing
563@cindex Tutorial, invoking the
564@cindex Self-paced tutorial, invoking the
565@cindex Help system, entering the
566
b6f2e1f5
RF
567Type @kbd{C-h t} to invoke the self-paced tutorial. Just typing
568@kbd{C-h} enters the help system. Starting with Emacs 22, the tutorial
569is available in many foreign languages such as French, German, Japanese,
570Russian, etc. Use @kbd{M-x help-with-tutorial-spec-language @key{RET}}
571to choose your language and start the tutorial.
71e68827
DL
572
573Your system administrator may have changed @kbd{C-h} to act like
574@key{DEL} to deal with local keyboards. You can use @kbd{M-x
575help-for-help} instead to invoke help. To discover what key (if any)
576invokes help on your system, type @kbd{M-x where-is @key{RET}
577help-for-help @key{RET}}. This will print a comma-separated list of key
578sequences in the echo area. Ignore the last character in each key
579sequence listed. Each of the resulting key sequences invokes help.
580
581Emacs help works best if it is invoked by a single key whose value
582should be stored in the variable @code{help-char}.
583
71e68827
DL
584@node Learning how to do something, Getting a printed manual, Basic editing, Getting help
585@section How do I find out how to do something in Emacs?
586@cindex Help for Emacs
587@cindex Learning to do something in Emacs
588@cindex Reference card for Emacs
589@cindex Overview of help systems
590
591There are several methods for finding out how to do things in Emacs.
592
593@itemize @bullet
594
ed5c18e2 595@cindex Reading the Emacs manual
71e68827
DL
596@item
597The complete text of the Emacs manual is available on-line via the Info
b6f2e1f5
RF
598hypertext reader. Type @kbd{C-h r} to display the manual in Info mode.
599Typing @key{h} immediately after entering Info will provide a short
600tutorial on how to use it.
71e68827 601
ed5c18e2
EZ
602@cindex Lookup a subject in a manual
603@cindex Index search in a manual
71e68827 604@item
ed5c18e2
EZ
605To quickly locate the section of the manual which discusses a certain
606issue, or describes a command or a variable, type @kbd{C-h i m emacs
607@key{RET} i @var{topic} @key{RET}}, where @var{topic} is the name of the
608topic, the command, or the variable which you are looking for. If this
609does not land you on the right place in the manual, press @kbd{,}
610(comma) repeatedly until you find what you need. (The @kbd{i} and
611@kbd{,} keys invoke the index-searching functions, which look for the
612@var{topic} you type in all the indices of the Emacs manual.)
613
614@cindex Apropos
71e68827
DL
615@item
616You can list all of the commands whose names contain a certain word
617(actually which match a regular expression) using @kbd{C-h a} (@kbd{M-x
618command-apropos}).
619
ed5c18e2
EZ
620@cindex Command description in the manual
621@item
4d715abe 622The command @kbd{C-h F} (@code{Info-goto-emacs-command-node}) prompts
ed5c18e2
EZ
623for the name of a command, and then attempts to find the section in the
624Emacs manual where that command is described.
625
626@cindex Finding commands and variables
71e68827
DL
627@item
628You can list all of the functions and variables whose names contain a
629certain word using @kbd{M-x apropos}.
630
ed5c18e2
EZ
631@item
632You can list all of the functions and variables whose documentation
633matches a regular expression or a string, using @kbd{M-x
634apropos-documentation}.
635
636@item
637You can order a hardcopy of the manual from the FSF. @xref{Getting a
638printed manual}.
639
640@cindex Reference cards, in other languages
641@item
642You can get a printed reference card listing commands and keys to
643invoke them. You can order one from the FSF for $1 (or 10 for $5),
644or you can print your own from the @file{etc/refcard.tex} or
645@file{etc/refcard.ps} files in the Emacs distribution. Beginning with
646version 21.1, the Emacs distribution comes with translations of the
647reference card into several languages; look for files named
648@file{etc/@var{lang}-refcard.*}, where @var{lang} is a two-letter code
649of the language. For example, the German version of the reference card
650is in the files @file{etc/de-refcard.tex} and @file{etc/de-refcard.ps}.
651
71e68827
DL
652@item
653There are many other commands in Emacs for getting help and
654information. To get a list of these commands, type @samp{?} after
655@kbd{C-h}.
656
657@end itemize
658
659@node Getting a printed manual, Emacs Lisp documentation, Learning how to do something, Getting help
660@section How do I get a printed copy of the Emacs manual?
661@cindex Printed Emacs manual, obtaining
617cb2b9
EZ
662@cindex Manual, obtaining a printed or HTML copy of
663@cindex Emacs manual, obtaining a printed or HTML copy of
71e68827
DL
664
665You can order a printed copy of the Emacs manual from the FSF. For
4a9cbbf8 666details see the @uref{http://www.gnu.org/order/order.html, GNU Web site}.
71e68827 667
ed5c18e2
EZ
668@c The number 620 below is version-dependent!
669The full Texinfo source for the manual also comes in the @file{man}
71e68827 670directory of the Emacs distribution, if you're daring enough to try to
ed5c18e2 671print out this 620-page manual yourself (@pxref{Printing a Texinfo
71e68827
DL
672file}).
673
674If you absolutely have to print your own copy, and you don't have @TeX{},
675you can get a PostScript version from
676
b6f2e1f5 677@uref{http://www.gnu.org/software/emacs/manual/emacs.ps.gz}
71e68827 678
617cb2b9 679@cindex HTML version of Emacs manual, obtaining
ed5c18e2 680An HTML version of the manual is at
71e68827 681
b6f2e1f5 682@uref{http://www.gnu.org/software/emacs/manual/emacs.html}
71e68827 683
037724a0
JL
684The manual is available in other formats at
685
686@uref{http://www.gnu.org/software/emacs/manual/}
687
0d17cd5c 688@xref{Learning how to do something}, for how to view the manual on-line.
71e68827
DL
689
690@node Emacs Lisp documentation, Installing Texinfo documentation, Getting a printed manual, Getting help
691@section Where can I get documentation on Emacs Lisp?
692@cindex Documentation on Emacs Lisp
693@cindex Function documentation
694@cindex Variable documentation
695@cindex Emacs Lisp Reference Manual
696@cindex Reference manual for Emacs Lisp
697
698Within Emacs, you can type @kbd{C-h f} to get the documentation for a
699function, @kbd{C-h v} for a variable.
700
b6f2e1f5
RF
701For more information, the Emacs Lisp Reference Manual is available
702on-line, in Info format. @xref{Top, Emacs Lisp,, elisp, The
703Emacs Lisp Reference Manual}.
71e68827 704
b6f2e1f5
RF
705You can also order a hardcopy of the manual, details on ordering it from
706FSF are on the @uref{http://www.gnu.org/order/order.html, GNU Web site}.
71e68827 707
ed5c18e2 708An HTML version of the Emacs Lisp Reference Manual is available at
71e68827 709
b6f2e1f5 710@uref{http://www.gnu.org/software/emacs/elisp-manual/elisp.html}
71e68827
DL
711
712@node Installing Texinfo documentation, Printing a Texinfo file, Emacs Lisp documentation, Getting help
713@section How do I install a piece of Texinfo documentation?
714@cindex Texinfo documentation, installing
715@cindex Installing Texinfo documentation
716@cindex New Texinfo files, installing
717@cindex Documentation, installing new Texinfo files
ed5c18e2 718@cindex Info files, how to install
71e68827
DL
719
720First, you must turn the Texinfo files into Info files. You may do this
721using the stand-alone @file{makeinfo} program, available as part of the latest
722Texinfo package at
723
b6f2e1f5 724@uref{ftp://ftp.gnu.org/pub/gnu/texinfo/texinfo-4.8.tar.gz}
71e68827 725
ed5c18e2
EZ
726and all mirrors of @samp{ftp.gnu.org} (for a list, @pxref{Current GNU
727distributions}).
71e68827
DL
728
729For information about the Texinfo format, read the Texinfo manual which
ed5c18e2
EZ
730comes with the Texinfo package. This manual also comes installed in
731Info format, so you can read it on-line; type @kbd{C-h i m texinfo
732@key{RET}}.
733
734Alternatively, you could use the Emacs command @kbd{M-x
735texinfo-format-buffer}, after visiting the Texinfo source file of the
736manual you want to convert.
71e68827
DL
737
738Neither @code{texinfo-format-buffer} nor @file{makeinfo} installs the
ed5c18e2
EZ
739resulting Info files in Emacs's Info tree. To install Info files,
740perform these steps:
71e68827
DL
741
742@enumerate
ed5c18e2
EZ
743@item
744Move the files to the @file{info} directory in the installed Emacs
f8635375 745distribution. @xref{File-name conventions}, if you don't know where that
ed5c18e2 746is.
71e68827 747
ed5c18e2
EZ
748@item
749Run the @code{install-info} command, which is part of the Texinfo
750distribution, to update the main Info directory menu, like this:
751
752@example
753 install-info --info-dir=@var{dir-path} @var{dir-path}/@var{file}
754@end example
71e68827 755
ed5c18e2
EZ
756@noindent
757where @var{dir-path} is the full path to the directory where you copied
758the produced Info file(s), and @var{file} is the name of the Info file
759you produced and want to install.
760
761If you don't have the @code{install-info} command installed, you can
762edit the file @file{info/dir} in the installed Emacs distribution, and
763add a line for the top level node in the Info package that you are
764installing. Follow the examples already in this file. The format is:
71e68827
DL
765
766@example
767* Topic: (relative-pathname). Short description of topic.
768@end example
769
7a2fe6fa 770@end enumerate
71e68827
DL
771
772If you want to install Info files and you don't have the necessary
773privileges, you have several options:
774
775@itemize @bullet
71e68827 776@item
037724a0
JL
777Info files don't actually need to be installed before being used.
778You can use a prefix argument for the @code{info} command and specify
779the name of the Info file in the minibuffer. This goes to the node
780named @samp{Top} in that file. For example, to view a Info file named
781@file{@var{info-file}} in your home directory, you can type this:
782
783@example
784@kbd{C-u C-h i ~/@var{info-file} @key{RET}}
785@end example
786
787Alternatively, you can feed a file name to the @code{Info-goto-node}
788command (invoked by pressing @key{g} in Info mode) by typing the name
789of the file in parentheses, like this:
71e68827 790
ed438271
EZ
791@example
792@kbd{C-h i g (~/@var{info-file}) @key{RET}}
793@end example
71e68827
DL
794
795@item
ed5c18e2 796You can create your own Info directory. You can tell Emacs where that
71e68827
DL
797Info directory is by adding its pathname to the value of the variable
798@code{Info-default-directory-list}. For example, to use a private Info
ed5c18e2 799directory which is a subdirectory of your home directory named @file{Info},
71e68827
DL
800you could put this in your @file{.emacs} file:
801
802@lisp
803(setq Info-default-directory-list
804 (cons "~/Info" Info-default-directory-list))
805@end lisp
806
807You will need a top-level Info file named @file{dir} in this directory
ed5c18e2 808which has everything the system @file{dir} file has in it, except it should
71e68827
DL
809list only entries for Info files in that directory. You might not need
810it if all files in this directory were referenced by other @file{dir}
811files. The node lists from all @file{dir} files in
812@code{Info-default-directory-list} are merged by the Info system.
813
814@end itemize
815
816@node Printing a Texinfo file, Viewing Info files outside of Emacs, Installing Texinfo documentation, Getting help
817@section How do I print a Texinfo file?
818@cindex Printing a Texinfo file
819@cindex Texinfo file, printing
ed5c18e2 820@cindex Printing documentation
71e68827
DL
821
822You can't get nicely printed output from Info files; you must still have
823the original Texinfo source file for the manual you want to print.
824
825Assuming you have @TeX{} installed on your system, follow these steps:
826
827@enumerate
828
ed5c18e2
EZ
829@item
830Make sure the first line of the Texinfo file looks like this:
71e68827
DL
831
832@example
833\input texinfo
834@end example
835
ed5c18e2
EZ
836You may need to change @samp{texinfo} to the full pathname of the
837@file{texinfo.tex} file, which comes with Emacs as
838@file{man/texinfo.tex} (or copy or link it into the current directory).
71e68827 839
ed5c18e2
EZ
840@item
841Type @kbd{texi2dvi @var{texinfo-source}}, where @var{texinfo-source} is
842the name of the Texinfo source file for which you want to produce a
843printed copy.
71e68827 844
ed5c18e2
EZ
845The @samp{texi2dvi} script is part of the GNU Texinfo distribution
846(@pxref{Installing Texinfo documentation}).
71e68827 847
ed5c18e2
EZ
848@item
849Print the DVI file @file{@var{texinfo-source}.dvi} in the normal way for
850printing DVI files at your site. For example, if you have a PostScript
851printer, run the @code{dvips} program to print the DVI file on that
852printer.
71e68827
DL
853
854@end enumerate
855
856To get more general instructions, retrieve the latest Texinfo package
0d17cd5c 857(@pxref{Installing Texinfo documentation}).
71e68827
DL
858
859@node Viewing Info files outside of Emacs, Informational files for Emacs, Printing a Texinfo file, Getting help
860@section Can I view Info files without using Emacs?
861@cindex Viewing Info files
862@cindex Info file viewers
863@cindex Alternative Info file viewers
864
865Yes. Here are some alternative programs:
866
867@itemize @bullet
868
ed5c18e2
EZ
869@item
870@code{info}, a stand-alone version of the Info program, comes as part of
871the Texinfo package. @xref{Installing Texinfo documentation}, for
872details.
71e68827 873
ed5c18e2
EZ
874@item
875Xinfo, a stand-alone version of the Info program that runs under X
876Window system. You can get it at
71e68827 877@uref{ftp://ftp.gnu.org/pub/gnu/xinfo/xinfo-1.01.01.tar.gz} and all
ed5c18e2
EZ
878mirrors of @samp{ftp.gnu.org} (see @ref{Current GNU distributions}, for a
879list of mirrors).
71e68827 880
ed5c18e2
EZ
881@item
882Tkinfo, an Info viewer that runs under X Window system and uses Tcl/Tk.
883You can get Tkinfo at
884@uref{http://math-www.uni-paderborn.de/~axel/tkinfo/}.
71e68827
DL
885
886@end itemize
887
888@node Informational files for Emacs, Help installing Emacs, Viewing Info files outside of Emacs, Getting help
889@section What informational files are available for Emacs?
890@cindex Informational files included with Emacs
891@cindex Files included with Emacs
892@cindex @file{COPYING}, description of file
893@cindex @file{DISTRIB}, description of file
71e68827
DL
894@cindex @file{FTP}, description of file
895@cindex @file{GNU}, description of file
896@cindex @file{INTERVIEW}, description of file
897@cindex @file{LPF}, description of file
898@cindex @file{MACHINES}, description of file
899@cindex @file{MAILINGLISTS}, description of file
900@cindex @file{NEWS}, description of file
901@cindex @file{SERVICE}, description of file
902@cindex @file{SUN-SUPPORT}, description of file
903
904This isn't a frequently asked question, but it should be! A variety of
905informational files about Emacs and relevant aspects of the GNU project
906are available for you to read.
907
908The following files are available in the @file{etc} directory of the
f8635375 909Emacs distribution (see @ref{File-name conventions}, if you're not sure
ed5c18e2 910where that is).
71e68827
DL
911
912@table @file
913
914@item COPYING
b6f2e1f5 915GNU General Public License
71e68827
DL
916
917@item DISTRIB
ef4da64f
RS
918Emacs Availability Information, including the popular Free Software
919Foundation Order Form
71e68827 920
71e68827
DL
921@item FTP
922How to get GNU Software by Internet FTP or by UUCP
923
924@item GNU
925The GNU Manifesto
926
927@item INTERVIEW
928Richard Stallman discusses his public-domain UNIX-compatible software
929system with BYTE editors
930
931@item LPF
932Why you should join the League for Programming Freedom
933
934@item MACHINES
935Status of Emacs on Various Machines and Systems
936
937@item MAILINGLISTS
938GNU Project Electronic Mailing Lists
939
940@item NEWS
ed5c18e2 941Emacs news, a history of recent user-visible changes
71e68827
DL
942
943@item SERVICE
944GNU Service Directory
945
946@item SUN-SUPPORT
ef4da64f 947including ``Using Emacstool with GNU Emacs''
71e68827
DL
948
949@end table
950
ed5c18e2
EZ
951More GNU information, including back issues of the @cite{GNU's
952Bulletin}, are at
71e68827
DL
953
954@uref{http://www.gnu.org/bulletins/bulletins.html} and
955
956@uref{http://www.cs.pdx.edu/~trent/gnu/gnu.html}
957
958@node Help installing Emacs, Obtaining the FAQ, Informational files for Emacs, Getting help
959@section Where can I get help in installing Emacs?
960@cindex Installation help
961@cindex Help installing Emacs
962
ed5c18e2
EZ
963@xref{Installing Emacs}, for some basic installation hints, and see
964@ref{Problems building Emacs}, or @ref{Linking with -lX11 fails}, if you
965have problems with the installation.
71e68827 966
f8635375 967The file @file{etc/SERVICE} (see @ref{File-name conventions}, if you're
ed5c18e2
EZ
968not sure where that is) lists companies and individuals willing to sell
969you help in installing or using Emacs. An up-to-date version this file
970is available on @samp{ftp.gnu.org} (@pxref{Informational files for
971Emacs}).
71e68827
DL
972
973@node Obtaining the FAQ, , Help installing Emacs, Getting help
974@section Where can I get the latest version of this FAQ?
975@cindex FAQ, obtaining the
976@cindex Latest FAQ version, obtaining the
977@cindex Retrieving the latest FAQ version
978@cindex E-mail, retrieving the FAQ via
979@cindex Web, reading the FAQ on the
980
981The Emacs FAQ is available in several ways:
982
983@itemize @bullet
984
985@item
ed5c18e2
EZ
986Inside of Emacs itself. You can get it from selecting the @samp{Emacs
987FAQ} option from the @samp{Help} menu of the Emacs menu bar at the top
4d715abe 988of any Emacs frame, or by typing @kbd{C-h C-f} (@kbd{M-x view-emacs-FAQ}).
71e68827
DL
989
990@item
991Via USENET. If you can read news, the FAQ should be available in your
992news spool, in both the @uref{news:gnu.emacs.help} and
993@uref{news:comp.emacs} newsgroups. Every news reader should allow you
994to read any news article that is still in the news spool, even if you
995have read the article before. You may need to read the instructions for
996your news reader to discover how to do this. In @file{rn}, this command
997will do this for you at the article selection level:
998
999@example
1000?GNU Emacs Frequently Asked Questions?rc:m
1001@end example
1002
1003In Gnus, you should type @kbd{C-u C-x C-s} from the @file{*Summary*}
1004buffer or @kbd{C-u @key{SPC}} from the @file{*Newsgroup*} buffer to view
1005all articles in a newsgroup.
1006
ed5c18e2
EZ
1007If the FAQ articles have expired and have been deleted from your news
1008spool, it might (or might not) do some good to complain to your news
71e68827
DL
1009administrator, because the most recent FAQ should not expire for a
1010while.
1011
71e68827
DL
1012@item
1013In the Emacs distribution. Since Emacs 18.56, the FAQ at the time
ed438271
EZ
1014of release has been part of the Emacs distribution as either
1015@file{etc/FAQ} or @file{man/faq.texi} (@pxref{File-name conventions}).
71e68827 1016
71e68827
DL
1017@item
1018Via anonymous ftp and e-mail from @file{rtfm.mit.edu} (and its mirror in
1019Europe), the main repository for FAQs and other items posted to
1020news.answers. The Emacs FAQs are available at
1021
1022@uref{ftp://rtfm.mit.edu/pub/usenet/comp.emacs/} and
1023
1024@uref{ftp://ftp.uni-paderborn.de/pub/doc/FAQ/comp/emacs/}
1025
1026If you do not have access to anonymous FTP, you can access the archives
1027using the @file{rtfm.mit.edu} mail server. The Emacs FAQ can be
1028retrieved by sending mail to @email{mail-server@@rtfm.mit.edu} with a
1029blank subject and containing
1030
1031@example
1032send usenet/news.answers/GNU-Emacs-FAQ/diffs
1033send usenet/news.answers/GNU-Emacs-FAQ/part1
1034send usenet/news.answers/GNU-Emacs-FAQ/part2
1035send usenet/news.answers/GNU-Emacs-FAQ/part3
1036send usenet/news.answers/GNU-Emacs-FAQ/part4
1037send usenet/news.answers/GNU-Emacs-FAQ/part5
1038@end example
1039
1040For more information, send email to @email{mail-server@@rtfm.mit.edu}
ef4da64f 1041with @samp{help} and @samp{index} in the body on separate lines.
71e68827
DL
1042@end itemize
1043
1044@c ------------------------------------------------------------
1045@node Status of Emacs, Common requests, Getting help, Top
1046@chapter Status of Emacs
1047@cindex Status of Emacs
1048
ed5c18e2 1049This chapter gives you basic information about Emacs, including its
71e68827
DL
1050latest version status.
1051
1052@menu
7a2fe6fa
TTN
1053* Origin of the term Emacs::
1054* Latest version of Emacs::
1055* New in Emacs 20::
1056* New in Emacs 21::
b6f2e1f5 1057* New in Emacs 22::
71e68827
DL
1058@end menu
1059
1060@node Origin of the term Emacs, Latest version of Emacs, Status of Emacs, Status of Emacs
ed5c18e2
EZ
1061@section Where does the name ``Emacs'' come from?
1062@cindex Origin of the term ``Emacs''
71e68827
DL
1063@cindex Emacs name origin
1064@cindex TECO
1065@cindex Original version of Emacs
1066
ed5c18e2 1067Emacs originally was an acronym for Editor MACroS. RMS says he ``picked
71e68827 1068the name Emacs because @key{E} was not in use as an abbreviation on ITS at
ed5c18e2 1069the time.'' The first Emacs was a set of macros written in 1976 at MIT
71e68827
DL
1070by RMS for the editor TECO (Text Editor and COrrector, originally Tape
1071Editor and COrrector) under ITS on a PDP-10. RMS had already extended
ed5c18e2 1072TECO with a ``real-time'' full-screen mode with reprogrammable keys.
71e68827
DL
1073Emacs was started by @email{gls@@east.sun.com, Guy Steele} as a project
1074to unify the many divergent TECO command sets and key bindings at MIT,
1075and completed by RMS.
1076
1077Many people have said that TECO code looks a lot like line noise; you
1078can read more at @uref{news:alt.lang.teco}. Someone has written a TECO
ed5c18e2
EZ
1079implementation in Emacs Lisp (to find it, see @ref{Packages that do not
1080come with Emacs}); it would be an interesting project to run the
1081original TECO Emacs inside of Emacs.
71e68827 1082
ed5c18e2 1083@cindex Why Emacs?
71e68827 1084For some not-so-serious alternative reasons for Emacs to have that
f8635375 1085name, check out the file @file{etc/JOKES} (@pxref{File-name
ed5c18e2 1086conventions}).
71e68827
DL
1087
1088@node Latest version of Emacs, New in Emacs 20, Origin of the term Emacs, Status of Emacs
1089@section What is the latest version of Emacs?
1090@cindex Version, latest
ed5c18e2 1091@cindex Latest version of Emacs
71e68827 1092
ed5c18e2 1093Emacs @value{VER} is the current version as of this writing.
71e68827 1094
037724a0 1095@node New in Emacs 20, New in Emacs 21, Latest version of Emacs, Status of Emacs
71e68827
DL
1096@section What is different about Emacs 20?
1097@cindex Differences between Emacs 19 and Emacs 20
1098@cindex Emacs 20, new features in
71e68827 1099
4d715abe 1100To find out what has changed in recent versions, type @kbd{C-h C-n}
71e68827
DL
1101(@kbd{M-x view-emacs-news}). The oldest changes are at the bottom of
1102the file, so you might want to read it starting there, rather than at
1103the top.
1104
1105The differences between Emacs versions 18 and 19 was rather dramatic;
1106the introduction of frames, faces, and colors on windowing systems was
1107obvious to even the most casual user.
1108
1109There are differences between Emacs versions 19 and 20 as well, but many
1110are more subtle or harder to find. Among the changes are the inclusion
ed5c18e2
EZ
1111of MULE code for languages that use non-Latin characters and for mixing
1112several languages in the same document; the ``Customize'' facility for
1113modifying variables without having to use Lisp; and automatic conversion
1114of files from Macintosh, Microsoft, and Unix platforms.
71e68827
DL
1115
1116A number of older Lisp packages, such as Gnus, Supercite and the
1117calendar/diary, have been updated and enhanced to work with Emacs 20,
1118and are now included with the standard distribution.
1119
1120
b6f2e1f5 1121@node New in Emacs 21, New in Emacs 22, New in Emacs 20, Status of Emacs
ed5c18e2
EZ
1122@section What is different about Emacs 21?
1123@cindex Differences between Emacs 20 and Emacs 21
1124@cindex Emacs 21, new features in
1125@cindex Recently introduced features
1126
1127@cindex Variable-size fonts
1128@cindex Toolbar support
1129Emacs 21 features a thorough rewrite of the display engine. The new
1130display engine supports variable-size fonts, images, and can play sounds
28665d46 1131on platforms which support that. As a result, the visual appearance of
ed5c18e2
EZ
1132Emacs, when it runs on a windowed display, is much more reminiscent of
1133modern GUI programs, and includes 3D widgets (used for the mode line and
1134the scroll bars), a configurable and extensible toolbar, tooltips
1135(a.k.a.@: balloon help), and other niceties.
1136
b82e13af 1137@cindex Colors on text-only terminals
ed5c18e2 1138@cindex TTY colors
b82e13af 1139In addition, Emacs 21 supports faces on text-only terminals. This means
ed5c18e2
EZ
1140that you can now have colors when you run Emacs on a GNU/Linux console
1141and on @code{xterm} with @kbd{emacs -nw}.
1142
037724a0 1143@node New in Emacs 22, , New in Emacs 21, Status of Emacs
b6f2e1f5
RF
1144@section What is different about Emacs 22?
1145@cindex Differences between Emacs 21 and Emacs 22
1146@cindex Emacs 22, new features in
1147@cindex Recently introduced features
1148
b6f2e1f5 1149@cindex Default features
10e81c5e
RF
1150Font Lock mode, auto-compression mode, and file name shadow mode are now
1151enabled by default. On graphics displays it is now possible to follow
1152links with @kbd{mouse-1}, and the modeline of the selected window is now
1153highlighted. Window fringes are now customizable. The minibuffer
1154prompt is now displayed in a distinct face.
1155
1156Emacs now reads abbrev definitions automatically at startup. The
1157maximum size of buffers has been doubled and is now 256M on 32-bit
1158machines. Grep mode is now separate from Compilation mode and has many
1159new specific options and commands.
1160
1161The original Emacs macro system has been replaced by the new Kmacro
1162package, which provides many new commands and features and a simple
1163interface that uses the function keys F3 and F4. Macros are now stored
1164in a macro ring, and can be debugged and edited interactively.
1165
1166The GUD (Grand Unified Debugger) package can now be used with a full
1167graphical user interface to the debugger which provides many features
1168found in traditional development environments, making it easy to
1169manipulate breakpoints, add watch points, display the call stack, etc.
1170Breakpoints are now displayed in the source buffer.
b6f2e1f5
RF
1171
1172@cindex GTK+ Toolkit
1173@cindex Drag-and-drop
1174@cindex Mouse wheel
1175Emacs can now be built with GTK+ widgets, and supports drag-and-drop
1176operation on X. Mouse wheel support is now enabled by default.
1177
1178@cindex New modes
10e81c5e
RF
1179Many new modes and packages have been included in Emacs, such as Calc,
1180Tramp and URL, as well as IDO, CUA, rcirc, ERC, conf-mode, python-mode,
1181table, tumme, SES, ruler, Flymake, Org, PGG, wdired, t-mouse, longlines,
1182dns-mode, savehist, Password, Printing, Reveal, etc.
1183
1184@cindex Multilingual Environment
1185Leim is now part of Emacs. Unicode support has been much improved, and
1186the following input methods have been added: belarusian, bulgarian-bds,
1187bulgarian-phonetic, chinese-sisheng, croatian, dutch, georgian,
1188latin-alt-postfix, latin-postfix, latin-prefix, latvian-keyboard,
1189lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345,
1190russian-computer, sgml, slovenian, tamil-inscript ucs,
1191ukrainian-computer, vietnamese-telex, and welsh.
1192
1193The following language environment have also been added: Belarusian,
1194Bulgarian, Chinese-EUC-TW, Croatian, French, Georgian, Italian, Latin-6,
1195Latin-7, Latvian, Lithuanian, Malayalam, Russian, Russian, Slovenian,
1196Swedish, Tajik, Tamil, UTF-8, Ukrainian, Ukrainian, Welsh, and
1197Windows-1255.
1198
1199@cindex Supported systems
1200Emacs 22 features support for GNU/Linux systems on S390 and x86-64
1201machines, as well as support for the Mac OS X and Cygwin operating
1202systems.
b6f2e1f5
RF
1203
1204@cindex Documentation
1205@cindex Emacs Lisp Manual
1206In addition, Emacs 22 now includes the Emacs Lisp Reference Manual
1207(@pxref{Emacs Lisp documentation}) and the Emacs Lisp Intro.
1208
10e81c5e
RF
1209Many other changes have been made in Emacs 22, use @kbd{C-h n} to get a
1210full list.
1211
71e68827
DL
1212@c ------------------------------------------------------------
1213@node Common requests, Bugs and problems, Status of Emacs, Top
1214@chapter Common requests
1215@cindex Common requests
1216
1217@menu
7a2fe6fa 1218* Setting up a customization file::
b370fef5 1219* Using Customize::
7a2fe6fa 1220* Colors on a TTY::
037724a0 1221* Debugging a customization file::
7a2fe6fa
TTN
1222* Displaying the current line or column::
1223* Displaying the current file name in the titlebar::
1224* Turning on abbrevs by default::
7a2fe6fa 1225* Associating modes with files::
7a2fe6fa 1226* Highlighting a region::
9f261d3c 1227* Replacing highlighted text::
7a2fe6fa 1228* Controlling case sensitivity::
9f261d3c 1229* Working with unprintable characters::
5f7b8867
RF
1230* Searching for/replacing newlines::
1231* Yanking text in isearch::
037724a0 1232* Wrapping words automatically::
9f261d3c 1233* Turning on auto-fill by default::
7a2fe6fa
TTN
1234* Spell-checkers::
1235* Checking TeX and *roff documents::
1236* Changing load-path::
1237* Using an already running Emacs process::
1238* Compiler error messages::
1239* Indenting switch statements::
1240* Customizing C and C++ indentation::
1241* Horizontal scrolling::
1242* Overwrite mode::
1243* Turning off beeping::
1244* Turning the volume down::
1245* Automatic indentation::
1246* Matching parentheses::
1247* Hiding #ifdef lines::
1248* Repeating commands::
1249* Valid X resources::
1250* Evaluating Emacs Lisp code::
1251* Changing the length of a Tab::
5f7b8867 1252* Inserting text at the beginning of each line::
7a2fe6fa 1253* Underlining paragraphs::
7a2fe6fa
TTN
1254* Forcing the cursor to remain in the same column::
1255* Forcing Emacs to iconify itself::
1256* Using regular expressions::
1257* Replacing text across multiple files::
1258* Documentation for etags::
1259* Disabling backups::
1260* Disabling auto-save-mode::
1261* Going to a line by number::
1262* Modifying pull-down menus::
1263* Deleting menus and menu options::
1264* Turning on syntax highlighting::
1265* Scrolling only one line::
7a2fe6fa
TTN
1266* Editing MS-DOS files::
1267* Filling paragraphs with a single space::
1268* Escape sequences in shell output::
71e68827
DL
1269@end menu
1270
b370fef5 1271@node Setting up a customization file, Using Customize, Common requests, Common requests
71e68827
DL
1272@section How do I set up a @file{.emacs} file properly?
1273@cindex @file{.emacs} file, setting up
e6838fd8 1274@cindex @file{.emacs} file, locating
71e68827
DL
1275@cindex Init file, setting up
1276@cindex Customization file, setting up
1277
333c5fc5 1278@inforef{Init File, Init File, emacs}.
71e68827
DL
1279
1280In general, new Emacs users should not have @file{.emacs} files, because
1281it causes confusing non-standard behavior. Then they send questions to
1282@email{help-gnu-emacs@@gnu.org} asking why Emacs isn't behaving as
1283documented.
1284
b370fef5
RF
1285Beginning with version 20.1, Emacs includes the new Customize facility
1286(@pxref{Using Customize}). This allows users who are unfamiliar with
1287Emacs Lisp to modify their @file{.emacs} files in a relatively
1288straightforward way, using menus rather than Lisp code. Most packages
1289support Customize as of this writing.
71e68827 1290
ed5c18e2 1291While Customize might indeed make it easier to configure Emacs,
71e68827 1292consider taking a bit of time to learn Emacs Lisp and modifying your
ed5c18e2 1293@file{.emacs} directly. Simple configuration options are described
71e68827
DL
1294rather completely in @inforef{Init File, Init File, emacs}, for users
1295interested in performing frequently requested, basic tasks.
1296
199a0cb9
GM
1297Sometimes users are unsure as to where their @file{.emacs} file should
1298be found. Visiting the file as @file{~/.emacs} from Emacs will find
1299the correct file.
1300
b370fef5
RF
1301@node Using Customize, Colors on a TTY, Setting up a customization file, Common requests
1302@section How do I start using Customize?
1303@cindex Customize groups
1304@cindex Customizing variables
1305@cindex Customizing faces
1306
1307The main Customize entry point is @kbd{M-x customize @key{RET}}. This
1308command takes you to a buffer listing all the available Customize
1309groups. From there, you can access all customizable options and faces,
1310change their values, and save your changes to your init file.
1311@inforef{Easy Customization, Easy Customization, emacs}.
1312
1313If you know the name of the group in advance (e.g. ``shell''), use
1314@kbd{M-x customize-group @key{RET}}.
1315
1316If you wish to customize a single option, use @kbd{M-x customize-option
1317@key{RET}}. This command prompts you for the name of the option to
1318customize, with completion.
1319
1320@node Colors on a TTY, Debugging a customization file, Using Customize, Common requests
ed5c18e2
EZ
1321@section How do I get colors and syntax highlighting on a TTY?
1322@cindex Colors on a TTY
1323@cindex Syntax highlighting on a TTY
1324@cindex Console, colors
1325
c6df94ff 1326In Emacs 21.1 and later, colors and faces are supported in non-windowed mode,
b82e13af 1327i.e.@: on Unix and GNU/Linux text-only terminals and consoles, and when
96c53f2a 1328invoked as @samp{emacs -nw} on X, MS-Windows, and Mac. (Colors and faces were
ed5c18e2
EZ
1329supported in the MS-DOS port since Emacs 19.29.) Emacs automatically
1330detects color support at startup and uses it if available. If you think
1331that your terminal supports colors, but Emacs won't use them, check the
1332@code{termcap} entry for your display type for color-related
1333capabilities.
1334
1335The command @kbd{M-x list-colors-display} pops up a window which
1336exhibits all the colors Emacs knows about on the current display.
1337
b6f2e1f5 1338Syntax highlighting is on by default since version 22.1.
ed5c18e2
EZ
1339
1340@node Debugging a customization file, Displaying the current line or column, Colors on a TTY, Common requests
71e68827
DL
1341@section How do I debug a @file{.emacs} file?
1342@cindex Debugging @file{.emacs} file
1343@cindex @file{.emacs} debugging
1344@cindex Init file debugging
ed5c18e2 1345@cindex @samp{-debug-init} option
71e68827
DL
1346
1347Start Emacs with the @samp{-debug-init} command-line option. This
1348enables the Emacs Lisp debugger before evaluating your @file{.emacs}
1349file, and places you in the debugger if something goes wrong. The top
1350line in the @file{trace-back} buffer will be the error message, and the
1351second or third line of that buffer will display the Lisp code from your
1352@file{.emacs} file that caused the problem.
1353
1354You can also evaluate an individual function or argument to a function
1355in your @file{.emacs} file by moving the cursor to the end of the
1356function or argument and typing @kbd{C-x C-e} (@kbd{M-x
1357eval-last-sexp}).
1358
1359Use @kbd{C-h v} (@kbd{M-x describe-variable}) to check the value of
1360variables which you are trying to set or use.
1361
f8635375 1362@node Displaying the current line or column, Displaying the current file name in the titlebar, Debugging a customization file, Common requests
71e68827
DL
1363@section How do I make Emacs display the current line (or column) number?
1364@cindex @code{line-number-mode}
1365@cindex Displaying the current line or column
1366@cindex Line number, displaying the current
1367@cindex Column, displaying the current
1368@cindex @code{mode-line-format}
1369
1370To have Emacs automatically display the current line number of the point
1371in the mode line, do @kbd{M-x line-number-mode}. You can also put the
1372form
1373
1374@lisp
1375(setq line-number-mode t)
1376@end lisp
1377
ed5c18e2 1378@noindent
71e68827 1379in your @file{.emacs} file to achieve this whenever you start Emacs.
ed5c18e2
EZ
1380(Line number display is on by default, unless your site-specific
1381initialization disables it.) Note that Emacs will not display the line
1382number if the buffer's size in bytes is larger than the value of the
1383variable @code{line-number-display-limit}.
71e68827 1384
6cc9aff2 1385You can similarly display the current column with
71e68827
DL
1386@kbd{M-x column-number-mode}, or by putting the form
1387
1388@lisp
7a2fe6fa 1389(setq column-number-mode t)
71e68827
DL
1390@end lisp
1391
ed5c18e2 1392@noindent
71e68827
DL
1393in your @file{.emacs} file.
1394
ed5c18e2
EZ
1395The @code{"%c"} format specifier in the variable @code{mode-line-format}
1396will insert the current column's value into the mode line. See the
71e68827
DL
1397documentation for @code{mode-line-format} (using @kbd{C-h v
1398mode-line-format @key{RET}}) for more information on how to set and use
1399this variable.
1400
ed5c18e2
EZ
1401Users of all Emacs versions can display the current column using the
1402@samp{column} package written by @email{abraham@@dina.kvl.dk, Per
1403Abrahamsen}. @xref{Packages that do not come with Emacs}, for
1404instructions on how to get it.
71e68827 1405
ed5c18e2
EZ
1406@cindex Set number capability in @code{vi} emulators
1407None of the @code{vi} emulation modes provide the ``set number''
199a0cb9
GM
1408capability of @code{vi} (as far as we know). The @samp{setnu} package
1409written by @email{kyle@@wonderworks.com, Kyle Jones} provides this
1410feature. So too does @samp{wb-line-number}, written by
1411@email{naoki.y.nakamura@@nifty.com, Naoki Nakamura}.
71e68827 1412
f8635375
EZ
1413@node Displaying the current file name in the titlebar, Turning on abbrevs by default, Displaying the current line or column, Common requests
1414@section How can I modify the titlebar to contain the current file name?
1415@cindex Titlebar, displaying the current file name in
1416@cindex File name, displaying in the titlebar
71e68827
DL
1417@cindex @code{frame-title-format}
1418
ed5c18e2 1419The contents of an Emacs frame's titlebar is controlled by the variable
71e68827
DL
1420@code{frame-title-format}, which has the same structure as the variable
1421@code{mode-line-format}. (Use @kbd{C-h v} or @kbd{M-x
1422describe-variable} to get information about one or both of these
1423variables.)
1424
1425By default, the titlebar for a frame does contain the name of the buffer
1426currently being visited, except if there is a single frame. In such a
ed438271
EZ
1427case, the titlebar contains Emacs invocation name and the name of the
1428machine at which Emacs was invoked. This is done by setting
71e68827
DL
1429@code{frame-title-format} to the default value of
1430
1431@lisp
1432(multiple-frames "%b" ("" invocation-name "@@" system-name))
1433@end lisp
1434
1435To modify the behavior such that frame titlebars contain the buffer's
1436name regardless of the number of existing frames, include the following
1437in your @file{.emacs}:
1438
1439@lisp
1440(setq frame-title-format "%b")
1441@end lisp
1442
9f261d3c 1443@node Turning on abbrevs by default, Associating modes with files, Displaying the current file name in the titlebar, Common requests
ed5c18e2 1444@section How do I turn on abbrevs by default just in mode @var{mymode}?
71e68827
DL
1445@cindex Abbrevs, turning on by default
1446
1447Put this in your @file{.emacs} file:
1448
1449@lisp
1450(condition-case ()
1451 (quietly-read-abbrev-file)
1452 (file-error nil))
1453
ed5c18e2 1454(add-hook '@var{mymode}-mode-hook
bed44076
SM
1455 (lambda ()
1456 (setq abbrev-mode t)))
71e68827
DL
1457@end lisp
1458
b6f2e1f5
RF
1459Starting with Emacs 22, the standard abbrevs file is read automatically
1460at startup, so the first of these two forms becomes unnecessary.
1461
9f261d3c 1462@node Associating modes with files, Highlighting a region, Turning on abbrevs by default, Common requests
71e68827
DL
1463@section How do I make Emacs use a certain major mode for certain files?
1464@cindex Associating modes with files
1465@cindex File extensions and modes
1466@cindex @code{auto-mode-alist}, modifying
1467@cindex Modes, associating with file extensions
1468
ed5c18e2
EZ
1469If you want to use a certain mode @var{foo} for all files whose names end
1470with the extension @file{.@var{bar}}, this will do it for you:
71e68827
DL
1471
1472@lisp
ed5c18e2 1473(setq auto-mode-alist (cons '("\\.@var{bar}\\'" . @var{foo}-mode) auto-mode-alist))
71e68827
DL
1474@end lisp
1475
1476Otherwise put this somewhere in the first line of any file you want to
ed5c18e2
EZ
1477edit in the mode @var{foo} (in the second line, if the first line begins
1478with @samp{#!}):
71e68827
DL
1479
1480@example
ed5c18e2 1481-*- @var{foo} -*-
71e68827
DL
1482@end example
1483
ed5c18e2 1484@cindex Major mode for shell scripts
71e68827
DL
1485Beginning with Emacs 19, the variable @code{interpreter-mode-alist}
1486specifies which mode to use when loading a shell script. (Emacs
1487determines which interpreter you're using by examining the first line of
ed5c18e2 1488the script.) This feature only applies when the file name doesn't
71e68827
DL
1489indicate which mode to use. Use @kbd{C-h v} (or @kbd{M-x
1490describe-variable}) on @code{interpreter-mode-alist} to learn more.
1491
9f261d3c 1492@node Highlighting a region, Replacing highlighted text, Associating modes with files, Common requests
71e68827
DL
1493@section How can I highlight a region of text in Emacs?
1494@cindex Highlighting text
1495@cindex Text, highlighting
1496@cindex @code{transient-mark-mode}
1497@cindex Region, highlighting a
1498
ed438271
EZ
1499You can cause the region to be highlighted when the mark is active by
1500including
71e68827
DL
1501
1502@lisp
1503(transient-mark-mode t)
1504@end lisp
1505
ed438271 1506@noindent
037724a0 1507in your @file{.emacs} file.
71e68827 1508
9f261d3c
JL
1509@node Replacing highlighted text, Controlling case sensitivity, Highlighting a region, Common requests
1510@section How can I replace highlighted text with what I type?
1511@cindex @code{delete-selection-mode}
1512@cindex Replacing highlighted text
1513@cindex Highlighting and replacing text
1514
1515Use @code{delete-selection-mode}, which you can start automatically by
1516placing the following Lisp form in your @file{.emacs} file:
1517
1518@lisp
1519(delete-selection-mode 1)
1520@end lisp
1521
1522According to the documentation string for @code{delete-selection-mode}
1523(which you can read using @kbd{M-x describe-function @key{RET}
1524delete-selection-mode @key{RET}}):
1525
1526@quotation
1527When ON, typed text replaces the selection if the selection is active.
1528When OFF, typed text is just inserted at point.
1529@end quotation
1530
1531This mode also allows you to delete (not kill) the highlighted region by
1532pressing @key{DEL}.
1533
1534@node Controlling case sensitivity, Working with unprintable characters, Replacing highlighted text, Common requests
71e68827
DL
1535@section How do I control Emacs's case-sensitivity when searching/replacing?
1536@cindex @code{case-fold-search}
1537@cindex Case sensitivity of searches
71e68827
DL
1538@cindex Searching without case sensitivity
1539@cindex Ignoring case in searches
1540
1541For searching, the value of the variable @code{case-fold-search}
1542determines whether they are case sensitive:
1543
1544@lisp
1545(setq case-fold-search nil) ; make searches case sensitive
1546(setq case-fold-search t) ; make searches case insensitive
1547@end lisp
1548
ed5c18e2
EZ
1549@cindex Case sensitivity in replacements
1550@cindex Replacing, and case sensitivity
1551@cindex @code{case-replace}
1552Similarly, for replacing, the variable @code{case-replace} determines
71e68827
DL
1553whether replacements preserve case.
1554
b6f2e1f5
RF
1555You can also toggle case sensitivity at will in isearch with @kbd{M-c}.
1556
71e68827
DL
1557To change the case sensitivity just for one major mode, use the major
1558mode's hook. For example:
1559
1560@lisp
ed5c18e2 1561(add-hook '@var{foo}-mode-hook
bed44076
SM
1562 (lambda ()
1563 (setq case-fold-search nil)))
71e68827
DL
1564@end lisp
1565
9f261d3c
JL
1566@node Working with unprintable characters, Searching for/replacing newlines, Controlling case sensitivity, Common requests
1567@section How do I search for, delete, or replace unprintable (eight-bit or control) characters?
1568@cindex Unprintable characters, working with
1569@cindex Working with unprintable characters
1570@cindex Control characters, working with
1571@cindex Eight-bit characters, working with
1572@cindex Searching for unprintable characters
1573@cindex Regexps and unprintable characters
1574
1575To search for a single character that appears in the buffer as, for
1576example, @samp{\237}, you can type @kbd{C-s C-q 2 3 7}. (This assumes
1577the value of @code{search-quote-char} is 17 (i.e., @kbd{C-q}).)
1578Searching for @strong{all} unprintable characters is best done with a
1579regular expression (@dfn{regexp}) search. The easiest regexp to use for
1580the unprintable chars is the complement of the regexp for the printable
1581chars.
1582
1583@itemize @bullet
1584
1585@item
1586Regexp for the printable chars: @samp{[\t\n\r\f -~]}
1587
1588@item
1589Regexp for the unprintable chars: @samp{[^\t\n\r\f -~]}
1590
1591@end itemize
1592
1593To type these special characters in an interactive argument to
1594@code{isearch-forward-regexp} or @code{re-search-forward}, you need to
1595use @kbd{C-q}. (@samp{\t}, @samp{\n}, @samp{\r}, and @samp{\f} stand
1596respectively for @key{TAB}, @key{LFD}, @key{RET}, and @kbd{C-l}.) So,
1597to search for unprintable characters using @code{re-search-forward}:
1598
1599@kbd{M-x re-search-forward @key{RET} [^ @key{TAB} C-q @key{LFD} C-q @key{RET} C-q C-l @key{SPC} -~] @key{RET}}
1600
1601Using @code{isearch-forward-regexp}:
1602
1603@kbd{C-M-s [^ @key{TAB} @key{LFD} C-q @key{RET} C-q C-l @key{SPC} -~]}
1604
1605To delete all unprintable characters, simply use replace-regexp:
1606
1607@kbd{M-x replace-regexp @key{RET} [^ @key{TAB} C-q @key{LFD} C-q @key{RET} C-q C-l @key{SPC} -~] @key{RET} @key{RET}}
1608
1609Replacing is similar to the above. To replace all unprintable
1610characters with a colon, use:
1611
1612M-x replace-regexp @key{RET} [^ @key{TAB} C-q @key{LFD} C-q @key{RET} C-q C-l @key{SPC} -~] @key{RET} : @key{RET}
1613
1614@node Searching for/replacing newlines, Yanking text in isearch, Working with unprintable characters, Common requests
5f7b8867
RF
1615@section How do I input a newline character in isearch or query-replace?
1616@cindex Searching for newlines
1617@cindex Replacing newlines
1618
1619Use @kbd{C-q C-j}. For more information, see @inforef{Special Isearch,
1620Special Input for Incremental Search, emacs}.
1621
1622
1623@node Yanking text in isearch, Wrapping words automatically, Searching for/replacing newlines, Common requests
1624@section How do I copy text from the kill ring into the search string?
1625@cindex Yanking text into the search string
1626@cindex isearch yanking
1627
1628Use @kbd{M-y}. @inforef{Isearch Yank, Isearch Yanking, emacs}.
1629
9f261d3c 1630@node Wrapping words automatically, Turning on auto-fill by default, Yanking text in isearch, Common requests
71e68827
DL
1631@section How do I make Emacs wrap words for me?
1632@cindex Wrapping word automatically
ed5c18e2
EZ
1633@cindex Wrapping lines
1634@cindex Line wrap
71e68827
DL
1635@cindex @code{auto-fill-mode}, introduction to
1636@cindex Maximum line width, default value
1637@cindex @code{fill-column}, default value
1638
1639Use @code{auto-fill-mode}, activated by typing @kbd{M-x auto-fill-mode}.
1640The default maximum line width is 70, determined by the variable
ed5c18e2
EZ
1641@code{fill-column}. To learn how to turn this on automatically, see
1642@ref{Turning on auto-fill by default}.
71e68827 1643
9f261d3c
JL
1644@node Turning on auto-fill by default, Spell-checkers, Wrapping words automatically, Common requests
1645@section How do I turn on @code{auto-fill-mode} by default?
1646@cindex @code{auto-fill-mode}, activating automatically
1647@cindex Filling automatically
1648@cindex Automatic entry to @code{auto-fill-mode}
1649
1650To turn on @code{auto-fill-mode} just once for one buffer, use @kbd{M-x
1651auto-fill-mode}.
1652
1653To turn it on for every buffer in a certain mode, you must use the hook
1654for that mode. For example, to turn on @code{auto-fill} mode for all
1655text buffers, including the following in your @file{.emacs} file:
1656
1657@lisp
1658(add-hook 'text-mode-hook 'turn-on-auto-fill)
1659@end lisp
1660
1661If you want @code{auto-fill} mode on in all major modes, do this:
1662
1663@lisp
1664(setq-default auto-fill-function 'do-auto-fill)
1665@end lisp
1666
1667@node Spell-checkers, Checking TeX and *roff documents, Turning on auto-fill by default, Common requests
71e68827
DL
1668@section Where can I get a better spelling checker for Emacs?
1669@cindex Checking spelling
1670@cindex Spelling, checking text documents
1671
1672Use Ispell. @xref{Ispell}.
1673
1674@node Checking TeX and *roff documents, Changing load-path, Spell-checkers, Common requests
1675@section How can I spell-check @TeX{} or *roff documents?
1676@cindex Spelling, checking @TeX{} documents
1677@cindex @TeX{} documents, checking spelling in
1678
1679Use Ispell. Ispell can handle @TeX{} and *roff documents.
1680@xref{Ispell}.
1681
1682@node Changing load-path, Using an already running Emacs process, Checking TeX and *roff documents, Common requests
1683@section How do I change @code{load-path}?
1684@cindex @code{load-path}, modifying
1685@cindex Modifying @code{load-path}
1686@cindex Adding to @code{load-path}
1687
1688In general, you should only add to the @code{load-path}. You can add
ed5c18e2 1689directory @var{/dir/subdir} to the load path like this:
71e68827
DL
1690
1691@lisp
ed5c18e2 1692(setq load-path (cons "/dir/subdir/" load-path))
71e68827
DL
1693@end lisp
1694
1695To do this relative to your home directory:
1696
1697@lisp
c6995555 1698(setq load-path (cons "~/mysubdir/" load-path))
71e68827
DL
1699@end lisp
1700
1701@node Using an already running Emacs process, Compiler error messages, Changing load-path, Common requests
1702@section How do I use an already running Emacs from another window?
1703@cindex @code{emacsclient}
1704@cindex Emacs server functions
1705@cindex Using an existing Emacs process
1706
1707@code{emacsclient}, which comes with Emacs, is for editing a file using
1708an already running Emacs rather than starting up a new Emacs. It does
1709this by sending a request to the already running Emacs, which must be
1710expecting the request.
1711
1712@itemize @bullet
1713
1714@item
ed5c18e2 1715Setup:
71e68827
DL
1716
1717Emacs must have executed the @code{server-start} function for
1718@samp{emacsclient} to work. This can be done either by a command line
1719option:
1720
1721@example
1722emacs -f server-start
1723@end example
1724
1725or by invoking @code{server-start} from @file{.emacs}:
1726
1727@lisp
ed5c18e2 1728(if (@var{some conditions are met}) (server-start))
71e68827
DL
1729@end lisp
1730
b6f2e1f5
RF
1731When this is done, Emacs creates a Unix domain socket named
1732@file{server} in @file{/tmp/emacs@var{userid}}. See
1733@code{server-socket-dir}.
71e68827
DL
1734
1735To get your news reader, mail reader, etc., to invoke
1736@samp{emacsclient}, try setting the environment variable @code{EDITOR}
1737(or sometimes @code{VISUAL}) to the value @samp{emacsclient}. You may
1738have to specify the full pathname of the @samp{emacsclient} program
1739instead. Examples:
1740
1741@example
1742# csh commands:
1743setenv EDITOR emacsclient
1744
1745# using full pathname
7a2fe6fa 1746setenv EDITOR /usr/local/emacs/etc/emacsclient
71e68827
DL
1747
1748# sh command:
1749EDITOR=emacsclient ; export EDITOR
1750@end example
1751
ed5c18e2
EZ
1752@item
1753Normal use:
71e68827 1754
b6f2e1f5
RF
1755When @samp{emacsclient} is run, it connects to the socket and passes its
1756command line options to Emacs, which at the next opportunity will visit
1757the files specified. (Line numbers can be specified just like with
1758Emacs.) The user will have to switch to the Emacs window by hand. When
1759the user is done editing a file, the user can type @kbd{C-x #} (or
1760@kbd{M-x server-edit}) to indicate this. If there is another buffer
1761requested by @code{emacsclient}, Emacs will switch to it; otherwise
ed5c18e2 1762@code{emacsclient} will exit, signaling the calling program to continue.
71e68827 1763
ed5c18e2 1764@cindex @code{gnuserv}
b6f2e1f5 1765There is an enhanced version of @samp{emacsclient} called
ed5c18e2 1766@samp{gnuserv}, written by @email{ange@@hplb.hpl.hp.com, Andy Norman}
199a0cb9
GM
1767(@pxref{Packages that do not come with Emacs}). @samp{gnuserv} uses
1768Internet domain sockets, so it can work across most network connections.
71e68827 1769
b6f2e1f5 1770The most recent @samp{gnuserv} package is available at
71e68827 1771
b6f2e1f5 1772@uref{http://meltin.net/hacks/emacs/}
199a0cb9 1773
71e68827
DL
1774@end itemize
1775
1776@node Compiler error messages, Indenting switch statements, Using an already running Emacs process, Common requests
1777@section How do I make Emacs recognize my compiler's funny error messages?
1778@cindex Compiler error messages, recognizing
1779@cindex Recognizing non-standard compiler errors
1780@cindex Regexps for recognizing compiler errors
1781@cindex Errors, recognizing compiler
1782
b6f2e1f5 1783Customize the @code{compilation-error-regexp-alist} variable.
71e68827 1784
d891bf01 1785@node Indenting switch statements, Customizing C and C++ indentation, Compiler error messages, Common requests
71e68827
DL
1786@section How do I change the indentation for @code{switch}?
1787@cindex @code{switch}, indenting
1788@cindex Indenting of @code{switch}
1789
1790Many people want to indent their @code{switch} statements like this:
1791
1792@example
1793f()
1794@{
1795 switch(x) @{
1796 case A:
1797 x1;
1798 break;
1799 case B:
1800 x2;
1801 break;
1802 default:
1803 x3;
1804 @}
1805@}
1806@end example
1807
1808The solution at first appears to be: set @code{c-indent-level} to 4 and
1809@code{c-label-offset} to -2. However, this will give you an indentation
1810spacing of four instead of two.
1811
ed5c18e2 1812The @emph{real} solution is to use @code{cc-mode} (the default mode for
b6f2e1f5 1813C programming in Emacs 20 and later) and add the following line to your
ed5c18e2 1814@file{.emacs}:
71e68827
DL
1815
1816@lisp
1817(c-set-offset 'case-label '+)
1818@end lisp
1819
1820There appears to be no way to do this with the old @code{c-mode}.
1821
d891bf01
EZ
1822@node Customizing C and C++ indentation, Horizontal scrolling, Indenting switch statements, Common requests
1823@section How to customize indentation in C, C@t{++}, and Java buffers?
1824@cindex Indentation, how to customize
1825@cindex Customize indentation
1826
1827The Emacs @code{cc-mode} features an interactive procedure for
1828customizing the indentation style, which is fully explained in the
1829@cite{CC Mode} manual that is part of the Emacs distribution, see
1830@ref{Customizing Indentation, , Customization Indentation, ccmode,
1831The CC Mode Manual}. Here's a short summary of the procedure:
1832
1833@enumerate
1834@item
1835Go to the beginning of the first line where you don't like the
1836indentation and type @kbd{C-c C-o}. Emacs will prompt you for the
1837syntactic symbol; type @key{RET} to accept the default it suggests.
1838
1839@item
1840Emacs now prompts for the offset of this syntactic symbol, showing the
1841default (the current definition) inside parentheses. You can choose
1842one of these:
1843
1844@table @code
1845@item 0
1846No extra indentation.
1847@item +
1848Indent one basic offset.
1849@item -
1850Outdent one basic offset.
1851@item ++
1852Indent two basic offsets
1853@item --
1854Outdent two basic offsets.
1855@item *
1856Indent half basic offset.
1857@item /
809eb587 1858Outdent half basic offset.
d891bf01
EZ
1859@end table
1860
1861@item
1862After choosing one of these symbols, type @kbd{C-c C-q} to reindent
1863the line or the block according to what you just specified.
1864
1865@item
1866If you don't like the result, go back to step 1. Otherwise, add the
1867following line to your @file{.emacs}:
1868
1869@lisp
1870(c-set-offset '@var{syntactic-symbol} @var{offset})
1871@end lisp
1872
1873@noindent
1874where @var{syntactic-symbol} is the name Emacs shows in the minibuffer
1875when you type @kbd{C-c C-o} at the beginning of the line, and
1876@var{offset} is one of the indentation symbols listed above (@code{+},
1877@code{/}, @code{0}, etc.) that you've chosen during the interactive
1878procedure.
1879
1880@item
1881Go to the next line whose indentation is not to your liking and repeat
1882the process there.
1883@end enumerate
1884
1885It is recommended to put all the resulting @code{(c-set-offset ...)}
1886customizations inside a C mode hook, like this:
1887
1888@lisp
1889(defun my-c-mode-hook ()
1890 (c-set-offset ...)
1891 (c-set-offset ...))
1892(add-hook 'c-mode-hook 'my-c-mode-hook)
1893@end lisp
1894
1895@noindent
1896Using @code{c-mode-hook} avoids the need to put a @w{@code{(require
1897'cc-mode)}} into your @file{.emacs} file, because @code{c-set-offset}
1898might be unavailable when @code{cc-mode} is not loaded.
1899
1900Note that @code{c-mode-hook} runs for C source files only; use
1901@code{c++-mode-hook} for C@t{++} sources, @code{java-mode-hook} for
1902Java sources, etc. If you want the same customizations to be in
1903effect in @emph{all} languages supported by @code{cc-mode}, use
1904@code{c-mode-common-hook}.
1905
1906@node Horizontal scrolling, Overwrite mode, Customizing C and C++ indentation, Common requests
71e68827
DL
1907@section How can I make Emacs automatically scroll horizontally?
1908@cindex @code{hscroll-mode}
1909@cindex Horizontal scrolling
1910@cindex Scrolling horizontally
1911
ed5c18e2
EZ
1912In Emacs 21 and later, this is on by default: if the variable
1913@code{truncate-lines} is non-@code{nil} in the current buffer, Emacs
1914automatically scrolls the display horizontally when point moves off the
1915left or right edge of the window.
1916
037724a0
JL
1917Note that this is overridden by the variable
1918@code{truncate-partial-width-windows} if that variable is non-nil
1919and the current buffer is not full-frame width.
1920
ed5c18e2 1921In Emacs 20, use the @code{hscroll-mode}. Here is some information from
71e68827
DL
1922the documentation, available by typing @kbd{C-h f hscroll-mode @key{RET}}:
1923
1924Automatically scroll horizontally when the point moves off the
7a2fe6fa 1925left or right edge of the window.
71e68827
DL
1926
1927@itemize @minus
ed5c18e2
EZ
1928@item
1929Type @kbd{M-x hscroll-mode} to enable it in the current buffer.
71e68827 1930
ed5c18e2
EZ
1931@item
1932Type @kbd{M-x hscroll-global-mode} to enable it in every buffer.
1933
1934@item
1935@code{turn-on-hscroll} is useful in mode hooks as in:
71e68827
DL
1936
1937@lisp
1938(add-hook 'text-mode-hook 'turn-on-hscroll)
1939@end lisp
1940
ed5c18e2
EZ
1941@item
1942@code{hscroll-margin} controls how close the cursor can get to the
7a2fe6fa 1943edge of the window.
71e68827 1944
ed5c18e2
EZ
1945@item
1946@code{hscroll-step-percent} controls how far to jump once we decide to do so.
71e68827
DL
1947@end itemize
1948
1949@node Overwrite mode, Turning off beeping, Horizontal scrolling, Common requests
ef4da64f 1950@section How do I make Emacs ``typeover'' or ``overwrite'' instead of inserting?
71e68827
DL
1951@cindex @key{Insert}
1952@cindex @code{overwrite-mode}
1953@cindex Overwriting existing text
1954@cindex Toggling @code{overwrite-mode}
1955
1956@kbd{M-x overwrite-mode} (a minor mode). This toggles
1957@code{overwrite-mode} on and off, so exiting from @code{overwrite-mode}
1958is as easy as another @kbd{M-x overwrite-mode}.
1959
ed5c18e2 1960On some systems, @key{Insert} toggles @code{overwrite-mode} on and off.
71e68827
DL
1961
1962@node Turning off beeping, Turning the volume down, Overwrite mode, Common requests
1963@section How do I stop Emacs from beeping on a terminal?
1964@cindex Beeping, turning off
1965@cindex Visible bell
1966@cindex Bell, visible
1967
1968@email{martin@@cc.gatech.edu, Martin R. Frank} writes:
1969
ed5c18e2
EZ
1970Tell Emacs to use the @dfn{visible bell} instead of the audible bell,
1971and set the visible bell to nothing.
71e68827
DL
1972
1973That is, put the following in your @code{TERMCAP} environment variable
1974(assuming you have one):
1975
1976@example
7a2fe6fa 1977... :vb=: ...
71e68827
DL
1978@end example
1979
1980And evaluate the following Lisp form:
1981
1982@example
1983(setq visible-bell t)
1984@end example
1985
1986@node Turning the volume down, Automatic indentation, Turning off beeping, Common requests
97878c08 1987@section How do I turn down the bell volume in Emacs running under X?
71e68827
DL
1988@cindex Bell, volume of
1989@cindex Volume of bell
1990
ed5c18e2
EZ
1991On X Window system, you can adjust the bell volume and duration for all
1992programs with the shell command @code{xset}.
71e68827 1993
ed5c18e2
EZ
1994Invoking @code{xset} without any arguments produces some basic
1995information, including the following:
71e68827
DL
1996
1997@example
1998usage: xset [-display host:dpy] option ...
1999 To turn bell off:
2000 -b b off b 0
2001 To set bell volume, pitch and duration:
2002 b [vol [pitch [dur]]] b on
2003@end example
2004
2005@node Automatic indentation, Matching parentheses, Turning the volume down, Common requests
2006@section How do I tell Emacs to automatically indent a new line to the indentation of the previous line?
2007@cindex Indenting new lines
2008@cindex New lines, indenting of
2009@cindex Previous line, indenting according to
ed5c18e2 2010@cindex Text indentation
71e68827 2011
ed5c18e2
EZ
2012Such behavior is automatic in Emacs 20 and later. From the
2013@file{etc/NEWS} file for Emacs 20.2:
71e68827
DL
2014
2015@example
2016** In Text mode, now only blank lines separate paragraphs. This makes
2017it possible to get the full benefit of Adaptive Fill mode in Text mode,
2018and other modes derived from it (such as Mail mode). @key{TAB} in Text
2019mode now runs the command @code{indent-relative}; this makes a practical
2020difference only when you use indented paragraphs.
2021
2022As a result, the old Indented Text mode is now identical to Text mode,
2023and is an alias for it.
2024
2025If you want spaces at the beginning of a line to start a paragraph, use
2026the new mode, Paragraph Indent Text mode.
2027@end example
2028
ed5c18e2
EZ
2029@cindex Prefixing lines
2030@cindex Fill prefix
2031If you have @code{auto-fill-mode} turned on (@pxref{Turning on auto-fill
2032by default}), you can tell Emacs to prefix every line with a certain
2033character sequence, the @dfn{fill prefix}. Type the prefix at the
2034beginning of a line, position point after it, and then type @kbd{C-x .}
71e68827
DL
2035(@code{set-fill-prefix}) to set the fill prefix. Thereafter,
2036auto-filling will automatically put the fill prefix at the beginning of
2037new lines, and @kbd{M-q} (@code{fill-paragraph}) will maintain any fill
2038prefix when refilling the paragraph.
2039
2040If you have paragraphs with different levels of indentation, you will
2041have to set the fill prefix to the correct value each time you move to a
199a0cb9
GM
2042new paragraph. There are many packages available to deal with this
2043(@pxref{Packages that do not come with Emacs}). Look for ``fill'' and
2044``indent'' keywords for guidance.
71e68827
DL
2045
2046@node Matching parentheses, Hiding #ifdef lines, Automatic indentation, Common requests
2047@section How do I show which parenthesis matches the one I'm looking at?
2048@cindex Parentheses, matching
2049@cindex @file{paren.el}
2050@cindex Highlighting matching parentheses
2051@cindex Pairs of parentheses, highlighting
2052@cindex Matching parentheses
2053
b6f2e1f5 2054Call @code{show-paren-mode} in your @file{.emacs} file:
71e68827
DL
2055
2056@lisp
2057(show-paren-mode 1)
2058@end lisp
2059
b6f2e1f5
RF
2060You can also enable this mode by selecting the @samp{Paren Match
2061Highlighting} option from the @samp{Options} menu of the Emacs menu bar
2062at the top of any Emacs frame.
71e68827 2063
b6f2e1f5 2064Alternatives to this mode include:
71e68827
DL
2065
2066@itemize @bullet
2067
2068@item
2069If you're looking at a right parenthesis (or brace or bracket) you can
ed5c18e2
EZ
2070delete it and reinsert it. Emacs will momentarily move the cursor to
2071the matching parenthesis.
71e68827
DL
2072
2073@item
718fb8a1 2074@kbd{C-M-f} (@code{forward-sexp}) and @kbd{C-M-b} (@code{backward-sexp})
71e68827
DL
2075will skip over one set of balanced parentheses, so you can see which
2076parentheses match. (You can train it to skip over balanced brackets
ed5c18e2 2077and braces at the same time by modifying the syntax table.)
71e68827 2078
ed5c18e2 2079@cindex Show matching paren as in @code{vi}
71e68827
DL
2080@item
2081Here is some Emacs Lisp that will make the @key{%} key show the matching
ed5c18e2 2082parenthesis, like in @code{vi}. In addition, if the cursor isn't over a
71e68827
DL
2083parenthesis, it simply inserts a % like normal.
2084
2085@lisp
2086;; By an unknown contributor
2087
2088(global-set-key "%" 'match-paren)
2089
2090(defun match-paren (arg)
2091 "Go to the matching paren if on a paren; otherwise insert %."
2092 (interactive "p")
2093 (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
2094 ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
2095 (t (self-insert-command (or arg 1)))))
2096@end lisp
2097
2098@end itemize
2099
2100@node Hiding #ifdef lines, Repeating commands, Matching parentheses, Common requests
2101@section In C mode, can I show just the lines that will be left after @code{#ifdef} commands are handled by the compiler?
2102@cindex @code{#ifdef}, selective display of
2103@cindex @code{hide-ifdef-mode}
2104@cindex Hiding @code{#ifdef} text
2105@cindex Selectively displaying @code{#ifdef} code
2106
2107@kbd{M-x hide-ifdef-mode}. (This is a minor mode.) You might also want
199a0cb9 2108to investigate @file{cpp.el}, which is distributed with Emacs.
71e68827
DL
2109
2110@node Repeating commands, Valid X resources, Hiding #ifdef lines, Common requests
9f261d3c
JL
2111@section How do I repeat a command as many times as possible?
2112@cindex Repeating commands many times
2113@cindex Commands, repeating many times
ed5c18e2 2114@cindex @code{.}, equivalent to @code{vi} command
71e68827 2115
ed5c18e2 2116As of Emacs 20.3, there is indeed a @code{repeat} command (@kbd{C-x z})
71e68827
DL
2117that repeats the last command. If you preface it with a prefix
2118argument, the prefix arg is applied to the command.
2119
2120You can also type @kbd{C-x @key{ESC} @key{ESC}}
2121(@code{repeat-complex-command}) to reinvoke commands that used the
2122minibuffer to get arguments. In @code{repeat-complex-command} you can
ed5c18e2
EZ
2123type @kbd{M-p} and @kbd{M-n} (and also up-arrow and down-arrow, if your
2124keyboard has these keys) to scan through all the different complex
71e68827
DL
2125commands you've typed.
2126
9f261d3c
JL
2127To repeat a set of commands, use keyboard macros. Use @kbd{C-x (} and
2128@kbd{C-x )} to make a keyboard macro that invokes the command and then
2129type @kbd{C-x e}. (@inforef{Keyboard Macros, Keyboard Macros, emacs}.)
71e68827 2130
9f261d3c
JL
2131If you're really desperate for the @code{.} command in @code{vi} that
2132redoes the last insertion/deletion, use VIPER, a @code{vi} emulation
2133mode which comes with Emacs, and which appears to support it.
2134(@xref{VIPER}.)
71e68827
DL
2135
2136@node Valid X resources, Evaluating Emacs Lisp code, Repeating commands, Common requests
2137@section What are the valid X resource settings (i.e., stuff in .Xdefaults)?
2138@cindex Resources, X
2139@cindex X resources
2140@cindex Setting X resources
2141
333c5fc5 2142@inforef{X Resources, X Resources, emacs}.
71e68827
DL
2143
2144You can also use a resource editor, such as editres (for X11R5 and
2145onwards), to look at the resource names for the menu bar, assuming Emacs
2146was compiled with the X toolkit.
2147
2148@node Evaluating Emacs Lisp code, Changing the length of a Tab, Valid X resources, Common requests
ef4da64f 2149@section How do I execute (``evaluate'') a piece of Emacs Lisp code?
71e68827
DL
2150@cindex Evaluating Lisp code
2151@cindex Lisp forms, evaluating
2152
ed5c18e2
EZ
2153There are a number of ways to execute (@dfn{evaluate}, in Lisp lingo) an
2154Emacs Lisp @dfn{form}:
71e68827
DL
2155
2156@itemize @bullet
2157
2158@item
2159If you want it evaluated every time you run Emacs, put it in a file
ed5c18e2
EZ
2160named @file{.emacs} in your home directory. This is known as ``your
2161@file{.emacs} file,'' and contains all of your personal customizations.
71e68827
DL
2162
2163@item
2164You can type the form in the @file{*scratch*} buffer, and then type
2165@key{LFD} (or @kbd{C-j}) after it. The result of evaluating the form
2166will be inserted in the buffer.
2167
2168@item
718fb8a1 2169In @code{emacs-lisp-mode}, typing @kbd{C-M-x} evaluates a top-level form
71e68827
DL
2170before or around point.
2171
2172@item
2173Typing @kbd{C-x C-e} in any buffer evaluates the Lisp form immediately
2174before point and prints its value in the echo area.
2175
2176@item
2177Typing @kbd{M-:} or @kbd{M-x eval-expression} allows you to type a Lisp
ed5c18e2 2178form in the minibuffer which will be evaluated once you press @key{RET}.
71e68827
DL
2179
2180@item
2181You can use @kbd{M-x load-file} to have Emacs evaluate all the Lisp
2182forms in a file. (To do this from Lisp use the function @code{load}
2183instead.)
2184
2185The functions @code{load-library}, @code{eval-region},
220a668e 2186@code{eval-buffer}, @code{require}, and @code{autoload} are also
ed5c18e2
EZ
2187useful; see @ref{Emacs Lisp documentation}, if you want to learn more
2188about them.
71e68827
DL
2189
2190@end itemize
2191
5f7b8867 2192@node Changing the length of a Tab, Inserting text at the beginning of each line, Evaluating Emacs Lisp code, Common requests
71e68827
DL
2193@section How do I change Emacs's idea of the @key{TAB} character's length?
2194@cindex Tab length
2195@cindex Length of tab character
7a2fe6fa 2196@cindex @code{default-tab-width}
71e68827
DL
2197
2198Set the variable @code{default-tab-width}. For example, to set
2199@key{TAB} stops every 10 characters, insert the following in your
2200@file{.emacs} file:
2201
2202@lisp
2203(setq default-tab-width 10)
2204@end lisp
2205
2206Do not confuse variable @code{tab-width} with variable
2207@code{tab-stop-list}. The former is used for the display of literal
2208@key{TAB} characters. The latter controls what characters are inserted
2209when you press the @key{TAB} character in certain modes.
2210
5f7b8867
RF
2211@node Inserting text at the beginning of each line, Underlining paragraphs, Changing the length of a Tab, Common requests
2212@section How do I insert <some text> at the beginning of every line?
2213@cindex Prefixing a region with some text
71e68827
DL
2214@cindex Prefix character, inserting in mail/news replies
2215@cindex Replies to mail/news, inserting a prefix character
2216@cindex @code{mail-yank-prefix}
2217@cindex Mail replies, inserting a prefix character
2218@cindex News replies, inserting a prefix character
2219
2220To do this to an entire buffer, type @kbd{M-< M-x replace-regexp
5f7b8867 2221@key{RET} ^ @key{RET} your text @key{RET}}.
71e68827 2222
1e1e6d52 2223To do this to a region, use @code{string-insert-rectangle}.
71e68827
DL
2224Set the mark (@kbd{C-@key{SPC}}) at the beginning of the first line you
2225want to prefix, move the cursor to last line to be prefixed, and type
1e1e6d52
GM
2226@kbd{M-x string-insert-rectangle @key{RET}}. To do this for the whole
2227buffer, type @kbd{C-x h M-x string-insert-rectangle @key{RET}}.
71e68827
DL
2228
2229If you are trying to prefix a yanked mail message with @samp{>}, you
5f7b8867
RF
2230might want to set the variable @code{mail-yank-prefix}. In Message
2231buffers, you can even use @kbd{M-;} to cite yanked messages (@kbd{M-;}
2232runs the function @code{comment-region}, it is a general-purpose
037724a0 2233mechanism to comment regions) (@pxref{Changing the included text prefix}).
71e68827 2234
9f261d3c 2235@node Underlining paragraphs, Forcing the cursor to remain in the same column, Inserting text at the beginning of each line, Common requests
ef4da64f 2236@section How do I insert @samp{_^H} before each character in a region to get an underlined paragraph?
71e68827
DL
2237@cindex Underlining a region of text
2238@cindex @code{underline-region}
2239
ed5c18e2 2240Mark the region and then type @kbd{M-x underline-region @key{RET}}.
71e68827 2241
9f261d3c 2242@node Forcing the cursor to remain in the same column, Forcing Emacs to iconify itself, Underlining paragraphs, Common requests
71e68827
DL
2243@section How do I make Emacs behave like this: when I go up or down, the cursor should stay in the same column even if the line is too short?
2244@cindex @code{picture-mode}
2245@cindex Remaining in the same column, regardless of contents
2246@cindex Vertical movement in empty documents
2247
037724a0
JL
2248Use @kbd{M-x picture-mode}.
2249
2250See also the variable @code{track-eol} and the command
2251@code{set-goal-column} bound to @kbd{C-x C-n}
2252(@pxref{Moving Point, , , emacs, The GNU Emacs Manual}).
71e68827
DL
2253
2254@node Forcing Emacs to iconify itself, Using regular expressions, Forcing the cursor to remain in the same column, Common requests
2255@section How do I tell Emacs to iconify itself?
97878c08
EZ
2256@cindex Iconification under the X Window System
2257@cindex X Window System and iconification
71e68827
DL
2258@cindex Suspending Emacs
2259
97878c08 2260@kbd{C-z} iconifies Emacs when running under X and suspends Emacs
333c5fc5 2261otherwise. @inforef{Frame Commands, Frame Commands, emacs}.
71e68827
DL
2262
2263@node Using regular expressions, Replacing text across multiple files, Forcing Emacs to iconify itself, Common requests
2264@section How do I use regexps (regular expressions) in Emacs?
2265@cindex Regexps
2266@cindex Regular expressions
2267@cindex Differences between Unix and Emacs regexps
b865238d 2268@cindex Unix regexps, differences from Emacs
71e68827
DL
2269@cindex Text strings, putting regexps in
2270
b95a0c80 2271@inforef{Regexp Backslash, Regexp Backslash, emacs}.
71e68827 2272
ed5c18e2 2273The @code{or} operator is @samp{\|}, not @samp{|}, and the grouping operators
71e68827
DL
2274are @samp{\(} and @samp{\)}. Also, the string syntax for a backslash is
2275@samp{\\}. To specify a regular expression like @samp{xxx\(foo\|bar\)}
2276in a Lisp string, use @samp{xxx\\(foo\\|bar\\)}.
2277
ed5c18e2 2278Note the doubled backslashes!
71e68827
DL
2279
2280@itemize @bullet
2281
ed5c18e2
EZ
2282@item
2283Unlike in Unix @file{grep}, @file{sed}, etc., a complement character set
2284(@samp{[^...]}) can match a newline character (@key{LFD} a.k.a.@:
2285@kbd{C-j} a.k.a.@: @samp{\n}), unless newline is mentioned as one of the
71e68827
DL
2286characters not to match.
2287
ed5c18e2
EZ
2288@item
2289The character syntax regexps (e.g., @samp{\sw}) are not
71e68827
DL
2290meaningful inside character set regexps (e.g., @samp{[aeiou]}). (This
2291is actually typical for regexp syntax.)
2292
2293@end itemize
2294
2295@node Replacing text across multiple files, Documentation for etags, Using regular expressions, Common requests
2296@section How do I perform a replace operation across more than one file?
2297@cindex Replacing strings across files
2298@cindex Multiple files, replacing across
2299@cindex Files, replacing strings across multiple
99069bdb 2300@cindex Recursive search/replace operations
71e68827 2301
99069bdb
RF
2302As of Emacs 19.29, Dired mode (@kbd{M-x dired @key{RET}}, or @kbd{C-x
2303d}) supports the command @code{dired-do-query-replace} (@kbd{Q}), which
2304allows users to replace regular expressions in multiple files.
2305
2306You can use this command to perform search/replace operations on
2307multiple files by following the following steps:
2308
2309@itemize @bullet
2310@item
2311Assemble a list of files you want to operate on with either
2312@code{find-dired}, @code{find-name-dired} or @code{find-grep-dired}.
2313
2314@item
2315Mark all files in the resulting Dired buffer using @kbd{t}.
2316
2317@item
2318Use @kbd{Q} to start a @code{query-replace-regexp} session on the marked
2319files.
2320
2321@item
2322To accept all replacements in each file, hit @kbd{!}.
2323@end itemize
71e68827 2324
99069bdb
RF
2325Another way to do the same thing is to use the ``tags'' feature of
2326Emacs: it includes the command @code{tags-query-replace} which performs
2327a query-replace across all the files mentioned in the @file{TAGS} file.
2328@inforef{Tags Search, Tags Search, emacs}.
71e68827
DL
2329
2330@node Documentation for etags, Disabling backups, Replacing text across multiple files, Common requests
ed5c18e2
EZ
2331@section Where is the documentation for @code{etags}?
2332@cindex Documentation for @code{etags}
2333@cindex @code{etags}, documentation for
71e68827 2334
ed5c18e2
EZ
2335The @code{etags} man page should be in the same place as the
2336@code{emacs} man page.
71e68827
DL
2337
2338Quick command-line switch descriptions are also available. For example,
2339@samp{etags -H}.
2340
2341@node Disabling backups, Disabling auto-save-mode, Documentation for etags, Common requests
2342@section How do I disable backup files?
2343@cindex Backups, disabling
2344@cindex Disabling backups
2345
ed5c18e2
EZ
2346You probably don't want to do this, since backups are useful, especially
2347when something goes wrong.
71e68827 2348
ef4da64f 2349To avoid seeing backup files (and other ``uninteresting'' files) in Dired,
ed5c18e2 2350load @code{dired-x} by adding the following to your @file{.emacs} file:
71e68827
DL
2351
2352@lisp
2353(add-hook 'dired-load-hook
bed44076
SM
2354 (lambda ()
2355 (load "dired-x")))
71e68827
DL
2356@end lisp
2357
ed5c18e2 2358With @code{dired-x} loaded, @kbd{M-o} toggles omitting in each dired buffer.
71e68827
DL
2359You can make omitting the default for new dired buffers by putting the
2360following in your @file{.emacs}:
2361
2362@lisp
90df7433 2363(add-hook 'dired-mode-hook 'dired-omit-toggle)
71e68827
DL
2364@end lisp
2365
ed5c18e2
EZ
2366If you're tired of seeing backup files whenever you do an @samp{ls} at
2367the Unix shell, try GNU @code{ls} with the @samp{-B} option. GNU
2368@code{ls} is part of the GNU Fileutils package, available from
2369@samp{ftp.gnu.org} and its mirrors (@pxref{Current GNU distributions}).
2370
2371To disable or change the way backups are made, @inforef{Backup Names, ,
2372emacs}.
71e68827 2373
ed5c18e2
EZ
2374@cindex Backup files in a single directory
2375Beginning with Emacs 21.1, you can control where Emacs puts backup files
2376by customizing the variable @code{backup-directory-alist}. This
2377variable's value specifies that files whose names match specific patters
2378should have their backups put in certain directories. A typical use is
2379to add the element @code{("." . @var{dir})} to force Emacs to put
2380@strong{all} backup files in the directory @file{dir}.
71e68827 2381
8b3f7f7d 2382@node Disabling auto-save-mode, Going to a line by number, Disabling backups, Common requests
71e68827
DL
2383@section How do I disable @code{auto-save-mode}?
2384@cindex Disabling @code{auto-save-mode}
2385@cindex Auto-saving
2386@cindex Saving at frequent intervals
2387
2388You probably don't want to do this, since auto-saving is useful,
2389especially when Emacs or your computer crashes while you are editing a
2390document.
2391
2392Instead, you might want to change the variable
2393@code{auto-save-interval}, which specifies how many keystrokes Emacs
2394waits before auto-saving. Increasing this value forces Emacs to wait
2395longer between auto-saves, which might annoy you less.
2396
2397You might also want to look into Sebastian Kremer's @code{auto-save}
199a0cb9 2398package (@pxref{Packages that do not come with Emacs}). This
71e68827
DL
2399package also allows you to place all auto-save files in one directory,
2400such as @file{/tmp}.
2401
ed5c18e2
EZ
2402To disable or change how @code{auto-save-mode} works, @inforef{Auto
2403Save, , emacs}.
71e68827 2404
8b3f7f7d
EZ
2405@node Going to a line by number, Modifying pull-down menus, Disabling auto-save-mode, Common requests
2406@section How can I go to a certain line given its number?
2407@cindex Going to a line by number
2408@cindex Compilation error messages
2409@cindex Recompilation
2410
2411Are you sure you indeed need to go to a line by its number? Perhaps all
2412you want is to display a line in your source file for which a compiler
2413printed an error message? If so, compiling from within Emacs using the
2414@kbd{M-x compile} and @kbd{M-x recompile} commands is a much more
2415effective way of doing that. Emacs automatically intercepts the compile
2416error messages, inserts them into a special buffer called
2417@code{*compilation*}, and lets you visit the locus of each message in
2418the source. Type @kbd{C-x `} to step through the offending lines one by
b6f2e1f5
RF
2419one (starting with Emacs 22, you can also use @kbd{M-g M-p} and
2420@kbd{M-g M-n} to go to the previous and next matches directly). Click
2421@kbd{Mouse-2} or press @key{RET} on a message text in the
8b3f7f7d
EZ
2422@code{*compilation*} buffer to go to the line whose number is mentioned
2423in that message.
2424
b6f2e1f5
RF
2425But if you indeed need to go to a certain text line, type @kbd{M-g M-g}
2426(which is the default binding of the @code{goto-line} function starting
2427with Emacs 22). Emacs will prompt you for the number of the line and go
2428to that line.
8b3f7f7d
EZ
2429
2430You can do this faster by invoking @code{goto-line} with a numeric
b6f2e1f5
RF
2431argument that is the line's number. For example, @kbd{C-u 286 M-g M-g}
2432will jump to line number 286 in the current buffer.
8b3f7f7d
EZ
2433
2434@node Modifying pull-down menus, Deleting menus and menu options, Going to a line by number, Common requests
71e68827
DL
2435@section How can I create or modify new pull-down menu options?
2436@cindex Pull-down menus, creating or modifying
2437@cindex Menus, creating or modifying
2438@cindex Creating new menu options
2439@cindex Modifying pull-down menus
2440@cindex Menus and keymaps
2441@cindex Keymaps and menus
2442
ed5c18e2
EZ
2443Each menu title (e.g., @samp{File}, @samp{Edit}, @samp{Buffers})
2444represents a local or global keymap. Selecting a menu title with the
bf301e70 2445mouse displays that keymap's non-@code{nil} contents in the form of a menu.
71e68827
DL
2446
2447So to add a menu option to an existing menu, all you have to do is add a
ed5c18e2
EZ
2448new definition to the appropriate keymap. Adding a @samp{Forward Word}
2449item to the @samp{Edit} menu thus requires the following Lisp code:
71e68827
DL
2450
2451@lisp
7a2fe6fa
TTN
2452(define-key global-map
2453 [menu-bar edit forward]
71e68827
DL
2454 '("Forward word" . forward-word))
2455@end lisp
2456
ed5c18e2 2457@noindent
71e68827
DL
2458The first line adds the entry to the global keymap, which includes
2459global menu bar entries. Replacing the reference to @code{global-map}
2460with a local keymap would add this menu option only within a particular
2461mode.
2462
2463The second line describes the path from the menu-bar to the new entry.
ed5c18e2
EZ
2464Placing this menu entry underneath the @samp{File} menu would mean
2465changing the word @code{edit} in the second line to @code{file}.
71e68827
DL
2466
2467The third line is a cons cell whose first element is the title that will
2468be displayed, and whose second element is the function that will be
2469called when that menu option is invoked.
2470
2471To add a new menu, rather than a new option to an existing menu, we must
2472define an entirely new keymap:
2473
2474@lisp
2475(define-key global-map [menu-bar words]
2476 (cons "Words" (make-sparse-keymap "Words")))
2477@end lisp
2478
ed5c18e2
EZ
2479The above code creates a new sparse keymap, gives it the name
2480@samp{Words}, and attaches it to the global menu bar. Adding the
2481@samp{Forward Word} item to this new menu would thus require the
2482following code:
71e68827
DL
2483
2484@lisp
2485(define-key global-map
2486 [menu-bar words forward]
2487 '("Forward word" . forward-word))
2488@end lisp
2489
ed5c18e2 2490@noindent
71e68827
DL
2491Note that because of the way keymaps work, menu options are displayed
2492with the more recently defined items at the top. Thus if you were to
ed5c18e2
EZ
2493define menu options @samp{foo}, @samp{bar}, and @samp{baz} (in that
2494order), the menu option @samp{baz} would appear at the top, and
2495@samp{foo} would be at the bottom.
71e68827
DL
2496
2497One way to avoid this problem is to use the function @code{define-key-after},
2498which works the same as @code{define-key}, but lets you modify where items
ed5c18e2
EZ
2499appear. The following Lisp code would insert the @samp{Forward Word}
2500item in the @samp{Edit} menu immediately following the @samp{Undo} item:
71e68827
DL
2501
2502@lisp
2503(define-key-after
2504 (lookup-key global-map [menu-bar edit])
2505 [forward]
2506 '("Forward word" . forward-word)
2507 'undo)
2508@end lisp
2509
2510Note how the second and third arguments to @code{define-key-after} are
2511different from those of @code{define-key}, and that we have added a new
2512(final) argument, the function after which our new key should be
2513defined.
2514
2515To move a menu option from one position to another, simply evaluate
2516@code{define-key-after} with the appropriate final argument.
2517
ed5c18e2
EZ
2518More detailed information---and more examples of how to create and
2519modify menu options---are in the @cite{Emacs Lisp Reference Manual}, under
5a7f4c1b 2520``Menu Keymaps.'' (@xref{Emacs Lisp documentation}, for information on
ed438271 2521this manual.)
71e68827
DL
2522
2523@node Deleting menus and menu options, Turning on syntax highlighting, Modifying pull-down menus, Common requests
2524@section How do I delete menus and menu options?
2525@cindex Deleting menus and menu options
2526@cindex Menus, deleting
2527
2528The simplest way to remove a menu is to set its keymap to @samp{nil}.
ed5c18e2 2529For example, to delete the @samp{Words} menu (@pxref{Modifying pull-down
71e68827
DL
2530menus}), use:
2531
2532@lisp
2533(define-key global-map [menu-bar words] nil)
2534@end lisp
2535
2536Similarly, removing a menu option requires redefining a keymap entry to
ed5c18e2
EZ
2537@code{nil}. For example, to delete the @samp{Forward word} menu option
2538from the @samp{Edit} menu (we added it in @ref{Modifying pull-down
2539menus}), use:
71e68827
DL
2540
2541@lisp
2542(define-key global-map [menu-bar edit forward] nil)
2543@end lisp
2544
2545@node Turning on syntax highlighting, Scrolling only one line, Deleting menus and menu options, Common requests
2546@section How do I turn on syntax highlighting?
2547@cindex Syntax highlighting
2548@cindex @code{font-lock-mode}
2549@cindex Highlighting based on syntax
2550@cindex Colorizing text
2551@cindex FAQ, @code{font-lock-mode}
2552
2553@code{font-lock-mode} is the standard way to have Emacs perform syntax
b6f2e1f5
RF
2554highlighting in the current buffer. It is enabled by default in Emacs
255522.1 and later.
2556
2557With @code{font-lock-mode} turned on, different types of text will
2558appear in different colors. For instance, in a programming mode,
ed5c18e2
EZ
2559variables will appear in one face, keywords in a second, and comments in
2560a third.
71e68827 2561
ed5c18e2 2562@cindex hilit19 is deprecated
71e68827
DL
2563Earlier versions of Emacs supported hilit19, a similar package. Use of
2564hilit19 is now considered non-standard, although @file{hilit19.el} comes
2565with the stock Emacs distribution. It is no longer maintained.
2566
b6f2e1f5
RF
2567To turn @code{font-lock-mode} off within an existing buffer, use
2568@kbd{M-x font-lock-mode @key{RET}}.
71e68827 2569
b6f2e1f5
RF
2570In Emacs 21 and earlier versions, you could use the following code in
2571your @file{.emacs} file to turn on @code{font-lock-mode} globally:
71e68827
DL
2572
2573@lisp
2574(global-font-lock-mode 1)
2575@end lisp
2576
ed5c18e2
EZ
2577Highlighting a buffer with @code{font-lock-mode} can take quite a while,
2578and cause an annoying delay in display, so several features exist to
2579work around this.
2580
2581@cindex Just-In-Time syntax highlighting
2582In Emacs 21 and later, turning on @code{font-lock-mode} automatically
2583activates the new @dfn{Just-In-Time fontification} provided by
2584@code{jit-lock-mode}. @code{jit-lock-mode} defers the fontification of
2585portions of buffer until you actually need to see them, and can also
2586fontify while Emacs is idle. This makes display of the visible portion
2587of a buffer almost instantaneous. For details about customizing
2588@code{jit-lock-mode}, type @kbd{C-h f jit-lock-mode @key{RET}}.
2589
2590@cindex Levels of syntax highlighting
2591@cindex Decoration level, in @code{font-lock-mode}
2592In versions of Emacs before 21, different levels of decoration are
2593available, from slight to gaudy. More decoration means you need to wait
2594more time for a buffer to be fontified (or a faster machine). To
71e68827
DL
2595control how decorated your buffers should become, set the value of
2596@code{font-lock-maximum-decoration} in your @file{.emacs} file, with a
2597@code{nil} value indicating default (usually minimum) decoration, and a
2598@code{t} value indicating the maximum decoration. For the gaudiest
2599possible look, then, include the line
2600
2601@lisp
2602(setq font-lock-maximum-decoration t)
2603@end lisp
2604
ed5c18e2 2605@noindent
71e68827
DL
2606in your @file{.emacs} file. You can also set this variable such that
2607different modes are highlighted in a different ways; for more
2608information, see the documentation for
2609@code{font-lock-maximum-decoration} with @kbd{C-h v} (or @kbd{M-x
2610describe-variable @key{RET}}).
2611
71e68827
DL
2612Also see the documentation for the function @code{font-lock-mode},
2613available by typing @kbd{C-h f font-lock-mode} (@kbd{M-x
2614describe-function @key{RET} font-lock-mode @key{RET}}).
2615
71e68827
DL
2616To print buffers with the faces (i.e., colors and fonts) intact, use
2617@kbd{M-x ps-print-buffer-with-faces} or @kbd{M-x
ed5c18e2
EZ
2618ps-print-region-with-faces}. You will need a way to send text to a
2619PostScript printer, or a PostScript interpreter such as Ghostscript;
2620consult the documentation of the variables @code{ps-printer-name},
2621@code{ps-lpr-command}, and @code{ps-lpr-switches} for more details.
71e68827 2622
9f261d3c 2623@node Scrolling only one line, Editing MS-DOS files, Turning on syntax highlighting, Common requests
71e68827
DL
2624@section How can I force Emacs to scroll only one line when I move past the bottom of the screen?
2625@cindex Scrolling only one line
28665d46 2626@cindex Reducing the increment when scrolling
71e68827 2627
156d1e47
RF
2628Customize the @code{scroll-conservatively} variable with @kbd{M-x
2629customize-variable @key{RET} scroll-conservatively @key{RET}} and set it
2630to a large value like, say, 10000. For an explanation of what this
cc008f87 2631means, @inforef{Auto Scrolling, Auto Scrolling, emacs}.
156d1e47
RF
2632
2633Alternatively, use the following Lisp form in your @file{.emacs}:
71e68827
DL
2634
2635@lisp
156d1e47 2636(setq scroll-conservatively most-positive-fixnum)
71e68827
DL
2637@end lisp
2638
9f261d3c 2639@node Editing MS-DOS files, Filling paragraphs with a single space, Scrolling only one line, Common requests
71e68827
DL
2640@section How can I edit MS-DOS files using Emacs?
2641@cindex Editing MS-DOS files
2642@cindex MS-DOS files, editing
2643@cindex Microsoft files, editing
2644@cindex Windows files, editing
2645
2646As of Emacs 20, detection and handling of MS-DOS (and Windows) files is
ed5c18e2 2647performed transparently. You can open MS-DOS files on a Unix system,
71e68827
DL
2648edit it, and save it without having to worry about the file format.
2649
ed5c18e2
EZ
2650When editing an MS-DOS style file, the mode line will indicate that it
2651is a DOS file. On Unix and GNU/Linux systems, and also on a Macintosh,
2652the string @samp{(DOS)} will appear near the left edge of the mode line;
2653on DOS and Windows, where the DOS end-of-line (EOL) format is the
2654default, a backslash (@samp{\}) will appear in the mode line.
71e68827 2655
ed5c18e2 2656If you are running a version of Emacs before 20.1, get @code{crypt++}
bf247b6e 2657(@pxref{Packages that do not come with Emacs}). Among other things,
199a0cb9
GM
2658@code{crypt++} transparently modifies MS-DOS files as they are loaded
2659and saved, allowing you to ignore the different conventions that Unix
2660and MS-DOS have for delineating the end of a line.
71e68827 2661
037724a0 2662@node Filling paragraphs with a single space, Escape sequences in shell output, Editing MS-DOS files, Common requests
71e68827
DL
2663@section How can I tell Emacs to fill paragraphs with a single space after each period?
2664@cindex One space following periods
2665@cindex Single space following periods
2666@cindex Periods, one space following
2667
eb29a7ab 2668Add the following line to your @file{.emacs} file:
71e68827
DL
2669
2670@lisp
71e68827
DL
2671(setq sentence-end-double-space nil)
2672@end lisp
2673
037724a0 2674@node Escape sequences in shell output, , Filling paragraphs with a single space, Common requests
1d4e7a12 2675@section Why these strange escape sequences from @code{ls} from the Shell mode?
a5ffa690
EZ
2676@cindex Escape sequences in @code{ls} output
2677@cindex @code{ls} in Shell mode
2678
2679This happens because @code{ls} is aliased to @samp{ls --color} in your
2680shell init file. You have two alternatives to solve this:
2681
2682@itemize @bullet
2683@item
2684Make the alias conditioned on the @code{EMACS} variable in the
2685environment. When Emacs runs a subsidiary shell, it exports the
4b1aaa8b
PE
2686@code{EMACS} variable to that shell, with value equal to the absolute
2687file name of Emacs. You can
a5ffa690
EZ
2688unalias @code{ls} when that happens, thus limiting the alias to your
2689interactive sessions.
2690
2691@item
2692Install the @code{ansi-color} package (bundled with Emacs 21.1 and
2693later), which converts these ANSI escape sequences into colors.
2694@end itemize
2695
71e68827
DL
2696@c ------------------------------------------------------------
2697@node Bugs and problems, Compiling and installing Emacs, Common requests, Top
2698@chapter Bugs and problems
2699@cindex Bugs and problems
2700
6576d908
EZ
2701The Emacs manual lists some common kinds of trouble users could get
2702into, see @ref{Lossage, , Dealing with Emacs Trouble, emacs, The GNU
2703Emacs Manual}, so you might look there if the problem you encounter
6281f965
EZ
2704isn't described in this chapter. If you decide you've discovered a bug,
2705see @ref{Bugs, , Reporting Bugs, emacs, The GNU Emacs Manual}, for
6576d908
EZ
2706instructions how to do that.
2707
2708The file @file{etc/PROBLEMS} in the Emacs distribution lists various
6281f965 2709known problems with building and using Emacs on specific platforms;
4d715abe 2710type @kbd{C-h C-e} to read it.
6576d908 2711
71e68827 2712@menu
7a2fe6fa
TTN
2713* Problems with very large files::
2714* ^M in the shell buffer::
2715* Shell process exits abnormally::
2716* Problems with Shell Mode on MS-Windows::
2717* Termcap/Terminfo entries for Emacs::
2718* Spontaneous entry into isearch-mode::
2719* Problems talking to certain hosts::
2720* Errors with init files::
2721* Emacs ignores X resources::
2722* Emacs ignores frame parameters::
2723* Emacs takes a long time to visit files::
2724* Editing files with $ in the name::
2725* Shell mode loses the current directory::
2726* Security risks with Emacs::
2727* Dired claims that no file is on this line::
71e68827
DL
2728@end menu
2729
2730@node Problems with very large files, ^M in the shell buffer, Bugs and problems, Bugs and problems
2731@section Does Emacs have problems with files larger than 8 megabytes?
2732@cindex Very large files, opening
2733@cindex Large files, opening
2734@cindex Opening very large files
2735@cindex Maximum file size
2736@cindex Files, maximum size
2737
2738Old versions (i.e., anything before 19.29) of Emacs had problems editing
b6f2e1f5
RF
2739files larger than 8 megabytes. In versions 19.29 and later, the maximum
2740buffer size is at least 2^27-1, or 134,217,727 bytes, or 132 MBytes.
2741And in Emacs 22, the maximum buffer size has been increased to
2742268,435,455 bytes (or 256 MBytes) on 32-bit machines.
71e68827
DL
2743
2744@node ^M in the shell buffer, Shell process exits abnormally, Problems with very large files, Bugs and problems
2745@section How do I get rid of @samp{^M} or echoed commands in my shell buffer?
2746@cindex Shell buffer, echoed commands and @samp{^M} in
2747@cindex Echoed commands in @code{shell-mode}
2748
2749Try typing @kbd{M-x shell-strip-ctrl-m @key{RET}} while in @code{shell-mode} to
2750make them go away. If that doesn't work, you have several options:
2751
ed5c18e2
EZ
2752For @code{tcsh}, put this in your @file{.cshrc} (or @file{.tcshrc})
2753file:
71e68827
DL
2754
2755@example
2756if ($?EMACS) then
4b1aaa8b 2757 if ("$EMACS" =~ /*) then
71e68827
DL
2758 if ($?tcsh) unset edit
2759 stty nl
2760 endif
2761endif
2762@end example
2763
6b147d35 2764Or put this in your @file{.emacs_tcsh} or @file{~/.emacs.d/init_tcsh.sh} file:
71e68827
DL
2765
2766@example
2767unset edit
2768stty nl
2769@end example
2770
ed5c18e2
EZ
2771Alternatively, use @code{csh} in your shell buffers instead of
2772@code{tcsh}. One way is:
71e68827
DL
2773
2774@lisp
2775(setq explicit-shell-file-name "/bin/csh")
2776@end lisp
2777
ed5c18e2 2778@noindent
71e68827
DL
2779and another is to do this in your @file{.cshrc} (or @file{.tcshrc})
2780file:
2781
2782@example
2783setenv ESHELL /bin/csh
2784@end example
2785
ed5c18e2 2786@noindent
71e68827
DL
2787(You must start Emacs over again with the environment variable properly
2788set for this to take effect.)
2789
2790You can also set the @code{ESHELL} environment variable in Emacs Lisp
2791with the following Lisp form,
2792
2793@lisp
2794(setenv "ESHELL" "/bin/csh")
2795@end lisp
2796
d891bf01
EZ
2797The above solutions try to prevent the shell from producing the
2798@samp{^M} characters in the first place. If this is not possible
2799(e.g., if you use a Windows shell), you can get Emacs to remove these
2800characters from the buffer by adding this to your @file{.emacs} init
2801file:
2802
2803@smalllisp
2804(add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m)
2805@end smalllisp
2806
b6f2e1f5
RF
2807On a related note: if your shell is echoing your input line in the shell
2808buffer, you might want to customize the @code{comint-process-echoes}
2809variable in your shell buffers, or try the following command in your
2810shell start-up file:
71e68827
DL
2811
2812@example
2813stty -icrnl -onlcr -echo susp ^Z
2814@end example
2815
d891bf01 2816@node Shell process exits abnormally, Problems with Shell Mode on MS-Windows, ^M in the shell buffer, Bugs and problems
ef4da64f 2817@section Why do I get ``Process shell exited abnormally with code 1''?
71e68827
DL
2818@cindex Abnormal exits from @code{shell-mode}
2819@cindex @code{shell-mode} exits
ed5c18e2 2820@cindex Process shell exited
71e68827
DL
2821
2822The most likely reason for this message is that the @samp{env} program
2823is not properly installed. Compile this program for your architecture,
2824and install it with @samp{a+x} permission in the architecture-dependent
2825Emacs program directory. (You can find what this directory is at your
2826site by inspecting the value of the variable @code{exec-directory} by
2827typing @kbd{C-h v exec-directory @key{RET}}.)
2828
2829You should also check for other programs named @samp{env} in your path
2830(e.g., SunOS has a program named @file{/usr/bin/env}). We don't
2831understand why this can cause a failure and don't know a general
2832solution for working around the problem in this case.
2833
2834The @samp{make clean} command will remove @samp{env} and other vital
2835programs, so be careful when using it.
2836
2837It has been reported that this sometimes happened when Emacs was started
2838as an X client from an xterm window (i.e., had a controlling tty) but the
2839xterm was later terminated.
2840
d891bf01
EZ
2841See also @samp{PROBLEMS} (in the @file{etc} subdirectory of the
2842top-level directory when you unpack the Emacs source) for other
2843possible causes of this message.
2844
2845@node Problems with Shell Mode on MS-Windows, Termcap/Terminfo entries for Emacs, Shell process exits abnormally, Bugs and problems
2846@section Why do I get an error message when I try to run @kbd{M-x shell}?
2847
2848@cindex Shell Mode, and MS-Windows
2849@cindex @code{explicit-shell-file-name}
2850On MS-Windows, this might happen because Emacs tries to look for the
2851shell in a wrong place. The default file name @file{/bin/sh} is
2852usually incorrect for non-Unix systems. If you know where your shell
2853executable is, set the variable @code{explicit-shell-file-name} in
2854your @file{.emacs} file to point to its full file name, like this:
2855
2856@lisp
2857(setq explicit-shell-file-name "d:/shells/bash.exe")
2858@end lisp
71e68827 2859
d891bf01
EZ
2860If you don't know what shell does Emacs use, try the @kbd{M-!}
2861command; if that works, put the following line into your
2862@file{.emacs}:
2863
2864@lisp
2865(setq explicit-shell-file-name shell-file-name)
2866@end lisp
2867
2868@cindex Antivirus programs, and Shell Mode
2869Some people have trouble with Shell Mode because of intrusive
2870antivirus software; disabling the resident antivirus program solves
2871the problems in those cases.
2872
2873@node Termcap/Terminfo entries for Emacs, Spontaneous entry into isearch-mode, Problems with Shell Mode on MS-Windows, Bugs and problems
ef4da64f 2874@section Where is the termcap/terminfo entry for terminal type @samp{emacs}?
71e68827
DL
2875@cindex Termcap
2876@cindex Terminfo
2877@cindex Emacs entries for termcap/terminfo
2878
2879The termcap entry for terminal type @samp{emacs} is ordinarily put in
2880the @samp{TERMCAP} environment variable of subshells. It may help in
2881certain situations (e.g., using rlogin from shell buffer) to add an
2882entry for @samp{emacs} to the system-wide termcap file. Here is a
2883correct termcap entry for @samp{emacs}:
2884
2885@example
2886emacs:tc=unknown:
2887@end example
2888
ed5c18e2
EZ
2889To make a terminfo entry for @samp{emacs}, use @code{tic} or
2890@code{captoinfo}. You need to generate
2891@file{/usr/lib/terminfo/e/emacs}. It may work to simply copy
2892@file{/usr/lib/terminfo/d/dumb} to @file{/usr/lib/terminfo/e/emacs}.
71e68827
DL
2893
2894Having a termcap/terminfo entry will not enable the use of full screen
2895programs in shell buffers. Use @kbd{M-x terminal-emulator} for that
2896instead.
2897
2898A workaround to the problem of missing termcap/terminfo entries is to
ed5c18e2
EZ
2899change terminal type @samp{emacs} to type @samp{dumb} or @samp{unknown}
2900in your shell start up file. @code{csh} users could put this in their
2901@file{.cshrc} files:
71e68827
DL
2902
2903@example
2904if ("$term" == emacs) set term=dumb
2905@end example
2906
2907@node Spontaneous entry into isearch-mode, Problems talking to certain hosts, Termcap/Terminfo entries for Emacs, Bugs and problems
ef4da64f 2908@section Why does Emacs spontaneously start displaying @samp{I-search:} and beeping?
71e68827
DL
2909@cindex Spontaneous entry into isearch-mode
2910@cindex isearch-mode, spontaneous entry into
2911@cindex Beeping without obvious reason
2912
2913Your terminal (or something between your terminal and the computer) is
2914sending @kbd{C-s} and @kbd{C-q} for flow control, and Emacs is receiving
2915these characters and interpreting them as commands. (The @kbd{C-s}
2916character normally invokes the @code{isearch-forward} command.) For
ed5c18e2 2917possible solutions, see @ref{Handling C-s and C-q with flow control}.
71e68827
DL
2918
2919@node Problems talking to certain hosts, Errors with init files, Spontaneous entry into isearch-mode, Bugs and problems
2920@section Why can't Emacs talk to certain hosts (or certain hostnames)?
2921@cindex Hosts, Emacs cannot talk to
2922@cindex @code{gethostbyname}, problematic version
2923
2924The problem may be that Emacs is linked with a wimpier version of
2925@code{gethostbyname} than the rest of the programs on the machine. This
ed5c18e2
EZ
2926is often manifested as a message on startup of ``X server not responding.
2927Check your @samp{DISPLAY} environment variable.'' or a message of
2928``Unknown host'' from @code{open-network-stream}.
71e68827
DL
2929
2930On a Sun, this may be because Emacs had to be linked with the static C
2931library. The version of @code{gethostbyname} in the static C library
2932may only look in @file{/etc/hosts} and the NIS (YP) maps, while the
2933version in the dynamic C library may be smart enough to check DNS in
2934addition to or instead of NIS. On a Motorola Delta running System V
2935R3.6, the version of @code{gethostbyname} in the standard library works,
2936but the one that works with NIS doesn't (the one you get with -linet).
2937Other operating systems have similar problems.
2938
2939Try these options:
2940
2941@itemize @bullet
2942
2943@item
2944Explicitly add the host you want to communicate with to @file{/etc/hosts}.
2945
2946@item
2947Relink Emacs with this line in @file{src/config.h}:
2948
2949@example
2950#define LIBS_SYSTEM -lresolv
2951@end example
2952
2953@item
2954Replace @code{gethostbyname} and friends in @file{libc.a} with more
2955useful versions such as the ones in @file{libresolv.a}. Then relink
2956Emacs.
2957
2958@item
ed5c18e2
EZ
2959If you are actually running NIS, make sure that @code{ypbind} is
2960properly told to do DNS lookups with the correct command line switch.
71e68827
DL
2961
2962@end itemize
2963
2964@node Errors with init files, Emacs ignores X resources, Problems talking to certain hosts, Bugs and problems
ef4da64f 2965@section Why does Emacs say @samp{Error in init file}?
71e68827
DL
2966@cindex Error in @file{.emacs}
2967@cindex Error in init file
2968@cindex Init file, errors in
2969@cindex @file{.emacs} file, errors in
2970@cindex Debugging @file{.emacs} file
2971
2972An error occurred while loading either your @file{.emacs} file or the
ed5c18e2
EZ
2973system-wide file @file{lisp/default.el}. Emacs 21.1 and later pops the
2974@file{*Messages*} buffer, and puts there some additional information
2975about the error, to provide some hints for debugging.
71e68827 2976
ed5c18e2
EZ
2977For information on how to debug your @file{.emacs} file, see
2978@ref{Debugging a customization file}.
71e68827
DL
2979
2980It may be the case that you need to load some package first, or use a
2981hook that will be evaluated after the package is loaded. A common case
2982of this is explained in @ref{Terminal setup code works after Emacs has
2983begun}.
2984
8b3f7f7d 2985@node Emacs ignores X resources, Emacs ignores frame parameters, Errors with init files, Bugs and problems
71e68827
DL
2986@section Why does Emacs ignore my X resources (my .Xdefaults file)?
2987@cindex X resources being ignored
2988@cindex Ignored X resources
2989@cindex @file{.Xdefaults}
2990
2991As of version 19, Emacs searches for X resources in the files specified
2992by the following environment variables:
2993
2994@itemize @bullet
2995
2996@item @code{XFILESEARCHPATH}
2997@item @code{XUSERFILESEARCHPATH}
7a2fe6fa 2998@item @code{XAPPLRESDIR}
71e68827
DL
2999
3000@end itemize
3001
ed5c18e2
EZ
3002This emulates the functionality provided by programs written using the
3003Xt toolkit.
71e68827
DL
3004
3005@code{XFILESEARCHPATH} and @code{XUSERFILESEARCHPATH} should be a list
3006of file names separated by colons. @code{XAPPLRESDIR} should be a list
3007of directory names separated by colons.
3008
3009Emacs searches for X resources:
3010
3011@enumerate
3012
ed5c18e2
EZ
3013@item
3014specified on the command line, with the @samp{-xrm RESOURCESTRING} option,
3015
3016@item
3017then in the value of the @samp{XENVIRONMENT} environment variable,
71e68827 3018
7a2fe6fa 3019@itemize @minus
71e68827 3020
ed5c18e2
EZ
3021@item
3022or if that is unset, in the file named
3023@file{~/.Xdefaults-@var{hostname}} if it exists (where @var{hostname} is
3024the name of the machine Emacs is running on),
71e68827
DL
3025
3026@end itemize
3027
ed5c18e2
EZ
3028@item
3029then in the screen-specific and server-wide resource properties provided
3030by the server,
71e68827
DL
3031
3032@itemize @minus
3033
ed5c18e2
EZ
3034@item
3035or if those properties are unset, in the file named @file{~/.Xdefaults}
3036if it exists,
71e68827
DL
3037
3038@end itemize
3039
ed5c18e2
EZ
3040@item
3041then in the files listed in @samp{XUSERFILESEARCHPATH},
71e68827
DL
3042
3043@itemize @minus
3044
ed5c18e2
EZ
3045@item
3046or in files named @file{@var{lang}/Emacs} in directories listed in
3047@samp{XAPPLRESDIR} (where @var{lang} is the value of the @code{LANG}
7a2fe6fa 3048environment variable), if the @samp{LANG} environment variable is set,
ed5c18e2
EZ
3049@item
3050or in files named Emacs in the directories listed in @samp{XAPPLRESDIR}
3051@item
3052or in @file{~/@var{lang}/Emacs} (if the @code{LANG} environment variable
3053is set),
7a2fe6fa 3054@item
ed5c18e2 3055or in @file{~/Emacs},
71e68827
DL
3056
3057@end itemize
3058
ed5c18e2
EZ
3059@item
3060then in the files listed in @code{XFILESEARCHPATH}.
71e68827
DL
3061
3062@end enumerate
3063
8b3f7f7d
EZ
3064@node Emacs ignores frame parameters, Emacs takes a long time to visit files, Emacs ignores X resources, Bugs and problems
3065@section Why don't my customizations of the frame parameters work?
3066@cindex Frame parameters
3067
3068This probably happens because you have set the frame parameters in the
3069variable @code{initial-frame-alist}. That variable holds parameters
3070used only for the first frame created when Emacs starts. To customize
3071the parameters of all frames, change the variable
3072@code{default-frame-alist} instead.
3073
3074These two variables exist because many users customize the initial frame
3075in a special way. For example, you could determine the position and
3076size of the initial frame, but would like to control the geometry of the
3077other frames by individually positioning each one of them.
3078
3079
3080@node Emacs takes a long time to visit files, Editing files with $ in the name, Emacs ignores frame parameters, Bugs and problems
71e68827
DL
3081@section Why does Emacs take 20 seconds to visit a file?
3082@cindex Visiting files takes a long time
3083@cindex Delay when visiting files
3084@cindex Files, take a long time to visit
3085
3086Old versions of Emacs (i.e., versions before Emacs 20.x) often
ed5c18e2 3087encountered this when the master lock file, @file{!!!SuperLock!!!}, has
71e68827
DL
3088been left in the lock directory somehow. Delete it.
3089
3090@email{meuer@@geom.umn.edu, Mark Meuer} says that NeXT NFS has a bug
3091where an exclusive create succeeds but returns an error status. This
3092can cause the same problem. Since Emacs's file locking doesn't work
3093over NFS anyway, the best solution is to recompile Emacs with
3094@code{CLASH_DETECTION} undefined.
3095
3096@node Editing files with $ in the name, Shell mode loses the current directory, Emacs takes a long time to visit files, Bugs and problems
3097@section How do I edit a file with a @samp{$} in its name?
3098@cindex Editing files with @samp{$} in the name
f8635375
EZ
3099@cindex @samp{$} in file names
3100@cindex File names containing @samp{$}, editing
71e68827 3101
f8635375 3102When entering a file name in the minibuffer, Emacs will attempt to expand
71e68827
DL
3103a @samp{$} followed by a word as an environment variable. To suppress
3104this behavior, type @kbd{$$} instead.
3105
3106@node Shell mode loses the current directory, Security risks with Emacs, Editing files with $ in the name, Bugs and problems
3107@section Why does shell mode lose track of the shell's current directory?
3108@cindex Current directory and @code{shell-mode}
3109@cindex @code{shell-mode} and current directory
3110@cindex Directory, current in @code{shell-mode}
3111
3112Emacs has no way of knowing when the shell actually changes its
3113directory. This is an intrinsic limitation of Unix. So it tries to
ed5c18e2
EZ
3114guess by recognizing @samp{cd} commands. If you type @kbd{cd} followed
3115by a directory name with a variable reference (@kbd{cd $HOME/bin}) or
3116with a shell metacharacter (@kbd{cd ../lib*}), Emacs will fail to
3117correctly guess the shell's new current directory. A huge variety of
3118fixes and enhancements to shell mode for this problem have been written
199a0cb9
GM
3119to handle this problem (@pxref{Finding a package with particular
3120functionality}).
71e68827
DL
3121
3122You can tell Emacs the shell's current directory with the command
3123@kbd{M-x dirs}.
3124
3125@node Security risks with Emacs, Dired claims that no file is on this line, Shell mode loses the current directory, Bugs and problems
3126@section Are there any security risks in Emacs?
3127@cindex Security with Emacs
3128@cindex @samp{movemail} and security
3129@cindex @code{file-local-variable} and security
3130@cindex Synthetic X events and security
3131@cindex X events and security
3132
3133@itemize @bullet
3134
ed5c18e2
EZ
3135@item
3136The @file{movemail} incident. (No, this is not a risk.)
71e68827 3137
ed5c18e2
EZ
3138In his book @cite{The Cuckoo's Egg}, Cliff Stoll describes this in
3139chapter 4. The site at LBL had installed the @file{/etc/movemail}
71e68827
DL
3140program setuid root. (As of version 19, @file{movemail} is in your
3141architecture-specific directory; type @kbd{C-h v exec-directory
ed5c18e2 3142@key{RET}} to see what it is.) Since @code{movemail} had not been
71e68827
DL
3143designed for this situation, a security hole was created and users could
3144get root privileges.
3145
ed5c18e2 3146@code{movemail} has since been changed so that this security hole will
71e68827 3147not exist, even if it is installed setuid root. However,
ed5c18e2 3148@code{movemail} no longer needs to be installed setuid root, which
71e68827
DL
3149should eliminate this particular risk.
3150
3151We have heard unverified reports that the 1988 Internet worm took
3152advantage of this configuration problem.
3153
ed5c18e2
EZ
3154@item
3155The @code{file-local-variable} feature. (Yes, a risk, but easy to
3156change.)
71e68827
DL
3157
3158There is an Emacs feature that allows the setting of local values for
3159variables when editing a file by including specially formatted text near
3160the end of the file. This feature also includes the ability to have
3161arbitrary Emacs Lisp code evaluated when the file is visited.
3162Obviously, there is a potential for Trojan horses to exploit this
3163feature.
3164
fce10019
CY
3165As of Emacs 22, Emacs has a list of local variables that are known to
3166be safe to set. If a file tries to set any variable outside this
3167list, it asks the user to confirm whether the variables should be set.
3168You can also tell Emacs whether to allow the evaluation of Emacs Lisp
3169code found at the bottom of files by setting the variable
3170@code{enable-local-eval}.
71e68827
DL
3171
3172For more information, @inforef{File Variables, File Variables, emacs}.
3173
ed5c18e2
EZ
3174@item
3175Synthetic X events. (Yes, a risk; use @samp{MIT-MAGIC-COOKIE-1} or
3176better.)
71e68827 3177
ed5c18e2
EZ
3178Emacs accepts synthetic X events generated by the @code{SendEvent}
3179request as though they were regular events. As a result, if you are
3180using the trivial host-based authentication, other users who can open X
71e68827
DL
3181connections to your X workstation can make your Emacs process do
3182anything, including run other processes with your privileges.
3183
3184The only fix for this is to prevent other users from being able to open
3185X connections. The standard way to prevent this is to use a real
3186authentication mechanism, such as @samp{MIT-MAGIC-COOKIE-1}. If using
ed5c18e2 3187the @code{xauth} program has any effect, then you are probably using
71e68827
DL
3188@samp{MIT-MAGIC-COOKIE-1}. Your site may be using a superior
3189authentication method; ask your system administrator.
3190
3191If real authentication is not a possibility, you may be satisfied by
3192just allowing hosts access for brief intervals while you start your X
3193programs, then removing the access. This reduces the risk somewhat by
3194narrowing the time window when hostile users would have access, but
3195@emph{does not eliminate the risk}.
3196
97878c08 3197On most computers running Unix and X, you enable and disable
ed5c18e2 3198access using the @code{xhost} command. To allow all hosts access to
71e68827
DL
3199your X server, use
3200
3201@example
3202xhost +
3203@end example
3204
ed5c18e2 3205@noindent
71e68827
DL
3206at the shell prompt, which (on an HP machine, at least) produces the
3207following message:
3208
3209@example
3210access control disabled, clients can connect from any host
3211@end example
3212
3213To deny all hosts access to your X server (except those explicitly
3214allowed by name), use
3215
3216@example
3217xhost -
3218@end example
3219
3220On the test HP computer, this command generated the following message:
3221
3222@example
3223access control enabled, only authorized clients can connect
3224@end example
3225
3226@end itemize
3227
3228@node Dired claims that no file is on this line, , Security risks with Emacs, Bugs and problems
ef4da64f 3229@section Dired says, @samp{no file on this line} when I try to do something.
71e68827
DL
3230@cindex Dired does not see a file
3231
ed5c18e2
EZ
3232@c FIXME: I think this is fixed in Emacs 21, but I didn't have time to
3233@c check.
71e68827
DL
3234Chances are you're using a localized version of Unix that doesn't use US
3235date format in dired listings. You can check this by looking at dired
ed5c18e2 3236listings or by typing @kbd{ls -l} to a shell and looking at the dates that
71e68827
DL
3237come out.
3238
3239Dired uses a regular expression to find the beginning of a file name.
ed5c18e2
EZ
3240In a long Unix-style directory listing (@samp{ls -l}), the file name
3241starts after the date. The regexp has thus been written to look for the
3242date, the format of which can vary on non-US systems.
71e68827
DL
3243
3244There are two approaches to solving this. The first one involves
ed5c18e2
EZ
3245setting things up so that @samp{ls -l} outputs US date format. This can
3246be done by setting the locale. See your OS manual for more information.
71e68827
DL
3247
3248The second approach involves changing the regular expression used by
9bc260cf 3249dired, @code{directory-listing-before-filename-regexp}.
71e68827
DL
3250
3251@c ------------------------------------------------------------
3252@node Compiling and installing Emacs, Finding Emacs and related packages, Bugs and problems, Top
3253@chapter Compiling and installing Emacs
3254@cindex Compiling and installing Emacs
3255
3256@menu
7a2fe6fa
TTN
3257* Installing Emacs::
3258* Updating Emacs::
3259* Problems building Emacs::
3260* Linking with -lX11 fails::
71e68827
DL
3261@end menu
3262
3263@node Installing Emacs, Updating Emacs, Compiling and installing Emacs, Compiling and installing Emacs
3264@section How do I install Emacs?
3265@cindex Installing Emacs
3266@cindex Unix systems, installing Emacs on
3267@cindex Downloading and installing Emacs
3268@cindex Retrieving and installing Emacs
3269@cindex Building Emacs from source
3270@cindex Source code, building Emacs from
3271@cindex Unpacking and installing Emacs
3272
3273This answer is meant for users of Unix and Unix-like systems. Users of
3274other operating systems should see the series of questions beginning
3275with @ref{Emacs for MS-DOS}, which describe where to get non-Unix source
ed5c18e2 3276and binaries, and how to install Emacs on those systems.
71e68827
DL
3277
3278For Unix and Unix-like systems, the easiest way is often to compile it
3279from scratch. You will need:
3280
3281@itemize @bullet
3282
3283@item
0d17cd5c 3284Emacs sources. @xref{Current GNU distributions}, for a list of ftp sites
71e68827 3285that make them available. On @file{ftp.gnu.org}, the main GNU
ed5c18e2 3286distribution site, sources are available as
71e68827 3287
ed5c18e2 3288@uref{ftp://ftp.gnu.org/pub/gnu/emacs/emacs-@value{VER}.tar.gz}
71e68827
DL
3289
3290The above will obviously change as new versions of Emacs come out. For
bf247b6e 3291instance, when Emacs 22.42 is released, it will most probably be
ed5c18e2 3292available as
71e68827 3293
bf247b6e 3294@uref{ftp://ftp.gnu.org/pub/gnu/emacs/emacs-22.42.tar.gz}
71e68827 3295
ed5c18e2 3296Again, you should use one of the GNU mirror sites (see @ref{Current GNU
0d17cd5c 3297distributions}, and adjust the URL accordingly) so as to reduce load on
71e68827
DL
3298@file{ftp.gnu.org}.
3299
3300@item
3301@code{gzip}, the GNU compression utility. You can get @code{gzip} via
3302anonymous ftp at mirrors of @file{ftp.gnu.org} sites; it should compile
3303and install without much trouble on most systems. Once you have
3304retrieved the Emacs sources, you will probably be able to uncompress
3305them with the command
3306
3307@example
ed5c18e2 3308gunzip --verbose emacs-@value{VER}.tar.gz
71e68827
DL
3309@end example
3310
ed5c18e2
EZ
3311@noindent
3312changing the Emacs version (@value{VER}), as necessary. Once
3313@code{gunzip} has finished doing its job, a file by the name of
3314@file{emacs-@value{VER}.tar} should be in your build directory.
71e68827 3315
7a2fe6fa 3316@item
ed5c18e2
EZ
3317@code{tar}, the @dfn{tape archiving} program, which moves multiple files
3318into and out of archive files, or @dfn{tarfiles}. All of the files
71e68827 3319comprising the Emacs source come in a single tarfile, and must be
ed5c18e2 3320extracted using @code{tar} before you can build Emacs. Typically, the
71e68827
DL
3321extraction command would look like
3322
3323@example
ed5c18e2 3324tar -xvvf emacs-@value{VER}.tar
71e68827
DL
3325@end example
3326
ed5c18e2 3327@noindent
71e68827
DL
3328The @samp{x} indicates that we want to extract files from this tarfile,
3329the two @samp{v}s force verbose output, and the @samp{f} tells
ed5c18e2 3330@code{tar} to use a disk file, rather than one on the tape drive.
71e68827 3331
ed5c18e2 3332If you're using GNU @code{tar} (available at mirrors of
71e68827
DL
3333@file{ftp.gnu.org}), you can combine this step and the previous one by
3334using the command
3335
3336@example
ed5c18e2 3337tar -zxvvf emacs-@value{VER}.tar.gz
71e68827
DL
3338@end example
3339
ed5c18e2
EZ
3340@noindent
3341The additional @samp{z} at the beginning of the options list tells GNU
3342@code{tar} to uncompress the file with @code{gunzip} before extracting
3343the tarfile's components.
71e68827
DL
3344
3345@end itemize
3346
ed5c18e2
EZ
3347At this point, the Emacs sources (all 70+ megabytes of them) should be
3348sitting in a directory called @file{emacs-@value{VER}}. On most common
3349Unix and Unix-like systems, you should be able to compile Emacs (with X
3350Window system support) with the following commands:
71e68827
DL
3351
3352@example
ed5c18e2 3353cd emacs-@value{VER} # change directory to emacs-@value{VER}
7a2fe6fa
TTN
3354./configure # configure Emacs for your particular system
3355make # use Makefile to build components, then Emacs
71e68827
DL
3356@end example
3357
3358If the @code{make} completes successfully, the odds are fairly good that
ed5c18e2 3359the build has gone well. (@xref{Problems building Emacs}, if you weren't
71e68827
DL
3360successful.)
3361
3362By default, Emacs is installed in the following directories:
3363
3364@table @file
71e68827 3365@item /usr/local/bin
ed5c18e2 3366binaries.
71e68827 3367
ed5c18e2
EZ
3368@item /usr/local/share/emacs/@value{VER}
3369Lisp code and support files.
71e68827
DL
3370
3371@item /usr/local/info
ed5c18e2 3372Info documentation.
71e68827
DL
3373@end table
3374
3375To install files in those default directories, become the superuser and
3376type
3377
3378@example
3379make install
3380@end example
3381
ed5c18e2 3382Note that @samp{make install} will overwrite @file{/usr/local/bin/emacs}
71e68827
DL
3383and any Emacs Info files that might be in @file{/usr/local/info}.
3384
3385Much more verbose instructions (with many more hints and suggestions)
3386come with the Emacs sources, in the file @file{INSTALL}.
3387
3388@node Updating Emacs, Problems building Emacs, Installing Emacs, Compiling and installing Emacs
3389@section How do I update Emacs to the latest version?
3390@cindex Updating Emacs
3391
3392@xref{Installing Emacs}, and follow the instructions there for
3393installation.
3394
ed5c18e2
EZ
3395Most files are placed in version-specific directories. Emacs
3396@value{VER}, for instance, places files in
3397@file{/usr/local/share/emacs/@value{VER}}.
71e68827
DL
3398
3399Upgrading should overwrite only, @file{/usr/local/bin/emacs} (the Emacs
3400binary) and documentation in @file{/usr/local/info}. Back up these
3401files before you upgrade, and you shouldn't have too much trouble.
3402
3403@node Problems building Emacs, Linking with -lX11 fails, Updating Emacs, Compiling and installing Emacs
3404@section What should I do if I have trouble building Emacs?
3405@cindex Problems building Emacs
3406@cindex Errors when building Emacs
3407
d891bf01
EZ
3408First look in the file @file{etc/PROBLEMS} (where you unpack the Emacs
3409source) to see if there is already a solution for your problem. Next,
3410look for other questions in this FAQ that have to do with Emacs
3411installation and compilation problems.
71e68827
DL
3412
3413If you'd like to have someone look at your problem and help solve it,
ed5c18e2 3414see @ref{Help installing Emacs}.
71e68827
DL
3415
3416If you cannot find a solution in the documentation, send a message to
3417@email{bug-gnu-emacs@@gnu.org}.
3418
ec45fa10 3419Please don't post it to @uref{news:gnu.emacs.help} or send e-mail to
ed5c18e2
EZ
3420@email{help-gnu-emacs@@gnu.org}. For further guidelines, see
3421@ref{Guidelines for newsgroup postings} and @ref{Reporting bugs}.
71e68827
DL
3422
3423@node Linking with -lX11 fails, , Problems building Emacs, Compiling and installing Emacs
3424@section Why does linking Emacs with -lX11 fail?
3425@cindex Linking with -lX11 fails
3426@cindex lX11, linking fails with
3427
3428Emacs needs to be linked with the static version of the X11 library,
3429@file{libX11.a}. This may be missing.
3430
ed5c18e2 3431On OpenWindows, you may need to use @code{add_services} to add the
ef4da64f 3432``OpenWindows Programmers'' optional software category from the CD-ROM.
71e68827 3433
ed5c18e2 3434On HP-UX 8.0, you may need to run @code{update} again to load the
5a7f4c1b 3435X11-PRG ``fileset.'' This may be missing even if you specified ``all
ed5c18e2
EZ
3436filesets'' the first time. If @file{libcurses.a} is missing, you may
3437need to load the ``Berkeley Development Option.''
71e68827
DL
3438
3439@email{zoo@@armadillo.com, David Zuhn} says that MIT X builds shared
3440libraries by default, and only shared libraries, on those platforms that
3441support them. These shared libraries can't be used when undumping
ed5c18e2
EZ
3442@code{temacs} (the last stage of the Emacs build process). To get
3443regular libraries in addition to shared libraries, add this to
3444@file{site.cf}:
71e68827
DL
3445
3446@example
3447#define ForceNormalLib YES
3448@end example
3449
3450Other systems may have similar problems. You can always define
ed5c18e2 3451@code{CANNOT_DUMP} and link with the shared libraries instead.
71e68827 3452
ed5c18e2 3453@cindex X Menus don't work
71e68827
DL
3454To get the Xmenu stuff to work, you need to find a copy of MIT's
3455@file{liboldX.a}.
3456
3457@c ------------------------------------------------------------
3458@node Finding Emacs and related packages, Major packages and programs, Compiling and installing Emacs, Top
3459@chapter Finding Emacs and related packages
3460@cindex Finding Emacs and related packages
3461
3462@menu
7a2fe6fa
TTN
3463* Finding Emacs on the Internet::
3464* Finding a package with particular functionality::
3465* Packages that do not come with Emacs::
7a2fe6fa
TTN
3466* Current GNU distributions::
3467* Difference between Emacs and XEmacs::
3468* Emacs for MS-DOS::
3469* Emacs for Windows::
3470* Emacs for OS/2::
3471* Emacs for Atari ST::
3472* Emacs for the Amiga ::
3473* Emacs for NeXTSTEP::
3474* Emacs for Apple computers::
3475* Emacs for VMS and DECwindows::
3476* Modes for various languages::
71e68827
DL
3477@end menu
3478
3479@node Finding Emacs on the Internet, Finding a package with particular functionality, Finding Emacs and related packages, Finding Emacs and related packages
3480@section Where can I get Emacs on the net (or by snail mail)?
3481@cindex Finding Emacs on the Internet
3482@cindex Snail mail, ordering Emacs via
3483@cindex Postal service, ordering Emacs via
7a2fe6fa 3484@cindex Distribution, retrieving Emacs
28665d46 3485@cindex Internet, retrieving from
71e68827 3486
4a9cbbf8
RS
3487Look in the files @file{etc/DISTRIB} and @file{etc/FTP} for
3488information on nearby archive sites. If you don't already have Emacs,
3489see @ref{Informational files for Emacs}, for how to get these files.
71e68827 3490
0d17cd5c 3491@xref{Installing Emacs}, for information on how to obtain and build the latest
ed5c18e2 3492version of Emacs, and see @ref{Current GNU distributions}, for a list of
71e68827
DL
3493archive sites that make GNU software available.
3494
3495@node Finding a package with particular functionality, Packages that do not come with Emacs, Finding Emacs on the Internet, Finding Emacs and related packages
3496@section How do I find a Emacs Lisp package that does XXX?
3497@cindex Package, finding
3498@cindex Finding an Emacs Lisp package
7a2fe6fa 3499@cindex Functionality, finding a particular package
71e68827
DL
3500
3501First of all, you should check to make sure that the package isn't
3502already available. For example, typing @kbd{M-x apropos @key{RET}
3503wordstar @key{RET}} lists all functions and variables containing the
3504string @samp{wordstar}.
3505
3506It is also possible that the package is on your system, but has not been
3507loaded. To see which packages are available for loading, look through
f8635375 3508your computer's lisp directory (@pxref{File-name conventions}). The Lisp
fd599dee 3509source to most packages contains a short description of how they
ed5c18e2 3510should be loaded, invoked, and configured---so before you use or
71e68827
DL
3511modify a Lisp package, see if the author has provided any hints in the
3512source code.
3513
199a0cb9
GM
3514The command @kbd{C-h p} (@code{finder-by-keyword}) allows you to browse
3515the constituent Emacs packages.
71e68827 3516
199a0cb9
GM
3517For advice on how to find extra packages that are not part of Emacs,
3518see @ref{Packages that do not come with Emacs}.
71e68827 3519
199a0cb9 3520@node Packages that do not come with Emacs, Current GNU distributions, Finding a package with particular functionality, Finding Emacs and related packages
71e68827
DL
3521@section Where can I get Emacs Lisp packages that don't come with Emacs?
3522@cindex Unbundled packages
3523@cindex Finding other packages
3524@cindex Lisp packages that do not come with Emacs
3525@cindex Packages, those that do not come with Emacs
e6838fd8
GM
3526@cindex Emacs Lisp List
3527@cindex Emacs Lisp Archive
3528
3529@uref{http://www.anc.ed.ac.uk/~stephen/emacs/ell.html, The Emacs Lisp
3530List (ELL)}, maintained by @email{stephen@@anc.ed.ac.uk, Stephen Eglen},
3531aims to provide one compact list with links to all of the current Emacs
b865238d 3532Lisp files on the Internet. The ELL can be browsed over the web, or
bf247b6e 3533from Emacs with @uref{http://www.anc.ed.ac.uk/~stephen/emacs/ell.el,
e6838fd8
GM
3534the @file{ell} package}.
3535
3536Many authors post their packages to the @uref{news:gnu.emacs.sources,
3537Emacs sources newsgroup}. You can search the archives of this
9f261d3c
JL
3538group with @uref{http://groups.google.com/group/gnu.emacs.sources, Google},
3539or @uref{http://dir.gmane.org/gmane.emacs.sources, Gmane}, for example.
71e68827 3540
e6838fd8
GM
3541Several packages are stored in
3542@uref{http://emacswiki.org/elisp/, the Lisp area of the Emacs Wiki}.
71e68827 3543
199a0cb9
GM
3544For a long time, the Emacs Lisp Archive provided a central repository
3545for Emacs packages. Sadly, it has not been active for some time,
3546although you can still access the old files at
71e68827 3547
982f3b82 3548@uref{http://www.club.cc.cmu.edu/pub/gnu/elisp-archive/}
71e68827 3549
9f261d3c
JL
3550Read the file @file{etc/MORE.STUFF} for more information about
3551external packages.
3552
199a0cb9 3553@node Current GNU distributions, Difference between Emacs and XEmacs, Packages that do not come with Emacs, Finding Emacs and related packages
71e68827
DL
3554@section Where can I get other up-to-date GNU stuff?
3555@cindex Current GNU distributions
3556@cindex Sources for current GNU distributions
3557@cindex Stuff, current GNU
3558@cindex Up-to-date GNU stuff
3559@cindex Finding current GNU software
3560@cindex Official GNU software sites
3561
3562The most up-to-date official GNU software is normally kept at
3563
3564@uref{ftp://ftp.gnu.org/pub/gnu}
3565
3566Read the files @file{etc/DISTRIB} and @file{etc/FTP} for more
3567information.
3568
3569A list of sites mirroring @samp{ftp.gnu.org} can be found at
3570
3571@uref{http://www.gnu.org/order/ftp.html}
3572
3573@node Difference between Emacs and XEmacs, Emacs for MS-DOS, Current GNU distributions, Finding Emacs and related packages
ef4da64f 3574@section What is the difference between Emacs and XEmacs (formerly Lucid Emacs)?
71e68827
DL
3575@cindex XEmacs
3576@cindex Difference Emacs and XEmacs
3577@cindex Lucid Emacs
3578@cindex Epoch
3579
ef4da64f
RS
3580XEmacs is a branch version of Emacs. It was first called Lucid Emacs,
3581and was initially derived from a prerelease version of Emacs 19. In
3582this FAQ, we use the name ``Emacs'' only for the official version.
c513d7cf
RS
3583
3584Emacs and XEmacs each come with Lisp packages that are lacking in the
3585other. The two versions have some significant differences at the Lisp
ef4da64f
RS
3586programming level. Their current features are roughly comparable,
3587though the support for some operating systems, character sets and
3588specific packages might be quite different.
3589
3590Some XEmacs code has been contributed to Emacs, and we would like to
3591use other parts, but the earlier XEmacs maintainers did not always
3592keep track of the authors of contributed code, which makes it
3593impossible for the FSF to get copyright papers signed for that code.
3594(The FSF requires these papers for all the code included in the Emacs
3595release, aside from generic C support packages that retain their
3596separate identity and are not integrated into the code of Emacs
3597proper.)
9c301a4c
RS
3598
3599If you want to talk about these two versions and distinguish them,
3600please call them ``Emacs'' and ``XEmacs.'' To contrast ``XEmacs''
3601with ``GNU Emacs'' would be misleading, since XEmacs too has its
ef4da64f
RS
3602origin in the work of the GNU Project. Terms such as ``Emacsen'' and
3603``(X)Emacs'' are not wrong, but they are not very clear, so it
3604is better to write ``Emacs and XEmacs.''
ed5c18e2 3605
71e68827
DL
3606@node Emacs for MS-DOS, Emacs for Windows, Difference between Emacs and XEmacs, Finding Emacs and related packages
3607@section Where can I get Emacs for my PC running MS-DOS?
3608@cindex MS-DOS, Emacs for
3609@cindex DOS, Emacs for
3610@cindex Compiling Emacs for DOS
3611@cindex Emacs for MS-DOS
3612@cindex Tools needed to compile Emacs under DOS
3613
ed5c18e2
EZ
3614A pre-built binary distribution of Emacs is available from the
3615SimTel.NET archives. This version apparently works under MS-DOS and
3616Windows (3.X, 9X, ME, NT, and 2000) and supports long file names under
3617Windows 9X, Windows ME, and Windows 2000. More information is available
3618from
71e68827 3619
e3c90032 3620@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/emacs.README}
71e68827 3621
ed5c18e2 3622The binary itself is available in the files @file{em*.zip} in the
71e68827
DL
3623directory
3624
e3c90032 3625@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/}
71e68827 3626
0d17cd5c
DL
3627If you prefer to compile Emacs for yourself, you can do so with the
3628current distribution directly. You will need a 386 (or
3629better) processor, and to be running MS-DOS 3.0 or later. According to
e3c90032 3630@email{eliz@@gnu.org, Eli Zaretskii} and
71e68827
DL
3631@email{hankedr@@dms.auburn.edu, Darrel Hankerson}, you will need the
3632following:
3633
3634@table @emph
3635
3636@item Compiler
ed5c18e2
EZ
3637DJGPP version 1.12 maint 1 or later. Djgpp 2.0 or later is
3638recommended, since 1.x is very old an unmaintained. Djgpp 2 supports
f8635375 3639long file names on Windows 9X/ME/2K.
71e68827 3640
ed5c18e2 3641You can get the latest release of DJGPP by retrieving all of
71e68827
DL
3642the files in
3643
e3c90032 3644@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2*}
71e68827 3645
ed5c18e2
EZ
3646@item Unpacking program
3647The easiest way is to use @code{djtar} which comes with DJGPP v2.x,
71e68827 3648because it can open gzip'ed tarfiles (i.e., those ending with
ed5c18e2
EZ
3649@file{.tar.gz}) in one step. @code{Djtar} comes in
3650@file{djdev@var{nnn}.zip} archive (where @var{nnn} is the DJGPP version
3651number), from the URL mentioned above.
3652
3653@strong{Warning!} Do @strong{not} use the popular WinZip program to
3654unpack the Emacs distribution! WinZip is known to corrupt some of the
3655files by converting them to the DOS CR-LF format, it doesn't always
3656preserve the directory structure recorded in the compressed Emacs
3657archive, and commits other atrocities. Some of these problems could
3658actually prevent Emacs from building successfully!
71e68827
DL
3659
3660@item make, mv, sed, and rm
3661All of these utilities are available at
3662
e3c90032 3663@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu}
71e68827
DL
3664
366516-bit utilities can be found in GNUish, at
3666
1f706e2f 3667@uref{http://www.simtel.net/pub/gnuish/}
71e68827 3668
ed5c18e2
EZ
3669@noindent
3670(@code{mv} and @code{rm} are in the Fileutils package, @code{sed} and
3671@code{make} are each one in a separate package named after them.)
3672
71e68827
DL
3673@end table
3674
d891bf01
EZ
3675The files @file{INSTALL} (near its end) and @file{etc/PROBLEMS} in the
3676directory of the Emacs sources contains some additional information
3677regarding Emacs under MS-DOS.
71e68827
DL
3678
3679For a list of other MS-DOS implementations of Emacs (and Emacs
ef4da64f 3680look-alikes), consult the list of ``Emacs implementations and literature,''
71e68827
DL
3681available at
3682
3683@uref{ftp://rtfm.mit.edu/pub/usenet/comp.emacs/}
3684
3685Note that while many of these programs look similar to Emacs, they often
3686lack certain features, such as the Emacs Lisp extension language.
3687
3688@node Emacs for Windows, Emacs for OS/2, Emacs for MS-DOS, Finding Emacs and related packages
b6f2e1f5 3689@section Where can I get Emacs for Microsoft Windows?
71e68827 3690@cindex FAQ for NT Emacs
d891bf01 3691@cindex Emacs for MS-Windows
71e68827 3692@cindex Microsoft Windows, Emacs for
d891bf01 3693@cindex Windows 9X, ME, NT, 2K, and CE, Emacs for
71e68827
DL
3694
3695For information on Emacs for Windows 95 and NT, read the FAQ produced by
982f3b82 3696@email{voelker@@cs.washington.edu, Geoff Voelker} and currently maintained
9e363b89 3697by @email{ramprasad@@gnu.org, Ramprasad B}, available at
71e68827 3698
0d17cd5c 3699@uref{http://www.gnu.org/software/emacs/windows/ntemacs.html}
71e68827 3700
0d17cd5c 3701@xref{Emacs for MS-DOS}, for Windows 3.1.
71e68827 3702
d891bf01
EZ
3703A port of Emacs 20.7 for Windows CE, based on NTEmacs, is available at
3704
3705@uref{http://www.rainer-keuchel.de/software.html}
3706
3707@noindent
3708This port was done by @email{coyxc@@rainer-keuchel.de, Rainer Keuchel},
3709and supports all Emacs features except async subprocesses and menus.
3710You will need MSVC 6.0 and a Windows CE SDK to build this port.
3711
71e68827
DL
3712@node Emacs for OS/2, Emacs for Atari ST, Emacs for Windows, Finding Emacs and related packages
3713@section Where can I get Emacs for my PC running OS/2?
3714@cindex OS/2, Emacs for
3715
bb2628a7 3716Emacs 20.6 is ported for emx on OS/2 2.0 or 2.1, and is available at
71e68827 3717
982f3b82 3718@uref{ftp://hobbes.nmsu.edu/pub/os2/apps/editors/emacs/}
bb2628a7
EZ
3719
3720@noindent
3721and also at
3722
982f3b82 3723@uref{http://www.dotemacs.de/os2/emacs.html}
bb2628a7
EZ
3724
3725Instructions for installation, basic setup, and other useful information
3726for OS/2 users of Emacs can be found at
3727
982f3b82 3728@uref{http://home.snafu.de/ohei/emacs/emacs206-os2.html}
71e68827
DL
3729
3730@node Emacs for Atari ST, Emacs for the Amiga , Emacs for OS/2, Finding Emacs and related packages
3731@section Where can I get Emacs for my Atari ST?
3732@cindex Atari ST, Emacs for
3733@cindex TOS, Emacs for
3734
8e581561 3735Roland Sch@"auble reports that Emacs 18.58 running on plain TOS and MiNT
71e68827
DL
3736is available at
3737@uref{ftp://atari.archive.umich.edu/Editors/Emacs-18-58/1858b-d3.zoo}.
3738
3739@node Emacs for the Amiga , Emacs for NeXTSTEP, Emacs for Atari ST, Finding Emacs and related packages
3740@section Where can I get Emacs for my Amiga?
3741@cindex Amiga, Emacs for
3742
3743The files you need are available at
3744
3745@uref{ftp://ftp.wustl.edu/pub/aminet/util/gnu/}
3746
3747@email{dgilbert@@gamiga.guelphnet.dweomer.org, David Gilbert} has released a
3748beta version of Emacs 19.25 for the Amiga. You can get the binary at
3749
3750@uref{ftp://ftp.wustl.edu/pub/aminet/util/gnu/a2.0bEmacs-bin.lha}
3751
3752@node Emacs for NeXTSTEP, Emacs for Apple computers, Emacs for the Amiga , Finding Emacs and related packages
3753@section Where can I get Emacs for NeXTSTEP?
3754@cindex NeXTSTEP, Emacs for
3755
3756Emacs.app is a NeXTSTEP version of Emacs 19.34 which supports colors,
3757menus, and multiple frames. You can get it from
3758
982f3b82 3759@uref{ftp://next-ftp.peak.org/pub/next-ftp/next/apps/emacs/Emacs_for_NeXTstep.4.20a1.NIHS.b.tar.gz}
71e68827
DL
3760
3761@node Emacs for Apple computers, Emacs for VMS and DECwindows, Emacs for NeXTSTEP, Finding Emacs and related packages
3762@section Where can I get Emacs for my Apple computer?
3763@cindex Apple computers, Emacs for
ed5c18e2 3764@cindex Macintosh, Emacs for
71e68827 3765
ed5c18e2
EZ
3766Beginning with version 21.1, the Macintosh is supported in the official
3767Emacs distribution; see the files @file{mac/README} and
3768@file{mac/INSTALL} in the Emacs distribution for build instructions.
3769
b6f2e1f5 3770Beginning with version 22.1, Emacs supports Mac OS X natively.
71e68827
DL
3771
3772@node Emacs for VMS and DECwindows, Modes for various languages, Emacs for Apple computers, Finding Emacs and related packages
3773@section Where do I get Emacs that runs on VMS under DECwindows?
3774@cindex DECwindows, Emacs for
3775@cindex VMS, Emacs for
3776
3777Up-to-date information about GNU software (including Emacs) for VMS is
982f3b82 3778available at @uref{http://www.lp.se/gnu-vms/}.
71e68827 3779
037724a0 3780@node Modes for various languages, , Emacs for VMS and DECwindows, Finding Emacs and related packages
ed5c18e2 3781@section Where can I get modes for Lex, Yacc/Bison, Bourne shell, csh, C@t{++}, Objective-C, Pascal, Java, and Awk?
71e68827
DL
3782@cindex Awk, mode for
3783@cindex @code{awk-mode}
3784@cindex Bison, mode for
3785@cindex Bourne Shell, mode for
ed5c18e2 3786@cindex C@t{++}, mode for
71e68827
DL
3787@cindex Java, mode for
3788@cindex Lex mode
3789@cindex Objective-C, mode for
3790@cindex @code{pascal-mode}
3791@cindex Shell mode
3792@cindex Yacc mode
3793@cindex @file{csh} mode
3794@cindex @code{sh-mode}
3795@cindex @code{cc-mode}
3796
3797Most of these modes are now available in standard Emacs distribution.
199a0cb9 3798To get additional modes, see @ref{Finding a package with particular
bf247b6e 3799functionality}.
71e68827 3800
ed5c18e2 3801Barry Warsaw's @code{cc-mode} now works for C, C@t{++}, Objective-C, and
e6838fd8
GM
3802Java code. It is distributed with Emacs, but has
3803@uref{http://cc-mode.sourceforge.net/, its own homepage}.
71e68827 3804
71e68827
DL
3805@c ------------------------------------------------------------
3806@node Major packages and programs, Key bindings, Finding Emacs and related packages, Top
3807@chapter Major packages and programs
3808@cindex Major packages and programs
3809
3810@menu
7a2fe6fa
TTN
3811* VM::
3812* Supercite::
3813* Calc::
3814* VIPER::
199a0cb9 3815* AUCTeX::
7a2fe6fa
TTN
3816* BBDB::
3817* Ispell::
982f3b82 3818* Emacs/W3::
7a2fe6fa
TTN
3819* EDB::
3820* Mailcrypt::
3821* JDE::
3822* Patch::
71e68827
DL
3823@end menu
3824
3825@node VM, Supercite, Major packages and programs, Major packages and programs
3826@section VM (View Mail) --- another mail reader within Emacs, with MIME support
3827@cindex VM
3828@cindex Alternative mail software
3829@cindex View Mail
3830@cindex E-mail reader, VM
3831
3832@table @b
3833
3834@item Author
199a0cb9 3835@email{kyle_jones@@wonderworks.com, Kyle Jones}
71e68827
DL
3836
3837@item Latest version
215e2336 38387.19
71e68827
DL
3839
3840@item Distribution
3841@uref{ftp://ftp.wonderworks.com/pub/vm/vm.tar.gz}
3842
199a0cb9 3843@item Informational newsgroup
71e68827 3844@uref{news:gnu.emacs.vm.info}@*
71e68827 3845
199a0cb9 3846@item Bug reports newsgroup
71e68827 3847@uref{news:gnu.emacs.vm.bug}@*
199a0cb9 3848Or send reports to @email{bug-vm@@wonderworks.com}
71e68827
DL
3849@end table
3850
bf55ae48
RF
3851VM 7 works well with Emacs 21 and Emacs 22. Older versions of VM
3852suitable for use with older versions of Emacs are available from
199a0cb9
GM
3853@uref{ftp://ftp.wonderworks.com/pub/vm/, the same FTP site}.
3854
71e68827
DL
3855
3856@node Supercite, Calc, VM, Major packages and programs
3857@section Supercite --- mail and news citation package within Emacs
3858@cindex Supercite
3859@cindex Superyank
3860@cindex Mail and news citations
3861@cindex News and mail citations
3862@cindex Citations in mail and news
3863
3864@table @b
3865
3866@item Author
199a0cb9 3867@email{barry@@python.org, Barry Warsaw}
71e68827
DL
3868
3869@item Latest version
199a0cb9 38703.54 (comes bundled with Emacs since version 20)
71e68827
DL
3871
3872@item Distribution
3873@uref{http://www.python.org/emacs/supercite.tar.gz}
3874
3875@item Mailing list
3876Subscription requests to @email{supercite-request@@python.org}@*
3877Submissions @email{supercite@@python.org}
3878
3879@end table
3880
3881Superyank is an old version of Supercite.
3882
3883@node Calc, VIPER, Supercite, Major packages and programs
3884@section Calc --- poor man's Mathematica within Emacs
3885@cindex Programmable calculator
3886@cindex Calc
ed5c18e2 3887@cindex Mathematical package
71e68827
DL
3888
3889@table @b
3890
3891@item Author
3892@email{daveg@@csvax.cs.caltech.edu, Dave Gillespie}
3893
3894@item Latest version
e4a99196 38952.1 (part of Emacs since version 22.1)
71e68827
DL
3896
3897@item Distribution
2dd718b6
DK
3898No separate distribution outside of Emacs. Older versions
3899are available at @uref{ftp://ftp.gnu.org/pub/gnu/calc/}.
71e68827
DL
3900
3901@end table
3902
ed5c18e2
EZ
3903Note that Calc 2.02f needs patching to work with Emacs 21 and later.
3904
3905@cindex @code{calculator}, a package
3906Emacs 21.1 and later comes with a package called @file{calculator.el}.
3907It doesn't support all the mathematical wizardry offered by Calc, such
3908as matrices, special functions, and statistics, but is more than
3909adequate as a replacement for @code{xcalc} and similar programs.
3910
199a0cb9 3911@node VIPER, AUCTeX, Calc, Major packages and programs
ed5c18e2
EZ
3912@section VIPER --- @code{vi} emulation for Emacs
3913@cindex @code{vi} emulation
71e68827 3914@cindex VIPER
ed5c18e2 3915@cindex Emulation of @code{vi}
71e68827 3916
ed5c18e2 3917Since Emacs 19.29, the preferred @code{vi} emulation in Emacs is VIPER
71e68827 3918(@kbd{M-x viper-mode @key{RET}}), which comes with Emacs. It extends
ed5c18e2
EZ
3919and supersedes VIP (including VIP 4.3) and provides @code{vi} emulation
3920at several levels, from one that closely follows @code{vi} to one that
3921departs from @code{vi} in several significant ways.
71e68827
DL
3922
3923For Emacs 19.28 and earlier, the following version of VIP is generally
3924better than the one distributed with Emacs:
3925
3926@table @b
3927@item Author
3928@email{sane@@cs.uiuc.edu, Aamod Sane}
3929
3930@item Latest version
39314.3
3932
3933@item Distribution
982f3b82 3934@uref{ftp://www.club.cc.cmu.edu/pub/gnu/elisp-archive/modes/vip-mode.tar.Z}
71e68827
DL
3935
3936@end table
3937
199a0cb9 3938@node AUCTeX, BBDB, VIPER, Major packages and programs
2dd718b6 3939@section AUC@TeX{} --- enhanced @TeX{} modes with debugging facilities
71e68827
DL
3940@cindex Mode for @TeX{}
3941@cindex @TeX{} mode
2dd718b6 3942@cindex AUC@TeX{} mode for editing @TeX{}
71e68827
DL
3943@cindex Writing and debugging @TeX{}
3944
2dd718b6
DK
3945AUC@TeX{} is a set of sophisticated major modes for @TeX{}, LaTeX,
3946ConTeXt, and Texinfo offering context-sensitive syntax highlighting,
3947indentation, formatting and folding, macro completion, @TeX{} shell
54e42ad9
DK
3948functionality, and debugging. Be also sure to check out
3949@ref{Introduction, RefTeX, Introduction, reftex, Ref@TeX{} User Manual}.
3950Current versions of AUC@TeX{} include the
3951@uref{http://www.gnu.org/software/auctex/preview-latex,preview-latex}
3952package for WYSIWYG previews of various LaTeX constructs in the Emacs
3953source buffer.
2dd718b6 3954
71e68827
DL
3955@table @b
3956
3957@item Authors
2dd718b6
DK
3958@email{krab@@iesd.auc.dk, Kresten Krab Thorup}, @*
3959@email{abraham@@dina.kvl.dk, Per Abrahamsen}, @* and others.
71e68827 3960
199a0cb9
GM
3961@item Maintainer
3962@email{dak@@gnu.org, David Kastrup}
3963
71e68827 3964@item Latest version
54e42ad9 396511.82
71e68827
DL
3966
3967@item Distribution
2dd718b6 3968@uref{ftp://ftp.gnu.org/pub/gnu/auctex/}
71e68827
DL
3969
3970@item Web site
199a0cb9 3971@uref{http://www.gnu.org/software/auctex/}
71e68827
DL
3972
3973@item Mailing list:
54e42ad9
DK
3974Subscription requests to @email{auctex-request@@gnu.org}@*
3975Submissions to @email{auctex@@gnu.org}
71e68827
DL
3976
3977@end table
3978
199a0cb9 3979@node BBDB, Ispell, AUCTeX, Major packages and programs
71e68827
DL
3980@section BBDB --- personal Info Rolodex integrated with mail/news readers
3981@cindex BBDB
3982@cindex Rolodex-like functionality
3983@cindex Integrated contact database
3984@cindex Contact database
3985@cindex Big Brother Database
3986@cindex Address book
3987
3988@table @b
3989
3990@item Maintainer
199a0cb9 3991@email{waider@@waider.ie, Ronan Waide}
71e68827
DL
3992
3993@item Latest version
199a0cb9 39942.34
71e68827
DL
3995
3996@item Distribution
199a0cb9 3997@uref{http://bbdb.sourceforge.net/}
71e68827
DL
3998
3999@item Mailing lists
199a0cb9
GM
4000Subscription requests to @email{bbdb-info-request@@lists.sourceforge.net}@*
4001Submissions to @email{bbdb-info@@lists.sourceforge.net}@*
4002Release announcements: @email{bbdb-announce-request@@lists.sourceforge.net}
71e68827
DL
4003
4004@end table
4005
982f3b82 4006@node Ispell, Emacs/W3, BBDB, Major packages and programs
71e68827
DL
4007@section Ispell --- spell checker in C with interface for Emacs
4008@cindex Spell-checker
4009@cindex Checking spelling
4010@cindex Ispell
4011
4012@table @b
4013
4014@item Author
982f3b82 4015@email{geoff@@cs.hmc.edu, Geoff Kuenning}
71e68827
DL
4016
4017@item Latest version
982f3b82 40183.3.02
71e68827
DL
4019
4020@item Distribution
982f3b82 4021@uref{http://fmg-www.cs.ucla.edu/geoff/tars/ispell-3.3.02.tar.gz}@*
71e68827
DL
4022
4023@item Web site
4024@uref{http://fmg-www.cs.ucla.edu/geoff/ispell.html}
4025
4026@end table
4027
ed5c18e2
EZ
4028This Ispell program is distinct from GNU Ispell 4.0. GNU Ispell 4.0 is
4029no longer a supported product.
71e68827 4030
982f3b82
RF
4031@node Emacs/W3, EDB, Ispell, Major packages and programs
4032@section Emacs/W3 --- A World Wide Web browser inside of Emacs
71e68827
DL
4033@cindex WWW browser
4034@cindex Web browser
ed5c18e2 4035@cindex HTML browser in Emacs
71e68827
DL
4036@cindex @code{w3-mode}
4037
4038@table @b
4039
4040@item Author
982f3b82
RF
4041@email{wmperry@@gnu.org, Bill Perry}
4042
4043@item Maintainer
4044Emacs/W3 needs a maintainer. It has lain dormant for several years. If
4045you would like to take over the project, please contact
4046@email{maintainers@@gnu.org}.
71e68827
DL
4047
4048@item Latest version
982f3b82 40494.0pre.47
71e68827
DL
4050
4051@item Distribution
982f3b82 4052@uref{http://savannah.gnu.org/projects/w3}
71e68827
DL
4053
4054@item Mailing lists
982f3b82
RF
4055Receive announcements from @email{w3-announce@@gnu.org}@*
4056Help to develop Emacs/W3 at @email{w3-dev@@gnu.org}
71e68827
DL
4057
4058@end table
4059
982f3b82 4060@node EDB, Mailcrypt, Emacs/W3, Major packages and programs
71e68827
DL
4061@section EDB --- Database program for Emacs; replaces forms editing modes
4062@cindex EDB
4063@cindex Database
4064@cindex Forms mode
4065
4066@table @b
4067@item Author
4068@email{mernst@@theory.lcs.mit.edu, Michael Ernst}
4069
4070@item Latest version
40711.21
4072
4073@item Distribution
4074@uref{ftp://theory.lcs.mit.edu/pub/emacs/edb}
4075
4076@end table
4077
4078@node Mailcrypt, JDE, EDB, Major packages and programs
4079@section Mailcrypt --- PGP interface within Emacs mail and news
4080@cindex PGP
4081@cindex GPG
4082@cindex Interface to PGP from Emacs mail and news
4083@cindex News, interface to PGP from
4084@cindex Mail, interface to PGP from
4085@cindex Encryption software, interface to
4086
4087@table @b
4088
4089@item Authors
ed5c18e2
EZ
4090@email{patl@@lcs.mit.edu, Patrick J. LoPresti} and
4091@email{jin@@atype.com, Jin S. Choi}
71e68827
DL
4092
4093@item Maintainer
199a0cb9 4094@email{warner-mailcrypt@@lothar.com, Brian Warner}
71e68827
DL
4095
4096@item Latest version
199a0cb9 40973.5.8
71e68827
DL
4098
4099@item Distribution
199a0cb9 4100@uref{http://dl.sourceforge.net/sourceforge/mailcrypt/mailcrypt-3.5.8.tar.gz}
71e68827
DL
4101
4102@item Web site
199a0cb9 4103@uref{http://mailcrypt.sourceforge.net/}
71e68827
DL
4104
4105@end table
4106
982f3b82
RF
4107Note that a new package called PGG is bundled with Emacs starting with
4108version 22.1. It is a modern interface to various PGP implementations,
4109including @uref{http://www.gnupg.org/, The GNU Privacy Guard} and
4110supports symmetric encryption.
4111
71e68827
DL
4112@node JDE, Patch, Mailcrypt, Major packages and programs
4113@section JDE --- Integrated development environment for Java
4114@cindex Java development environment
4115@cindex Integrated Java development environment
4116@cindex JDE
4117
4118@table @b
4119
4120@item Author
4121@email{paulk@@mathworks.com, Paul Kinnucan}
4122
71e68827 4123@item Latest version
982f3b82 41242.3.5
71e68827
DL
4125
4126@item Web site
982f3b82
RF
4127@uref{http://jdee.sunsite.dk/}
4128
4129@item Mailing lists
4130Subscription requests to @email{jde-subscribe@@sunsite.dk}@*
4131Receive announcements from @email{jde-announce-subscribe@@sunsite.dk}
71e68827
DL
4132
4133@end table
4134
4135@node Patch, , JDE, Major packages and programs
ef4da64f 4136@section Patch --- program to apply ``diffs'' for updating files
71e68827
DL
4137@cindex Updating files with diffs
4138@cindex Patching source files with diffs
4139@cindex Diffs and patching
4140@cindex @file{patch}
4141
4142@table @b
4143
4144@item Author
4145@email{lwall@@wall.org, Larry Wall} (with GNU modifications)
4146
4147@item Latest version
ed5c18e2 41482.5.4
71e68827
DL
4149
4150@item Distribution
0d17cd5c 4151@xref{Current GNU distributions}.
71e68827
DL
4152
4153@end table
4154
4155@c ------------------------------------------------------------
4156@node Key bindings, Alternate character sets, Major packages and programs, Top
4157@chapter Key bindings
4158@cindex Key bindings
4159
4160@menu
7a2fe6fa
TTN
4161* Binding keys to commands::
4162* Invalid prefix characters::
4163* Terminal setup code works after Emacs has begun::
4164* Using function keys under X::
4165* Working with function and arrow keys::
4166* X key translations for Emacs::
4167* Handling C-s and C-q with flow control::
4168* Binding C-s and C-q::
4169* Backspace invokes help::
4170* stty and Backspace key::
4171* Swapping keys::
4172* Producing C-XXX with the keyboard::
4173* No Meta key::
4174* No Escape key::
4175* Compose Character::
4176* Binding combinations of modifiers and function keys::
4177* Meta key does not work in xterm::
4178* ExtendChar key does not work as Meta::
b6f2e1f5 4179* SPC no longer completes file names::
71e68827
DL
4180@end menu
4181
4182@node Binding keys to commands, Invalid prefix characters, Key bindings, Key bindings
4183@section How do I bind keys (including function keys) to commands?
4184@cindex Binding keys to commands
4185@cindex Keys, binding to commands
4186@cindex Commands, binding keys to
4187
4188Keys can be bound to commands either interactively or in your
4189@file{.emacs} file. To interactively bind keys for all modes, type
ed5c18e2 4190@kbd{M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}}.
71e68827 4191
ed5c18e2
EZ
4192To bind a key just in the current major mode, type @kbd{M-x
4193local-set-key @key{RET} @var{key} @var{cmd} @key{RET}}.
71e68827 4194
ed5c18e2 4195@inforef{Key Bindings, Key Bindings, emacs}, for further details.
71e68827 4196
b6f2e1f5 4197To make the process of binding keys interactively easier, use the
ed5c18e2 4198following ``trick'': First bind the key interactively, then immediately
71e68827
DL
4199type @kbd{C-x @key{ESC} @key{ESC} C-a C-k C-g}. Now, the command needed
4200to bind the key is in the kill ring, and can be yanked into your
4201@file{.emacs} file. If the key binding is global, no changes to the
4202command are required. For example,
4203
4204@lisp
4205(global-set-key (quote [f1]) (quote help-for-help))
4206@end lisp
4207
ed5c18e2 4208@noindent
71e68827 4209can be placed directly into the @file{.emacs} file. If the key binding is
ef4da64f
RS
4210local, the command is used in conjunction with the @samp{add-hook} function.
4211For example, in TeX mode, a local binding might be
71e68827
DL
4212
4213@lisp
4214(add-hook 'tex-mode-hook
bed44076
SM
4215 (lambda ()
4216 (local-set-key (quote [f1]) (quote help-for-help))))
71e68827
DL
4217@end lisp
4218
4219
4220@itemize @bullet
4221
ed5c18e2
EZ
4222@item
4223Control characters in key sequences, in the form yanked from the kill
4224ring are given in their graphic form---i.e., @key{CTRL} is shown as
4225@samp{^}, @key{TAB} as a set of spaces (usually 8), etc. You may want
4226to convert these into their vector or string forms.
71e68827 4227
ed5c18e2
EZ
4228@item
4229If a prefix key of the character sequence to be bound is already
71e68827 4230bound as a complete key, then you must unbind it before the new
ed5c18e2 4231binding. For example, if @kbd{ESC @{} is previously bound:
71e68827
DL
4232
4233@lisp
4234(global-unset-key [?\e ?@{]) ;; or
4235(local-unset-key [?\e ?@{])
4236@end lisp
4237
ed5c18e2
EZ
4238@item
4239Aside from commands and ``lambda lists,'' a vector or string also
71e68827
DL
4240can be bound to a key and thus treated as a macro. For example:
4241
4242@lisp
4243(global-set-key [f10] [?\C-x?\e?\e?\C-a?\C-k?\C-g]) ;; or
4244(global-set-key [f10] "\C-x\e\e\C-a\C-k\C-g")
4245@end lisp
4246
4247@end itemize
4248
4249@node Invalid prefix characters, Terminal setup code works after Emacs has begun, Binding keys to commands, Key bindings
ef4da64f 4250@section Why does Emacs say @samp{Key sequence XXX uses invalid prefix characters}?
71e68827
DL
4251@cindex Prefix characters, invalid
4252@cindex Invalid prefix characters
4253@cindex Misspecified key sequences
4254
4255Usually, one of two things has happened. In one case, the control
4256character in the key sequence has been misspecified (e.g. @samp{C-f}
4257used instead of @samp{\C-f} within a Lisp expression). In the other
ed5c18e2
EZ
4258case, a @dfn{prefix key} in the keystroke sequence you were trying to bind
4259was already bound as a @dfn{complete key}. Historically, the @samp{ESC [}
71e68827
DL
4260prefix was usually the problem, in which case you should evaluate either
4261of these forms before attempting to bind the key sequence:
4262
4263@lisp
4264(global-unset-key [?\e ?[]) ;; or
4265(global-unset-key "\e[")
4266@end lisp
4267
4268@node Terminal setup code works after Emacs has begun, Using function keys under X, Invalid prefix characters, Key bindings
4269@section Why doesn't this [terminal or window-system setup] code work in my @file{.emacs} file, but it works just fine after Emacs starts up?
4270@cindex Terminal setup code in @file{.emacs}
4271
4272During startup, Emacs initializes itself according to a given code/file
4273order. If some of the code executed in your @file{.emacs} file needs to
4274be postponed until the initial terminal or window-system setup code has
4275been executed but is not, then you will experience this problem (this
4276code/file execution order is not enforced after startup).
4277
4278To postpone the execution of Emacs Lisp code until after terminal or
ed5c18e2
EZ
4279window-system setup, treat the code as a @dfn{lambda list} and set the
4280value of either the @code{term-setup-hook} or @code{window-setup-hook}
4281variable to this lambda function. For example,
71e68827
DL
4282
4283@lisp
bed44076
SM
4284(add-hook 'term-setup-hook
4285 (lambda ()
4286 (when (string-match "\\`vt220" (or (getenv "TERM") ""))
4287 ;; Make vt220's "Do" key behave like M-x:
4288 (global-set-key [do] 'execute-extended-command))))
71e68827
DL
4289@end lisp
4290
4291For information on what Emacs does every time it is started, see the
4292@file{lisp/startup.el} file.
4293
4294@node Using function keys under X, Working with function and arrow keys, Terminal setup code works after Emacs has begun, Key bindings
97878c08 4295@section How do I use function keys under X?
71e68827 4296@cindex Function keys
97878c08 4297@cindex X Window System and function keys
71e68827
DL
4298@cindex Binding function keys
4299
0d17cd5c 4300With Emacs 19, functions keys under X are bound like any other key. @xref{Binding keys to commands}, for details.
71e68827
DL
4301
4302@node Working with function and arrow keys, X key translations for Emacs, Using function keys under X, Key bindings
4303@section How do I tell what characters or symbols my function or arrow keys emit?
4304@cindex Working with arrow keys
4305@cindex Arrow keys, symbols generated by
4306@cindex Working with function keys
4307@cindex Function keys, symbols generated by
4308@cindex Symbols generated by function keys
4309
4310Type @kbd{C-h c} then the function or arrow keys. The command will
4311return either a function key symbol or character sequence (see the
4312Emacs on-line documentation for an explanation). This works for other
4313keys as well.
4314
4315@node X key translations for Emacs, Handling C-s and C-q with flow control, Working with function and arrow keys, Key bindings
ed5c18e2 4316@section How do I set the X key ``translations'' for Emacs?
71e68827
DL
4317@cindex X key translations
4318@cindex Key translations under X
4319@cindex Translations for keys under X
4320
4321Emacs is not written using the Xt library by default, so there are no
ed5c18e2 4322``translations'' to be set. (We aren't sure how to set such translations
71e68827
DL
4323if you do build Emacs with Xt; please let us know if you've done this!)
4324
4325The only way to affect the behavior of keys within Emacs is through
ed5c18e2 4326@code{xmodmap} (outside Emacs) or @code{define-key} (inside Emacs). The
71e68827
DL
4327@code{define-key} command should be used in conjunction with the
4328@code{function-key-map} map. For instance,
4329
4330@lisp
4331(define-key function-key-map [M-@key{TAB}] [?\M-\t])
4332@end lisp
4333
ed5c18e2 4334@noindent
71e68827
DL
4335defines the @kbd{M-@key{TAB}} key sequence.
4336
4337@node Handling C-s and C-q with flow control, Binding C-s and C-q, X key translations for Emacs, Key bindings
4338@section How do I handle @kbd{C-s} and @kbd{C-q} being used for flow control?
4339@cindex Flow control, @kbd{C-s} and @kbd{C-q} with
4340@cindex @kbd{C-s} and @kbd{C-q} with flow control
4341
4342@kbd{C-s} and @kbd{C-q} are used in the XON/XOFF flow control protocol.
ed5c18e2
EZ
4343This messes things up when you're using Emacs over a serial line,
4344because Emacs binds these keys to commands by default. Because Emacs
4345won't honor them as flow control characters, too many of these
4346characters are not passed on and overwhelm output buffers. Sometimes,
4347intermediate software using XON/XOFF flow control will prevent Emacs
4348from ever seeing @kbd{C-s} and @kbd{C-q}.
71e68827
DL
4349
4350Possible solutions:
4351
4352@itemize @bullet
4353
ed5c18e2
EZ
4354@item
4355Disable the use of @kbd{C-s} and @kbd{C-q} for flow control.
71e68827
DL
4356
4357You need to determine the cause of the flow control.
4358
4359@itemize @minus
4360
ed5c18e2
EZ
4361@item
4362your terminal
71e68827
DL
4363
4364Your terminal may use XON/XOFF flow control to have time to display
4365all the characters it receives. For example, VT series terminals do
4366this. It may be possible to turn this off from a setup menu. For
ed5c18e2 4367example, on a VT220 you may select ``No XOFF'' in the setup menu. This
71e68827
DL
4368is also true for some terminal emulation programs on PCs.
4369
4370When you turn off flow control at the terminal, you will also need to
4371turn it off at the other end, which might be at the computer you are
4372logged in to or at some terminal server in between.
4373
4374If you turn off flow control, characters may be lost; using a printer
4375connected to the terminal may fail. You may be able to get around
ed5c18e2 4376this problem by modifying the @samp{termcap} entry for your terminal to
71e68827
DL
4377include extra NUL padding characters.
4378
ed5c18e2
EZ
4379@item
4380a modem
71e68827
DL
4381
4382If you are using a dialup connection, the modems may be using
4383XON/XOFF flow control. It's not clear how to get around this.
4384
ed5c18e2
EZ
4385@item
4386a router or terminal server
71e68827
DL
4387
4388Some network box between the terminal and your computer may be using
4389XON/XOFF flow control. It may be possible to make it use some other
4390kind of flow control. You will probably have to ask your local
4391network experts for help with this.
4392
ed5c18e2
EZ
4393@item
4394@code{tty} and/or @code{pty} devices
71e68827 4395
ed5c18e2
EZ
4396If your connection to Emacs goes through multiple @code{tty} and/or
4397@code{pty} devices, they may be using XON/XOFF flow control even when it
4398is not necessary.
71e68827
DL
4399
4400@email{eirik@@theory.tn.cornell.edu, Eirik Fuller} writes:
4401
4402@quotation
ed5c18e2
EZ
4403Some versions of @code{rlogin} (and possibly @code{telnet}) do not pass
4404flow control characters to the remote system to which they connect. On
4405such systems, Emacs on the remote system cannot disable flow control on
4406the local system. Sometimes @samp{rlogin -8} will avoid this problem.
71e68827 4407
ed5c18e2
EZ
4408One way to cure this is to disable flow control on the local host (the
4409one running @code{rlogin}, not the one running @code{rlogind}) using the
4410@code{stty} command, before starting the @code{rlogin} process. On many
4411systems, @samp{stty start u stop u} will do this.
71e68827
DL
4412
4413Some versions of @samp{tcsh} will prevent even this from working. One
4414way around this is to start another shell before starting rlogin,
4415and issue the @samp{stty} command to disable flow control from that shell.
4416@end quotation
4417
4418Use @samp{stty -ixon} instead of @samp{stty start u stop u} on some systems.
4419
4420@end itemize
4421
ed5c18e2
EZ
4422@item
4423Make Emacs speak the XON/XOFF flow control protocol.
71e68827
DL
4424
4425You can make Emacs treat @kbd{C-s} and @kbd{C-q} as flow control characters by
4426evaluating the form
4427
4428@lisp
4429(enable-flow-control)
4430@end lisp
4431
ed5c18e2 4432@noindent
71e68827
DL
4433to unconditionally enable flow control or
4434
4435@lisp
4436(enable-flow-control-on "vt100" "h19")
4437@end lisp
4438
ed5c18e2 4439@noindent
71e68827
DL
4440(using your terminal names instead of @samp{vt100} or @samp{h19}) to
4441enable selectively. These commands will automatically swap @kbd{C-s}
4442and @kbd{C-q} to @kbd{C-\} and @kbd{C-^}. Variables can be used to
4443change the default swap keys (@code{flow-control-c-s-replacement} and
4444@code{flow-control-c-q-replacement}).
4445
4446If you are fixing this for yourself, simply put the form in your
4447@file{.emacs} file. If you are fixing this for your entire site, the
47ba8110
EZ
4448best place to put it is in the @file{site-lisp/site-start.el} file.
4449(Here @file{site-lisp} is actually a subdirectory of your Emacs
4450installation directory, typically @file{/usr/local/share/emacs}.)
4451Putting this form in @file{site-lisp/default.el} has the problem that
4452if the user's @file{.emacs} file has an error, this will prevent
4453@file{default.el} from being loaded and Emacs may be unusable for the
4454user, even for correcting their @file{.emacs} file (unless they're
71e68827
DL
4455smart enough to move it to another name).
4456
ed5c18e2
EZ
4457@code{enable-flow-control} can be invoked interactively as well:
4458@kbd{M-x enable-flow-control @key{RET}}.
4459
71e68827
DL
4460@end itemize
4461
ed5c18e2
EZ
4462For further discussion of this issue, read the file @file{etc/PROBLEMS}
4463(in the Emacs source directory when you unpack the Emacs distribution).
71e68827
DL
4464
4465@node Binding C-s and C-q, Backspace invokes help, Handling C-s and C-q with flow control, Key bindings
4466@section How do I bind @kbd{C-s} and @kbd{C-q} (or any key) if these keys are filtered out?
4467@cindex Binding @kbd{C-s} and @kbd{C-q}
4468@cindex @kbd{C-s} and @kbd{C-q}, binding
4469
4470To bind @kbd{C-s} and @kbd{C-q}, use either @code{enable-flow-control}
ed5c18e2 4471or @code{enable-flow-control-on}. @xref{Handling C-s and C-q with flow
0d17cd5c 4472control}, for usage and implementation details.
71e68827 4473
47ba8110
EZ
4474To bind other keys, use @code{keyboard-translate}. @xref{Swapping
4475keys}, for usage details. To do this for an entire site, you should
4476swap the keys in @file{site-lisp/site-start.el}. @xref{Handling C-s
4477and C-q with flow control}, for an explanation of why
4478@file{site-lisp/default.el} should not be used.
71e68827
DL
4479
4480@itemize @bullet
4481
ed5c18e2
EZ
4482@item
4483If you do this for an entire site, the users will be confused by
71e68827
DL
4484the disparity between what the documentation says and how Emacs
4485actually behaves.
4486
4487@end itemize
4488
4489@node Backspace invokes help, stty and Backspace key, Binding C-s and C-q, Key bindings
4490@section Why does the @key{Backspace} key invoke help?
4491@cindex Backspace key invokes help
4492@cindex Help invoked by Backspace
76b47cc3 4493@cindex DEL key does not delete
71e68827 4494
76dd3692 4495The @key{Backspace} key (on most keyboards) generates @acronym{ASCII} code 8.
71e68827
DL
4496@kbd{C-h} sends the same code. In Emacs by default @kbd{C-h} invokes
4497help-command. This is intended to be easy to remember since the first
4498letter of @samp{help} is @samp{h}. The easiest solution to this problem
4499is to use @kbd{C-h} (and @key{Backspace}) for help and @key{DEL} (the
4500@key{Delete} key) for deleting the previous character.
4501
4502For many people this solution may be problematic:
4503
4504@itemize @bullet
4505
4506@item
4507They normally use @key{Backspace} outside of Emacs for deleting the
4508previous character. This can be solved by making @key{DEL} the command
4509for deleting the previous character outside of Emacs. On many Unix
4510systems, this command will remap @key{DEL}:
4511
4512@example
4513stty erase `^?'
4514@end example
4515
4516@item
ed5c18e2 4517The user may prefer the @key{Backspace} key for deleting the
71e68827 4518previous character because it is more conveniently located on their
ed5c18e2
EZ
4519keyboard or because they don't even have a separate @key{Delete} key.
4520In this case, the @key{Backspace} key should be made to behave like
71e68827
DL
4521@key{Delete}. There are several methods.
4522
76b47cc3
EZ
4523@itemize @minus
4524@item
4525Some terminals (e.g., VT3## terminals) and terminal emulators (e.g.,
4526TeraTerm) allow the character generated by the @key{Backspace} key to be
4527changed from a setup menu.
4528
71e68827 4529@item
76b47cc3
EZ
4530You may be able to get a keyboard that is completely programmable, or a
4531terminal emulator that supports remapping of any key to any other key.
71e68827
DL
4532
4533@item
76b47cc3
EZ
4534With Emacs 21.1 and later, you can control the effect of the
4535@key{Backspace} and @key{Delete} keys, on both dumb terminals and a
4536windowed displays, by customizing the option
4537@code{normal-erase-is-backspace-mode}, or by invoking @kbd{M-x
4538normal-erase-is-backspace}. See the documentation of these symbols
4539(@pxref{Emacs Lisp documentation}) for more info.
71e68827
DL
4540
4541@item
76b47cc3
EZ
4542It is possible to swap the @key{Backspace} and @key{DEL} keys inside
4543Emacs:
71e68827
DL
4544
4545@lisp
4546(keyboard-translate ?\C-h ?\C-?)
4547@end lisp
4548
76b47cc3
EZ
4549@noindent
4550This is the recommended method of forcing @key{Backspace} to act as
4551@key{DEL}, because it works even in modes which bind @key{DEL} to
4552something other than @code{delete-backward-char}.
4553
4554Similarly, you could remap @key{DEL} to act as @kbd{C-d}, which by
4555default deletes forward:
4556
4557@lisp
4558(keyboard-translate ?\C-? ?\C-d)
4559@end lisp
4560
4561@xref{Swapping keys}, for further details about @code{keyboard-translate}.
71e68827
DL
4562
4563@item
4564Another approach is to switch key bindings and put help on @kbd{C-x h}
4565instead:
4566
4567@lisp
4568(global-set-key "\C-h" 'delete-backward-char)
4569
91ec56a9 4570;; overrides mark-whole-buffer
7a2fe6fa 4571(global-set-key "\C-xh" 'help-command)
71e68827
DL
4572@end lisp
4573
76b47cc3
EZ
4574@noindent
4575This method is not recommended, though: it only solves the problem for
4576those modes which bind @key{DEL} to @code{delete-backward-char}. Modes
4577which bind @key{DEL} to something else, such as @code{view-mode}, will
4578not work as you expect when you press the @key{Backspace} key. For this
8c1cc9e8 4579reason, we recommend the @code{keyboard-translate} method, shown
76b47cc3
EZ
4580above.
4581
71e68827 4582Other popular key bindings for help are @kbd{M-?} and @kbd{C-x ?}.
76b47cc3 4583@end itemize
71e68827
DL
4584
4585Don't try to bind @key{DEL} to @code{help-command}, because there are
4586many modes that have local bindings of @key{DEL} that will interfere.
4587
4588@end itemize
4589
ed5c18e2
EZ
4590When Emacs 21 or later runs on a windowed display, it binds the
4591@key{Delete} key to a command which deletes the character at point, to
4592make Emacs more consistent with keyboard operation on these systems.
4593
76b47cc3
EZ
4594For more information about troubleshooting this problem, see @ref{DEL
4595Does Not Delete, , If @key{DEL} Fails to Delete, emacs, The GNU Emacs
4596Manual}.
4597
71e68827
DL
4598@node stty and Backspace key, Swapping keys, Backspace invokes help, Key bindings
4599@section Why doesn't Emacs look at the @file{stty} settings for @key{Backspace} vs. @key{Delete}?
4600@cindex @file{stty} and Emacs
4601@cindex Backspace and @file{stty}
4602@cindex Delete and @file{stty}
4603
4604Good question!
4605
ed5c18e2
EZ
4606@c FIXME: RMS explained the reasons for this on emacs-hackers. It's
4607@c probably worth putting that explanation here.
4608
71e68827
DL
4609@node Swapping keys, Producing C-XXX with the keyboard, stty and Backspace key, Key bindings
4610@section How do I swap two keys?
4611@cindex Swapping keys
4612@cindex Keys, swapping
4613@cindex @code{keyboard-translate}
4614
efaf8fa4
RS
4615You can swap two keys (or key sequences) by using the
4616@code{keyboard-translate} function. For example, to turn @kbd{C-h}
4617into @key{DEL} and @key{DEL} to @kbd{C-h}, use
71e68827
DL
4618
4619@lisp
4620(keyboard-translate ?\C-h ?\C-?) ; translate `C-h' to DEL
4621(keyboard-translate ?\C-? ?\C-h) ; translate DEL to `C-h'.
4622@end lisp
4623
ed5c18e2 4624@noindent
71e68827
DL
4625The first key sequence of the pair after the function identifies what is
4626produced by the keyboard; the second, what is matched for in the
4627keymaps.
4628
efaf8fa4
RS
4629However, in the specific case of @kbd{C-h} and @key{DEL}, you should
4630toggle @code{normal-erase-is-backspace-mode} instead of calling
9bc260cf 4631@code{keyboard-translate}. @inforef{DEL Does Not Delete, DEL Does Not Delete,
efaf8fa4
RS
4632emacs}.
4633
71e68827
DL
4634Keyboard translations are not the same as key bindings in keymaps.
4635Emacs contains numerous keymaps that apply in different situations, but
4636there is only one set of keyboard translations, and it applies to every
4637character that Emacs reads from the terminal. Keyboard translations
4638take place at the lowest level of input processing; the keys that are
4639looked up in keymaps contain the characters that result from keyboard
4640translation.
4641
71e68827
DL
4642@node Producing C-XXX with the keyboard, No Meta key, Swapping keys, Key bindings
4643@section How do I produce C-XXX with my keyboard?
4644@cindex Producing control characters
4645@cindex Generating control characters
4646@cindex Control characters, generating
4647
ef4da64f 4648On terminals (but not under X), some common ``aliases'' are:
71e68827
DL
4649
4650@table @asis
4651
4652@item @kbd{C-2} or @kbd{C-@key{SPC}}
4653@kbd{C-@@}
4654
4655@item @kbd{C-6}
4656@kbd{C-^}
4657
4658@item @kbd{C-7} or @kbd{C-S--}
4659@kbd{C-_}
4660
4661@item @kbd{C-4}
4662@kbd{C-\}
4663
4664@item @kbd{C-5}
4665@kbd{C-]}
4666
4667@item @kbd{C-/}
4668@kbd{C-?}
4669
4670@end table
4671
4672Often other aliases exist; use the @kbd{C-h c} command and try
4673@key{CTRL} with all of the digits on your keyboard to see what gets
4674generated. You can also try the @kbd{C-h w} command if you know the
4675name of the command.
4676
4677@node No Meta key, No Escape key, Producing C-XXX with the keyboard, Key bindings
4678@section What if I don't have a @key{Meta} key?
4679@cindex No @key{Meta} key
4680@cindex @key{Meta} key, what to do if you lack it
4681
ed5c18e2
EZ
4682On many keyboards, the @key{Alt} key acts as @key{Meta}, so try it.
4683
71e68827
DL
4684Instead of typing @kbd{M-a}, you can type @kbd{@key{ESC} a}. In fact,
4685Emacs converts @kbd{M-a} internally into @kbd{@key{ESC} a} anyway
4686(depending on the value of @code{meta-prefix-char}). Note that you
ed5c18e2
EZ
4687press @key{Meta} and @key{a} together, but with @key{ESC}, you press
4688@key{ESC}, release it, and then press @key{a}.
71e68827
DL
4689
4690@node No Escape key, Compose Character, No Meta key, Key bindings
4691@section What if I don't have an @key{Escape} key?
4692@cindex No Escape key
4693@cindex Lacking an Escape key
4694@cindex Escape key, lacking
4695
76dd3692 4696Type @kbd{C-[} instead. This should send @acronym{ASCII} code 27 just like an
71e68827
DL
4697Escape key would. @kbd{C-3} may also work on some terminal (but not
4698under X). For many terminals (notably DEC terminals) @key{F11}
4699generates @key{ESC}. If not, the following form can be used to bind it:
4700
4701@lisp
91ec56a9 4702;; F11 is the documented ESC replacement on DEC terminals.
7a2fe6fa 4703(define-key function-key-map [f11] [?\e])
71e68827
DL
4704@end lisp
4705
4706@node Compose Character, Binding combinations of modifiers and function keys, No Escape key, Key bindings
4707@section Can I make my @key{Compose Character} key behave like a @key{Meta} key?
4708@cindex @key{Compose Character} key, using as @key{Meta}
4709@cindex @key{Meta}, using @key{Compose Character} for
4710
4711On a dumb terminal such as a VT220, no. It is rumored that certain
4712VT220 clones could have their @key{Compose} key configured this way. If
ed5c18e2
EZ
4713you're using X, you might be able to do this with the @code{xmodmap}
4714command.
71e68827
DL
4715
4716@node Binding combinations of modifiers and function keys, Meta key does not work in xterm, Compose Character, Key bindings
4717@section How do I bind a combination of modifier key and function key?
4718@cindex Modifiers and function keys
4719@cindex Function keys and modifiers
4720@cindex Binding modifiers and function keys
4721
ed5c18e2
EZ
4722With Emacs 19 and later, you can represent modified function keys in
4723vector format by adding prefixes to the function key symbol. For
4724example (from the on-line documentation):
71e68827
DL
4725
4726@lisp
4727(global-set-key [?\C-x right] 'forward-page)
4728@end lisp
4729
ed5c18e2 4730@noindent
71e68827
DL
4731where @samp{?\C-x} is the Lisp character constant for the character @kbd{C-x}.
4732
4733You can use the modifier keys @key{Control}, @key{Meta}, @key{Hyper},
4734@key{Super}, @key{Alt}, and @key{Shift} with function keys. To
4735represent these modifiers, prepend the strings @samp{C-}, @samp{M-},
4736@samp{H-}, @samp{s-}, @samp{A-}, and @samp{S-} to the symbol name. Here
4737is how to make @kbd{H-M-RIGHT} move forward a word:
4738
4739@lisp
4740(global-set-key [H-M-right] 'forward-word)
4741@end lisp
4742
4743@itemize @bullet
4744
ed5c18e2
EZ
4745@item
4746Not all modifiers are permitted in all situations. @key{Hyper},
4747@key{Super}, and @key{Alt} are not available on Unix character
76dd3692 4748terminals. Non-@acronym{ASCII} keys and mouse events (e.g. @kbd{C-=} and
d3553f17 4749@kbd{Mouse-1}) also fall under this category.
71e68827
DL
4750
4751@end itemize
4752
0d17cd5c 4753@xref{Binding keys to commands}, for general key binding instructions.
71e68827
DL
4754
4755@node Meta key does not work in xterm, ExtendChar key does not work as Meta, Binding combinations of modifiers and function keys, Key bindings
ed5c18e2
EZ
4756@section Why doesn't my @key{Meta} key work in an @code{xterm} window?
4757@cindex @key{Meta} key and @code{xterm}
71e68827
DL
4758@cindex Xterm and @key{Meta} key
4759
e7d7b4ca 4760@inforef{Unibyte Mode, Single-Byte Character Set Support, emacs}.
ed5c18e2
EZ
4761
4762If the advice in the Emacs manual fails, try all of these methods before
4763asking for further help:
71e68827
DL
4764
4765@itemize @bullet
4766
4767@item
ed5c18e2 4768You may have big problems using @code{mwm} as your window manager.
71e68827
DL
4769(Does anyone know a good generic solution to allow the use of the
4770@key{Meta} key in Emacs with @file{mwm}?)
4771
4772@item
ed5c18e2 4773For X11: Make sure it really is a @key{Meta} key. Use @code{xev} to
71e68827 4774find out what keysym your @key{Meta} key generates. It should be either
ed438271 4775@code{Meta_L} or @code{Meta_R}. If it isn't, use @file{xmodmap} to fix
3f222eb5 4776the situation. If @key{Meta} does generate @code{Meta_L} or
76dd3692 4777@code{Meta_R}, but @kbd{M-x} produces a non-@acronym{ASCII} character, put this in
3f222eb5
EZ
4778your @file{~/.Xdefaults} file:
4779
4780@example
4781 XTerm*eightBitInput: false
4782 XTerm*eightBitOutput: true
4783@end example
71e68827
DL
4784
4785@item
ed5c18e2
EZ
4786Make sure the @code{pty} the @code{xterm} is using is passing 8 bit
4787characters. @samp{stty -a} (or @samp{stty everything}) should show
4788@samp{cs8} somewhere. If it shows @samp{cs7} instead, use @samp{stty
4789cs8 -istrip} (or @samp{stty pass8}) to fix it.
71e68827
DL
4790
4791@item
ed5c18e2
EZ
4792If there is an @code{rlogin} connection between @code{xterm} and Emacs, the
4793@samp{-8} argument may need to be given to rlogin to make it pass all 8 bits
71e68827
DL
4794of every character.
4795
4796@item
ed5c18e2 4797If Emacs is running on Ultrix, it is reported that evaluating
71e68827
DL
4798@code{(set-input-mode t nil)} helps.
4799
4800@item
ed5c18e2 4801If all else fails, you can make @code{xterm} generate @kbd{@key{ESC} W} when
71e68827
DL
4802you type @kbd{M-W}, which is the same conversion Emacs would make if it
4803got the @kbd{M-W} anyway. In X11R4, the following resource
4804specification will do this:
4805
4806@example
4807XTerm.VT100.EightBitInput: false
4808@end example
4809
ed5c18e2 4810@noindent
71e68827
DL
4811(This changes the behavior of the @code{insert-eight-bit} action.)
4812
ed5c18e2 4813With older @code{xterm}s, you can specify this behavior with a translation:
71e68827
DL
4814
4815@example
4816XTerm.VT100.Translations: #override \
4817 Meta<KeyPress>: string(0x1b) insert()
4818@end example
4819
ed5c18e2 4820@noindent
71e68827
DL
4821You might have to replace @samp{Meta} with @samp{Alt}.
4822
4823@end itemize
4824
b6f2e1f5 4825@node ExtendChar key does not work as Meta, SPC no longer completes file names, Meta key does not work in xterm, Key bindings
71e68827
DL
4826@section Why doesn't my @key{ExtendChar} key work as a @key{Meta} key under HP-UX 8.0 and 9.x?
4827@cindex @key{ExtendChar} key as @key{Meta}
4828@cindex @key{Meta}, using @key{ExtendChar} for
ed5c18e2 4829@cindex HP-UX, the @key{ExtendChar} key
71e68827
DL
4830
4831This is a result of an internationalization extension in X11R4 and the
ed5c18e2
EZ
4832fact that HP is now using this extension. Emacs assumes that the
4833@code{XLookupString} function returns the same result regardless of the
4834@key{Meta} key state which is no longer necessarily true. Until Emacs
4835is fixed, the temporary kludge is to run this command after each time
4836the X server is started but preferably before any xterm clients are:
71e68827
DL
4837
4838@example
4839xmodmap -e 'remove mod1 = Mode_switch'
4840@end example
4841
ed5c18e2
EZ
4842@c FIXME: Emacs 21 supports I18N in X11; does that mean that this bug is
4843@c solved?
4844
71e68827
DL
4845This will disable the use of the extra keysyms systemwide, which may be
4846undesirable if you actually intend to use them.
4847
037724a0 4848@node SPC no longer completes file names, , ExtendChar key does not work as Meta, Key bindings
b6f2e1f5
RF
4849@section Why doesn't SPC complete file names anymore?
4850@cindex @kbd{SPC} file name completion
4851
4852Starting with Emacs 22.1, @kbd{SPC} no longer completes file names in
4853the minibuffer, so that file names with embedded spaces could be typed
4854without the need to quote the spaces.
4855
4856You can get the old behavior by binding @kbd{SPC} to
4857@code{minibuffer-complete-word} in the minibuffer, as follows:
4858
4859@lisp
e7d7b4ca 4860(define-key minibuffer-local-filename-completion-map (kbd "SPC")
b6f2e1f5
RF
4861 'minibuffer-complete-word)
4862
e7d7b4ca 4863(define-key minibuffer-local-must-match-filename-map (kbd "SPC")
b6f2e1f5
RF
4864 'minibuffer-complete-word)
4865@end lisp
4866
71e68827
DL
4867@c ------------------------------------------------------------
4868@node Alternate character sets, Mail and news, Key bindings, Top
4869@chapter Alternate character sets
4870@cindex Alternate character sets
4871
4872@menu
7a2fe6fa
TTN
4873* Emacs does not display 8-bit characters::
4874* Inputting eight-bit characters::
4875* Kanji and Chinese characters::
4876* Right-to-left alphabets::
4bf15240 4877* How to add fonts::
71e68827
DL
4878@end menu
4879
4880@node Emacs does not display 8-bit characters, Inputting eight-bit characters, Alternate character sets, Alternate character sets
4881@section How do I make Emacs display 8-bit characters?
4882@cindex Displaying eight-bit characters
4883@cindex Eight-bit characters, displaying
4884
e7d7b4ca 4885@inforef{Unibyte Mode, Single-byte Character Set
b82e13af 4886Support, emacs}. On a Unix, when Emacs runs on a text-only terminal
ed5c18e2
EZ
4887display or is invoked with @samp{emacs -nw}, you typically need to use
4888@code{set-terminal-coding-system} to tell Emacs what the terminal can
4889display, even after setting the language environment; otherwise
76dd3692 4890non-@acronym{ASCII} characters will display as @samp{?}. On other operating
ed5c18e2
EZ
4891systems, such as MS-DOS and MS-Windows, Emacs queries the OS about the
4892character set supported by the display, and sets up the required
4893terminal coding system automatically.
71e68827
DL
4894
4895@node Inputting eight-bit characters, Kanji and Chinese characters, Emacs does not display 8-bit characters, Alternate character sets
4896@section How do I input eight-bit characters?
4897@cindex Entering eight-bit characters
4898@cindex Eight-bit characters, entering
ed5c18e2 4899@cindex Input, 8-bit characters
71e68827 4900
010bb2f0 4901Various methods are available for input of eight-bit characters. See
e7d7b4ca 4902@inforef{Unibyte Mode, Single-byte Character Set
ed5c18e2 4903Support, emacs}. For more sophisticated methods, @inforef{Input
010bb2f0 4904Methods, Input Methods, emacs}.
71e68827
DL
4905
4906@node Kanji and Chinese characters, Right-to-left alphabets, Inputting eight-bit characters, Alternate character sets
ed5c18e2 4907@section Where can I get an Emacs that handles kanji, Chinese, or other Far-Eastern character sets?
71e68827
DL
4908@cindex Kanji, handling with Emacs
4909@cindex Chinese, handling with Emacs
4910@cindex Japanese, handling with Emacs
4911@cindex Korean, handling with Emacs
4912
ed5c18e2
EZ
4913Emacs 20 and later includes many of the features of MULE, the MULtilingual
4914Enhancement to Emacs. @xref{Installing Emacs}, for information on where
4915to find and download the latest version of Emacs.
71e68827 4916
4bf15240 4917@node Right-to-left alphabets, How to add fonts, Kanji and Chinese characters, Alternate character sets
71e68827
DL
4918@section Where is an Emacs that can handle Semitic (right-to-left) alphabets?
4919@cindex Right-to-left alphabets
4920@cindex Hebrew, handling with Emacs
4921@cindex Semitic alphabets
ed5c18e2 4922@cindex Arabic alphabets
71e68827 4923
ed5c18e2
EZ
4924Emacs 20 and later supports Hebrew characters (ISO 8859-8), but does not
4925yet support right-to-left character entry and display.
71e68827
DL
4926
4927@email{joel@@exc.com, Joel M. Hoffman} has written a Lisp package called
4928@file{hebrew.el} that allows right-to-left editing of Hebrew. It
4929reportedly works out of the box with Emacs 19, but requires patches for
4930Emacs 18. Write to Joel if you want the patches or package.
4931
ed5c18e2
EZ
4932@c FIXME: Should we mention Ehud Karni's package?
4933
4934@file{hebrew.el} requires a Hebrew screen font, but no other hardware support.
d3553f17 4935Joel has a screen font for PCs running MS-DOS or GNU/Linux.
71e68827 4936
4bf15240
EZ
4937You might also try querying @code{archie} for files named with
4938@file{hebrew}; several ftp sites in Israel may also have the necessary
4939files.
4940
4941@node How to add fonts, , Right-to-left alphabets, Alternate character sets
4942@section How do I add fonts for use with Emacs?
4943@cindex add fonts for use with Emacs
4944@cindex intlfonts
4945
4946First, download and install the BDF font files and any auxiliary
4947packages they need. The GNU Intlfonts distribution can be found on
4948@uref{http://directory.fsf.org/localization/intlfonts.html, the GNU
4949Software Directory Web site}.
4950
4951Next, if you are on X Window system, issue the following two commands
4952from the shell's prompt:
4953
4954@example
4955 xset +fp /usr/local/share/emacs/fonts
4956 xset fp rehash
4957@end example
4958
4959@noindent
4960(Modify the first command if you installed the fonts in a directory
4961that is not @file{/usr/local/share/emacs/fonts}.) You also need to
4962arrange for these two commands to run whenever you log in, e.g., by
4963adding them to your window-system startup file, such as
4964@file{~/.xsessionrc} or @file{~/.gnomerc}.
4965
4966Now, add the following line to your @file{~/.emacs} init file:
4967
4968@lisp
4969 (add-to-list 'bdf-directory-list "/usr/share/emacs/fonts/bdf")
4970@end lisp
4971
4972@noindent
4973(Again, modify the file name if you installed the fonts elsewhere.)
4974
4975Finally, if you wish to use the installed fonts with @code{ps-print},
4976add the following line to your @file{~/.emacs}:
4977
4978@lisp
4979 (setq ps-multibyte-buffer 'bdf-font-except-latin)
4980@end lisp
4981
4982A few additional steps are necessary for MS-Windows; they are listed
4983below.
4984
4985First, make sure @emph{all} the directories with BDF font files are
4986mentioned in @code{bdf-directory-list}. On Unix and GNU/Linux
4987systems, one normally runs @kbd{make install} to install the BDF fonts
4988in the same directory. By contrast, Windows users typically don't run
4989the Intlfonts installation command, but unpack the distribution in
4990some directory, which leaves the BDF fonts in its subdirectories. For
4991example, assume that you unpacked Intlfonts in @file{C:/Intlfonts};
4992then you should set @code{bdf-directory-list} as follows:
4993
4994@lisp
4995 (setq bdf-directory-list
4996 '("C:/Intlfonts/Asian"
4997 "C:/Intlfonts/Chinese" "C:/Intlfonts/Chinese.X"
4998 "C:/Intlfonts/Chinese.BIG" "C:/Intlfonts/Ethiopic"
4999 "C:/Intlfonts/European" "C:/Intlfonts/European.BIG"
5000 "C:/Intlfonts/Japanese" "C:/Intlfonts/Japanese.X"
5001 "C:/Intlfonts/Japanese.BIG" "C:/Intlfonts/Korean.X"
5002 "C:/Intlfonts/Misc"))
5003@end lisp
5004
5005@cindex @code{w32-bdf-filename-alist}
5006@cindex @code{w32-find-bdf-fonts}
5007Next, you need to set up the variable @code{w32-bdf-filename-alist} to
5008an alist of the BDF fonts and their corresponding file names.
5009Assuming you have set @code{bdf-directory-list} to name all the
5010directories with the BDF font files, the following Lisp snippet will
5011set up @code{w32-bdf-filename-alist}:
5012
5013@lisp
5014 (setq w32-bdf-filename-alist
5015 (w32-find-bdf-fonts bdf-directory-list))
5016@end lisp
5017
5018Now, create fontsets for the BDF fonts:
5019
5020@lisp
5021 (create-fontset-from-fontset-spec
5022 "-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
5023 japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*,
5024 katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
5025 latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
5026 japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*,
5027 thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1,
5028 lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1,
5029 tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1,
5030 ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode,
5031 tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0")
5032@end lisp
5033
5034Many of the international bdf fonts from Intlfonts are type 0, and
5035therefore need to be added to font-encoding-alist:
5036
5037@lisp
5038 (setq font-encoding-alist
5039 (append '(("MuleTibetan-0" (tibetan . 0))
5040 ("GB2312" (chinese-gb2312 . 0))
5041 ("JISX0208" (japanese-jisx0208 . 0))
5042 ("JISX0212" (japanese-jisx0212 . 0))
5043 ("VISCII" (vietnamese-viscii-lower . 0))
5044 ("KSC5601" (korean-ksc5601 . 0))
5045 ("MuleArabic-0" (arabic-digit . 0))
5046 ("MuleArabic-1" (arabic-1-column . 0))
5047 ("MuleArabic-2" (arabic-2-column . 0)))
5048 font-encoding-alist))
5049@end lisp
5050
5051You can now use the Emacs font menu to select the @samp{bdf: 16-dot medium}
5052fontset, or you can select it by setting the default font in your
5053@file{~/.emacs}:
5054
5055@lisp
5056 (set-default-font "fontset-bdf")
5057@end lisp
5058
71e68827
DL
5059
5060@c ------------------------------------------------------------
5061@node Mail and news, Concept index, Alternate character sets, Top
5062@chapter Mail and news
5063@cindex Mail and news
5064
5065@menu
7a2fe6fa
TTN
5066* Changing the included text prefix::
5067* Saving a copy of outgoing mail::
5068* Expanding aliases when sending mail::
5069* Rmail thinks all messages are one big one::
5070* Sorting the messages in an Rmail folder::
5071* Rmail writes to /usr/spool/mail::
5072* Recovering mail files when Rmail munges them::
5073* Replying to the sender of a message::
5074* MIME with Emacs mail packages::
5075* Automatically starting a mail or news reader::
5076* Reading news with Emacs::
5077* Gnus does not work with NNTP::
5078* Viewing articles with embedded underlining::
5079* Saving a multi-part Gnus posting::
5080* Starting Gnus faster::
5081* Catching up in all newsgroups::
5082* Killing based on nonstandard headers::
5083* Removing flashing messages::
5084* Catch-up is slow in Gnus::
5085* Gnus hangs for a long time::
5086* Learning more about Gnus::
71e68827
DL
5087@end menu
5088
5089@node Changing the included text prefix, Saving a copy of outgoing mail, Mail and news, Mail and news
5090@section How do I change the included text prefix in mail/news followups?
5091@cindex Prefix in mail/news followups, changing
5092@cindex Included text prefix, changing
5093@cindex Setting the included text character
ed5c18e2 5094@cindex Quoting in mail messages
71e68827
DL
5095
5096If you read mail with Rmail or news with Gnus, set the variable
5097@code{mail-yank-prefix}. For VM, set @code{vm-included-text-prefix}.
5098For mh-e, set @code{mh-ins-buf-prefix}.
5099
5100For fancier control of citations, use Supercite. @xref{Supercite}.
5101
5102To prevent Emacs from including various headers of the replied-to
5103message, set the value of @code{mail-yank-ignored-headers} to an
5104appropriate regexp.
5105
5106@node Saving a copy of outgoing mail, Expanding aliases when sending mail, Changing the included text prefix, Mail and news
5107@section How do I save a copy of outgoing mail?
5108@cindex Saving a copy of outgoing mail
5109@cindex Copying outgoing mail to a file
5110@cindex Filing outgoing mail
5111@cindex Automatic filing of outgoing mail
5112@cindex Mail, saving outgoing automatically
5113
5114You can either mail yourself a copy by including a @samp{BCC} header in the
5115mail message, or store a copy of the message directly to a file by
5116including an @samp{FCC} header.
5117
5118If you use standard mail, you can automatically create a @samp{BCC} to
5119yourself by putting
5120
5121@lisp
5122(setq mail-self-blind t)
5123@end lisp
5124
ed5c18e2
EZ
5125@noindent
5126in your @file{.emacs} file. You can automatically include an @samp{FCC}
5127field by putting something like the following in your @file{.emacs}
5128file:
71e68827
DL
5129
5130@lisp
5131(setq mail-archive-file-name (expand-file-name "~/outgoing"))
5132@end lisp
5133
5134The output file will be in Unix mail format, which can be read directly
5135by VM, but not always by Rmail. @xref{Learning how to do something}.
5136
5137If you use @code{mh-e}, add an @samp{FCC} or @samp{BCC} field to your
5138components file.
5139
ed5c18e2 5140It does not work to put @samp{set record filename} in the @file{.mailrc}
71e68827
DL
5141file.
5142
5143@node Expanding aliases when sending mail, Rmail thinks all messages are one big one, Saving a copy of outgoing mail, Mail and news
5144@section Why doesn't Emacs expand my aliases when sending mail?
5145@cindex Expanding aliases when sending mail
5146@cindex Mail alias expansion
5147@cindex Sending mail with aliases
5148
5149@itemize @bullet
5150
5151@item
5152You must separate multiple addresses in the headers of the mail buffer
5153with commas. This is because Emacs supports RFC822 standard addresses
5154like this one:
5155
5156@example
5157To: Willy Smith <wks@@xpnsv.lwyrs.com>
5158@end example
5159
ed5c18e2
EZ
5160However, you do not need to---and probably should not, unless your
5161system's version of @file{/usr/ucb/mail} (a.k.a.@: @code{mailx})
5162supports RFC822---separate addresses with commas in your
5163@file{~/.mailrc} file.
71e68827
DL
5164
5165@item
5166Emacs normally only reads the @file{.mailrc} file once per session,
5167when you start to compose your first mail message. If you edit
ed5c18e2 5168@file{.mailrc}, you can type @kbd{M-x rebuild-mail-abbrevs @key{RET}} to
71e68827
DL
5169make Emacs reread @file{~/.mailrc}.
5170
5171@item
5172If you like, you can expand mail aliases as abbrevs, as soon as you
5173type them in. To enable this feature, execute the following:
5174
5175@lisp
49172314 5176(add-hook 'mail-mode-hook 'mail-abbrevs-setup)
71e68827
DL
5177@end lisp
5178
5179Note that the aliases are expanded automatically only after you type
5180@key{RET} or a punctuation character (e.g. @kbd{,}). You can force their
5181expansion by moving point to the end of the alias and typing @kbd{C-x a e}
ed5c18e2 5182(@kbd{M-x expand-abbrev}).
71e68827
DL
5183@end itemize
5184
5185@node Rmail thinks all messages are one big one, Sorting the messages in an Rmail folder, Expanding aliases when sending mail, Mail and news
5186@section Why does Rmail think all my saved messages are one big message?
5187@cindex Rmail thinks all messages are one large message
5188
5189A file created through the @samp{FCC} field in a message is in Unix mail
5190format, not the format that Rmail uses (BABYL format). Rmail will try
5191to convert a Unix mail file into BABYL format on input, but sometimes it
5192makes errors. For guaranteed safety, you can make the
5193@file{saved-messages} file be an inbox for your Rmail file by using the
5194function @code{set-rmail-inbox-list}.
5195
5196@node Sorting the messages in an Rmail folder, Rmail writes to /usr/spool/mail, Rmail thinks all messages are one big one, Mail and news
5197@section How can I sort the messages in my Rmail folder?
5198@cindex Rmail, sorting messages in
5199@cindex Folder, sorting messages in an Rmail
5200@cindex Sorting messages in an Rmail folder
5201
5202In Rmail, type @kbd{C-c C-s C-h} to get a list of sorting functions
5203and their key bindings.
5204
5205@node Rmail writes to /usr/spool/mail, Recovering mail files when Rmail munges them, Sorting the messages in an Rmail folder, Mail and news
5206@section Why does Rmail need to write to @file{/usr/spool/mail}?
5207@cindex Rmail and @file{/usr/spool/mail}
5208@cindex @file{/usr/spool/mail} and Rmail
5209
ed5c18e2
EZ
5210This is the behavior of the @code{movemail} program which Rmail uses.
5211This indicates that @code{movemail} is configured to use lock files.
71e68827
DL
5212
5213RMS writes:
5214
5215@quotation
5216Certain systems require lock files to interlock access to mail files.
ed5c18e2
EZ
5217On these systems, @code{movemail} must write lock files, or you risk losing
5218mail. You simply must arrange to let @code{movemail} write them.
71e68827 5219
ed5c18e2
EZ
5220Other systems use the @code{flock} system call to interlock access. On
5221these systems, you should configure @code{movemail} to use @code{flock}.
71e68827
DL
5222@end quotation
5223
5224@node Recovering mail files when Rmail munges them, Replying to the sender of a message, Rmail writes to /usr/spool/mail, Mail and news
5225@section How do I recover my mail files after Rmail munges their format?
5226@cindex Recovering munged mail files
5227@cindex Rmail munged my files
5228@cindex Mail files, recovering those munged by Rmail
5229
ed5c18e2
EZ
5230If you have just done @kbd{M-x rmail-input} on a file and you don't want
5231to save it in Rmail's format (called BABYL), just kill the buffer (with
71e68827
DL
5232@kbd{C-x k}).
5233
ed5c18e2 5234@cindex Exporting messages as Unix mail files
71e68827
DL
5235If you typed @kbd{M-x rmail} and it read some messages out of your inbox
5236and you want to put them in a Unix mail file, use @kbd{C-o} on each
5237message.
5238
ed5c18e2
EZ
5239@cindex Converting from BABYL to Unix mail format
5240@cindex @code{unrmail} command
71e68827
DL
5241If you want to convert an existing file from BABYL format to Unix mail
5242format, use the command @kbd{M-x unrmail}: it will prompt you for the
5243input and output file names.
5244
a6ce7e4c
EZ
5245@pindex b2m
5246Alternatively, you could use the @code{b2m} program supplied with
5247Emacs. @code{b2m} is a filter, and is used like this:
5248
5249@example
5250 b2m < @var{babyl-file} > @var{mbox-file}
5251@end example
5252
5253@noindent
5254where @var{babyl-file} is the name of the BABYL file, and
5255@var{mbox-file} is the name of the file where the converted mail will
5256be written.
5257
71e68827
DL
5258@node Replying to the sender of a message, MIME with Emacs mail packages, Recovering mail files when Rmail munges them, Mail and news
5259@section How can I force Rmail to reply to the sender of a message, but not the other recipients?
5260@cindex Replying only to the sender of a message
5261@cindex Sender, replying only to
5262@cindex Rmail, replying to the sender of a message in
5263
5264@email{isaacson@@seas.upenn.edu, Ron Isaacson} says: When you hit
5265@key{r} to reply in Rmail, by default it CCs all of the original
5266recipients (everyone on the original @samp{To} and @samp{CC}
5267lists). With a prefix argument (i.e., typing @kbd{C-u} before @key{r}),
5268it replies only to the sender. However, going through the whole
5269@kbd{C-u} business every time you want to reply is a pain. This is the
5270best fix I've been able to come up with:
5271
5272@lisp
5273(defun rmail-reply-t ()
5274 "Reply only to the sender of the current message. (See rmail-reply.)"
5275 (interactive)
5276 (rmail-reply t))
5277
5278(add-hook 'rmail-mode-hook
43aef553
SM
5279 (lambda ()
5280 (define-key rmail-mode-map "r" 'rmail-reply-t)
5281 (define-key rmail-mode-map "R" 'rmail-reply)))
71e68827
DL
5282@end lisp
5283
5284@node MIME with Emacs mail packages, Automatically starting a mail or news reader, Replying to the sender of a message, Mail and news
7a2fe6fa 5285@section How can I get my favorite Emacs mail package to support MIME?
71e68827
DL
5286@cindex MIME and Emacs mail packages
5287@cindex Mail packages and MIME
5288@cindex FAQ for MIME and Emacs
5289
ed5c18e2
EZ
5290Version 6.x of VM supports MIME. @xref{VM}. Gnus supports MIME in mail
5291and news messages as of version 5.8.1 (Pterodactyl). Rmail has limited
5292support for single-part MIME messages beginning with Emacs 20.3.
71e68827
DL
5293
5294@node Automatically starting a mail or news reader, Reading news with Emacs, MIME with Emacs mail packages, Mail and news
5295@section How do I make Emacs automatically start my mail/news reader?
5296@cindex Mail reader, starting automatically
5297@cindex News reader, starting automatically
5298@cindex Starting mail/news reader automatically
5299
5300To start Emacs in Gnus:
5301
5302@example
5303emacs -f gnus
5304@end example
5305
ed5c18e2 5306@noindent
71e68827
DL
5307in Rmail:
5308
5309@example
5310emacs -f rmail
5311@end example
5312
5313A more convenient way to start with Gnus:
5314
5315@example
5316alias gnus 'emacs -f gnus'
5317gnus
5318@end example
5319
5320It is probably unwise to automatically start your mail or news reader
5321from your @file{.emacs} file. This would cause problems if you needed to run
ed5c18e2 5322two copies of Emacs at the same time. Also, this would make it difficult for
71e68827
DL
5323you to start Emacs quickly when you needed to.
5324
5325@node Reading news with Emacs, Gnus does not work with NNTP, Automatically starting a mail or news reader, Mail and news
5326@section How do I read news under Emacs?
5327@cindex Reading news under Emacs
5328@cindex Usenet reader in Emacs
5329@cindex Gnus newsreader
5330
ed5c18e2
EZ
5331Use @kbd{M-x gnus}. It is documented in Info (@pxref{Learning how to do
5332something}).
71e68827
DL
5333
5334@node Gnus does not work with NNTP, Viewing articles with embedded underlining, Reading news with Emacs, Mail and news
5335@section Why doesn't Gnus work via NNTP?
5336@cindex Gnus and NNTP
5337@cindex NNTP, Gnus fails to work with
5338
5339There is a bug in NNTP version 1.5.10, such that when multiple requests
5340are sent to the NNTP server, the server only handles the first one
5341before blocking waiting for more input which never comes. NNTP version
53421.5.11 claims to fix this.
5343
5344You can work around the bug inside Emacs like this:
5345
5346@lisp
5347(setq nntp-maximum-request 1)
5348@end lisp
5349
5350You can find out what version of NNTP your news server is running by
5351telnetting to the NNTP port (usually 119) on the news server machine
ed5c18e2
EZ
5352(i.e., @kbd{telnet server-machine 119}). The server should give its
5353version number in the welcome message. Type @kbd{quit} to get out.
71e68827 5354
0d17cd5c 5355@xref{Spontaneous entry into isearch-mode}, for some additional ideas.
71e68827
DL
5356
5357@node Viewing articles with embedded underlining, Saving a multi-part Gnus posting, Gnus does not work with NNTP, Mail and news
5358@section How do I view news articles with embedded underlining (e.g., ClariNews)?
5359@cindex Underlining, embedded in news articles
5360@cindex News articles with embedded underlining
5361@cindex Embedded underlining in news articles
5362
5363Underlining appears like this:
5364
5365@example
5366_^Hu_^Hn_^Hd_^He_^Hr_^Hl_^Hi_^Hn_^Hi_^Hn_^Hg
5367@end example
5368
ed5c18e2 5369@email{abraham@@dina.kvl.dk, Per Abrahamsen} suggests using the following
71e68827 5370code, which uses the underline face to turn such text into true
ed5c18e2 5371underlining, inconjunction with Gnus:
71e68827
DL
5372
5373@lisp
5374(defun gnus-article-prepare-overstrike ()
5375 ;; Prepare article for overstrike commands.
5376 (save-excursion
5377 (set-buffer gnus-article-buffer)
5378 (let ((buffer-read-only nil))
5379 (goto-char (point-min))
5380 (while (search-forward "\b" nil t)
5381 (let ((next (following-char))
5382 (previous (char-after (- (point) 2))))
5383 (cond ((eq next previous)
5384 (delete-region (- (point) 2) (point))
5385 (put-text-property (point) (1+ (point))
5386 'face 'bold))
5387 ((eq next ?_)
5388 (delete-region (1- (point)) (1+ (point)))
5389 (put-text-property (1- (point)) (point)
5390 'face 'underline))
5391 ((eq previous ?_)
5392 (delete-region (- (point) 2) (point))
5393 (put-text-property (point) (1+ (point))
5394 'face 'underline))))))))
5395
5396(add-hook 'gnus-article-prepare-hook 'gnus-article-prepare-overstrike)
5397@end lisp
5398
ed5c18e2
EZ
5399Latest versions of Gnus do such a conversion automatically.
5400
71e68827
DL
5401If you prefer to do away with underlining altogether, you can
5402destructively remove it with @kbd{M-x ununderline-region}; do this
5403automatically via
5404
5405@lisp
5406(add-hook 'gnus-article-prepare-hook
43aef553 5407 (lambda () (ununderline-region (point-min) (point-max))))
71e68827
DL
5408@end lisp
5409
5410@node Saving a multi-part Gnus posting, Starting Gnus faster, Viewing articles with embedded underlining, Mail and news
5411@section How do I save all the items of a multi-part posting in Gnus?
5412@cindex Multi-part postings in Gnus, saving
5413@cindex Saving multi-part postings in Gnus
5414@cindex Gnus, saving multi-part postings in
5415
5416Use @code{gnus-uu}. Type @kbd{C-c C-v C-h} in the Gnus summary buffer
5417to see a list of available commands.
5418
5419@node Starting Gnus faster, Catching up in all newsgroups, Saving a multi-part Gnus posting, Mail and news
5420@section How do I make Gnus start up faster?
5421@cindex Faster, starting Gnus
5422@cindex Starting Gnus faster
5423@cindex Gnus, starting faster
5424
5425From the Gnus FAQ (@pxref{Learning more about Gnus}):
5426
5427@quotation
5428@email{pktiwari@@eos.ncsu.edu, Pranav Kumar Tiwari} writes: I posted
5429the same query recently and I got an answer to it. I am going to
5430repeat the answer. What you need is a newer version of gnus, version
54315.0.4+. I am using 5.0.12 and it works fine with me with the
5432following settings:
5433
5434@lisp
5435(setq gnus-check-new-newsgroups nil
5436 gnus-read-active-file 'some
5437 gnus-nov-is-evil nil
5438 gnus-select-method '(nntp gnus-nntp-server))
5439@end lisp
5440@end quotation
5441
5442@node Catching up in all newsgroups, Killing based on nonstandard headers, Starting Gnus faster, Mail and news
5443@section How do I catch up all newsgroups in Gnus?
5444@cindex Catching up all newsgroups in Gnus
5445@cindex Gnus, Catching up all newsgroups in
5446
5447In the @file{*Newsgroup*} buffer, type @kbd{M-< C-x ( c y C-x ) M-0 C-x e}
5448
5449Leave off the initial @kbd{M-<} if you only want to catch up from point
5450to the end of the @file{*Newsgroup*} buffer.
5451
5452@node Killing based on nonstandard headers, Removing flashing messages, Catching up in all newsgroups, Mail and news
5453@section Why can't I kill in Gnus based on the Newsgroups/Keywords/Control headers?
5454@cindex Killing articles based on nonstandard headers
5455@cindex Newsgroups header, killing articles based on
5456@cindex Keywords header, killing articles based on
5457@cindex Control header, killing articles based on
5458
5459Gnus will complain that the @samp{Newsgroups}, @samp{Keywords}, and
ed5c18e2 5460@samp{Control} headers are ``Unknown header'' fields.
71e68827
DL
5461
5462For the @samp{Newsgroups} header, there is an easy workaround: kill on the
5463@samp{Xref} header instead, which will be present on any cross-posted article
5464(as long as your site carries the cross-post group).
5465
5466If you really want to kill on one of these headers, you can do it like
5467this:
5468
5469@lisp
5470(gnus-kill nil "^Newsgroups: .*\\(bad\\.group\\|worse\\.group\\)")
5471@end lisp
5472
5473@node Removing flashing messages, Catch-up is slow in Gnus, Killing based on nonstandard headers, Mail and news
5474@section How do I get rid of flashing messages in Gnus for slow connections?
5475@cindex Flashing Gnus messages, removing
5476@cindex Removing flashing Gnus messages
5477@cindex Slow connections causing flashing messages in Gnus
5478@cindex Gnus, flashing messages in
5479
5480Set @code{nntp-debug-read} to @code{nil}.
5481
5482@node Catch-up is slow in Gnus, Gnus hangs for a long time, Removing flashing messages, Mail and news
5483@section Why is catch up slow in Gnus?
5484@cindex Slow catch up in Gnus
5485@cindex Gnus is slow when catching up
5486@cindex Crosspostings make Gnus catching up slow
5487
5488Because Gnus is marking crosspostings read. You can control this with
5489the variable @code{gnus-use-cross-reference}.
5490
5491@node Gnus hangs for a long time, Learning more about Gnus, Catch-up is slow in Gnus, Mail and news
5492@section Why does Gnus hang for a long time when posting?
5493@cindex Hangs in Gnus
5494@cindex Gnus hangs while posting
5495@cindex Posting, Gnus hangs wile
5496
5497@email{tale@@uunet.uu.net, David Lawrence} explains:
5498
5499@quotation
5500The problem is almost always interaction between NNTP and C News. NNTP
ed5c18e2
EZ
5501POST asks C News's @code{inews} to not background itself but rather hang
5502around and give its exit status so it knows whether the post was successful.
71e68827
DL
5503(That wait will on some systems not return the exit status of the
5504waited for job is a different sort of problem.) It ends up taking a
ed5c18e2
EZ
5505long time because @code{inews} is calling @code{relaynews}, which often
5506waits for another @code{relaynews} to free the lock on the news system
5507so it can file the article.
5508
5509My preferred solution is to change @code{inews} to not call
5510@code{relaynews}, but rather use @code{newsspool}. This loses some
5511error-catching functionality, but is for the most part safe as
5512@code{inews} will detect a lot of the errors on its own. The C News
5513folks have sped up @code{inews}, too, so speed should look better to
5514most folks as that update propagates around.
71e68827
DL
5515@end quotation
5516
5517@node Learning more about Gnus, , Gnus hangs for a long time, Mail and news
5518@section Where can I find out more about Gnus?
5519@cindex FAQ for Gnus
5520@cindex Gnus FAQ
e6838fd8 5521@cindex Learning more about Gnus
71e68827 5522
228bea33
GM
5523For more information on Gnus, consult the Gnus manual and FAQ, which are
5524part of the Gnus distribution.
71e68827
DL
5525
5526@node Concept index, , Mail and news, Top
5527@unnumbered Concept Index
5528@printindex cp
5529
5530@contents
5531@bye
ab5796a9
MB
5532
5533@ignore
5534 arch-tag: fee0d62d-06cf-43d8-ac21-123408eaf10f
5535@end ignore