Commit | Line | Data |
---|---|---|
297fe2a0 C |
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. | |
5 | ||
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. | |
8 | ||
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. | |
14 | ||
15 | Here is a short list of new questions and questions that are now answered: | |
16 | ||
17 | New questions: | |
18 | ||
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? | |
23 | ||
24 | Questions with improved answers: | |
25 | ||
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 | |
32 | always inserting? | |
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? | |
37 | ||
38 | Minor changes: | |
39 | ||
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? | |
48 | ||
49 | Enjoy, | |
50 | ||
51 | -- | |
52 | Joe Wells <jbw@bu.edu> | |
53 | ------------------------------------------------- | |
54 | GNU Emacs Frequently Asked Questions with Answers (part 1 of 2) | |
55 | ||
56 | Sat Dec 8 01:30:53 1990 | |
57 | ||
58 | ||
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 $". | |
62 | ||
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. | |
65 | ||
66 | ||
67 | Notation Used in the Answers (READ THIS SECTION FIRST!) | |
68 | ||
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 | |
72 | questions. | |
73 | ||
74 | 1: What do things like this mean: C-h, M-C-a, RET, etc.? | |
75 | ||
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 | |
79 | to 31. | |
80 | ||
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. | |
84 | ||
85 | M-C-a means while holding down both the "Control" key and the "Meta" key | |
86 | press the "a" key. | |
87 | ||
88 | C-M-a is a synonym for M-C-a. | |
89 | ||
90 | RET means press the "Return" key. RET is the same as C-m. This sends | |
91 | ASCII code 13. | |
92 | ||
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 | |
95 | "Newline". | |
96 | ||
97 | DEL means press the "Delete" key. DEL is the same as C-?. This sends | |
98 | ASCII code 127. | |
99 | ||
100 | ESC means press the "Escape" key. ESC is the same as C-[. This sends | |
101 | ASCII code 27. | |
102 | ||
103 | SPC means press the "Space" key. This send ASCII code 32. | |
104 | ||
105 | TAB means press the "Tab" key. TAB is the same as C-i. This send ASCII | |
106 | code 9. | |
107 | ||
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". | |
110 | ||
111 | 2: What do you mean when you write things like this: type "ESC a"? | |
112 | ||
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): | |
115 | ||
116 | C-x, M-x, M-C-x | |
117 | RET, LFD, DEL, ESC, SPC, TAB | |
118 | ||
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). | |
123 | ||
124 | 3: What if I don't have a Meta key? | |
125 | ||
126 | Instead of typing M-a, you can type "ESC a" instead. In fact, Emacs | |
127 | converts M-a internally into "ESC a" anyway. | |
128 | ||
129 | 4: What if I don't have an Escape key? | |
130 | ||
131 | Type C-[ instead. This should send ASCII code 27 just like an Escape | |
132 | key would. | |
133 | ||
134 | 5: What does "M-x command" mean? | |
135 | ||
136 | "M-x command" means type M-x, then type the name of the command, then | |
137 | type RET. | |
138 | ||
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 | |
144 | function. | |
145 | ||
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 | |
148 | candidate for this. | |
149 | ||
150 | To run non-interactive Emacs functions, use M-ESC instead and type a | |
151 | Lisp form. | |
152 | ||
153 | 6: What do things like this mean: etc/SERVICE, src/config.h, | |
154 | lisp/default.el? | |
155 | ||
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". | |
160 | ||
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. | |
165 | ||
166 | Some of these files are available individually via FTP or e-mail, see | |
167 | question 16. | |
168 | ||
169 | 7: What are FSF, LPF, OSF, GNU, RMS, FTP, BTW, and GPL? | |
170 | ||
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 | |
177 | BTW == By the way | |
178 | GPL == GNU General Public Licence | |
179 | ||
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. | |
185 | ||
186 | ||
187 | ||
188 | Sources of Information and Help | |
189 | ||
190 | 8: I'm just starting GNU Emacs; how do I do basic editing? | |
191 | ||
192 | Type "C-h t" to invoke the self-paced tutorial. Typing just C-h is | |
193 | how to enter the help system. | |
194 | ||
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. | |
201 | ||
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. | |
204 | ||
205 | 9: How do I find out how to do something in GNU Emacs? | |
206 | ||
207 | There are several methods for finding out how to do things in Emacs. | |
208 | ||
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. | |
212 | ||
213 | You can order a hardcopy of the manual from the FSF. See question 12. | |
214 | ||
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. | |
218 | ||
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 | |
221 | command. | |
222 | ||
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 | |
228 | word. | |
229 | ||
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". | |
232 | ||
233 | 10: Where can I get GNU Emacs on the net (or by snail mail)? | |
234 | ||
235 | Look in the files etc/DISTRIB and etc/FTP for information. If you don't | |
236 | already have GNU Emacs, see question 16. | |
237 | ||
238 | 11: Where can I get help in installing GNU Emacs? | |
239 | ||
240 | Look in the file etc/SERVICE for names of companies and individuals who | |
241 | will sell you this type of service. | |
242 | ||
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. | |
247 | ||
248 | 12: How do I get a printed copy of the GNU Emacs manual? | |
249 | ||
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. | |
252 | ||
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.) | |
258 | ||
259 | If you absolutely have to print your own copy, and you don't have TeX, | |
260 | you can get a PostScript version from: | |
261 | ||
262 | Anonymous FTP: | |
263 | site: abcfd20.larc.nasa.gov | |
264 | file: /pub/docs/emacs-18.55.PS.Z (size: 472K) | |
265 | ||
266 | Carl Witty <cwitty@cs.stanford.edu> writes: | |
267 | ||
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 | |
271 | manual. | |
272 | ||
273 | 13: Has someone written an GNU Emacs Lisp package that does XXX? | |
274 | ||
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. | |
279 | ||
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. | |
283 | ||
284 | 14: Where can I get GNU Emacs Lisp packages that don't come with Emacs? | |
285 | ||
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 | |
290 | a copy. | |
291 | ||
292 | You can access the Emacs Lisp Archive via: | |
293 | ||
294 | Anonymous FTP: | |
295 | site: tut.cis.ohio-state.edu | |
296 | directory: /pub/gnu/emacs/elisp-archive | |
297 | file: README.Z | |
298 | ||
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". | |
302 | ||
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. | |
310 | ||
311 | 15: Where can I get documentation on GNU Emacs Lisp? | |
312 | ||
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 | |
315 | dated July 1990. | |
316 | ||
317 | Within Emacs, you can type "C-h f" to get the documentation for a | |
318 | function, "C-h v" for a variable. | |
319 | ||
320 | Also, as a popular USENET saying goes, "Use the Force, Read the Source". | |
321 | ||
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: | |
325 | ||
326 | Anonymous FTP: | |
327 | site: prep.ai.mit.edu | |
328 | file: /pub/gnu/elisp.tar.Z | |
329 | ||
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. | |
334 | ||
335 | 16: What informational files are available? | |
336 | ||
337 | This isn't a frequently asked question, but it should be! | |
338 | ||
339 | The following files are available in the "etc" directory of the GNU | |
340 | Emacs distribution, and also the latest versions are available | |
341 | individually via: | |
342 | ||
343 | Anonymous FTP: | |
344 | site: prep.ai.mit.edu | |
345 | directory: /pub/gnu/etc | |
346 | ||
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 | |
354 | with BYTE editors | |
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" | |
359 | ||
360 | These files are available in the "etc" directory of the GNU Emacs | |
361 | distribution: | |
362 | ||
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 General Public License | |
367 | NEWS -- GNU Emacs News, a history of user-visible changes | |
368 | ||
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 | |
371 | first. | |
372 | ||
373 | These files are available from the FSF via e-mail: | |
374 | ||
375 | * GNU's Bulletin, June, 1990 -- this file includes: | |
376 | GNU'S Who | |
377 | What Is the Free Software Foundation? | |
378 | What Is Copyleft? | |
379 | GNUs Flashes | |
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 | |
384 | GNU Wish List | |
385 | GNU Documentation | |
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 | |
393 | Thank GNUs | |
394 | FSF Order Form | |
395 | * GNU Task List | |
396 | * GNU Coding Standards | |
397 | * Legal issues about contributing code to GNU | |
398 | * GNU Project Status Report | |
399 | ||
400 | 17: What is the current address of the FSF? | |
401 | ||
402 | Snail mail address: | |
403 | Free Software Foundation | |
404 | 675 Massachusetts Avenue | |
405 | Cambridge, MA 02139, USA | |
406 | ||
407 | Phone number: | |
408 | (617) 876-3296 | |
409 | ||
410 | E-mail addresses: | |
411 | gnu@prep.ai.mit.edu {probably read by Len Tower} | |
412 | gnulists@prep | |
413 | ||
414 | 18: What is the current address of the LPF? | |
415 | ||
416 | Snail mail address: | |
417 | League for Programming Freedom | |
418 | 1 Kendall Square, Number 143 | |
419 | Post Office Box 9171 | |
420 | Cambridge, MA 02139, USA | |
421 | ||
422 | Phone number: | |
423 | (617) 243-4061 { or 243-4091, I'm not sure ... } | |
424 | ||
425 | E-mail address: | |
426 | league@prep.ai.mit.edu | |
427 | ||
428 | 19: Where can I get the up-to-date GNU stuff? | |
429 | ||
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.) | |
434 | ||
435 | 20: Where can I get the latest VM, Supercite, GNUS, Calc, Calendar, or Patch? | |
436 | ||
437 | 1. VM: | |
438 | ||
439 | Author: Kyle Jones <kyle@xanth.cs.odu.edu> | |
440 | ||
441 | Mailing lists: info-vm-request@uunet.uu.net | |
442 | info-vm@uunet.uu.net | |
443 | bug-vm-request@uunet.uu.net | |
444 | bug-vm@uunet.uu.net | |
445 | ||
446 | Anonymous FTP: | |
447 | ||
448 | Last released version: 4.41 | |
449 | site: tut.cis.ohio-state.edu | |
450 | file: /pub/gnu/vm/vm-4.41.tar.Z | |
451 | ||
452 | Beta test version: 5.18 | |
453 | site: abcfd20.larc.nasa.gov | |
454 | directory: /pub/vm | |
455 | ||
456 | 2. Supercite: | |
457 | ||
458 | Author: Barry Warsaw <warsaw@warsaw.nlm.nih.gov> | |
459 | ||
460 | Latest version: 2.1 | |
461 | ||
462 | Mailing lists: supercite@warsaw.nlm.nih.gov | |
463 | supercite-request@warsaw.nlm.nih.gov | |
464 | ||
465 | Anonymous FTP: | |
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) | |
468 | ||
469 | NOTE: Superyank is an old version of Supercite. | |
470 | ||
471 | 3. GNUS: | |
472 | ||
473 | Author: Masanobu Umeda | |
474 | ||
475 | Latest version: 3.13 | |
476 | ||
477 | Anonymous FTP: | |
478 | site: tut.cis.ohio-state.edu | |
479 | files: /pub/gnu/gnus/3.13.##-of-11.Z (where ## is replaced by 00 -- 11) | |
480 | ||
481 | 4. Calc: | |
482 | ||
483 | Author: Dave Gillespie <daveg@csvax.cs.caltech.edu> | |
484 | ||
485 | Latest version: 1.06 | |
486 | ||
487 | Anonymous FTP: | |
488 | site: csvax.cs.caltech.edu [131.215.131.131] | |
489 | or any comp.sources.misc archive | |
490 | ||
491 | 5. Calendar/Diary | |
492 | ||
493 | Author: Ed Reingold <reingold@cs.uiuc.edu> | |
494 | ||
495 | Latest version: 4 | |
496 | ||
497 | E-mail: | |
498 | Subject: send-emacs-cal | |
499 | body: your best internet e-mail address | |
500 | ||
501 | 6. Patch | |
502 | ||
503 | Author: Larry Wall <lwall@jpl-devvax.jpl.nasa.gov> | |
504 | ||
505 | Latest version: 2.0 patchlevel 12 | |
506 | ||
507 | Anonymous FTP: | |
508 | site: any comp.sources.unix archive | |
509 | ||
510 | or, for Europeans: | |
511 | ||
512 | site: archive.cs.ruu.nl [131.211.80.5] | |
513 | file: /pub/UNIX/patch-2.0.tar.Z | |
514 | ||
515 | 21: How do I install a piece of Texinfo documentation? | |
516 | ||
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). | |
521 | ||
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. | |
525 | ||
526 | Neither texinfo-format-buffer nor the makeinfo program install the | |
527 | resulting Info files in Emacs's Info tree. To install Info files: | |
528 | ||
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 | |
531 | is. | |
532 | ||
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 | |
535 | installing. | |
536 | ||
537 | 22: What is the real legal meaning of the GNU copyleft? | |
538 | ||
539 | RMS writes: | |
540 | ||
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. | |
548 | ||
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 | |
551 | spirit. | |
552 | ||
553 | 23: What are appropriate messages for gnu.emacs.help/gnu.emacs.bug/comp.emacs | |
554 | etc.? | |
555 | ||
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. | |
560 | ||
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. | |
564 | ||
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. | |
569 | ||
570 | 24: Should I send questions directly to people who post a lot on the net, | |
571 | instead of posting myself? | |
572 | ||
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. | |
576 | ||
577 | ||
578 | ||
579 | GNU Emacs, all its Variants, and other Editors | |
580 | ||
581 | 25: Where does the name "Emacs" come from? | |
582 | ||
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 | |
587 | line noise.) | |
588 | ||
589 | 26: What is the latest version of GNU Emacs? | |
590 | ||
591 | GNU Emacs 18.55. GNU Emacs 18.56 is coming out with some bug fixes, but | |
592 | no additional functionality. | |
593 | ||
594 | 27: When will GNU Emacs 19 be available? | |
595 | ||
596 | Good question, I don't know. For that matter, neither do the | |
597 | developers. It will undoubtedly be available sometime in the 1990s. | |
598 | ||
599 | 28: What will be different about GNU Emacs 19? | |
600 | ||
601 | From the latest "GNU's Bulletin": | |
602 | ||
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). | |
609 | ||
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. | |
614 | ||
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 | |
618 | Lisp objects. | |
619 | ||
620 | Other features being considered for Version 19 include: | |
621 | ||
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. | |
634 | ||
635 | Also, Emacs 19 will have a Emacs Lisp source code debugger. | |
636 | ||
637 | 29: Is there an Emacs that has better mouse and X window support? | |
638 | ||
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 | |
643 | is available via: | |
644 | ||
645 | Anonymous FTP: | |
646 | site: cs.uiuc.edu | |
647 | directory: pub/epoch-files/epoch | |
648 | file: epoch-3.2b (b stands for beta) | |
649 | ||
650 | NOTE: Epoch only works with the X Window System; it does not work on | |
651 | ordinary terminals. | |
652 | ||
653 | 30: How do I get Emacs for my PC? | |
654 | ||
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. | |
658 | ||
659 | You can try a variety of similar programs such as MG, MicroEmacs, | |
660 | Freemacs, etc. | |
661 | ||
662 | Russ Nelson <nelson@sun.soe.clarkson.edu>, the author, describes | |
663 | Freemacs: | |
664 | ||
665 | * Freemacs is free, and it was designed from the start to be | |
666 | programmable. | |
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. | |
670 | ||
671 | Carl Witty <cwitty@cs.stanford.edu> writes about Freemacs: | |
672 | ||
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. | |
678 | ||
679 | You can get Freemacs several ways: | |
680 | ||
681 | 1. Anonymous FTP: | |
682 | site: simtel20.army.mil, directory: PD:<MSDOS.FREEMACS> | |
683 | site: grape.ecs.clarkson.edu [128.153.13.196], directory: /e/freemacs | |
684 | ||
685 | 2. E-mail: | |
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) | |
689 | body: help | |
690 | ||
691 | 3. Snail mail: | |
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 | |
695 | ||
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: | |
698 | ||
699 | Anonymous FTP: | |
700 | site: durer.cme.nist.gov | |
701 | ||
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: | |
704 | ||
705 | Anonymous FTP: | |
706 | sites: hipl.psych.nyu.edu, cs.toronto.edu, cayuga.cs.rochester.edu | |
707 | ||
708 | Yet another Emacs is "mg", which used to stand for MicroGNUEmacs, but | |
709 | now just stands for "mg". It is available via: | |
710 | ||
711 | Anonymous FTP: | |
712 | site: snow.white.toronto.edu | |
713 | ||
714 | 31: Where can I get Emacs for my Atari ST? | |
715 | ||
716 | The latest version for the ST is available via: | |
717 | ||
718 | Anonymous FTP: | |
719 | site: cs.uni-sb.de [134.96.7.254] | |
720 | directory: /pub/atari/emacs | |
721 | ||
722 | 32: Where can I get Emacs with NeWS support? | |
723 | ||
724 | Chris Maio's NeWS support package for GNU Emacs is available via: | |
725 | ||
726 | Anonymous FTP: | |
727 | site: columbia.edu | |
728 | file: /pub/ps-emacs.tar.Z | |
729 | ||
730 | site: tut.cis.ohio-state.edu | |
731 | file: /pub/gnu/emacs/ps-emacs.tar.Z | |
732 | ||
733 | ||
734 | ||
735 | Binding Keys to Commands | |
736 | ||
737 | 33: Why does my key binding fail? | |
738 | ||
739 | Most likely, it failed because "ESC [" was already defined. Evaluate | |
740 | this form first: | |
741 | ||
742 | (define-key esc-map "[" nil) | |
743 | ||
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? | |
746 | ||
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. | |
751 | ||
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 | |
755 | you want. | |
756 | ||
757 | See question 72 for a complete explanation of what Emacs | |
758 | does every time it is started. | |
759 | ||
760 | Here is a simple example of how to set term-setup-hook: | |
761 | ||
762 | (setq term-setup-hook | |
763 | (function | |
764 | (lambda () | |
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))))) | |
768 | ||
769 | 35: How do I use function keys under X Windows? | |
770 | ||
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. | |
775 | ||
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 [ ### ~". | |
779 | ||
780 | For the complete list of the numbers which are generated by the function | |
781 | keys, look in the file src/x11term.c. | |
782 | ||
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: | |
785 | ||
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. | |
789 | ||
790 | It is rather easy to replace this function with the function | |
791 | epoch:rebind-key from the Epoch distribution. | |
792 | ||
793 | After implementing this, all keyboard keys can be configured to send | |
794 | user definable sequences, e.g. | |
795 | ||
796 | (x-rebind-key "KP_F1" 0 "\033OP") | |
797 | ||
798 | This will have the keypad key PF1 send the sequence \eOP, just like an | |
799 | ordinary VTxxx terminal. | |
800 | ||
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. | |
803 | ||
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 | |
809 | terminals, e.g. | |
810 | ||
811 | (x-rebind-key "KP_F1" 0 "\033OP") | |
812 | ||
813 | will have key PF1 send \eOP, and, probably in another setup file: | |
814 | ||
815 | (global-set-key "\eOP" 'specific-function) | |
816 | ||
817 | to bind PF1 to a function. The last statement applies for normal VTxxx | |
818 | terminal also. | |
819 | ||
820 | 36: How do I tell what characters my function keys emit? | |
821 | ||
822 | Use this function by Randal L. Schwartz <merlyn@iwarp.intel.com>: | |
823 | ||
824 | (defun see-chars () | |
825 | "Displays characters typed, terminated by a 3-second timeout." | |
826 | (interactive) | |
827 | (let ((chars "") | |
828 | (inhibit-quit t)) | |
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)))) | |
834 | ||
835 | ||
836 | ||
837 | Problems with Key Bindings and Input | |
838 | ||
839 | 37: Why does Emacs spontaneously go into "I-search:" mode? | |
840 | ||
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.) | |
845 | ||
846 | For a more detailed discussion, read the file PROBLEMS in the Emacs | |
847 | distribution. | |
848 | ||
849 | 38: What do I do if my terminal is sending C-s and C-q for flow control and | |
850 | I can't disable it? | |
851 | ||
852 | Use this piece of Emacs Lisp: | |
853 | ||
854 | (set-input-mode nil t) | |
855 | ||
856 | 39: How do I make Emacs use C-s and C-q for flow control instead of for | |
857 | commands? | |
858 | ||
859 | Same answer as previous question. | |
860 | ||
861 | 40: How do I use commands bound to C-s and C-q (or any key) if these keys | |
862 | are filtered out? | |
863 | ||
864 | I suggest swapping C-s with C-\ and C-q with C-^: | |
865 | ||
866 | (swap-keys ?\C-s ?\C-\\) | |
867 | (swap-keys ?\C-q ?\C-^) | |
868 | ||
869 | See question 41 for the implementation of swap-keys. | |
870 | ||
871 | 41: How do I "swap" two keys? | |
872 | ||
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. | |
877 | ||
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.) | |
883 | ||
884 | (defun swap-keys (key1 key2) | |
885 | "Swap keys KEY1 and KEY2 using map-key." | |
886 | (map-key key1 key2 t) | |
887 | (map-key key2 key1)) | |
888 | ||
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.") | |
892 | ||
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))) | |
898 | (if alist-entry | |
899 | (setcdr alist-entry to) | |
900 | (setq map-keys-alist (cons (cons from to) map-keys-alist)))) | |
901 | (or no-update (map-keys-update))) | |
902 | ||
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)) | |
906 | (map-keys-update)) | |
907 | ||
908 | ;; Makes keyboard-translate-table reflect the key mappings in | |
909 | ;; map-keys-alist. | |
910 | ||
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 | |
917 | (apply 'max | |
918 | (mapcar | |
919 | (function | |
920 | (lambda (x) | |
921 | (car x))) | |
922 | map-keys-alist))) | |
923 | (i 0)) | |
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)) | |
929 | (setq i (1+ i)))))) | |
930 | ||
931 | 42: Why does the "Backspace" key invoke help? | |
932 | ||
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. | |
937 | ||
938 | For some people this solution may be problematic: | |
939 | ||
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: | |
944 | ||
945 | stty erase ^? | |
946 | ||
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: | |
951 | ||
952 | (swap-keys ?\C-h ?\C-?) | |
953 | ||
954 | See question 41 for the implementation of swap-keys. | |
955 | ||
956 | 43: How do I type DEL on PC terminal emulators? | |
957 | ||
958 | Someone whose name I forgot wrote: | |
959 | ||
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-?). | |
968 | ||
969 | If this is too hard, you may want to swap the delete key with some other | |
970 | key. See question 42. | |
971 | ||
972 | ||
973 | ||
974 | Building/Installing/Porting Emacs and Machine/OS-Specific Bugs: | |
975 | ||
976 | 44: Why do I get an "f68881_used undefined" error, when I build Emacs on my | |
977 | Sun 3? | |
978 | ||
979 | Barry A. Warsaw <warsaw@cme.nist.gov> writes: | |
980 | ||
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 | |
988 | src/ymakefile: | |
989 | ||
990 | change: #define START_FILES crt0.o | |
991 | to: #define START_FILES crt0.o /usr/lib/Mcrt1.o | |
992 | ||
993 | The order of these start files is critical. | |
994 | ||
995 | 45: Why does Emacs crash under SunOS 4.1? | |
996 | ||
997 | Under SunOS 4.1, Emacs dies with this message: | |
998 | ||
999 | Fatal error (6).Abort | |
1000 | ||
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. | |
1004 | ||
1005 | Put "#define SYSTEM_MALLOC" in src/config.h. | |
1006 | ||
1007 | Or, for the purists: | |
1008 | ||
1009 | Put "#define SUNOS_LOCALTIME_BUG" in src/config.h and apply the following | |
1010 | patch to src/malloc.c. | |
1011 | ||
1012 | (Patch by Eirik Fuller <eirik@elf.tn.cornell.edu>.) | |
1013 | ||
1014 | >*** malloc.c~ Fri Apr 7 22:12:10 1989 | |
1015 | >--- malloc.c Tue May 8 07:07:22 1990 | |
1016 | >*************** | |
1017 | >*** 476,482 **** | |
1018 | >--- 476,487 ---- | |
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; | |
1025 | >+ #else | |
1026 | > nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7; | |
1027 | >+ #endif | |
1028 | > { | |
1029 | > register unsigned int shiftr = (nbytes - 1) >> 2; | |
1030 | > | |
1031 | ||
1032 | 46: Why does Emacs occasionally cause segmentation faults and machine | |
1033 | panics on my DECstation 3100? | |
1034 | ||
1035 | Bruce Cole <cole@dip.cs.wisc.edu> writes: | |
1036 | ||
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: | |
1039 | > | |
1040 | > panic: tblmod on invalid pte | |
1041 | > | |
1042 | > Ultrix support tells us this is caused by Emacs. Has anyone | |
1043 | > experienced this? DEC says it only happens on RISC boxes. | |
1044 | ||
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 | |
1048 | MIPS machines. | |
1049 | ||
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: | |
1052 | ||
1053 | segmentation fault (core dumped) | |
1054 | emacs: Bad address | |
1055 | Out of memory | |
1056 | data size rlimit exceeded, pid 6523, process tcsh (for example) | |
1057 | ||
1058 | Until DEC fixes their kernel, you can avoid the bug by changing the data | |
1059 | start address used by Emacs. | |
1060 | ||
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! | |
1065 | ||
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 | |
1068 | problem. | |
1069 | ||
1070 | Patch to GNU Emacs 18.55: | |
1071 | ||
1072 | >*** m-pmax.h Thu Jun 8 11:53:55 1989 | |
1073 | >--- m-pmax.h.new Mon Jul 9 10:21:21 1990 | |
1074 | >*************** | |
1075 | >*** 1,3 **** | |
1076 | >--- 1,7 ---- | |
1077 | > #include "m-mips.h" | |
1078 | > #undef LIBS_MACHINE | |
1079 | > #undef BIG_ENDIAN | |
1080 | >+ #undef LD_SWITCH_MACHINE | |
1081 | >+ #undef DATA_START | |
1082 | >+ #define DATA_START 0x10000000 | |
1083 | >+ #define DATA_SEG_BITS 0x10000000 | |
1084 | ||
1085 | 47: How do I get Emacs running on VMS under DECwindows? | |
1086 | ||
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: | |
1089 | ||
1090 | Anonymous FTP: | |
1091 | site: addvax.llnl.gov | |
1092 | ||
1093 | Johan Vromans <jv@mh.nl> writes: | |
1094 | ||
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. | |
1102 | ||
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. | |
1105 | ||
1106 | 48: Why won't src/alloc.c compile on a SPARCstation? | |
1107 | ||
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 | |
1110 | run?} | |
1111 | ||
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. | |
1116 | ||
1117 | Here is a solution: | |
1118 | ||
1119 | (Patch from the Epoch source code.) | |
1120 | ||
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 | |
1123 | >*************** | |
1124 | >*** 665,673 **** | |
1125 | > #define NSTATICS 200 | |
1126 | > | |
1127 | >- char staticvec1[NSTATICS * sizeof (Lisp_Object *)] = {0}; | |
1128 | >- | |
1129 | > int staticidx = 0; | |
1130 | > | |
1131 | > #define staticvec ((Lisp_Object **) staticvec1) | |
1132 | > | |
1133 | > /* Put an entry in staticvec, pointing at the variable whose address is given */ | |
1134 | >--- 665,676 ---- | |
1135 | > #define NSTATICS 200 | |
1136 | > | |
1137 | > int staticidx = 0; | |
1138 | > | |
1139 | >+ #ifdef __GNUC__ | |
1140 | >+ Lisp_Object *staticvec[NSTATICS] = {0}; | |
1141 | >+ #else | |
1142 | >+ char staticvec1[NSTATICS * sizeof (Lisp_Object *)] = {0}; | |
1143 | > #define staticvec ((Lisp_Object **) staticvec1) | |
1144 | >+ #endif | |
1145 | > | |
1146 | > /* Put an entry in staticvec, pointing at the variable whose address is given */ | |
1147 | ||
1148 | {Does anyone understand why one might want to declare staticvec as an | |
1149 | array of char instead of an array of LispObject?} | |
1150 | ||
1151 | 49: Why do shells started from Emacs suspend themselves under SunOS 4.1? | |
1152 | ||
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: | |
1155 | ||
1156 | Process shell stopped (tty input) | |
1157 | ||
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. | |
1161 | ||
1162 | A quick fix is to run Emacs as "/usr/etc/setsid emacs" instead. | |
1163 | ||
1164 | To fix it in Emacs, use this patch: | |
1165 | ||
1166 | (Patch by Eirik Fuller <eirik@elf.tn.cornell.edu>.) | |
1167 | ||
1168 | >*** /tmp/,RCSt1a12635 Fri Jul 6 11:29:10 1990 | |
1169 | >--- process.c Sat Jun 16 14:04:55 1990 | |
1170 | >*************** | |
1171 | >*** 1031,1036 **** | |
1172 | >--- 1031,1039 ---- | |
1173 | > int j = open ("/dev/tty", O_RDWR, 0); | |
1174 | > ioctl (j, TIOCNOTTY, 0); | |
1175 | > close (j); | |
1176 | >+ #ifndef USG | |
1177 | >+ setpgrp (0, 0); | |
1178 | >+ #endif | |
1179 | > } | |
1180 | > #endif /* TIOCNOTTY */ | |
1181 | > | |
1182 | ||
1183 | 50: Why does Emacs crash from a bus error in XLookupString under OpenLook? | |
1184 | ||
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. | |
1188 | ||
1189 | (Patch by David J. MacKenzie <djm@eng.umd.edu>.) | |
1190 | ||
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 | |
1193 | >*************** | |
1194 | >*** 1213,1216 **** | |
1195 | >--- 1213,1218 ---- | |
1196 | > #endif /* not sun */ | |
1197 | > | |
1198 | >+ static XComposeStatus status; | |
1199 | >+ | |
1200 | > internal_socket_read(bufp, numchars) | |
1201 | > register unsigned char *bufp; | |
1202 | >*************** | |
1203 | >*** 1223,1227 **** | |
1204 | > BLOCK_INPUT_DECLARE (); | |
1205 | > XEvent event; | |
1206 | >- XComposeStatus status; | |
1207 | > KeySym keysym; | |
1208 | > | |
1209 | >--- 1225,1228 ---- | |
1210 | >*************** | |
1211 | >*** 1330,1334 **** | |
1212 | > nbytes = XLookupString (&event, | |
1213 | > mapping_buf, 20, &keysym, | |
1214 | >! 0); | |
1215 | > /* Someday this will be unnecessary as we will | |
1216 | > be able to use XRebindKeysym so XLookupString | |
1217 | >--- 1331,1335 ---- | |
1218 | > nbytes = XLookupString (&event, | |
1219 | > mapping_buf, 20, &keysym, | |
1220 | >! &status); | |
1221 | > /* Someday this will be unnecessary as we will | |
1222 | > be able to use XRebindKeysym so XLookupString | |
1223 | ||
1224 | 51: Why doesn't "C-c C-c" interrupt subprocesses under HP/UX? | |
1225 | ||
1226 | Paul Stravers <stravers@dutentb.tudelft.nl> writes: | |
1227 | ||
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); | |
1233 | ||
1234 | This is apparently the case under at least HP/UX versions 6.5 and 7.0. | |
1235 | ||
1236 | Here is a set of patches courtesy of Piet van Oostrum <piet@cs.ruu.nl> | |
1237 | that fixes these problems: | |
1238 | ||
1239 | 1. Signals to child processes work now (like the C-c C-c mentioned above) | |
1240 | ||
1241 | 2. When running under X11, C-g now correctly interrupts long-running commands | |
1242 | ||
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 | |
1245 | one. | |
1246 | ||
1247 | 4. A nasty bug in alloca is solved. This bug is very infrequent unless you | |
1248 | apply the other patches. | |
1249 | ||
1250 | {I don't know for sure whether all of these patches are applicable only | |
1251 | under HP/UX. Perhaps someone can tell me.} | |
1252 | ||
1253 | >*** alloca.s.~1~ Fri Sep 15 16:35:39 1989 | |
1254 | >--- alloca.s Tue May 1 17:18:08 1990 | |
1255 | >*************** | |
1256 | >*** 92,103 **** | |
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 | |
1265 | >! mov.l %d1,%sp | |
1266 | > add.l &-4,%sp # adjust tos | |
1267 | > jmp (%a0) # rts | |
1268 | > #endif /* new hp assembler */ | |
1269 | >--- 92,105 ---- | |
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 | |
1274 | >+ mov.l %sp,%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 | |
1282 | > jmp (%a0) # rts | |
1283 | > #endif /* new hp assembler */ | |
1284 | ||
1285 | >*** keyboard.c.~1~ Wed Apr 4 14:53:49 1990 | |
1286 | >--- keyboard.c Thu Apr 26 14:46:27 1990 | |
1287 | >*************** | |
1288 | >*** 719,724 **** | |
1289 | >--- 719,773 ---- | |
1290 | > errno = old_errno; | |
1291 | > } | |
1292 | > | |
1293 | >+ #ifdef HPUX | |
1294 | >+ /* tells if an alarm is outstanding for emptying the socket */ | |
1295 | >+ int socket_alarm; | |
1296 | >+ | |
1297 | >+ static void | |
1298 | >+ empty_socket_interrupt() | |
1299 | >+ { | |
1300 | >+ int nread; | |
1301 | >+ char buf[256 * BUFFER_SIZE_FACTOR]; | |
1302 | >+ register int i; | |
1303 | >+ int old_errno = errno; | |
1304 | >+ | |
1305 | >+ if (waiting_for_input) return; | |
1306 | >+ | |
1307 | >+ fcntl (fileno (stdin), F_SETFL, O_NDELAY); | |
1308 | >+ | |
1309 | >+ /* Read what is waiting. */ | |
1310 | >+ | |
1311 | >+ nread = (*read_socket_hook) (0, buf, sizeof buf); | |
1312 | >+ | |
1313 | >+ #ifdef EBADSLT | |
1314 | >+ if (nread == -1 && (errno == EAGAIN || errno == EBADSLT)) | |
1315 | >+ #else | |
1316 | >+ if (nread == -1 && errno == EAGAIN) | |
1317 | >+ #endif | |
1318 | >+ nread = 0; | |
1319 | >+ | |
1320 | >+ fcntl (fileno (stdin), F_SETFL, 0); | |
1321 | >+ | |
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++) | |
1325 | >+ { | |
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')) | |
1330 | >+ break; | |
1331 | >+ } | |
1332 | >+ | |
1333 | >+ /* reestablish interrupt */ | |
1334 | >+ signal (SIGALRM, empty_socket_interrupt); | |
1335 | >+ alarm (1); | |
1336 | >+ | |
1337 | >+ errno = old_errno; | |
1338 | >+ } | |
1339 | >+ | |
1340 | >+ #endif /* HPUX */ | |
1341 | >+ | |
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. | |
1345 | >*************** | |
1346 | >*** 733,738 **** | |
1347 | >--- 782,794 ---- | |
1348 | > Lisp_Object tem; | |
1349 | > extern request_echo (); | |
1350 | > | |
1351 | >+ #ifdef HPUX | |
1352 | >+ if (socket_alarm) { | |
1353 | >+ alarm (0); | |
1354 | >+ socket_alarm = 0; | |
1355 | >+ } | |
1356 | >+ #endif | |
1357 | >+ | |
1358 | > if ((c = unread_command_char) >= 0) | |
1359 | > { | |
1360 | > unread_command_char = -1; | |
1361 | >*************** | |
1362 | >*** 869,874 **** | |
1363 | >--- 925,938 ---- | |
1364 | > } | |
1365 | > } | |
1366 | > | |
1367 | >+ #ifdef HPUX | |
1368 | >+ if (read_socket_hook) { | |
1369 | >+ socket_alarm = 1; | |
1370 | >+ signal (SIGALRM, empty_socket_interrupt); | |
1371 | >+ alarm (1); | |
1372 | >+ } | |
1373 | >+ #endif | |
1374 | >+ | |
1375 | > return c; | |
1376 | > } | |
1377 | > | |
1378 | >*************** | |
1379 | >*** 1094,1119 **** | |
1380 | > | |
1381 | > #else /* no FIONREAD */ | |
1382 | > #ifdef USG | |
1383 | > if (kbd_count) | |
1384 | > abort (); | |
1385 | > | |
1386 | > fcntl (fileno (stdin), F_SETFL, O_NDELAY); | |
1387 | >! kbd_ptr = kbd_buffer; | |
1388 | > if (read_socket_hook) | |
1389 | >! { | |
1390 | >! kbd_count = (*read_socket_hook) (0, kbd_buffer, sizeof kbd_buffer); | |
1391 | >! } | |
1392 | > else | |
1393 | >! { | |
1394 | >! kbd_count = read (fileno (stdin), kbd_buffer, sizeof kbd_buffer); | |
1395 | >! } | |
1396 | > #ifdef EBADSLT | |
1397 | >! if (kbd_count == -1 && (errno == EAGAIN || errno == EBADSLT)) | |
1398 | > #else | |
1399 | >! if (kbd_count == -1 && errno == EAGAIN) | |
1400 | > #endif | |
1401 | >! kbd_count = 0; | |
1402 | > fcntl (fileno (stdin), F_SETFL, 0); | |
1403 | > #else /* not USG */ | |
1404 | > you lose | |
1405 | > #endif /* not USG */ | |
1406 | >--- 1158,1209 ---- | |
1407 | > | |
1408 | > #else /* no FIONREAD */ | |
1409 | > #ifdef USG | |
1410 | >+ char buf[256 * BUFFER_SIZE_FACTOR]; | |
1411 | >+ register int i; | |
1412 | >+ #ifdef HPUX | |
1413 | >+ int mask; | |
1414 | >+ #endif | |
1415 | >+ | |
1416 | > if (kbd_count) | |
1417 | > abort (); | |
1418 | > | |
1419 | >+ #ifdef HPUX | |
1420 | >+ if (socket_alarm) | |
1421 | >+ mask = sigblock (sigmask (SIGALRM)); | |
1422 | >+ #endif | |
1423 | >+ | |
1424 | > fcntl (fileno (stdin), F_SETFL, O_NDELAY); | |
1425 | >! | |
1426 | >! /* Read what is waiting. */ | |
1427 | > if (read_socket_hook) | |
1428 | >! nread = (*read_socket_hook) (0, buf, sizeof buf); | |
1429 | > else | |
1430 | >! nread = read (fileno(stdin), buf, sizeof buf); | |
1431 | > #ifdef EBADSLT | |
1432 | >! if (nread == -1 && (errno == EAGAIN || errno == EBADSLT)) | |
1433 | > #else | |
1434 | >! if (nread == -1 && errno == EAGAIN) | |
1435 | > #endif | |
1436 | >! nread = 0; | |
1437 | >! | |
1438 | > fcntl (fileno (stdin), F_SETFL, 0); | |
1439 | >+ | |
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++) | |
1443 | >+ { | |
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')) | |
1448 | >+ break; | |
1449 | >+ } | |
1450 | >+ | |
1451 | >+ #ifdef HPUX | |
1452 | >+ if (socket_alarm) | |
1453 | >+ sigsetmask(mask); | |
1454 | >+ #endif | |
1455 | >+ | |
1456 | > #else /* not USG */ | |
1457 | > you lose | |
1458 | > #endif /* not USG */ | |
1459 | ||
1460 | >*** x11term.h~ Fri Sep 15 15:20:26 1989 | |
1461 | >--- x11term.h Thu Apr 26 14:03:25 1990 | |
1462 | >*************** | |
1463 | >*** 11,17 **** | |
1464 | >--- 11,22 ---- | |
1465 | > #define sigmask(no) (1L << ((no) - 1)) | |
1466 | > #endif | |
1467 | > | |
1468 | >+ #ifdef HPUX | |
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 | |
1474 | > #ifdef SIGIO | |
1475 | > #define BLOCK_INPUT() BLOCK_INPUT_mask = sigblock (sigmask (SIGIO)) | |
1476 | > #define UNBLOCK_INPUT() sigsetmask (BLOCK_INPUT_mask) | |
1477 | >*************** | |
1478 | >*** 19,23 **** | |
1479 | >--- 24,29 ---- | |
1480 | > #define BLOCK_INPUT() | |
1481 | > #define UNBLOCK_INPUT() | |
1482 | > #endif /* SIGIO */ | |
1483 | >+ #endif /* HPUX */ | |
1484 | > | |
1485 | > #define CLASS "emacs" /* class id for GNU Emacs, used in .Xdefaults, etc. */ | |
1486 | ||
1487 | >*** process.c.orig Fri Sep 15 16:28:36 1989 | |
1488 | >--- process.c Fri Apr 20 13:17:06 1990 | |
1489 | >*************** | |
1490 | >*** 1057,1062 **** | |
1491 | >--- 1057,1079 ---- | |
1492 | > signal (SIGHUP, SIG_DFL); | |
1493 | > #endif | |
1494 | > #endif /* HAVE_PTYS */ | |
1495 | >+ | |
1496 | >+ /* Give child clean slate for signals */ | |
1497 | >+ #ifdef SIGCHLD | |
1498 | >+ #ifdef BSD4_1 | |
1499 | >+ sigrelse (SIGCHLD); | |
1500 | >+ #else /* not BSD4_1 */ | |
1501 | >+ #ifdef HPUX | |
1502 | >+ sigsetmask (0); | |
1503 | >+ #endif /* HPUX */ | |
1504 | >+ #if defined (BSD) || defined (UNIPLUS) | |
1505 | >+ sigsetmask (0); | |
1506 | >+ #else /* ordinary USG */ | |
1507 | >+ signal (SIGCHLD, sigchld); | |
1508 | >+ #endif /* ordinary USG */ | |
1509 | >+ #endif /* not BSD4_1 */ | |
1510 | >+ #endif /* SIGCHLD */ | |
1511 | >+ | |
1512 | > child_setup_tty (xforkout); | |
1513 | > child_setup (xforkin, xforkout, xforkout, new_argv, env); | |
1514 | > } | |
1515 | >*************** | |
1516 | >*** 1413,1427 **** | |
1517 | > if (read_kbd && kbd_count) | |
1518 | > nfds = 0; | |
1519 | > else | |
1520 | >! #ifdef IBMRTAIX | |
1521 | > nfds = select (MAXDESC, &Available, 0, 0, &timeout); | |
1522 | > #else | |
1523 | >- #ifdef HPUX | |
1524 | >- nfds = select (MAXDESC, &Available, 0, 0, &timeout); | |
1525 | >- #else | |
1526 | > nfds = select (MAXDESC, &Available, 0, &Exception, &timeout); | |
1527 | > #endif | |
1528 | >- #endif | |
1529 | > xerrno = errno; | |
1530 | > | |
1531 | > if (fix_screen_hook) | |
1532 | >--- 1430,1440 ---- | |
1533 | > if (read_kbd && kbd_count) | |
1534 | > nfds = 0; | |
1535 | > else | |
1536 | >! #if defined (IBMRTAIX) || defined (HPUX) | |
1537 | > nfds = select (MAXDESC, &Available, 0, 0, &timeout); | |
1538 | > #else | |
1539 | > nfds = select (MAXDESC, &Available, 0, &Exception, &timeout); | |
1540 | > #endif | |
1541 | > xerrno = errno; | |
1542 | > | |
1543 | > if (fix_screen_hook) | |
1544 | >*************** | |
1545 | >*** 1771,1776 **** | |
1546 | >--- 1784,1790 ---- | |
1547 | > error ("Process %s is not active", | |
1548 | > XSTRING (p->name)->data); | |
1549 | > | |
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)) | |
1554 | >*************** | |
1555 | >*** 1785,1790 **** | |
1556 | >--- 1799,1805 ---- | |
1557 | > the child itself heads the pgrp. */ | |
1558 | > gid = - XFASTINT (p->pid); | |
1559 | > #endif /* not using pgrps */ | |
1560 | >+ #endif /* not HPUX */ | |
1561 | > | |
1562 | > switch (signo) | |
1563 | > { | |
1564 | >*************** | |
1565 | >*** 1800,1805 **** | |
1566 | >--- 1815,1827 ---- | |
1567 | > flush_pending_output (XFASTINT (p->infd)); | |
1568 | > break; | |
1569 | > } | |
1570 | >+ | |
1571 | >+ #ifdef HPUX | |
1572 | >+ if (!NULL (current_group)) | |
1573 | >+ ioctl (XFASTINT (p->infd), TIOCSIGSEND, signo); | |
1574 | >+ else | |
1575 | >+ kill (XFASTINT (p->pid), signo); | |
1576 | >+ #else /* not HPUX */ | |
1577 | > /* gid may be a pid, or minus a pgrp's number */ | |
1578 | > #ifdef BSD | |
1579 | > /* On bsd, [man says] kill does not accept a negative number to kill a pgrp. | |
1580 | >*************** | |
1581 | >*** 1808,1813 **** | |
1582 | >--- 1830,1836 ---- | |
1583 | > #else /* Not BSD. */ | |
1584 | > kill (gid, signo); | |
1585 | > #endif /* Not BSD. */ | |
1586 | >+ #endif /* Not HPUX */ | |
1587 | > | |
1588 | > /* Put notices in buffers now, since it is safe now. | |
1589 | > Because of this, we know that a process we have just killed | |
1590 | >% | |
1591 | ||
1592 | This is a separate patch to process.c, distinct from the immediately | |
1593 | preceding one. Both should be applied. | |
1594 | ||
1595 | >*** process.c.~1~ Fri Apr 20 13:17:06 1990 | |
1596 | >--- process.c Wed Oct 24 16:38:15 1990 | |
1597 | >*************** | |
1598 | >*** 1085,1095 **** | |
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); | |
1603 | >! alarm (1); | |
1604 | >! if (forkin >= 0) | |
1605 | >! close (forkin); | |
1606 | >! alarm (0); | |
1607 | > if (forkin != forkout && forkout >= 0) | |
1608 | > close (forkout); | |
1609 | > | |
1610 | >--- 1085,1100 ---- | |
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. */ | |
1614 | >! | |
1615 | >! { int old_trap = signal (SIGALRM, create_process_1); | |
1616 | >! int old_alarm = alarm (1); | |
1617 | >! if (forkin >= 0) | |
1618 | >! close (forkin); | |
1619 | >! alarm (0); | |
1620 | >! signal (SIGALRM, old_trap); | |
1621 | >! /* don't bother with possible 1 sec loss */ | |
1622 | >! if (old_alarm) alarm (old_alarm); | |
1623 | >! } | |
1624 | > if (forkin != forkout && forkout >= 0) | |
1625 | > close (forkout); | |
1626 | ||
1627 | 52: What should I do if I have trouble building Emacs? | |
1628 | ||
1629 | RMS writes: | |
1630 | ||
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. | |
1633 | ||
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. | |
1637 | ||
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. | |
1644 | ||
1645 | Weird/Confusing Problems: | |
1646 | ||
1647 | 53: Does Emacs have problems with files larger than 8 Megs? | |
1648 | ||
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. | |
1652 | ||
1653 | Leonard N. Zubkoff <lnz@lucid.com> writes: | |
1654 | ||
1655 | Putting the following two lines in src/config.h before compiling Emacs | |
1656 | allows for 26 bit integers and pointers: | |
1657 | ||
1658 | #define VALBITS 26 | |
1659 | #define GCTYPEBITS 5 | |
1660 | ||
1661 | See question 54 for an explanation. | |
1662 | ||
1663 | 54: Why does Emacs use 24 bit integers and pointers? | |
1664 | ||
1665 | David Gillespie <daveg@csvax.cs.caltech.edu> writes: | |
1666 | ||
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 | |
1675 | pointers. | |
1676 | ||
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. | |
1681 | ||
1682 | 55: Why does Emacs start up using the wrong directory? | |
1683 | ||
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 | |
1691 | 72. | |
1692 | ||
1693 | 56: How do I edit a file with a "$" in its name? | |
1694 | ||
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. | |
1698 | ||
1699 | 57: Why does Shell Mode lose track of the shell's current directory? | |
1700 | ||
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). | |
1705 | ||
1706 | 58: Why doesn't Emacs expand my aliases when sending mail? | |
1707 | ||
1708 | First, you must separate multiple addresses with commas. | |
1709 | ||
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. | |
1713 | ||
1714 | 59: Why doesn't setting default-directory always work? | |
1715 | ||
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. | |
1718 | ||
1719 | 60: Why does my change to load-path not work? | |
1720 | ||
1721 | If you added file names with tildes (~) in them to your load-path, | |
1722 | you'll need to do something like this: | |
1723 | ||
1724 | (setq-default load-path (mapcar 'expand-file-name load-path)) | |
1725 | ||
1726 | 61: Why does the cursor always go to the wrong column when I move up or | |
1727 | down one line? | |
1728 | ||
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 | |
1731 | "C-u C-x C-n". | |
1732 | ||
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). | |
1735 | ||
1736 | 62: Why don't the command line switches documented in the man page work? | |
1737 | ||
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.} | |
1743 | ||
1744 | 63: Why does gnus-Subject-mail-reply chop off the last character of the | |
1745 | article headers? | |
1746 | ||
1747 | There is a bug in some rnews functions that GNUS uses. Here is a patch: | |
1748 | ||
1749 | (Patch supplied by Karl Kleinpaste <karl_kleinpaste@cis.ohio-state.edu>.) | |
1750 | ||
1751 | >*** rnewspost.el.orig Thu Oct 5 10:32:47 1989 | |
1752 | >--- rnewspost.el Thu Oct 5 10:32:47 1989 | |
1753 | >*************** | |
1754 | >*** 252,258 **** | |
1755 | > (save-restriction | |
1756 | > (narrow-to-region (point-min) (progn (goto-line (point-min)) | |
1757 | > (search-forward "\n\n") | |
1758 | >! (- (point) 2))) | |
1759 | > (setq from (mail-fetch-field "from") | |
1760 | > subject (mail-fetch-field "subject") | |
1761 | > reply-to (mail-fetch-field "reply-to") | |
1762 | >--- 252,258 ---- | |
1763 | > (save-restriction | |
1764 | > (narrow-to-region (point-min) (progn (goto-line (point-min)) | |
1765 | > (search-forward "\n\n") | |
1766 | >! (- (point) 1))) | |
1767 | > (setq from (mail-fetch-field "from") | |
1768 | > subject (mail-fetch-field "subject") | |
1769 | > reply-to (mail-fetch-field "reply-to") | |
1770 | >*************** | |
1771 | >*** 289,295 **** | |
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 | |
1779 | >--- 289,295 ---- | |
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 | |
1787 | >*************** | |
1788 | >*** 365,371 **** | |
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"))) | |
1796 | >--- 365,371 ---- | |
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"))) | |
1804 | ||
1805 | 64: Why does Emacs hang with message "Unknown XMenu" with X11R4? | |
1806 | ||
1807 | Many different X errors can produce this message. Here is the solution | |
1808 | to one problem: | |
1809 | ||
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". | |
1814 | ||
1815 | 65: Why isn't the load average displayed by display-time? | |
1816 | ||
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. | |
1822 | ||
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 | |
1826 | UMAX). | |
1827 | ||
1828 | 66: Why doesn't GNUS work anymore via NNTP? | |
1829 | ||
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. | |
1833 | ||
1834 | You can work around the bug inside Emacs like this: | |
1835 | ||
1836 | (setq nntp-maximum-request 1) | |
1837 | (setq nntp-buggy-select t) | |
1838 | ||
1839 | Or you could fix the NNTP server in one of these ways: | |
1840 | ||
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". | |
1847 | ||
1848 | 67: Why can't I paste a selection I made in Emacs into my xterm window? | |
1849 | ||
1850 | A person whose name I lost writes: | |
1851 | ||
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: | |
1858 | ||
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) | |
1864 | ||
1865 | ||
1866 | 68: Why does ispell sometimes ignore the local dictionary? | |
1867 | ||
1868 | You need to update the version of ispell to 2.0.02. A patch is | |
1869 | available via: | |
1870 | ||
1871 | Anonymous FTP: | |
1872 | site: tut.cis.ohio-state.edu | |
1873 | file: /pub/gnu/ispell/patch2.Z | |
1874 | ||
1875 | You also need to change a line in ispell.el from: | |
1876 | ||
1877 | (defconst ispell-version "2.0.01") ;; Check against output of "ispell -v". | |
1878 | ||
1879 | to: | |
1880 | ||
1881 | (defconst ispell-version "2.0.02") ;; Check against output of "ispell -v". | |
1882 | ||
1883 | ||
1884 | ||
1885 | Configuring Emacs for yourself: | |
1886 | ||
1887 | 69: How do I set up a .emacs file properly? | |
1888 | ||
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 | |
1892 | identical. | |
1893 | ||
1894 | 70: How do you debug a .emacs file? | |
1895 | ||
1896 | First start Emacs with the "-q" command line option. Then, in the | |
1897 | *scratch* buffer, type the following: | |
1898 | ||
1899 | (setq debug-on-error t) C-j | |
1900 | (load-file "~/.emacs") C-j | |
1901 | ||
1902 | (C-j stands for Control-J, ie., hold the control key and press J.) | |
1903 | ||
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. | |
1907 | ||
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. | |
1911 | ||
1912 | 71: How do I turn on abbrevs by default just in mode XXX? | |
1913 | ||
1914 | Put this in your .emacs file: | |
1915 | ||
1916 | (condition-case () | |
1917 | (read-abbrev-file nil t) | |
1918 | (file-error nil)) | |
1919 | ||
1920 | (setq XXX-mode-hook | |
1921 | (function | |
1922 | (lambda () | |
1923 | (setq abbrev-mode t)))) | |
1924 | ||
1925 | 72: What does Emacs do every time it starts up? | |
1926 | ||
1927 | This question is not itself frequently asked, but helps to answer other | |
1928 | questions. | |
1929 | ||
1930 | Here is a complete explanation of the order in which things are done | |
1931 | during startup. | |
1932 | ||
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 | |
1935 | order: | |
1936 | ||
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). | |
1940 | ||
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 | |
1943 | FILE pointers. | |
1944 | ||
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. | |
1948 | ||
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. | |
1952 | ||
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. | |
1957 | ||
1958 | All of Emacs's internal data structures are initialized between steps 2 | |
1959 | and 5. | |
1960 | ||
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.) | |
1964 | ||
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 | |
1967 | X10.) | |
1968 | ||
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. | |
1973 | ||
1974 | 2. If the "-rn" switch was missing, Emacs looks for the WM_RES_NAME | |
1975 | environment variable. | |
1976 | ||
1977 | 3. If neither of the previous two steps succeed, Emacs uses the | |
1978 | filename with which it was invoked as its resource name. | |
1979 | ||
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. | |
1985 | ||
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. | |
1989 | ||
1990 | After each command line switch are given the equivalent resource | |
1991 | names in this format: (X10 name / X11 instance name / X11 class name). | |
1992 | ||
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//) | |
1998 | ||
1999 | "-b". Border width (in pixels). | |
2000 | (BorderWidth/borderWidth/BorderWidth) | |
2001 | ||
2002 | "-ib". Internal border width (in pixels) (default: 1). | |
2003 | (/internalBorder/BorderWidth) | |
2004 | ||
2005 | "-geometry" (synonym: "-w"). Window shape and size. "-geometry" is | |
2006 | X11 only, but its synonym "-w" was available under X10. | |
2007 | (/geometry/Geometry) | |
2008 | ||
2009 | Color options only: | |
2010 | ||
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) | |
2016 | ||
2017 | In addition, under X10, the resource "Keymap" was handled now. | |
2018 | ||
2019 | 5. If your Emacs isn't "dumped", the default Lisp libraries are | |
2020 | "loaded" now. | |
2021 | ||
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. | |
2025 | ||
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. | |
2030 | ||
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. | |
2036 | ||
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. | |
2042 | ||
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. | |
2046 | ||
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. | |
2050 | ||
2051 | 12. Now the terminal/window-system setup file is loaded. The name of | |
2052 | this file is determined as follows: | |
2053 | ||
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. | |
2057 | ||
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". | |
2061 | ||
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". | |
2068 | ||
2069 | 13. The rest of the command line arguments are handled at this point, in | |
2070 | the order they appear: | |
2071 | ||
2072 | "-funcall" (synonyms: "-f", "-e"). The next argument is treated as | |
2073 | the name of a function, which is called with no arguments. | |
2074 | ||
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!! | |
2079 | ||
2080 | "-kill". When this argument is handled, Emacs kills itself. | |
2081 | ||
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. | |
2085 | ||
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. | |
2091 | ||
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. | |
2097 | ||
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 | |
2103 | first time. | |
2104 | ||
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. | |
2107 | ||
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. | |
2111 | ||
2112 | 73: What are the valid X resource settings (ie., stuff in .Xdefaults file)? | |
2113 | ||
2114 | See question 72. | |
2115 | ||
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.} | |
2119 | ||
2120 | 74: How do I turn down the bell volume in Emacs running under X Windows? | |
2121 | ||
2122 | Under Epoch you can do: | |
2123 | ||
2124 | (setq epoch::bell-volume 20) | |
2125 | ||
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: | |
2128 | ||
2129 | XTfeep () | |
2130 | { | |
2131 | BLOCK_INPUT_DECLARE (); | |
2132 | #ifdef XDEBUG | |
2133 | fprintf (stderr, "XTfeep\n"); | |
2134 | #endif | |
2135 | BLOCK_INPUT (); | |
2136 | XBell (XXdisplay,50); /* change this 50 */ | |
2137 | UNBLOCK_INPUT (); | |
2138 | } | |
2139 | ||
2140 | 75: How do I make Emacs send 8-bit characters to my terminal? | |
2141 | ||
2142 | Johan Widen <jw@sics.se> writes: | |
2143 | ||
2144 | A patch for emacs-18.55 is available by ftp and mail-server from | |
2145 | sics.se. | |
2146 | ||
2147 | Anonymous FTP: | |
2148 | site: sics.se [192.16.123.90] | |
2149 | file: archive/emacs-18.55-8bit-diff | |
2150 | ||
2151 | E-mail: | |
2152 | To: mail-server@sics.se | |
2153 | body: send emacs-18.55-8bit-diff | |
2154 | ||
2155 | ||
2156 | ||
2157 | Emacs Lisp programming: | |
2158 | ||
2159 | 76: What dialect of Lisp is Emacs Lisp? | |
2160 | ||
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 | |
2163 | someone else.) | |
2164 | ||
2165 | 77: How close is Emacs Lisp to Common Lisp? | |
2166 | ||
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. | |
2173 | ||
2174 | 78: How do I execute a piece of Emacs Lisp code? | |
2175 | ||
2176 | There are a number of ways to execute (called "evaluate") an Emacs Lisp | |
2177 | "form": | |
2178 | ||
2179 | * If you want it evaluated every time you run Emacs, put it in a file | |
2180 | named ".emacs" in your home directory. | |
2181 | ||
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 | |
2184 | buffer. | |
2185 | ||
2186 | * In in Emacs-Lisp mode, typing M-C-x evaluates a top-level form before | |
2187 | or around point. | |
2188 | ||
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. | |
2191 | ||
2192 | * Typing M-ESC or M-x eval-expression allows you to type a Lisp form in | |
2193 | the minibuffer which will be evaluated. | |
2194 | ||
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.) | |
2197 | ||
2198 | 79: How do I make a set of operations fully local to a region? | |
2199 | ||
2200 | Use narrow-to-region inside of save-restriction. | |
2201 | ||
2202 | 80: How can I highlight a region? | |
2203 | ||
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>. | |
2208 | ||
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. | |
2211 | ||
2212 | 81: How do I change Emacs's idea of the tab character's length? | |
2213 | ||
2214 | Example: (setq default-tab-width 10). | |
2215 | ||
2216 | 82: What is the difference between (interactive "P") and (interactive "p")? | |
2217 | ||
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: | |
2220 | ||
2221 | Prefix keys typed result of: "P" "p" | |
2222 | nothing nil 1 | |
2223 | "M-1" 1 1 | |
2224 | "C-u 1" 1 1 | |
2225 | "M--" '- -1 | |
2226 | "C-u -" '- -1 | |
2227 | "C-u" (4) 4 | |
2228 | "C-u C-u" (16) 16 | |
2229 | ||
2230 | ||
2231 | ||
2232 | Carrying Out Common Tasks: | |
2233 | ||
2234 | 83: How do I insert ">"'s in the beginning of every line in a buffer? | |
2235 | ||
2236 | Type "M-x replace-regexp RET ^ RET > RET". ("replace-regexp" can be | |
2237 | shortened to "repl TAB r".) | |
2238 | ||
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?) | |
2241 | ||
2242 | 84: How do I insert "_^H" characters before each character in a | |
2243 | paragraph to get an underlined paragraph? | |
2244 | ||
2245 | M-x underline-region. | |
2246 | ||
2247 | 85: How do I repeat a command as many times as possible? | |
2248 | ||
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 | |
2251 | suppressed. | |
2252 | ||
2253 | 86: How do I search for an unprintable (8-bit) character that appears | |
2254 | in a buffer as \237? | |
2255 | ||
2256 | C-s C-q 2 3 7 | |
2257 | ||
2258 | (This assumes the value of search-quote-char is 17 (C-q).) | |
2259 | ||
2260 | 87: How do I tell Emacs to automatically indent a new line to the | |
2261 | indentation of the previous line? | |
2262 | ||
2263 | M-x indented-text-mode. (This is a major mode.) | |
2264 | ||
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. | |
2272 | ||
2273 | 88: How do I make Emacs "typeover" or "overwrite" when I type instead of | |
2274 | always inserting? | |
2275 | ||
2276 | M-x overwrite-mode (minor mode). | |
2277 | ||
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. | |
2281 | ||
2282 | 89: How do I show which parenthesis matches the one I'm looking at? | |
2283 | ||
2284 | If you're looking at a right parenthesis (or brace or bracket) you can | |
2285 | delete it and reinsert it. | |
2286 | ||
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 | |
2290 | the syntax table.) | |
2291 | ||
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. | |
2295 | ||
2296 | (By an unknown contributor.) | |
2297 | ||
2298 | (global-set-key "%" 'match-paren) | |
2299 | ||
2300 | (defun match-paren (arg) | |
2301 | "Go to the matching parenthesis if on parenthesis otherwise insert %." | |
2302 | (interactive "p") | |
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))))) | |
2306 | ||
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? | |
2309 | ||
2310 | M-x picture-mode. (This is a minor mode, in theory anyway ...) | |
2311 | ||
2312 | 91: How do I read news under Emacs? | |
2313 | ||
2314 | There are at least three news reading packages that operate inside | |
2315 | Emacs. "rnews" comes with Emacs. "GNUS" and "Gnews" come separately. | |
2316 | ||
2317 | {I've never used rnews; could someone write a description? BTW, rnews | |
2318 | will be replaced with GNUS in Emacs 19.} | |
2319 | ||
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. | |
2323 | ||
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. | |
2331 | ||
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 | |
2335 | gnu.emacs.gnews. | |
2336 | ||
2337 | 92: In C mode, can I show just the lines that will be left after #ifdef | |
2338 | commands are handled by the compiler? | |
2339 | ||
2340 | M-x hide-ifdef-mode. (This is a minor mode.) | |
2341 | ||
2342 | You may have to (load "hideif") first. If you want to do this | |
2343 | regularly, put this in your .emacs file: | |
2344 | ||
2345 | (autoload 'hide-ifdef-mode "hideif" nil t) | |
2346 | ||
2347 | 93: Is there an equivalent to the "." (dot) command of vi? | |
2348 | ||
2349 | ("." is the redo command in vi. It redoes the last insertion/deletion.) | |
2350 | ||
2351 | No, not really. | |
2352 | ||
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. | |
2357 | ||
2358 | To repeat something on each line I recommend using keyboard macros. | |
2359 | ||
2360 | 94: How do I use emacstool under SunView? | |
2361 | ||
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). | |
2364 | ||
2365 | 95: How do I get Emacs to display the current line number on the mode line? | |
2366 | ||
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. | |
2372 | ||
2373 | Emacs 19 will probably be able to do this, but probably not with great | |
2374 | efficiency. | |
2375 | ||
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. | |
2382 | ||
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.) | |
2385 | ||
2386 | 96: How do I tell Emacs to iconify itself? | |
2387 | ||
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 | |
2390 | itself. | |
2391 | ||
2392 | 97: How do I use regexps (regular expressions) in Emacs? | |
2393 | ||
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". | |
2396 | ||
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. | |
2400 |