1 This is a list of frequently asked questions (FAQ) about GNU Emacs with
2 answers. This list is designed to cut down on the noise in the
3 gnu.emacs.help newsgroup (which is also the help-gnu-emacs mailing list)
4 that results from people repeatedly asking many of the same questions.
6 This list is maintained by me, Joe Wells. My e-mail address is
7 jbw@bu.edu. If jbw@bu.edu doesn't work try jbw@bucsf.bu.edu.
9 Feel free to contribute text for the answers that I haven't written yet,
10 to suggest new questions, to suggest changes in the wording, to suggest
11 deletions, etc. Please include either "FAQ" or "frequently asked
12 questions" in the subject of messages you send to me to help keep me from
13 accidentally filing your message in the wrong mail folder.
15 Here is a short list of new questions and questions that are now answered:
19 Why doesn't "C-c C-c" interrupt subprocesses under HP/UX?
20 How do I make Emacs send 8-bit characters to my terminal?
21 Why does ispell sometimes ignore the local dictionary?
22 Where can I get Emacs with NeWS support?
24 Questions with improved answers:
26 Has someone written an GNU Emacs Lisp package that does XXX?
27 How do I get Emacs running on VMS under DECwindows?
28 Why does Emacs crash from a bus error in XLookupString under OpenLook?
29 Why does Emacs hang with message "Unknown XMenu" with X11R4?
30 How do I use regexps (regular expressions) in Emacs?
31 How do I make Emacs "typeover" or "overwrite" when I type instead of
33 How do I get Emacs for my PC?
34 How can I highlight a region?
35 Where can I get GNU Emacs Lisp packages that don't come with Emacs?
36 Where can I get the latest VM, Supercite, GNUS, Calc, Calendar, or Patch?
40 Where does the name "Emacs" come from?
41 In C mode, can I show just the lines that will be left after #ifdef
42 commands are handled by the compiler?
43 What does "M-x command" mean?
44 How do I get a printed copy of the GNU Emacs manual?
45 What do things like this mean: C-h, M-C-a, RET, etc.?
46 Why doesn't GNUS work anymore via NNTP?
47 What does Emacs do every time it starts up?
52 Joe Wells <jbw@bu.edu>
53 -------------------------------------------------
54 GNU Emacs Frequently Asked Questions with Answers (part 1 of 2)
56 Sat Dec 8 01:30:53 1990
59 If you are viewing this file in a GNU Emacs Buffer, you can type "M-2 C-x
60 $" to get an overview of just the questions. Then, when you want to look
61 at the text of the answers, just type "C-x $".
63 To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a
64 C-r if that doesn't work, then type ESC to end the search.
67 Notation Used in the Answers (READ THIS SECTION FIRST!)
69 You may skip this section if you are reasonably familiar with GNU Emacs.
70 Some of these are not actually frequently asked questions, but knowing
71 them is important for understanding the answers to the rest of the
74 1: What do things like this mean: C-h, M-C-a, RET, etc.?
76 C-a means while holding down the "Control" key press the "a" key. The
77 ASCII code this sends will generally be the value that would be sent by
78 pressing just "a" minus 96 or 64. Either way it will be a number from 0
81 M-a means while holding down the "Meta" key press the "a" key. The
82 ASCII code this sends is the sum of the ASCII code that would be sent by
83 pressing just "a" and 128.
85 M-C-a means while holding down both the "Control" key and the "Meta" key
88 C-M-a is a synonym for M-C-a.
90 RET means press the "Return" key. RET is the same as C-m. This sends
93 LFD means press the "Linefeed" key. LFD is also the same as C-j. This
94 sends ASCII code 10. Under Unix, ASCII code 10 is more often called
97 DEL means press the "Delete" key. DEL is the same as C-?. This sends
100 ESC means press the "Escape" key. ESC is the same as C-[. This sends
103 SPC means press the "Space" key. This send ASCII code 32.
105 TAB means press the "Tab" key. TAB is the same as C-i. This send ASCII
108 To read more about this online, type "C-h i m emacs RET m characters
109 RET", and also "C-h i m emacs RET m keys RET".
111 2: What do you mean when you write things like this: type "ESC a"?
113 I will enclose key sequences that are longer than one key inside double
114 quotes. These notations refer to single keys (some with modifiers):
117 RET, LFD, DEL, ESC, SPC, TAB
119 I separate these from other keys within double quotes by spaces. Any
120 real spaces that I write inside double quotes can be ignored, only SPC
121 means press the space key. All other characters within double quotes
122 represent single keys (some shifted).
124 3: What if I don't have a Meta key?
126 Instead of typing M-a, you can type "ESC a" instead. In fact, Emacs
127 converts M-a internally into "ESC a" anyway.
129 4: What if I don't have an Escape key?
131 Type C-[ instead. This should send ASCII code 27 just like an Escape
134 5: What does "M-x command" mean?
136 "M-x command" means type M-x, then type the name of the command, then
139 M-x is simply the default key sequence that invokes the command
140 "execute-extended-command". This command allows you to run any Emacs
141 command if you can remember the command's name. If you can't remember
142 the command's name, you can type TAB and SPC for completion, and ? for a
143 list of possibilities. An Emacs "command" is any "interactive" Emacs
146 NOTE: Your system administrator may have bound other key sequences to
147 invoke execute-extended-command. A function key labeled "Do" is a good
150 To run non-interactive Emacs functions, use M-ESC instead and type a
153 6: What do things like this mean: etc/SERVICE, src/config.h,
156 These are the names of files that are part of the GNU Emacs
157 distribution. The GNU Emacs distribution is so big that it is divided
158 into several subdirectories; the important subdirectories are named
159 "etc", "lisp", and "src".
161 If you use GNU Emacs, but don't know where it is kept on your system,
162 start Emacs, then type "C-h v exec-directory RET". The directory name
163 that is displayed by this will be the full pathname of the "etc"
164 directory of your installed GNU Emacs distribution.
166 Some of these files are available individually via FTP or e-mail, see
169 7: What are FSF, LPF, OSF, GNU, RMS, FTP, BTW, and GPL?
171 FSF == Free Software Foundation
172 LPF == League for Programming Freedom
173 OSF == Open Software Foundation
174 GNU == GNU's Not Unix
175 RMS == Richard M. Stallman
176 FTP == File Transfer Protocol
178 GPL == GNU General Public Licence
180 NOTE: Avoid confusing the FSF, the LPF, and the OSF. The LPF only
181 opposes look-and-feel copyrights and software patents. The FSF aims to
182 make high quality free software available for everyone. The OSF is a
183 commercial organization which wants to provide an alternative,
184 standardized version of Unix not controlled by AT&T.
188 Sources of Information and Help
190 8: I'm just starting GNU Emacs; how do I do basic editing?
192 Type "C-h t" to invoke the self-paced tutorial. Typing just C-h is
193 how to enter the help system.
195 WARNING: your system administrator may have changed C-h to act like DEL.
196 You can use M-x help-for-help instead to invoke help. To discover what
197 key (if any) invokes help on your system, type "M-x where-is RET
198 help-for-help RET". This will print a comma-separated list of key
199 sequences in the echo area. Ignore the last character in each key
200 sequence listed. Each of the resulting key sequences invokes help.
202 NOTE: Emacs's help facility works best if help is invoked by a single
203 key. The variable help-char should hold the value of this character.
205 9: How do I find out how to do something in GNU Emacs?
207 There are several methods for finding out how to do things in Emacs.
209 You should become familiar with the online documentation for Emacs. The
210 complete text of the Emacs manual is available online in a hypertext
211 format via the "Info" manual reader. Type "C-h i" to invoke Info.
213 You can order a hardcopy of the manual from the FSF. See question 12.
215 You can list all of the commands whose names contain a certain word
216 (actually which match a regular expression) using the "command-apropos"
217 command. Type "C-h a" to invoke this command.
219 You can list all of the functions and variables whose names contain a
220 certain word using the "apropos" command. M-x apropos invokes this
223 You may find that command-apropos and apropos are extremely slow on your
224 system. This will be fixed in Emacs 19. If you can't wait that long,
225 I can send you the "fast-apropos.el" file that contains the fix. This
226 file also contains a "super-apropos" command that will list all the
227 functions and variables whose documentation strings contain a certain
230 There are many other commands in Emacs for getting help and information.
231 To get a list of these commands, type "C-h C-h C-h".
233 10: Where can I get GNU Emacs on the net (or by snail mail)?
235 Look in the files etc/DISTRIB and etc/FTP for information. If you don't
236 already have GNU Emacs, see question 16.
238 11: Where can I get help in installing GNU Emacs?
240 Look in the file etc/SERVICE for names of companies and individuals who
241 will sell you this type of service.
243 This file in the version 18.55 distribution is not completely up to
244 date. The imminent release of 18.56 will help that. An up-to-date
245 version of the SERVICE file is available on prep.ai.mit.edu. See
246 question 16 for how to retrieve this file.
248 12: How do I get a printed copy of the GNU Emacs manual?
250 You can order a printed copy of the GNU Emacs manual from the FSF for
251 $15. A set of 6 manuals is $60.
253 The full TeX source for the manual also comes with Emacs, if you're
254 daring enough to try to print out this 300 page manual yourself. (We're
255 talking about killing an entire tree here. This kind of printer usage
256 can make you very unpopular. Besides, if you order it from the FSF, the
257 price may be tax-deductible as a business expense.)
259 If you absolutely have to print your own copy, and you don't have TeX,
260 you can get a PostScript version from:
263 site: abcfd20.larc.nasa.gov
264 file: /pub/docs/emacs-18.55.PS.Z (size: 472K)
266 Carl Witty <cwitty@cs.stanford.edu> writes:
268 The Emacs manual is also available online in the Info system, which is
269 available by typing "C-h i". In this form, it has hypertext links and
270 is very easy to browse or search; many people prefer it to the printed
273 13: Has someone written an GNU Emacs Lisp package that does XXX?
275 Probably. A listing of Emacs Lisp packages, called the Lisp Code
276 Directory, is being maintained by Dave Brennan <brennan@dg-rtp.dg.com>.
277 You can search through this list to find if someone has written
278 something that fits your needs.
280 This list is file "LCD-datafile.Z" in the Emacs Lisp Archive. (See
281 question 14.) The files "lispdir.el.Z" and "lispdir.doc.Z"
282 in the archive contain information to help you use the list.
284 14: Where can I get GNU Emacs Lisp packages that don't come with Emacs?
286 First, check the Lisp Code Directory to find the name of the package you
287 are looking for. (See question 13). Then check local archives and
288 the Emacs Lisp Archive to find a copy of the relevant files. Then, if
289 you still haven't found it, you can send e-mail to the author asking for
292 You can access the Emacs Lisp Archive via:
295 site: tut.cis.ohio-state.edu
296 directory: /pub/gnu/emacs/elisp-archive
299 NOTE: Any files with names ending in ".Z" are compressed, and you should
300 use "binary" mode in FTP to retrive them. You should also use binary
301 mode whenever you retrieve any files with names ending in ".elc".
303 Submissions for the archive should be sent to Dave Sill <de5@ornl.gov>.
304 If you have ftp access, the submission can be deposited in the directory
305 /pub/gnu/emacs/elisp-archive/incoming on tut.cis.ohio-state.edu.
306 Whenever possible submissions should contain an LCD-datafile entry since
307 this helps reduce administrative overhead for the maintainers. Before
308 submitting anything, first read the file "guidelines.Z", which is
309 available in the archive.
311 15: Where can I get documentation on GNU Emacs Lisp?
313 Obtain the GNU Emacs Lisp Reference Manual for Emacs 18 under Unix. It
314 is available from the FSF for $50. The latest revision is edition 1.02
317 Within Emacs, you can type "C-h f" to get the documentation for a
318 function, "C-h v" for a variable.
320 Also, as a popular USENET saying goes, "Use the Force, Read the Source".
322 You can also get the Texinfo source for the manual, if you are daring
323 enough to try to print this 550 page manual out yourself. This is
324 available in the Emacs Lisp Archive and also via:
327 site: prep.ai.mit.edu
328 file: /pub/gnu/elisp.tar.Z
330 A set of pregenerated Info files comes with the Texinfo source for the
331 Emacs Lisp manual, so you don't have to format it yourself for online
332 use. (You can create the Info files from the Texinfo source.) See
333 question 21 for details on how to install these files online.
335 16: What informational files are available?
337 This isn't a frequently asked question, but it should be!
339 The following files are available in the "etc" directory of the GNU
340 Emacs distribution, and also the latest versions are available
344 site: prep.ai.mit.edu
345 directory: /pub/gnu/etc
347 APPLE -- Special Report: Apple's New Look and Feel
348 DISTRIB -- GNU Emacs Availability Information,
349 including the popular "Free Software Foundation Order Form"
350 FTP -- How to get GNU Software by Internet FTP or by UUCP
351 GNU -- The GNU Manifesto
352 INTERVIEW -- Richard Stallman discusses his public-domain
353 UNIX-compatible software system
355 MACHINES -- Status of GNU Emacs on Various Machines and Systems
356 MAILINGLISTS -- GNU Project Electronic Mailing Lists
357 SERVICE -- GNU Service Directory
358 SUN-SUPPORT -- includes the popular "Using Emacstool with GNU Emacs"
360 These files are available in the "etc" directory of the GNU Emacs
363 DIFF -- Differences between GNU Emacs and Twenex Emacs
364 CCADIFF -- Differences between GNU Emacs and CCA Emacs
365 GOSDIFF -- Differences between GNU Emacs and Gosling (Unipress??) Emacs
366 COPYING -- GNU Emacs General Public License
367 NEWS -- GNU Emacs News, a history of user-visible changes
369 In addition, all of the above files are available directly from the FSF
370 via e-mail. Of course, please try to get them from a local source
373 These files are available from the FSF via e-mail:
375 * GNU's Bulletin, June, 1990 -- this file includes:
377 What Is the Free Software Foundation?
380 Possible New Terms for GNU Libraries by Richard Stallman
381 "League for Programming Freedom" by Michael Bloom and Richard Stallman
382 Free Software Support
383 GNU Project Status Report
386 GNU Software Available Now
387 Contents of the Emacs Release Tape
388 Contents of the Pre-Release Tape
389 Contents of the X11 Tapes
390 VMS Emacs and Compiler Tapes
391 How to Get GNU Software
392 Freemacs, an Extensible Editor for MS-DOS
396 * GNU Coding Standards
397 * Legal issues about contributing code to GNU
398 * GNU Project Status Report
400 17: What is the current address of the FSF?
403 Free Software Foundation
404 675 Massachusetts Avenue
405 Cambridge, MA 02139, USA
411 gnu@prep.ai.mit.edu {probably read by Len Tower}
414 18: What is the current address of the LPF?
417 League for Programming Freedom
418 1 Kendall Square, Number 143
420 Cambridge, MA 02139, USA
423 (617) 243-4061 { or 243-4091, I'm not sure ... }
426 league@prep.ai.mit.edu
428 19: Where can I get the up-to-date GNU stuff?
430 The most up-to-date official GNU stuff is normally kept on
431 prep.ai.mit.edu and is available for anonymous FTP. See the files
432 etc/DISTRIB and etc/FTP for more information. (To get copies of these
433 files, see question 16.)
435 20: Where can I get the latest VM, Supercite, GNUS, Calc, Calendar, or Patch?
439 Author: Kyle Jones <kyle@xanth.cs.odu.edu>
441 Mailing lists: info-vm-request@uunet.uu.net
443 bug-vm-request@uunet.uu.net
448 Last released version: 4.41
449 site: tut.cis.ohio-state.edu
450 file: /pub/gnu/vm/vm-4.41.tar.Z
452 Beta test version: 5.18
453 site: abcfd20.larc.nasa.gov
458 Author: Barry Warsaw <warsaw@warsaw.nlm.nih.gov>
462 Mailing lists: supercite@warsaw.nlm.nih.gov
463 supercite-request@warsaw.nlm.nih.gov
466 site: durer.cme.nist.gov [129.6.32.4]
467 files:/pub/gnu/elisp/supercite-2.1.shar.0# (where # is replaced by 1 or 2)
469 NOTE: Superyank is an old version of Supercite.
473 Author: Masanobu Umeda
478 site: tut.cis.ohio-state.edu
479 files: /pub/gnu/gnus/3.13.##-of-11.Z (where ## is replaced by 00 -- 11)
483 Author: Dave Gillespie <daveg@csvax.cs.caltech.edu>
488 site: csvax.cs.caltech.edu [131.215.131.131]
489 or any comp.sources.misc archive
493 Author: Ed Reingold <reingold@cs.uiuc.edu>
498 Subject: send-emacs-cal
499 body: your best internet e-mail address
503 Author: Larry Wall <lwall@jpl-devvax.jpl.nasa.gov>
505 Latest version: 2.0 patchlevel 12
508 site: any comp.sources.unix archive
512 site: archive.cs.ruu.nl [131.211.80.5]
513 file: /pub/UNIX/patch-2.0.tar.Z
515 21: How do I install a piece of Texinfo documentation?
517 First create Info files from the Texinfo files with M-x
518 texinfo-format-buffer. There is also a program called "makeinfo" that
519 provides better error checking and runs faster. Currently, it comes
520 with the Emacs Lisp manual (which comes on the GNU Emacs tape).
522 For information about the Texinfo format, read the Texinfo manual which
523 comes with Emacs. This manual also comes installed in Info format, so
524 you can read it online.
526 Neither texinfo-format-buffer nor the makeinfo program install the
527 resulting Info files in Emacs's Info tree. To install Info files:
529 1. Move the files to the "info" directory in the installed Emacs
530 distribution. See question 6 if you don't know where that
533 2. Edit the file info/dir in the installed Emacs distribution, and add a
534 line for the top level node in the Info package that you are
537 22: What is the real legal meaning of the GNU copyleft?
541 The legal meaning of the GNU copyleft is less important than the spirit,
542 which is that Emacs is a free software project and that work pertaining
543 to Emacs should also be free software. "Free" means that all users have
544 the freedom to study, share, change and improve Emacs. To make sure
545 everyone has this freedom, pass along source code when you distribute
546 any version of Emacs or a related program, and give the recipients the
547 same freedom that you enjoyed.
549 If you still want to find out about the legal meaning of the copyleft,
550 please ask yourself if this means you are not paying attention to the
553 23: What are appropriate messages for gnu.emacs.help/gnu.emacs.bug/comp.emacs
556 The file etc/MAILINGLISTS discusses the purpose of each GNU
557 mailing-list. (See question 16 on how to get a copy.) For
558 those which are gatewayed with newsgroups, it lists both the newsgroup
559 name and the mailing list address.
561 comp.emacs is for discussion of Emacs programs in general. This
562 includes GNU Emacs along with various other implementations like JOVE,
563 MicroEmacs, Freemacs, MG, Unipress, CCA, etc.
565 Many people post GNU Emacs questions to comp.emacs because they don't
566 receive any of the gnu.* newsgroups. Arguments have been made both for
567 and against posting GNU-Emacs-specific material to comp.emacs. You have
568 to decide for yourself.
570 24: Should I send questions directly to people who post a lot on the net,
571 instead of posting myself?
573 I don't know about the others, but please don't send such messages to me
574 just because you don't want to disturb a lot of people. Send messages
575 to individuals that concern things that individual has written.
579 GNU Emacs, all its Variants, and other Editors
581 25: Where does the name "Emacs" come from?
583 EMACS originally was an acronym for Editor MACroS. The first Emacs was
584 a set of macros written by Richard Stallman for the editor TECO (Tape
585 Editor and COrrector {Text Editor and COrrector?}) on a PDP-10.
586 (Amusing fact: many people have told me that TECO code looks a lot like
589 26: What is the latest version of GNU Emacs?
591 GNU Emacs 18.55. GNU Emacs 18.56 is coming out with some bug fixes, but
592 no additional functionality.
594 27: When will GNU Emacs 19 be available?
596 Good question, I don't know. For that matter, neither do the
597 developers. It will undoubtedly be available sometime in the 1990s.
599 28: What will be different about GNU Emacs 19?
601 From the latest "GNU's Bulletin":
603 Version 19 approaches release with a host of new features: before and
604 after change hooks; X selection processing (including CLIPBOARD
605 selections); scrollbars; support for European character sets; floating
606 point numbers; per-buffer mouse commands; interfacing with the X
607 resource manager; mouse-tracking; Lisp-level binding of function keys;
608 and multiple X windows (`screens' to Emacs).
610 Thanks go to Alan Carroll and the people who worked on Epoch for
611 generating initial feedback to a multi-windowed Emacs. Emacs 19
612 supports two styles of multiple windows, one with a separate screen for
613 the minibuffer, and another with a minibuffer attached to each screen.
615 More features of Version 19 are buffer allocation, which uses a new
616 mechanism capable of returning storage to the system when a buffer is
617 killed, and a new input system---all input now arrives in the form of
620 Other features being considered for Version 19 include:
622 * Associating property lists with regions of text in a buffer.
623 * Multiple font, color, and pixmaps defined by those properties.
624 * Different visibility conditions for the regions, and for the various
625 windows showing one buffer.
626 * Incremental syntax analysis for various programming languages.
627 * Hooks to be run if point or mouse moves outside a certain range.
628 * Source-level debugging for Emacs Lisp.
629 * Incrementally saving undo history in a file, so that recover-file also
630 reinstalls buffer's undo history.
631 * Static menu bars, and better pop-up menus.
632 * A more sophisticated emacsclient/server model, which would provide
633 network transparent Emacs widget functionality.
635 Also, Emacs 19 will have a Emacs Lisp source code debugger.
637 29: Is there an Emacs that has better mouse and X window support?
639 Emacs 18 has some limited X Window System support, but there are
640 problems. Emacs 19 will have amazing mouse and window support. Right
641 now, there is a modified version of Emacs 18.55 called "Epoch" which has
642 greatly improved mouse and window support. The latest version of Epoch
647 directory: pub/epoch-files/epoch
648 file: epoch-3.2b (b stands for beta)
650 NOTE: Epoch only works with the X Window System; it does not work on
653 30: How do I get Emacs for my PC?
655 GNU Emacs won't run on a PC directly under MS-DOS. There have been
656 reports of people running GNU Emacs under a special program under MS-DOS
657 on 286 or 386 machines, but I don't know the details.
659 You can try a variety of similar programs such as MG, MicroEmacs,
662 Russ Nelson <nelson@sun.soe.clarkson.edu>, the author, describes
665 * Freemacs is free, and it was designed from the start to be
667 * Freemacs is the only IBM-PC editor that tries to be like GNU Emacs.
668 * Freemacs can only edit files less than 64K in length.
669 * Freemacs doesn't have undo.
671 Carl Witty <cwitty@cs.stanford.edu> writes about Freemacs:
673 Better is Freemacs, which follows the tradition of ITS and GNU Emacs
674 by having an full, turing-complete extension language which is
675 incompatible with everything else. In fact, it's even closer to ITS
676 Emacs than GNU Emacs is, because Mint (Freemacs' extension language)
677 is absolutely illegible without weeks of study, much like TECO.
679 You can get Freemacs several ways:
682 site: simtel20.army.mil, directory: PD:<MSDOS.FREEMACS>
683 site: grape.ecs.clarkson.edu [128.153.13.196], directory: /e/freemacs
686 address: archive-server@sun.soe.clarkson.edu, or
687 archive-server%sun.soe@omnigate (BITNET), or
688 {smart-host}!sun.soe.clarkson.edu!archive-server (UUCP)
692 address: Russell Nelson, 11 Grant St., Potsdam, NY 13676
693 Send $15 copying fee, and specify preferred floppy disk format:
694 5.25", 1.2 Meg, or 5.25", 360K, or 3.50", 720K
696 I don't know much about MicroEmacs. All I know is that the latest
697 version is 3.10 and it is available via:
700 site: durer.cme.nist.gov
702 Another Emacs for small machines is Jove (Jonathan's Own Version of
703 Emacs). The latest version is 4.9. It is available via:
706 sites: hipl.psych.nyu.edu, cs.toronto.edu, cayuga.cs.rochester.edu
708 Yet another Emacs is "mg", which used to stand for MicroGNUEmacs, but
709 now just stands for "mg". It is available via:
712 site: snow.white.toronto.edu
714 31: Where can I get Emacs for my Atari ST?
716 The latest version for the ST is available via:
719 site: cs.uni-sb.de [134.96.7.254]
720 directory: /pub/atari/emacs
722 32: Where can I get Emacs with NeWS support?
724 Chris Maio's NeWS support package for GNU Emacs is available via:
728 file: /pub/ps-emacs.tar.Z
730 site: tut.cis.ohio-state.edu
731 file: /pub/gnu/emacs/ps-emacs.tar.Z
735 Binding Keys to Commands
737 33: Why does my key binding fail?
739 Most likely, it failed because "ESC [" was already defined. Evaluate
742 (define-key esc-map "[" nil)
744 34: Why doesn't this [terminal or window-system setup] code work in my
745 .emacs file, but it works just fine after Emacs starts up?
747 This is because you're trying to do something in your .emacs file that
748 needs to be postponed until after the terminal/window-system setup code
749 is loaded. This is a result of the order in which things are done
750 during the startup of Emacs.
752 In order to postpone the execution of Emacs Lisp code until after the
753 terminal/window-system setup, set the value of the variable
754 term-setup-hook or window-setup-hook to be a function which does what
757 See question 72 for a complete explanation of what Emacs
758 does every time it is started.
760 Here is a simple example of how to set term-setup-hook:
762 (setq term-setup-hook
765 (if (string-match "^vt220" (or (getenv "TERM") ""))
766 ;; Make vt220's "Do" key behave like M-x:
767 (define-key CSI-map "29~" 'execute-extended-command)))))
769 35: How do I use function keys under X Windows?
771 If compiled on a Sun, Emacs recognizes the function keys that are
772 normally on a Sun keyboard, and you can bind them the same way you
773 normally bind Sun keys. Each function key will generate a key sequence
774 that looks like "ESC [ ### z", where ### is replaced by a number.
776 If not compiled on a Sun, the function keys will appear to Emacs in a
777 way remarkably similar to the keys of a VT220 terminal. Each function
778 key will generate a key sequence that looks like "ESC [ ### ~".
780 For the complete list of the numbers which are generated by the function
781 keys, look in the file src/x11term.c.
783 However, this may be inadequate for you if you have function keys Emacs
784 doesn't know about. Johan Vromans <jv@mh.nl> explains:
786 There are a number of tricks that can be helpful. The most elegant
787 solution, however, is to use the function "x-rebind-key". This function
788 is commented out in the source for good reasons --- it's buggy.
790 It is rather easy to replace this function with the function
791 epoch:rebind-key from the Epoch distribution.
793 After implementing this, all keyboard keys can be configured to send
794 user definable sequences, e.g.
796 (x-rebind-key "KP_F1" 0 "\033OP")
798 This will have the keypad key PF1 send the sequence \eOP, just like an
799 ordinary VTxxx terminal.
801 Another method is to handle the keys in the C source. Although this may
802 be slightly more efficient, it is much less flexible.
804 Finally, some people have established a convention to have the special
805 keys send a sequence of characters that indicate the key and its
806 modifiers instead of a plain escape sequence. This is also a good
807 method. The advantage of sending the plain escape sequences is that you
808 require only one setup for Emacs running under X and on normal
811 (x-rebind-key "KP_F1" 0 "\033OP")
813 will have key PF1 send \eOP, and, probably in another setup file:
815 (global-set-key "\eOP" 'specific-function)
817 to bind PF1 to a function. The last statement applies for normal VTxxx
820 36: How do I tell what characters my function keys emit?
822 Use this function by Randal L. Schwartz <merlyn@iwarp.intel.com>:
825 "Displays characters typed, terminated by a 3-second timeout."
829 (message "Enter characters, terminated by 3-second timeout.")
830 (while (not (sit-for 3))
831 (setq chars (concat chars (list (read-char)))
832 quit-flag nil)) ; quit-flag maybe set by C-g
833 (message "Characters entered: %s" (key-description chars))))
837 Problems with Key Bindings and Input
839 37: Why does Emacs spontaneously go into "I-search:" mode?
841 Your terminal (or something between your terminal and the computer) is
842 sending C-s and C-q for flow control, and Emacs is receiving these
843 characters and interpreting them as commands. (The C-s character
844 normally invokes the isearch-forward command.)
846 For a more detailed discussion, read the file PROBLEMS in the Emacs
849 38: What do I do if my terminal is sending C-s and C-q for flow control and
852 Use this piece of Emacs Lisp:
854 (set-input-mode nil t)
856 39: How do I make Emacs use C-s and C-q for flow control instead of for
859 Same answer as previous question.
861 40: How do I use commands bound to C-s and C-q (or any key) if these keys
864 I suggest swapping C-s with C-\ and C-q with C-^:
866 (swap-keys ?\C-s ?\C-\\)
867 (swap-keys ?\C-q ?\C-^)
869 See question 41 for the implementation of swap-keys.
871 41: How do I "swap" two keys?
873 When Emacs receives a character, you can make Emacs behave as though it
874 received another character by setting the value of
875 keyboard-translate-table. The following Emacs Lisp will do this for
876 you, allowing you to "swap" keys.
878 WARNING: the value of C-g (7) is hard coded in several places both
879 before and after the translation specified by keyboard-translate-table
880 is carried out. Thus, swapping C-g with another key may cause problems;
881 rebinding C-g may also cause problems. (Well, I've never done it, so I
882 don't know for sure.)
884 (defun swap-keys (key1 key2)
885 "Swap keys KEY1 and KEY2 using map-key."
886 (map-key key1 key2 t)
889 (defvar map-keys-alist nil
890 "Association list of key mappings currently in effect.
891 If (FROM . TO) is an element, that means key FROM is currently mapped to TO.")
893 (defun map-key (from to &optional no-update)
894 "Make key FROM behave as though key TO was typed instead.
895 If optional argument NO-UPDATE is non-nil, the key-mapping does not take
896 effect until a subsequent map-key or unmap-key."
897 (let ((alist-entry (assq from map-keys-alist)))
899 (setcdr alist-entry to)
900 (setq map-keys-alist (cons (cons from to) map-keys-alist))))
901 (or no-update (map-keys-update)))
903 (defun unmap-key (key)
904 "Undo any mapping of key KEY."
905 (setq map-keys-alist (delq (assq key map-keys-alist) map-keys-alist))
908 ;; Makes keyboard-translate-table reflect the key mappings in
911 (defun map-keys-update ()
912 (if (null map-keys-alist)
913 ;; Emacs runs fasted if keyboard-translate-table is nil
914 (setq keyboard-translate-table nil)
915 (let ((max-key-mapped
916 ;; Find the mapped key with largest value
924 ;; keyboard-translate-table doesn't have to be any longer than
925 ;; necessary. This speeds up Emacs.
926 (setq keyboard-translate-table (make-string (1+ max-key-mapped) 0))
927 (while (<= i max-key-mapped)
928 (aset keyboard-translate-table i (or (cdr (assq i map-keys-alist)) i))
931 42: Why does the "Backspace" key invoke help?
933 The Backspace key (on every keyboard I've used) sends ASCII code 8. C-h
934 sends the same code. In Emacs by default C-h invokes "help-command".
935 The easiest solution to this problem is to use C-h (and Backspace) for
936 help and DEL (the Delete key) for deleting the previous character.
938 For some people this solution may be problematic:
940 1. They normally use Backspace outside of Emacs for deleting the
941 previous character typed. This can be solved by making DEL be the
942 command for deleting the previous character outside of Emacs. This
943 command will do this on many Unix systems:
947 2. The person may prefer using the Backspace key for deleting the
948 previous character because it is more conveniently located on their
949 keyboard or because they don't even have a separate Delete key. In
950 this case, the best solution is to swap C-h and DEL:
952 (swap-keys ?\C-h ?\C-?)
954 See question 41 for the implementation of swap-keys.
956 43: How do I type DEL on PC terminal emulators?
958 Someone whose name I forgot wrote:
960 Most PCs have deficient keyboards that don't have both Backspace and
961 Delete keys. Whether C-h (backspace) or DEL is generated by the
962 "Backspace" key varies from one terminal emulator to another. If you're
963 lucky, you can reconfigure the keyboard so that it generates DEL. If
964 not, you will have to hunt to figure out what keystroke will do it ---
965 possibilities include various shifted and controlled versions of
966 "Backspace", the "Del" key on the numeric keypad (which might depend on
967 "Shift" or "NumLock"), or perhaps C-? (Control-?).
969 If this is too hard, you may want to swap the delete key with some other
970 key. See question 42.
974 Building/Installing/Porting Emacs and Machine/OS-Specific Bugs:
976 44: Why do I get an "f68881_used undefined" error, when I build Emacs on my
979 Barry A. Warsaw <warsaw@cme.nist.gov> writes:
981 Some of the code that is being linked on the "ld" line of emacs'
982 build command has been compiled with the -f68881 option. Most
983 common reason is that you're linking with X libraries which were
984 built with -f68881 option set. You need to either remove all
985 dependencies to the 68881 (may mean a recompile of the X libraries
986 with -fswitch or -fsoft option), or you need to link emacs with
987 the 68881 startup file /usr/lib/Mcrt1.o. Make this change to
990 change: #define START_FILES crt0.o
991 to: #define START_FILES crt0.o /usr/lib/Mcrt1.o
993 The order of these start files is critical.
995 45: Why does Emacs crash under SunOS 4.1?
997 Under SunOS 4.1, Emacs dies with this message:
999 Fatal error (6).Abort
1001 There is a bug in the "localtime" routine supplied with SunOS 4.1.
1002 A private function called by tzsetwall zeroes the byte just past an
1003 eight byte region it mallocs. This corrupts GNU malloc's memory pool.
1005 Put "#define SYSTEM_MALLOC" in src/config.h.
1007 Or, for the purists:
1009 Put "#define SUNOS_LOCALTIME_BUG" in src/config.h and apply the following
1010 patch to src/malloc.c.
1012 (Patch by Eirik Fuller <eirik@elf.tn.cornell.edu>.)
1014 >*** malloc.c~ Fri Apr 7 22:12:10 1989
1015 >--- malloc.c Tue May 8 07:07:22 1990
1019 > multiple of 8, then figure out which nestf[] area to use.
1020 > Both the beginning of the header and the beginning of the
1021 > block should be on an eight byte boundary. */
1022 >+ #ifdef SUNOS_LOCALTIME_BUG
1023 >+ /* SunOS 4.1 localtime scribbles on the ninth byte. */
1024 >+ nbytes = (n + ((sizeof *p + 15) & ~15) + EXTRA + 15) & ~15;
1026 > nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
1029 > register unsigned int shiftr = (nbytes - 1) >> 2;
1032 46: Why does Emacs occasionally cause segmentation faults and machine
1033 panics on my DECstation 3100?
1035 Bruce Cole <cole@dip.cs.wisc.edu> writes:
1037 > We're running Emacs 18.54 on an Ultrix Risc DECsystem 5400. Three
1038 > times we've had the machine hang with the following message:
1040 > panic: tblmod on invalid pte
1042 > Ultrix support tells us this is caused by Emacs. Has anyone
1043 > experienced this? DEC says it only happens on RISC boxes.
1045 This is due to a MIPS specific Ultrix kernel bug. I sent DEC a
1046 description of the bug with a bug fix. The Kernel bug manifests itself
1047 with Emacs since Emacs uses a non-standard data start address on Ultrix
1050 I haven't often seen Emacs cause MIPS machines to panic. Usually you
1051 just see one of the following errors when you try to start up Emacs:
1053 segmentation fault (core dumped)
1056 data size rlimit exceeded, pid 6523, process tcsh (for example)
1058 Until DEC fixes their kernel, you can avoid the bug by changing the data
1059 start address used by Emacs.
1061 > I have built two newer versions of GNU Emacs and it still happens. I
1062 > should also mention that these faults happen quite rarely to some
1063 > users (I may see it once a month), while other users see it a few
1064 > times a week or even daily!
1066 The problem only occurs when a MIPS machine is doing a lot of paging.
1067 Users who don't cause their workstation to page will not see this
1070 Patch to GNU Emacs 18.55:
1072 >*** m-pmax.h Thu Jun 8 11:53:55 1989
1073 >--- m-pmax.h.new Mon Jul 9 10:21:21 1990
1077 > #include "m-mips.h"
1078 > #undef LIBS_MACHINE
1080 >+ #undef LD_SWITCH_MACHINE
1081 >+ #undef DATA_START
1082 >+ #define DATA_START 0x10000000
1083 >+ #define DATA_SEG_BITS 0x10000000
1085 47: How do I get Emacs running on VMS under DECwindows?
1087 Hal R. Brand <BRAND@addvax.llnl.gov> is said to have a VMS save set with
1088 a ready-to-run VMS version of Emacs for X Windows. It is available via:
1091 site: addvax.llnl.gov
1093 Johan Vromans <jv@mh.nl> writes:
1095 Getting Emacs to run on VMS with DECwindows requires a number of changes
1096 to the sources. Fortunately this has been done already. Joshua Marantz
1097 <josh@viewlogic.com> did most of the work for Emacs 18.52, and the mods
1098 were ported to 18.55 by Johan Vromans <jv@mh.nl>. Also included is the
1099 handling of DEC's LK201 keyboard. You need to apply the changes to a
1100 fresh Emacs 18.55 distribution on a Unix system, and then you can copy
1101 the sources to VMS to perform the compile/link/build.
1103 The set of changes have been posted a number of times three times the
1104 last 12 months, so they should be widely available.
1106 48: Why won't src/alloc.c compile on a SPARCstation?
1108 {Could someone send me a better description of the symptoms ... Does it
1109 really not compile, or does it refuse to link, or does it die when it's
1112 An object in src/alloc.c is declared as an array of char. However, on a
1113 SPARCstation, this object must be aligned on a longword boundary.
1114 gcc will align this object not on a longword boundary because it thinks
1115 this is ok because the object is an array of char.
1119 (Patch from the Epoch source code.)
1121 >*** dist-18.55.dist/src/alloc.c Mon Feb 13 05:23:35 1989
1122 >--- dist-18.55/src/alloc.c Mon Nov 27 23:30:13 1989
1125 > #define NSTATICS 200
1127 >- char staticvec1[NSTATICS * sizeof (Lisp_Object *)] = {0};
1129 > int staticidx = 0;
1131 > #define staticvec ((Lisp_Object **) staticvec1)
1133 > /* Put an entry in staticvec, pointing at the variable whose address is given */
1135 > #define NSTATICS 200
1137 > int staticidx = 0;
1140 >+ Lisp_Object *staticvec[NSTATICS] = {0};
1142 >+ char staticvec1[NSTATICS * sizeof (Lisp_Object *)] = {0};
1143 > #define staticvec ((Lisp_Object **) staticvec1)
1146 > /* Put an entry in staticvec, pointing at the variable whose address is given */
1148 {Does anyone understand why one might want to declare staticvec as an
1149 array of char instead of an array of LispObject?}
1151 49: Why do shells started from Emacs suspend themselves under SunOS 4.1?
1153 In SunOS 4.1, when subprocesses are started by an Emacs process started
1154 by "rsh", the process stops with a message like this:
1156 Process shell stopped (tty input)
1158 SunOS 4.1 uses the POSIX standard's specification for job control.
1159 Basically, a process must be a session leader to acquire a new
1160 controlling terminal.
1162 A quick fix is to run Emacs as "/usr/etc/setsid emacs" instead.
1164 To fix it in Emacs, use this patch:
1166 (Patch by Eirik Fuller <eirik@elf.tn.cornell.edu>.)
1168 >*** /tmp/,RCSt1a12635 Fri Jul 6 11:29:10 1990
1169 >--- process.c Sat Jun 16 14:04:55 1990
1173 > int j = open ("/dev/tty", O_RDWR, 0);
1174 > ioctl (j, TIOCNOTTY, 0);
1180 > #endif /* TIOCNOTTY */
1183 50: Why does Emacs crash from a bus error in XLookupString under OpenLook?
1185 The Sun OpenLook libraries use the XComposeStatus parameter on
1186 XLookupString for composing key sequences. I'm told this is actually
1187 supposed to be an optional parameter.
1189 (Patch by David J. MacKenzie <djm@eng.umd.edu>.)
1191 >*** dist-18.55.dist/src/x11term.c Wed Aug 2 21:56:42 1989
1192 >--- dist-18.55/src/x11term.c Fri Jul 13 19:22:32 1990
1196 > #endif /* not sun */
1198 >+ static XComposeStatus status;
1200 > internal_socket_read(bufp, numchars)
1201 > register unsigned char *bufp;
1204 > BLOCK_INPUT_DECLARE ();
1206 >- XComposeStatus status;
1212 > nbytes = XLookupString (&event,
1213 > mapping_buf, 20, &keysym,
1215 > /* Someday this will be unnecessary as we will
1216 > be able to use XRebindKeysym so XLookupString
1218 > nbytes = XLookupString (&event,
1219 > mapping_buf, 20, &keysym,
1221 > /* Someday this will be unnecessary as we will
1222 > be able to use XRebindKeysym so XLookupString
1224 51: Why doesn't "C-c C-c" interrupt subprocesses under HP/UX?
1226 Paul Stravers <stravers@dutentb.tudelft.nl> writes:
1228 In HP/UX we can (must) combine the two distinct calls
1229 1. ioctl (fildes, TIOCGPGRP, &gid);
1230 2. kill (-gid, signo);
1231 into the single call
1232 1+2. ioctl (fildes, TIOCSIGSEND, signo);
1234 This is apparently the case under at least HP/UX versions 6.5 and 7.0.
1236 Here is a set of patches courtesy of Piet van Oostrum <piet@cs.ruu.nl>
1237 that fixes these problems:
1239 1. Signals to child processes work now (like the C-c C-c mentioned above)
1241 2. When running under X11, C-g now correctly interrupts long-running commands
1243 3. When running under X11, the window is redislayed even if emacs is doing
1244 some work (e.g. if your window becomes visible after being behind another
1247 4. A nasty bug in alloca is solved. This bug is very infrequent unless you
1248 apply the other patches.
1250 {I don't know for sure whether all of these patches are applicable only
1251 under HP/UX. Perhaps someone can tell me.}
1253 >*** alloca.s.~1~ Fri Sep 15 16:35:39 1989
1254 >--- alloca.s Tue May 1 17:18:08 1990
1257 > sub.l &MAXREG*4,%d1 # space for saving registers
1258 > mov.l %d1,%sp # save new value of sp
1259 > tst.b PROBE(%sp) # create pages (sigh)
1260 > move.w &MAXREG-1,%d0
1261 > copy_regs_loop: /* save caller's saved registers */
1262 >! mov.l (%a1)+,(%sp)+
1263 > dbra %d0,copy_regs_loop
1264 >! mov.l %sp,%d0 # return value
1266 > add.l &-4,%sp # adjust tos
1268 > #endif /* new hp assembler */
1270 > sub.l &MAXREG*4,%d1 # space for saving registers
1271 > mov.l %d1,%sp # save new value of sp
1272 > tst.b PROBE(%sp) # create pages (sigh)
1273 >+ mov.l %a2,%d1 # save reg a2
1275 > move.w &MAXREG-1,%d0
1276 > copy_regs_loop: /* save caller's saved registers */
1277 >! mov.l (%a1)+,(%a2)+
1278 > dbra %d0,copy_regs_loop
1279 >! mov.l %a2,%d0 # return value
1280 >! mov.l %d1,%a2 # restore a2
1281 > add.l &-4,%sp # adjust tos
1283 > #endif /* new hp assembler */
1285 >*** keyboard.c.~1~ Wed Apr 4 14:53:49 1990
1286 >--- keyboard.c Thu Apr 26 14:46:27 1990
1290 > errno = old_errno;
1294 >+ /* tells if an alarm is outstanding for emptying the socket */
1295 >+ int socket_alarm;
1298 >+ empty_socket_interrupt()
1301 >+ char buf[256 * BUFFER_SIZE_FACTOR];
1303 >+ int old_errno = errno;
1305 >+ if (waiting_for_input) return;
1307 >+ fcntl (fileno (stdin), F_SETFL, O_NDELAY);
1309 >+ /* Read what is waiting. */
1311 >+ nread = (*read_socket_hook) (0, buf, sizeof buf);
1314 >+ if (nread == -1 && (errno == EAGAIN || errno == EBADSLT))
1316 >+ if (nread == -1 && errno == EAGAIN)
1320 >+ fcntl (fileno (stdin), F_SETFL, 0);
1322 >+ /* Scan the chars for C-g and store them in kbd_buffer. */
1323 >+ kbd_ptr = kbd_buffer;
1324 >+ for (i = 0; i < nread; i++)
1326 >+ kbd_buffer_store_char (buf[i]);
1327 >+ /* Don't look at input that follows a C-g too closely.
1328 >+ This reduces lossage due to autorepeat on C-g. */
1329 >+ if (buf[i] == Ctl ('G'))
1333 >+ /* reestablish interrupt */
1334 >+ signal (SIGALRM, empty_socket_interrupt);
1337 >+ errno = old_errno;
1340 >+ #endif /* HPUX */
1342 > /* read a character from the keyboard; call the redisplay if needed */
1343 > /* commandflag 0 means do not do auto-saving, but do do redisplay.
1344 > -1 means do not do redisplay, but do do autosaving.
1349 > extern request_echo ();
1352 >+ if (socket_alarm) {
1354 >+ socket_alarm = 0;
1358 > if ((c = unread_command_char) >= 0)
1360 > unread_command_char = -1;
1368 >+ if (read_socket_hook) {
1369 >+ socket_alarm = 1;
1370 >+ signal (SIGALRM, empty_socket_interrupt);
1381 > #else /* no FIONREAD */
1386 > fcntl (fileno (stdin), F_SETFL, O_NDELAY);
1387 >! kbd_ptr = kbd_buffer;
1388 > if (read_socket_hook)
1390 >! kbd_count = (*read_socket_hook) (0, kbd_buffer, sizeof kbd_buffer);
1394 >! kbd_count = read (fileno (stdin), kbd_buffer, sizeof kbd_buffer);
1397 >! if (kbd_count == -1 && (errno == EAGAIN || errno == EBADSLT))
1399 >! if (kbd_count == -1 && errno == EAGAIN)
1402 > fcntl (fileno (stdin), F_SETFL, 0);
1403 > #else /* not USG */
1405 > #endif /* not USG */
1408 > #else /* no FIONREAD */
1410 >+ char buf[256 * BUFFER_SIZE_FACTOR];
1420 >+ if (socket_alarm)
1421 >+ mask = sigblock (sigmask (SIGALRM));
1424 > fcntl (fileno (stdin), F_SETFL, O_NDELAY);
1426 >! /* Read what is waiting. */
1427 > if (read_socket_hook)
1428 >! nread = (*read_socket_hook) (0, buf, sizeof buf);
1430 >! nread = read (fileno(stdin), buf, sizeof buf);
1432 >! if (nread == -1 && (errno == EAGAIN || errno == EBADSLT))
1434 >! if (nread == -1 && errno == EAGAIN)
1438 > fcntl (fileno (stdin), F_SETFL, 0);
1440 >+ /* Scan the chars for C-g and store them in kbd_buffer. */
1441 >+ kbd_ptr = kbd_buffer;
1442 >+ for (i = 0; i < nread; i++)
1444 >+ kbd_buffer_store_char (buf[i]);
1445 >+ /* Don't look at input that follows a C-g too closely.
1446 >+ This reduces lossage due to autorepeat on C-g. */
1447 >+ if (buf[i] == Ctl ('G'))
1452 >+ if (socket_alarm)
1453 >+ sigsetmask(mask);
1456 > #else /* not USG */
1458 > #endif /* not USG */
1460 >*** x11term.h~ Fri Sep 15 15:20:26 1989
1461 >--- x11term.h Thu Apr 26 14:03:25 1990
1465 > #define sigmask(no) (1L << ((no) - 1))
1469 > #define BLOCK_INPUT_DECLARE() int BLOCK_INPUT_mask
1470 >+ #define BLOCK_INPUT() BLOCK_INPUT_mask = sigblock (sigmask (SIGALRM))
1471 >+ #define UNBLOCK_INPUT() sigsetmask (BLOCK_INPUT_mask)
1472 >+ #else /* not HPUX */
1473 >+ #define BLOCK_INPUT_DECLARE() int BLOCK_INPUT_mask
1475 > #define BLOCK_INPUT() BLOCK_INPUT_mask = sigblock (sigmask (SIGIO))
1476 > #define UNBLOCK_INPUT() sigsetmask (BLOCK_INPUT_mask)
1480 > #define BLOCK_INPUT()
1481 > #define UNBLOCK_INPUT()
1482 > #endif /* SIGIO */
1483 >+ #endif /* HPUX */
1485 > #define CLASS "emacs" /* class id for GNU Emacs, used in .Xdefaults, etc. */
1487 >*** process.c.orig Fri Sep 15 16:28:36 1989
1488 >--- process.c Fri Apr 20 13:17:06 1990
1492 > signal (SIGHUP, SIG_DFL);
1494 > #endif /* HAVE_PTYS */
1496 >+ /* Give child clean slate for signals */
1499 >+ sigrelse (SIGCHLD);
1500 >+ #else /* not BSD4_1 */
1503 >+ #endif /* HPUX */
1504 >+ #if defined (BSD) || defined (UNIPLUS)
1506 >+ #else /* ordinary USG */
1507 >+ signal (SIGCHLD, sigchld);
1508 >+ #endif /* ordinary USG */
1509 >+ #endif /* not BSD4_1 */
1510 >+ #endif /* SIGCHLD */
1512 > child_setup_tty (xforkout);
1513 > child_setup (xforkin, xforkout, xforkout, new_argv, env);
1517 > if (read_kbd && kbd_count)
1521 > nfds = select (MAXDESC, &Available, 0, 0, &timeout);
1524 >- nfds = select (MAXDESC, &Available, 0, 0, &timeout);
1526 > nfds = select (MAXDESC, &Available, 0, &Exception, &timeout);
1531 > if (fix_screen_hook)
1533 > if (read_kbd && kbd_count)
1536 >! #if defined (IBMRTAIX) || defined (HPUX)
1537 > nfds = select (MAXDESC, &Available, 0, 0, &timeout);
1539 > nfds = select (MAXDESC, &Available, 0, &Exception, &timeout);
1543 > if (fix_screen_hook)
1547 > error ("Process %s is not active",
1548 > XSTRING (p->name)->data);
1550 >+ #ifndef HPUX /* Can't get gid of tty's controlling session */
1551 > #ifdef TIOCGPGRP /* Not sure about this! (fnf) */
1552 > /* If we are using pgrps, get a pgrp number and make it negative. */
1553 > if (!NULL (current_group))
1557 > the child itself heads the pgrp. */
1558 > gid = - XFASTINT (p->pid);
1559 > #endif /* not using pgrps */
1560 >+ #endif /* not HPUX */
1567 > flush_pending_output (XFASTINT (p->infd));
1572 >+ if (!NULL (current_group))
1573 >+ ioctl (XFASTINT (p->infd), TIOCSIGSEND, signo);
1575 >+ kill (XFASTINT (p->pid), signo);
1576 >+ #else /* not HPUX */
1577 > /* gid may be a pid, or minus a pgrp's number */
1579 > /* On bsd, [man says] kill does not accept a negative number to kill a pgrp.
1583 > #else /* Not BSD. */
1584 > kill (gid, signo);
1585 > #endif /* Not BSD. */
1586 >+ #endif /* Not HPUX */
1588 > /* Put notices in buffers now, since it is safe now.
1589 > Because of this, we know that a process we have just killed
1592 This is a separate patch to process.c, distinct from the immediately
1593 preceding one. Both should be applied.
1595 >*** process.c.~1~ Fri Apr 20 13:17:06 1990
1596 >--- process.c Wed Oct 24 16:38:15 1990
1599 > /* If the subfork execv fails, and it exits,
1600 > this close hangs. I don't know why.
1601 > So have an interrupt jar it loose. */
1602 >! signal (SIGALRM, create_process_1);
1607 > if (forkin != forkout && forkout >= 0)
1611 > /* If the subfork execv fails, and it exits,
1612 > this close hangs. I don't know why.
1613 > So have an interrupt jar it loose. */
1615 >! { int old_trap = signal (SIGALRM, create_process_1);
1616 >! int old_alarm = alarm (1);
1620 >! signal (SIGALRM, old_trap);
1621 >! /* don't bother with possible 1 sec loss */
1622 >! if (old_alarm) alarm (old_alarm);
1624 > if (forkin != forkout && forkout >= 0)
1627 52: What should I do if I have trouble building Emacs?
1631 If you try to build Emacs and it does not run, the first thing to do is
1632 look in the file called PROBLEMS to see if a solution is given there.
1634 If none is given, then please send a report by mail to
1635 bug-gnu-emacs@prep.ai.mit.edu. Please do not send it to
1636 help-gnu-emacs@prep.ai.mit.edu.
1638 Sending to help-gnu-emacs (which has the effect of posting on
1639 gnu.emacs.help) is undesirable because it takes the time of an
1640 unnecessarily large group of people, most of whom are just users and
1641 have no idea how to fix these problem. bug-gnu-emacs reaches a much
1642 smaller group of people who are more likely to know what to do and have
1643 expressed a wish to receive more messages about Emacs than the others.
1645 Weird/Confusing Problems:
1647 53: Does Emacs have problems with files larger than 8 Megs?
1649 Most installed versions of GNU Emacs will use 24 bit signed integers
1650 (and 24 bit pointers!) internally. This limits the file size that Emacs
1651 can handle to 8388608 bytes.
1653 Leonard N. Zubkoff <lnz@lucid.com> writes:
1655 Putting the following two lines in src/config.h before compiling Emacs
1656 allows for 26 bit integers and pointers:
1659 #define GCTYPEBITS 5
1661 See question 54 for an explanation.
1663 54: Why does Emacs use 24 bit integers and pointers?
1665 David Gillespie <daveg@csvax.cs.caltech.edu> writes:
1667 Emacs is largely written in a dialect of Lisp; Lisp is a freely-typed
1668 language in the sense that you can put any value of any type into any
1669 variable, or return it from a function, and so on. So each value must
1670 carry a "tag" along with it identifying what kind of thing it is, e.g.,
1671 integer, pointer to a list, pointer to an editing buffer, and so on.
1672 Emacs uses standard 32-bit integers for data objects, taking the top 8
1673 bits for the tag and the bottom 24 bits for the value. So integers (and
1674 pointers) are somewhat restricted compared to true C integers and
1677 Emacs uses 8-bit tags because that's a little faster on byte-oriented
1678 machines, but there are only really enough tags to require 6 bits. See
1679 question 53 to find how to recompile Emacs with 6-bit tags and
1680 26-bit integers and pointers if space is at a premium for you.
1682 55: Why does Emacs start up using the wrong directory?
1684 Most likely, you have an environment variable named PWD that is set to a
1685 value other than the name of your current directory. This is most
1686 likely caused by using two different shell programs. "ksh" and (some
1687 versions of) "csh" set and maintain the value of the PWD environment
1688 variable, but "sh" doesn't. If you start sh from ksh, change your
1689 current directory inside sh, and then start Emacs from inside sh, PWD
1690 will have the wrong value but Emacs will use this value. See question
1693 56: How do I edit a file with a "$" in its name?
1695 When entering a filename in the minibuffer, Emacs will attempt to expand
1696 a "$" followed by a word as an environment variable. To suppress this
1697 behavior, type "$$" instead.
1699 57: Why does Shell Mode lose track of the shell's current directory?
1701 Emacs has no way of knowing when the shell actually changes its
1702 directory. So it tries to guess by recognizing cd commands. A number
1703 of fixes and enhancements to Shell Mode have been written, check the
1704 Emacs Lisp Archive (question 14).
1706 58: Why doesn't Emacs expand my aliases when sending mail?
1708 First, you must separate multiple addresses with commas.
1710 Emacs normally only reads the ".mailrc" file once per session, when you
1711 start to compose your first mail message. If you edit .mailrc, you can
1712 type "M-ESC (build-mail-aliases) RET" to make Emacs reread .mailrc.
1714 59: Why doesn't setting default-directory always work?
1716 There is a separate value of default-directory for each Emacs buffer.
1717 The value in the current buffer is the one that is used.
1719 60: Why does my change to load-path not work?
1721 If you added file names with tildes (~) in them to your load-path,
1722 you'll need to do something like this:
1724 (setq-default load-path (mapcar 'expand-file-name load-path))
1726 61: Why does the cursor always go to the wrong column when I move up or
1729 You have inadvertently typed "C-x C-n" (set-goal-column) which sets the
1730 "goal-column" to the column where the cursor was. To undo this type
1733 If you make this mistake frequently, you might want to unbind this
1734 command by doing (define-key ctl-x-map "\C-n" nil).
1736 62: Why don't the command line switches documented in the man page work?
1738 The "man page", ie. the file etc/emacs.1, hasn't been updated in a
1739 while. The command line switches that it says work with X Windows are
1740 for X10. See question 72 for details on what switches are
1741 available using X11. {Would someone like to rewrite the man page? RMS
1742 asked me and I haven't had time yet.}
1744 63: Why does gnus-Subject-mail-reply chop off the last character of the
1747 There is a bug in some rnews functions that GNUS uses. Here is a patch:
1749 (Patch supplied by Karl Kleinpaste <karl_kleinpaste@cis.ohio-state.edu>.)
1751 >*** rnewspost.el.orig Thu Oct 5 10:32:47 1989
1752 >--- rnewspost.el Thu Oct 5 10:32:47 1989
1756 > (narrow-to-region (point-min) (progn (goto-line (point-min))
1757 > (search-forward "\n\n")
1759 > (setq from (mail-fetch-field "from")
1760 > subject (mail-fetch-field "subject")
1761 > reply-to (mail-fetch-field "reply-to")
1764 > (narrow-to-region (point-min) (progn (goto-line (point-min))
1765 > (search-forward "\n\n")
1767 > (setq from (mail-fetch-field "from")
1768 > subject (mail-fetch-field "subject")
1769 > reply-to (mail-fetch-field "reply-to")
1772 > ;@@ but rnews.el lacks support
1773 > (narrow-to-region (point-min) (progn (goto-char (point-min))
1774 > (search-forward "\n\n")
1775 >! (- (point) 2)))))
1776 > (setq from (mail-fetch-field "from")
1777 > news-reply-yank-from from
1778 > ;; @@ not handling old Title: field
1780 > ;@@ but rnews.el lacks support
1781 > (narrow-to-region (point-min) (progn (goto-char (point-min))
1782 > (search-forward "\n\n")
1783 >! (- (point) 1)))))
1784 > (setq from (mail-fetch-field "from")
1785 > news-reply-yank-from from
1786 > ;; @@ not handling old Title: field
1789 > ;@@ but rnews.el lacks support
1790 > (narrow-to-region (point-min) (progn (goto-char (point-min))
1791 > (search-forward "\n\n")
1792 >! (- (point) 2)))))
1793 > (setq news-reply-yank-from (mail-fetch-field "from")
1794 > ;; @@ not handling old Article-I.D.: field
1795 > news-reply-yank-message-id (mail-fetch-field "message-id")))
1797 > ;@@ but rnews.el lacks support
1798 > (narrow-to-region (point-min) (progn (goto-char (point-min))
1799 > (search-forward "\n\n")
1800 >! (- (point) 1)))))
1801 > (setq news-reply-yank-from (mail-fetch-field "from")
1802 > ;; @@ not handling old Article-I.D.: field
1803 > news-reply-yank-message-id (mail-fetch-field "message-id")))
1805 64: Why does Emacs hang with message "Unknown XMenu" with X11R4?
1807 Many different X errors can produce this message. Here is the solution
1810 X11 Release 4 now enforces some conditions in the X protocol that were
1811 previously allowed to pass unnoticed. You need to put the X11R4 server
1812 into X11R3 bug compatibility mode for Emacs's Xmenu code to work. You
1813 can do this with the command "xset bc".
1815 65: Why isn't the load average displayed by display-time?
1817 The most likely cause of the problem is that "loadst" can't read the
1818 special file /dev/kmem. To properly install loadst, it should be either
1819 setuid to the owner of /dev/kmem, or is should be setgid to the group to
1820 which /dev/kmem belongs. In either case, /dev/kmem should be readable by
1821 its owner or its group, respectively.
1823 Another possibility is that your version of Unix doesn't have the load
1824 average data available in /dev/kmem. Your version of Unix might have a
1825 special system call to retrieve this information (eg., inq_stats under
1828 66: Why doesn't GNUS work anymore via NNTP?
1830 There is a bug in NNTP version 1.5.10, such that when multiple requests
1831 are sent to the NNTP server, the server only handles the first one before
1832 blocking waiting for more input which never comes.
1834 You can work around the bug inside Emacs like this:
1836 (setq nntp-maximum-request 1)
1837 (setq nntp-buggy-select t)
1839 Or you could fix the NNTP server in one of these ways:
1841 1. Test whether there is data in stdin's stdio buffer before calling
1842 "select" using something like "((fileptr)->_cnt > 0)". Best choice.
1843 2. Remove call to select by not defining "TIMEOUT" in "common/conf.h".
1844 3. Put "setbuf (stdin, NULL)" in the NNTP server in the right spot.
1845 This would be very inefficient.
1846 4. Rewrite the server to use an alarm instead of "select".
1848 67: Why can't I paste a selection I made in Emacs into my xterm window?
1850 A person whose name I lost writes:
1852 The strange interaction between Emacs, xterm, and the cut buffers is
1853 because most xterm clients use selections instead of (well, superceding)
1854 cut buffers. If there is a selection around, xterms will use that
1855 instead of the cut buffer. Emacs doesn't know about selections, but you
1856 can convince xterm to always use the cut buffer instead of selections by
1857 adding this to your .Xdefaults:
1859 ! Solution by Thomas Narten, should work under X11R3 and later
1860 ! GNU Emacs only copies to CUT_BUFFER0. xterm by default wants to paste
1861 ! from the PRIMARY selection.
1862 XTerm*VT100.Translations: #override \
1863 ~Meta <Btn2Up>: insert-selection(CUT_BUFFER0)
1866 68: Why does ispell sometimes ignore the local dictionary?
1868 You need to update the version of ispell to 2.0.02. A patch is
1872 site: tut.cis.ohio-state.edu
1873 file: /pub/gnu/ispell/patch2.Z
1875 You also need to change a line in ispell.el from:
1877 (defconst ispell-version "2.0.01") ;; Check against output of "ispell -v".
1881 (defconst ispell-version "2.0.02") ;; Check against output of "ispell -v".
1885 Configuring Emacs for yourself:
1887 69: How do I set up a .emacs file properly?
1889 I'm going to be sending out a sample .emacs file in a separate message
1890 later this month. It will be based largely on AT&T's sample .emacs
1891 file, which was sent to me by Dan Jacobson. In fact it might be
1894 70: How do you debug a .emacs file?
1896 First start Emacs with the "-q" command line option. Then, in the
1897 *scratch* buffer, type the following:
1899 (setq debug-on-error t) C-j
1900 (load-file "~/.emacs") C-j
1902 (C-j stands for Control-J, ie., hold the control key and press J.)
1904 If you have an error in your .emacs file, this will invoke the debugger
1905 when the error occurs. If you don't know how to use the debugger do
1906 (setq stack-trace-on-error t) instead.
1908 WARNING: this will not discover errors caused by trying to do something
1909 that requires the terminal/window-system initialization code to have
1910 been loaded. See question 34.
1912 71: How do I turn on abbrevs by default just in mode XXX?
1914 Put this in your .emacs file:
1917 (read-abbrev-file nil t)
1923 (setq abbrev-mode t))))
1925 72: What does Emacs do every time it starts up?
1927 This question is not itself frequently asked, but helps to answer other
1930 Here is a complete explanation of the order in which things are done
1933 1. These command line switches are handled, only if they appear before
1934 all other command line arguments, and only if they appear in this
1937 "-map". Only under VMS. Instead of "undumping", under VMS the
1938 contents of a dump file are mapped over a section of memory (very
1939 quickly initializing lots of variables).
1941 "-t". The next argument is treated as the name of a terminal to use
1942 instead of whatever is connected to the stdin, stdout, and stderr
1945 "-display" (synonym: "-d"). The next argument is treated as the
1946 name of an X Window System server with which to connect. This
1947 overrides the DISPLAY environment variable.
1949 "-nw". This means don't connect to an X Window server even if the
1950 DISPLAY environment variable was set or the "-display" switch was
1951 specified. Instead, Emacs talks to a regular dumb terminal.
1953 "-batch". Emacs is noninteractive. The variable "noninteractive"
1954 is t. This disables any full screen interaction either with a
1955 dumb terminal or with a window system. In addition, Emacs will
1956 die after processing all command line arguments.
1958 All of Emacs's internal data structures are initialized between steps 2
1961 2. The "*scratch*" buffer is created and its value of default-directory
1962 is set from the result of calling the "getwd" library routine.
1963 (getwd does what the "pwd" program does.)
1965 3. If X11 is being used, Emacs determines the name under which it looks
1966 for X resource values. (I haven't checked how it does this under
1969 1. If there is a "-rn" command line switch, it is handled now, no
1970 matter where it is on the command line. (Later it will be
1971 processed again and ignored.) The next argument is used as
1972 Emacs's resource name.
1974 2. If the "-rn" switch was missing, Emacs looks for the WM_RES_NAME
1975 environment variable.
1977 3. If neither of the previous two steps succeed, Emacs uses the
1978 filename with which it was invoked as its resource name.
1980 4. If X11 is being used, these command line switches are handled now,
1981 no matter where they appear in the command line. (Under X10, they
1982 are not handled until step 13.) WARNING: this can cause strange
1983 interactions with the processing of the remaining command line
1984 arguments in step 13.
1986 In addition, under both X11 and X10, X resources (ie. the stuff in
1987 an .Xdefaults file) are handled now. Command line switches take
1988 precedence over resources.
1990 After each command line switch are given the equivalent resource
1991 names in this format: (X10 name / X11 instance name / X11 class name).
1993 "-r". Reverse video. (ReverseVideo/reverseVideo/ReverseVideo)
1994 "-font" (synonym: "-fn"). Font. (BodyFont/font/Font)
1995 "-wn". Window name (X11 only). (/title/Title)
1996 "-in". Icon name (X11 only). (/iconName/Title)
1997 "-i". Use built-in icon bitmap. (BitMapIcon//)
1999 "-b". Border width (in pixels).
2000 (BorderWidth/borderWidth/BorderWidth)
2002 "-ib". Internal border width (in pixels) (default: 1).
2003 (/internalBorder/BorderWidth)
2005 "-geometry" (synonym: "-w"). Window shape and size. "-geometry" is
2006 X11 only, but its synonym "-w" was available under X10.
2007 (/geometry/Geometry)
2011 "-fg". Foreground color. (Foreground/foreground/Foreground)
2012 "-bg". Background color. (Background/background/Background)
2013 "-bd". Border color. (Border/borderColor/BorderColor)
2014 "-cr". Cursor color. (Cursor/cursorColor/Foreground)
2015 "-ms". Mouse pointer color. (Mouse/pointerColor/Foreground)
2017 In addition, under X10, the resource "Keymap" was handled now.
2019 5. If your Emacs isn't "dumped", the default Lisp libraries are
2022 6. Emacs enters a "recursive edit". The first time Emacs does a
2023 recursive edit, steps 7 through 15 are followed, and then Emacs
2024 enters its normal editing mode.
2026 7. If the environment variable PWD exists, the value of
2027 default-directory in the *scratch* buffer is set to the value of
2028 PWD. This often causes problems and confusion when the value of PWD
2029 doesn't actually contain the pathname of the current directory.
2031 8. Now the "-no-init-file" (synonym: "-q") and "-user" (synonym: "-u")
2032 command line switches are handled. They must follow the switches
2033 mentioned in step 1, and must precede any other command line
2034 arguments. Actually, both of these options can be specified;
2035 whichever is last on the command line wins.
2037 9. The user's ".emacs" file is loaded now, if the -no-init-file option
2038 was not specified. If the -user option was specified, that user's
2039 .emacs file is loaded instead. A user's .emacs file is a file named
2040 ".emacs" in the user's "home" directory. If no such file exists,
2041 this step has no effect.
2043 10. The system wide "default" file is loaded now, if the variable
2044 inhibit-default-init is nil. The user can set this variable in the
2045 .emacs file to skip this step.
2047 11. If the *scratch* buffer still exists now, the value of
2048 initial-major-mode is called as a function in this buffer.
2049 Normally, this puts this buffer in Lisp Interaction mode.
2051 12. Now the terminal/window-system setup file is loaded. The name of
2052 this file is determined as follows:
2054 1. It starts with the value of term-file-prefix. Normally this is
2055 "term/", but the user can set it to another value. If this
2056 variable is nil, this entire step is skipped.
2058 2. For a window system, the prefix is followed by the name of the
2059 value of the variable window-system, followed by "-win". For X
2060 Windows, this means the name is "term/x-win".
2062 3. For a terminal, the prefix is followed by the value of the
2063 environment variable TERM, for example, "term/vt200". If Emacs
2064 cannot find such a file to load, it retries by stripping off
2065 suffixes that begin with a hyphen. For example, if TERM is
2066 "vt200-40", first Emacs will try "term/vt200-40", and if that
2067 fails it will try "term/vt200".
2069 13. The rest of the command line arguments are handled at this point, in
2070 the order they appear:
2072 "-funcall" (synonyms: "-f", "-e"). The next argument is treated as
2073 the name of a function, which is called with no arguments.
2075 "-load" (synonym: "-l"). The next argument is treated as the name
2076 of a file to load. NOTE: the value of the variable load-path
2077 will be restored after this file is done loading. Thus, trying
2078 to change load-path in such a file will fail!!
2080 "-kill". When this argument is handled, Emacs kills itself.
2082 "+DDD", where D is a digit. DDD is used as a line number to go to.
2083 When the next ordinary file argument on the command line is
2084 handled, Emacs positions point in that file on line DDD.
2086 An ordinary filename. Emacs edits this file using the function
2087 find-file. If the filename is not an "absolute" filename, it is
2088 expanded relative to the value that default-directory in the
2089 *scratch* buffer had at the beginning of step 11. The buffer
2090 visiting this file becomes the current buffer.
2092 "-insert" (synonym: "-i"). The next argument is treated as the name
2093 of a file. This file is inserted in the current buffer.
2094 Initially, this is the *scratch* buffer. Otherwise it is the
2095 buffer visiting the file most recently specified on the command
2096 line. WARNING: the synonym "-i" doesn't work under X11.
2098 Other command line switches may have been created by modifying the
2099 value of the variable command-switch-alist. If X Windows is being
2100 used, all X-specific switches mentioned above in steps 3 and 4 will
2101 be processed. Under X11, they will have already been handled, and
2102 will be ignored now. Under X10, they are being handled for the
2105 14. The values of the variables term-setup-hook and window-setup-hook
2106 are called as functions with no arguments, in the order listed.
2108 15. If the user did not specify any of the command line options handled
2109 in step 13, and the variable inhibit-startup-message is still nil,
2110 the familiar Emacs startup message is displayed.
2112 73: What are the valid X resource settings (ie., stuff in .Xdefaults file)?
2116 WARNING: Don't pay any attention to the documentation in etc/XDOC or
2117 etc/emacs.1. It's way out of date. {Would someone like to rewrite it?
2118 RMS asked me and I haven't had time yet.}
2120 74: How do I turn down the bell volume in Emacs running under X Windows?
2122 Under Epoch you can do:
2124 (setq epoch::bell-volume 20)
2126 Under normal GNU Emacs you must modify the XTfeep function in
2127 src/x11term.c, and change the number 50 to some other number:
2131 BLOCK_INPUT_DECLARE ();
2133 fprintf (stderr, "XTfeep\n");
2136 XBell (XXdisplay,50); /* change this 50 */
2140 75: How do I make Emacs send 8-bit characters to my terminal?
2142 Johan Widen <jw@sics.se> writes:
2144 A patch for emacs-18.55 is available by ftp and mail-server from
2148 site: sics.se [192.16.123.90]
2149 file: archive/emacs-18.55-8bit-diff
2152 To: mail-server@sics.se
2153 body: send emacs-18.55-8bit-diff
2157 Emacs Lisp programming:
2159 76: What dialect of Lisp is Emacs Lisp?
2161 It's the dialect of Lisp called Emacs Lisp. (No joke!) People also
2162 call it elisp or e-lisp. (NOTE: The term "Elisp" is trademarked by
2165 77: How close is Emacs Lisp to Common Lisp?
2167 Pretty far. GNU Emacs Lisp is case-sensitive, uses dynamic scoping,
2168 doesn't have packages, doesn't have multiple return values, doesn't have
2169 reader macros, etc. For people used to Common Lisp, some of the
2170 functions in Common Lisp that are not in Emacs Lisp by default are
2171 provided in the file lisp/cl.el. There is a Texinfo manual describing
2172 these functions in man/cl.texinfo.
2174 78: How do I execute a piece of Emacs Lisp code?
2176 There are a number of ways to execute (called "evaluate") an Emacs Lisp
2179 * If you want it evaluated every time you run Emacs, put it in a file
2180 named ".emacs" in your home directory.
2182 * You can type the form in the "*scratch*" buffer, and then type C-j
2183 after it. The result of evaluating the form will be inserted in the
2186 * In in Emacs-Lisp mode, typing M-C-x evaluates a top-level form before
2189 * Typing "C-x C-e" in any buffer evaluates the Lisp form immediately
2190 before point and prints its value in the echo area.
2192 * Typing M-ESC or M-x eval-expression allows you to type a Lisp form in
2193 the minibuffer which will be evaluated.
2195 * You can use M-x load-file to have Emacs evaluate all the Lisp forms in
2196 a file. (To do this from Lisp use the function "load" instead.)
2198 79: How do I make a set of operations fully local to a region?
2200 Use narrow-to-region inside of save-restriction.
2202 80: How can I highlight a region?
2204 There are ways to get highlighting in GNU Emacs 18.55, but they all
2205 require patching the C code of Emacs and rebuilding. They are also slow
2206 and the highlighting disappears if you scroll or redraw the screen. One
2207 patch is by Kenichi Handa <handa@etl.go.jp>.
2209 You can hightlight regions in a variety of ways in Epoch. GNU Emacs 19
2210 will have everything you need, but won't be out soon.
2212 81: How do I change Emacs's idea of the tab character's length?
2214 Example: (setq default-tab-width 10).
2216 82: What is the difference between (interactive "P") and (interactive "p")?
2218 The value that is a result of "P" can be a list, a symbol, or an
2219 integer; the value that is a result of "p" is always an integer:
2221 Prefix keys typed result of: "P" "p"
2232 Carrying Out Common Tasks:
2234 83: How do I insert ">"'s in the beginning of every line in a buffer?
2236 Type "M-x replace-regexp RET ^ RET > RET". ("replace-regexp" can be
2237 shortened to "repl TAB r".)
2239 To do this only in the region, type "C-x n M-x replace-regexp RET ^ RET
2240 > RET C-x w". (You're going to remember that, right?)
2242 84: How do I insert "_^H" characters before each character in a
2243 paragraph to get an underlined paragraph?
2245 M-x underline-region.
2247 85: How do I repeat a command as many times as possible?
2249 Make a keyboard macro that invokes the command and then type "M-0 C-x
2250 e". WARNING: any messages your command prints in the echo area will be
2253 86: How do I search for an unprintable (8-bit) character that appears
2254 in a buffer as \237?
2258 (This assumes the value of search-quote-char is 17 (C-q).)
2260 87: How do I tell Emacs to automatically indent a new line to the
2261 indentation of the previous line?
2263 M-x indented-text-mode. (This is a major mode.)
2265 If you have auto-fill mode on (minor mode), you can tell Emacs to prefix
2266 every line with a certain character sequence, the "fill prefix". Type
2267 the prefix at the beginning of a line, position point after it, and then
2268 type "C-x ." (set-fill-prefix) to set the fill prefix. Thereafter,
2269 auto-filling will automatically put the fill prefix at the beginning of
2270 new lines, and M-q (fill-paragraph) will maintain any fill prefix when
2271 refilling the paragraph.
2273 88: How do I make Emacs "typeover" or "overwrite" when I type instead of
2276 M-x overwrite-mode (minor mode).
2278 WARNING: delete-backward-char (usually the delete key) doesn't work
2279 properly in overwrite mode. It deletes the character to the left,
2280 rather than replacing it with a space.
2282 89: How do I show which parenthesis matches the one I'm looking at?
2284 If you're looking at a right parenthesis (or brace or bracket) you can
2285 delete it and reinsert it.
2287 M-C-f (forward-sexp) and M-C-b (backward-sexp) will skip over balanced
2288 parentheses, so you can see which parentheses match. (You can train it
2289 to skip over balanced brackets and braces at the same time by modifying
2292 Here is some Emacs Lisp that will make the % key show the matching
2293 parenthese, like in vi. In addition, if the cursor isn't over a
2294 parenthese, it simply inserts a % like normal.
2296 (By an unknown contributor.)
2298 (global-set-key "%" 'match-paren)
2300 (defun match-paren (arg)
2301 "Go to the matching parenthesis if on parenthesis otherwise insert %."
2303 (cond ((looking-at "[([{]") (forward-sexp 1) (backward-char))
2304 ((looking-at "[])}]") (forward-char) (backward-sexp 1))
2305 (t (self-insert-command (or arg 1)))))
2307 90: How do I make Emacs behave like this: when I go up or down, the cursor
2308 should stay in the same column even if the line is too short?
2310 M-x picture-mode. (This is a minor mode, in theory anyway ...)
2312 91: How do I read news under Emacs?
2314 There are at least three news reading packages that operate inside
2315 Emacs. "rnews" comes with Emacs. "GNUS" and "Gnews" come separately.
2317 {I've never used rnews; could someone write a description? BTW, rnews
2318 will be replaced with GNUS in Emacs 19.}
2320 Both GNUS and Gnews handle reading news over NNTP. I think both can
2321 also read from a local news spool. GNUS also supports reading mail
2322 stored in MH folders or articles saved by GNUS.
2324 GNUS is written (mostly) by Masanobu Umeda. His (?) latest e-mail
2325 address was umerin@tc.nagasaki.go.jp, but I don't think he has an e-mail
2326 address right now. The latest version is GNUS 3.13. There is a
2327 newsgroup for discussion of GNUS called gnu.emacs.gnus. This newsgroup
2328 is gatewayed with the mailing list info-gnus-english to subscribe send
2329 mail to info-gnus-english-request@cis.ohio-state.edu. There is also a
2330 mailing list called info-gnus, which includes discussion in Japanese.
2332 Gnews was written by Matthew Wiener <e-mail address?>. {Could someone
2333 tell me the # of the latest version, and how long it has been since
2334 anyone has heard from Matthew?}. There is a newsgroup for Gnews called
2337 92: In C mode, can I show just the lines that will be left after #ifdef
2338 commands are handled by the compiler?
2340 M-x hide-ifdef-mode. (This is a minor mode.)
2342 You may have to (load "hideif") first. If you want to do this
2343 regularly, put this in your .emacs file:
2345 (autoload 'hide-ifdef-mode "hideif" nil t)
2347 93: Is there an equivalent to the "." (dot) command of vi?
2349 ("." is the redo command in vi. It redoes the last insertion/deletion.)
2353 You can type "C-x ESC" (repeat-complex-command) to reinvoke commands
2354 that used the minibuffer to get arguments. In repeat-complex-command
2355 you can type M-p and M-n to scan through all the different complex
2356 commands you've typed.
2358 To repeat something on each line I recommend using keyboard macros.
2360 94: How do I use emacstool under SunView?
2362 The file etc/SUN-SUPPORT includes the document "Using Emacstool with GNU
2363 Emacs". Also read the man page for emacstool (etc/emacstool.1).
2365 95: How do I get Emacs to display the current line number on the mode line?
2367 There is no "correct" way to constantly display the current line number
2368 on the mode line in Emacs 18. Emacs is not a line-oriented editor, and
2369 really has no idea what "lines" of the buffer are displayed in the
2370 window. It would require a lot of work at the C code level to make
2371 Emacs keep track of this.
2373 Emacs 19 will probably be able to do this, but probably not with great
2376 To find out what line of the buffer you are on right now, do "M-x
2377 what-line". Typing "C-x l" will also tell you what line you are on,
2378 provided the buffer isn't separated into "pages" with C-l characters.
2379 In that case, it will only tell you what line of the current "page" you
2380 are on. WARNING: "C-x l" gives the wrong value when point is at the
2381 beginning of a line.
2383 People have written various kludges to display the current line number
2384 on the mode line. Look in the Lisp Code Directory. (See question 13.)
2386 96: How do I tell Emacs to iconify itself?
2388 You need to modify C source and recompile. Either that or get Epoch
2389 instead. For the interested I have a patch to allow Emacs to iconify
2392 97: How do I use regexps (regular expressions) in Emacs?
2394 This is documented in the Emacs manual. To read the manual section
2395 online, type "C-h i m emacs RET m regexps RET".
2397 WARNING: Unlike in Unix grep, sed, etc., a complement character set
2398 ([^...]) can match a Newline, unless Newline is mentioned as one of the
2399 characters not to match.