comparison man/xemacs-faq.texi @ 2537:b7b90f750a78

[xemacs-hg @ 2005-01-31 20:08:32 by ben] Documentation updates GETTING.GNU.SOFTWARE, Makefile.in.in: Delete GETTING.GNU.SOFTWARE from SOURCES. PROBLEMS: Delete reference to check_cygwin_setup.sh. Delete stuff that is irrelevant, mislocated or woefully out-of-date. GNU, SERVICE: Delete. * ORDERS, ORDERS.EUROPE, ORDERS.JAPAN: Delete. * CHARSETS, CODINGS: Delete. * DEBUG, LPF, MORE.STUFF, MOTIVATION: Delete. aliases.ksh: Delete. (moved to xemacs-builds/steve) * README.HYPERBOLE, README.OO-BROWSER: Delete. * chr.png, chrm.png: Move to photos/. check_cygwin_setup.sh: Delete. * gnu.xpm, gnu.xbm, sink.xbm: Delete. * ms-kermit, ms-kermit-7bit: Delete. TERMS: Delete. * DISTRIB, FTP, MACHINES, MAILINGLISTS, PACKAGES: Delete and move to FAQ. BETA: Delete and move to man/beta.texi. README: Update. help.el: Removed. xemacs/help.texi: Delete references to DISTRIB. Point to FAQ. xemacs/new.texi: Update sample code for version checking. xemacs/xemacs.texi: Delete references to DISTRIB. Point directly to web site. Update stuff referring to GNU Emacs. Delete references to Win-Emacs. Makefile: Add beta.texi and built files. xemacs-faq.texi: Major overhaul of section 1. Add mailing list info, update downloading info, add info on CVS, etc. xemacs.mak: Also copy BUGS, README, COPYING and Installation.
author ben
date Mon, 31 Jan 2005 20:08:52 +0000
parents 4c1db13742bc
children 0e04aba50e0b
comparison
equal deleted inserted replaced
2536:7edc33019aa4 2537:b7b90f750a78
5 @setchapternewpage off 5 @setchapternewpage off
6 @c %**end of header 6 @c %**end of header
7 @finalout 7 @finalout
8 @titlepage 8 @titlepage
9 @title XEmacs FAQ 9 @title XEmacs FAQ
10 @subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2004/12/29 05:08:26 $ 10 @subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2005/01/31 20:08:48 $
11 @sp 1 11 @sp 1
12 @author Ben Wing <ben@@xemacs.org> 12 @author Ben Wing <ben@@xemacs.org>
13 @author Tony Rossini <rossini@@u.washington.edu> 13 @author Tony Rossini <rossini@@u.washington.edu>
14 @author Chuck Thompson <cthomp@@xemacs.org> 14 @author Chuck Thompson <cthomp@@xemacs.org>
15 @author Steve Baur <steve@@xemacs.org> 15 @author Steve Baur <steve@@xemacs.org>
192 @detailmenu 192 @detailmenu
193 --- The Detailed Node Listing --- 193 --- The Detailed Node Listing ---
194 194
195 1 Introduction, Policy, Credits 195 1 Introduction, Policy, Credits
196 196
197 1.0: Introduction 197 1.0: What is XEmacs?
198 * Q1.0.1:: What is XEmacs? 198 * Q1.0.1:: What is XEmacs?
199 * Q1.0.2:: What is the current version of XEmacs? 199 * Q1.0.2:: What is the current version of XEmacs?
200 * Q1.0.3:: Where can I find it? 200 * Q1.0.3:: How do you pronounce XEmacs?
201 * Q1.0.4:: Are binaries available? 201 * Q1.0.4:: What does XEmacs look like?
202 * Q1.0.5:: How does XEmacs differ from GNU Emacs? 202 * Q1.0.5:: Who wrote XEmacs?
203 * Q1.0.6:: How much does XEmacs differ? 203 * Q1.0.6:: Who wrote the FAQ?
204 * Q1.0.7:: Is XEmacs "GNU"? 204
205 * Q1.0.8:: What is the correct way to refer to XEmacs and GNU Emacs? 205 1.1: Getting XEmacs
206 * Q1.0.9:: Why haven't XEmacs and GNU Emacs merged? 206 * Q1.1.1:: Where can I find XEmacs?
207 * Q1.0.10:: Where can I get help? 207 * Q1.1.2:: Are binaries available?
208 * Q1.0.11:: Where are the mailing lists archived? 208 * Q1.1.3:: How do I get the bleeding-edge sources?
209 * Q1.0.12:: How do you pronounce XEmacs? 209 * Q1.1.4:: Where can I obtain a printed copy of the XEmacs User's Manual?
210 * Q1.0.13:: What does XEmacs look like? 210
211 * Q1.0.14:: Where can I obtain a printed copy of the XEmacs User's Manual? 211 1.2: Versions for Different Operating Systems
212 212 * Q1.2.1:: Do I need X11 to run XEmacs?
213 1.1: Versions for Different Operating Systems 213 * Q1.2.2:: What versions of Unix does XEmacs run on?
214 * Q1.1.1:: Do I need X11 to run XEmacs? 214 * Q1.2.3:: Is there a port of XEmacs to Microsoft Windows?
215 * Q1.1.2:: Is there a port of XEmacs to Microsoft Windows? 215 * Q1.2.4:: Can I build XEmacs on MS Windows with X support? Do I need to?
216 * Q1.1.3:: Can I build XEmacs on MS Windows with X support? Do I need to? 216 * Q1.2.5:: What are Cygwin and MinGW, and do I need them to run XEmacs?
217 * Q1.1.4:: What are Cygwin and MinGW, and do I need them to run XEmacs? 217 * Q1.2.6:: What are the differences between the various MS Windows emacsen?
218 * Q1.1.5:: What are the differences between the various MS Windows emacsen? 218 * Q1.2.7:: How does the port cope with differences in the Windows user interface?
219 * Q1.1.6:: Is there a port of XEmacs to the Macintosh? 219 * Q1.2.8:: Is there a port of XEmacs to the Macintosh?
220 * Q1.1.7:: Is there a port of XEmacs to NextStep? 220 * Q1.2.9:: Is there a port of XEmacs to MS-DOS?
221 * Q1.1.8:: Is there a port of XEmacs to OS/2? 221 * Q1.2.10:: Is there a port of XEmacs to OS/2?
222 * Q1.1.9:: How does the port cope with differences in the Windows user interface? 222 * Q1.2.11:: Is there a port of XEmacs to NextStep?
223 223 * Q1.2.12:: Is there a port of XEmacs to VMS?
224 1.2: Policies 224
225 * Q1.2.1:: What is the FAQ editorial policy? 225 1.3: Getting Started
226 * Q1.2.2:: How do I become a beta tester? 226 * Q1.3.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one?
227 * Q1.2.3:: How do I contribute to XEmacs itself? 227 * Q1.3.2:: Where do I put my @file{init.el} file?
228 228 * Q1.3.3:: Can I use the same @file{init.el} with the other Emacs?
229 1.3: Credits 229 * Q1.3.4:: Any good XEmacs tutorials around?
230 * Q1.3.1:: Who wrote XEmacs? 230 * Q1.3.5:: May I see an example of a useful XEmacs Lisp function?
231 * Q1.3.2:: Who contributed to this version of the FAQ? 231 * Q1.3.6:: And how do I bind it to a key?
232 * Q1.3.3:: Who contributed to the FAQ in the past? 232 * Q1.3.7:: What's the difference between a macro and a function?
233 233 * Q1.3.8:: What is @code{Custom}?
234 1.4: Internationalization 234
235 * Q1.4.1:: What is the status of internationalization support aka MULE (including Asian language support)? 235 1.4: Getting Help
236 * Q1.4.2:: How can I help with internationalization? 236 * Q1.4.1:: Where can I get help?
237 * Q1.4.3:: How do I type non-ASCII characters? 237 * Q1.4.2:: Which mailing lists are there?
238 * Q1.4.4:: Can XEmacs messages come out in a different language? 238 * Q1.4.2:: Where are the mailing lists archived?
239 * Q1.4.5:: Please explain the various input methods in MULE/XEmacs 239 * Q1.4.3:: How can I get two instances of info?
240 * Q1.4.6:: How do I portably code for MULE/XEmacs? 240 * Q1.4.4:: How do I add new Info directories?
241 * Q1.4.7:: How about Cyrillic modes? 241
242 * Q1.4.8:: Does XEmacs support Unicode? 242 1.5: Contributing to XEmacs
243 * Q1.4.9:: How does XEmacs display Unicode? 243 * Q1.5.1:: How do I submit changes to the FAQ?
244 244 * Q1.5.2:: How do I become a beta tester?
245 1.5: Getting Started 245 * Q1.5.3:: How do I contribute to XEmacs itself?
246 * Q1.5.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one? 246
247 * Q1.5.2:: Where do I put my @file{init.el} file? 247 1.6: Politics (XEmacs vs. GNU Emacs)
248 * Q1.5.3:: Can I use the same @file{init.el} with the other Emacs? 248 * Q1.6.1:: What is GNU Emacs?
249 * Q1.5.4:: Any good XEmacs tutorials around? 249 * Q1.6.2:: How does XEmacs differ from GNU Emacs?
250 * Q1.5.5:: May I see an example of a useful XEmacs Lisp function? 250 * Q1.6.3:: How much does XEmacs differ?
251 * Q1.5.6:: And how do I bind it to a key? 251 * Q1.6.4:: Is XEmacs "GNU"?
252 * Q1.5.7:: What's the difference between a macro and a function? 252 * Q1.6.5:: What is the correct way to refer to XEmacs and GNU Emacs?
253 * Q1.5.8:: What is @code{Custom}? 253 * Q1.6.6:: Why haven't XEmacs and GNU Emacs merged?
254
255 1.7: External Packages
256 * Q1.7.1:: Which external packages are there?
257
258 1.8: Internationalization
259 * Q1.8.1:: What is the status of internationalization support aka MULE (including Asian language support)?
260 * Q1.8.2:: How can I help with internationalization?
261 * Q1.8.3:: How do I type non-ASCII characters?
262 * Q1.8.4:: Can XEmacs messages come out in a different language?
263 * Q1.8.5:: Please explain the various input methods in MULE/XEmacs
264 * Q1.8.6:: How do I portably code for MULE/XEmacs?
265 * Q1.8.7:: How about Cyrillic modes?
266 * Q1.8.8:: Does XEmacs support Unicode?
267 * Q1.8.9:: How does XEmacs display Unicode?
254 268
255 2 Installation and Troubleshooting 269 2 Installation and Troubleshooting
256 270
257 2.0: Installation (General), Packages 271 2.0: Installation (General), Packages
258 * Q2.0.1:: How do I install the packages? 272 * Q2.0.1:: How do I install the packages?
471 * Q6.4.2:: How do I run W3 from behind a firewall? 485 * Q6.4.2:: How do I run W3 from behind a firewall?
472 * Q6.4.3:: Is it true that W3 supports style sheets and tables? 486 * Q6.4.3:: Is it true that W3 supports style sheets and tables?
473 487
474 7 Advanced Customization Using XEmacs Lisp 488 7 Advanced Customization Using XEmacs Lisp
475 489
476 7.0: Online Help 490 7.0: Emacs Lisp and @file{init.el}
477 * Q7.0.1:: How can I get two instances of info? 491 * Q7.0.1:: What version of Emacs am I running?
478 * Q7.0.2:: How do I add new Info directories? 492 * Q7.0.2:: How can I evaluate Emacs-Lisp expressions?
479 493 * Q7.0.3:: @code{(setq tab-width 6)} behaves oddly.
480 7.1: Emacs Lisp and @file{init.el} 494 * Q7.0.4:: How can I add directories to the @code{load-path}?
481 * Q7.1.1:: What version of Emacs am I running? 495 * Q7.0.5:: How to check if a lisp function is defined?
482 * Q7.1.2:: How can I evaluate Emacs-Lisp expressions? 496 * Q7.0.6:: Can I force the output of @code{(face-list)} to a buffer?
483 * Q7.1.3:: @code{(setq tab-width 6)} behaves oddly. 497
484 * Q7.1.4:: How can I add directories to the @code{load-path}? 498 7.1: Emacs Lisp Programming Techniques
485 * Q7.1.5:: How to check if a lisp function is defined? 499 * Q7.1.1:: What is the difference in key sequences between XEmacs and GNU Emacs?
486 * Q7.1.6:: Can I force the output of @code{(face-list)} to a buffer? 500 * Q7.1.2:: Can I generate "fake" keyboard events?
487 501 * Q7.1.3:: Could you explain @code{read-kbd-macro} in more detail?
488 7.2: Emacs Lisp Programming Techniques 502 * Q7.1.4:: What is the performance hit of @code{let}?
489 * Q7.2.1:: What is the difference in key sequences between XEmacs and GNU Emacs? 503 * Q7.1.5:: What is the recommended use of @code{setq}?
490 * Q7.2.2:: Can I generate "fake" keyboard events? 504 * Q7.1.6:: What is the typical misuse of @code{setq}?
491 * Q7.2.3:: Could you explain @code{read-kbd-macro} in more detail? 505 * Q7.1.7:: I like the @code{do} form of cl, does it slow things down?
492 * Q7.2.4:: What is the performance hit of @code{let}? 506 * Q7.1.8:: I like recursion, does it slow things down?
493 * Q7.2.5:: What is the recommended use of @code{setq}? 507 * Q7.1.9:: How do I put a glyph as annotation in a buffer?
494 * Q7.2.6:: What is the typical misuse of @code{setq}? 508 * Q7.1.10:: @code{map-extents} won't traverse all of my extents!
495 * Q7.2.7:: I like the @code{do} form of cl, does it slow things down? 509 * Q7.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
496 * Q7.2.8:: I like recursion, does it slow things down? 510
497 * Q7.2.9:: How do I put a glyph as annotation in a buffer? 511 7.2: Mathematics
498 * Q7.2.10:: @code{map-extents} won't traverse all of my extents! 512 * Q7.1.1:: What are bignums, ratios, and bigfloats in Lisp?
499 * Q7.2.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time? 513 * Q7.1.2:: XEmacs segfaults when I use very big numbers!
500 514 * Q7.1.3:: Bignums are really slow!
501 7.3: Mathematics 515 * Q7.1.4:: Equal bignums don't compare as equal! What gives?
502 * Q7.3.1:: What are bignums, ratios, and bigfloats in Lisp?
503 * Q7.3.2:: XEmacs segfaults when I use very big numbers!
504 * Q7.3.3:: Bignums are really slow!
505 * Q7.3.4:: Equal bignums don't compare as equal! What gives?
506 516
507 8 Other External Packages 517 8 Other External Packages
508 518
509 8.0: TeX 519 8.0: TeX
510 * Q8.0.1:: Is there something better than LaTeX mode? 520 * Q8.0.1:: Is there something better than LaTeX mode?
535 545
536 10 New information about old XEmacsen 546 10 New information about old XEmacsen
537 547
538 10.0: XEmacs 21.1 548 10.0: XEmacs 21.1
539 * Q10.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. 549 * Q10.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1.
540
541 @end detailmenu 550 @end detailmenu
542 @end menu 551 @end menu
543 552
544 @node Introduction, Installation, Top, Top 553 @node Introduction, Installation, Top, Top
545 @unnumbered 1 Introduction, Policy, Credits 554 @unnumbered 1 Introduction, Policy, Credits
572 If you notice any errors or items which should be added or amended to 581 If you notice any errors or items which should be added or amended to
573 this FAQ please send email to @email{xemacs-beta@@xemacs.org}. 582 this FAQ please send email to @email{xemacs-beta@@xemacs.org}.
574 Include @samp{XEmacs FAQ} on the Subject: line. 583 Include @samp{XEmacs FAQ} on the Subject: line.
575 584
576 @menu 585 @menu
577 1.0: Introduction 586 1.0: What is XEmacs?
578 * Q1.0.1:: What is XEmacs? 587 * Q1.0.1:: What is XEmacs?
579 * Q1.0.2:: What is the current version of XEmacs? 588 * Q1.0.2:: What is the current version of XEmacs?
580 * Q1.0.3:: Where can I find it? 589 * Q1.0.3:: How do you pronounce XEmacs?
581 * Q1.0.4:: Are binaries available? 590 * Q1.0.4:: What does XEmacs look like?
582 * Q1.0.5:: How does XEmacs differ from GNU Emacs? 591 * Q1.0.5:: Who wrote XEmacs?
583 * Q1.0.6:: How much does XEmacs differ? 592 * Q1.0.6:: Who wrote the FAQ?
584 * Q1.0.7:: Is XEmacs "GNU"? 593
585 * Q1.0.8:: What is the correct way to refer to XEmacs and GNU Emacs? 594 1.1: Getting XEmacs
586 * Q1.0.9:: Why haven't XEmacs and GNU Emacs merged? 595 * Q1.1.1:: Where can I find XEmacs?
587 * Q1.0.10:: Where can I get help? 596 * Q1.1.2:: Are binaries available?
588 * Q1.0.11:: Where are the mailing lists archived? 597 * Q1.1.3:: How do I get the bleeding-edge sources?
589 * Q1.0.12:: How do you pronounce XEmacs? 598 * Q1.1.4:: Where can I obtain a printed copy of the XEmacs User's Manual?
590 * Q1.0.13:: What does XEmacs look like? 599
591 * Q1.0.14:: Where can I obtain a printed copy of the XEmacs User's Manual? 600 1.2: Versions for Different Operating Systems
592 601 * Q1.2.1:: Do I need X11 to run XEmacs?
593 1.1: Versions for Different Operating Systems 602 * Q1.2.2:: What versions of Unix does XEmacs run on?
594 * Q1.1.1:: Do I need X11 to run XEmacs? 603 * Q1.2.3:: Is there a port of XEmacs to Microsoft Windows?
595 * Q1.1.2:: Is there a port of XEmacs to Microsoft Windows? 604 * Q1.2.4:: Can I build XEmacs on MS Windows with X support? Do I need to?
596 * Q1.1.3:: Can I build XEmacs on MS Windows with X support? Do I need to? 605 * Q1.2.5:: What are Cygwin and MinGW, and do I need them to run XEmacs?
597 * Q1.1.4:: What are Cygwin and MinGW, and do I need them to run XEmacs? 606 * Q1.2.6:: What are the differences between the various MS Windows emacsen?
598 * Q1.1.5:: What are the differences between the various MS Windows emacsen? 607 * Q1.2.7:: How does the port cope with differences in the Windows user interface?
599 * Q1.1.6:: Is there a port of XEmacs to the Macintosh? 608 * Q1.2.8:: Is there a port of XEmacs to the Macintosh?
600 * Q1.1.7:: Is there a port of XEmacs to NextStep? 609 * Q1.2.9:: Is there a port of XEmacs to MS-DOS?
601 * Q1.1.8:: Is there a port of XEmacs to OS/2? 610 * Q1.2.10:: Is there a port of XEmacs to OS/2?
602 * Q1.1.9:: How does the port cope with differences in the Windows user interface? 611 * Q1.2.11:: Is there a port of XEmacs to NextStep?
603 612 * Q1.2.12:: Is there a port of XEmacs to VMS?
604 1.2: Policies 613
605 * Q1.2.1:: What is the FAQ editorial policy? 614 1.3: Getting Started
606 * Q1.2.2:: How do I become a beta tester? 615 * Q1.2.13::
607 * Q1.2.3:: How do I contribute to XEmacs itself? 616 * Q1.3.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one?
608 617 * Q1.3.2:: Where do I put my @file{init.el} file?
609 1.3: Credits 618 * Q1.3.3:: Can I use the same @file{init.el} with the other Emacs?
610 * Q1.3.1:: Who wrote XEmacs? 619 * Q1.3.4:: Any good XEmacs tutorials around?
611 * Q1.3.2:: Who contributed to this version of the FAQ? 620 * Q1.3.5:: May I see an example of a useful XEmacs Lisp function?
612 * Q1.3.3:: Who contributed to the FAQ in the past? 621 * Q1.3.6:: And how do I bind it to a key?
613 622 * Q1.3.7:: What's the difference between a macro and a function?
614 1.4: Internationalization 623 * Q1.3.8:: What is @code{Custom}?
615 * Q1.4.1:: What is the status of internationalization support aka MULE (including Asian language support)? 624
616 * Q1.4.2:: How can I help with internationalization? 625 1.4: Getting Help
617 * Q1.4.3:: How do I type non-ASCII characters? 626 * Q1.4.1:: Where can I get help?
618 * Q1.4.4:: Can XEmacs messages come out in a different language? 627 * Q1.4.2:: Which mailing lists are there?
619 * Q1.4.5:: Please explain the various input methods in MULE/XEmacs 628 * Q1.4.3:: How can I get two instances of info?
620 * Q1.4.6:: How do I portably code for MULE/XEmacs? 629 * Q1.4.4:: How do I add new Info directories?
621 * Q1.4.7:: How about Cyrillic modes? 630
622 * Q1.4.8:: Does XEmacs support Unicode? 631 1.5: Contributing to XEmacs
623 * Q1.4.9:: How does XEmacs display Unicode? 632 * Q1.4.5::
624 633 * Q1.5.1:: How do I submit changes to the FAQ?
625 1.5: Getting Started 634 * Q1.5.2:: How do I become a beta tester?
626 * Q1.5.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one? 635 * Q1.5.3:: How do I contribute to XEmacs itself?
627 * Q1.5.2:: Where do I put my @file{init.el} file? 636
628 * Q1.5.3:: Can I use the same @file{init.el} with the other Emacs? 637 1.6: Politics (XEmacs vs. GNU Emacs)
629 * Q1.5.4:: Any good XEmacs tutorials around? 638 * Q1.6.1:: What is GNU Emacs?
630 * Q1.5.5:: May I see an example of a useful XEmacs Lisp function? 639 * Q1.6.2:: How does XEmacs differ from GNU Emacs?
631 * Q1.5.6:: And how do I bind it to a key? 640 * Q1.6.3:: How much does XEmacs differ?
632 * Q1.5.7:: What's the difference between a macro and a function? 641 * Q1.6.4:: Is XEmacs "GNU"?
633 * Q1.5.8:: What is @code{Custom}? 642 * Q1.6.5:: What is the correct way to refer to XEmacs and GNU Emacs?
643 * Q1.6.6:: Why haven't XEmacs and GNU Emacs merged?
644
645 1.7: External Packages
646 * Q1.7.1:: Which external packages are there?
647
648 1.8: Internationalization
649 * Q1.8.1:: What is the status of internationalization support aka MULE (including Asian language support)?
650 * Q1.8.2:: How can I help with internationalization?
651 * Q1.8.3:: How do I type non-ASCII characters?
652 * Q1.8.4:: Can XEmacs messages come out in a different language?
653 * Q1.8.5:: Please explain the various input methods in MULE/XEmacs
654 * Q1.8.6:: How do I portably code for MULE/XEmacs?
655 * Q1.8.7:: How about Cyrillic modes?
656 * Q1.8.8:: Does XEmacs support Unicode?
657 * Q1.8.9:: How does XEmacs display Unicode?
634 @end menu 658 @end menu
635 659
636 @unnumberedsec 1.0: Introduction 660 @unnumberedsec 1.0: What is XEmacs?
637 661
638 @node Q1.0.1, Q1.0.2, Introduction, Introduction 662 @node Q1.0.1, Q1.0.2, Introduction, Introduction
639 @unnumberedsubsec Q1.0.1: What is XEmacs? 663 @unnumberedsubsec Q1.0.1: What is XEmacs?
640 664
641 XEmacs is a powerful, highly customizable open source text editor and 665 XEmacs is a powerful, highly customizable open source text editor and
665 689
666 XEmacs 19.16, released in November, 1997. was the last release of v19, 690 XEmacs 19.16, released in November, 1997. was the last release of v19,
667 and was also the last version without international language support. 691 and was also the last version without international language support.
668 692
669 @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction 693 @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction
670 @unnumberedsubsec Q1.0.3: Where can I find it? 694 @unnumberedsubsec Q1.0.3: How do you pronounce XEmacs?
671 695
672 The canonical source and binaries can be found at: 696 The most common pronounciation is @samp{Eks eemax}.
673
674 @example
675 @uref{http://ftp.xemacs.org/pub/xemacs/}
676 @end example
677 697
678 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction 698 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction
679 @unnumberedsubsec Q1.0.4: Are binaries available? 699 @unnumberedsubsec Q1.0.4: What does XEmacs look like?
700
701 Screen snapshots are available at
702 @uref{http://www.xemacs.org/About/Screenshots/index.html}
703 as part of the XEmacs website.
704
705 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction
706 @unnumberedsubsec Q1.0.5: Who wrote XEmacs?
707
708 XEmacs is the result of the time and effort of many people, and the
709 active developers have changed over time. There are two major
710 components of the XEmacs effort -- writing the code itself and providing
711 all the support work (testing the code, releasing beta and final
712 versions, handling patches, reading bug reports, maintaining the web
713 site, managing the mailing lists, etc. etc.). Neither component would
714 work without the other.
715
716 @subheading CODING
717
718 The primary code contributor over the years has been Ben Wing (active
719 since late 1992). Between 1991 and 1995, large amounts of coding was
720 contributed by Jamie Zawinski and Chuck Thompson. Many other people
721 have authored major subsystems or otherwise contributed large amounts of
722 code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris,
723 Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard
724 Mlynarik, Stig, William Perry and plenty of others.
725
726 Primary XEmacs-specific subsystems and their authors:
727
728 @table @asis
729 @item Objects
730 @itemize @minus
731 @item
732 Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcrecords: Richard Mlynarik, 1994
733 @item
734 Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Buchholz
735 @item
736 Portable dumper, object descriptions: Olivier Galibert
737 @item
738 KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber and students
739 @item
740 Random object work (object equal and hash methods, weak lists, lcrecord lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing
741 @item
742 Profiling: Ben Wing
743 @item
744 Some byte-compilation and hash-table improvements: Martin Buchholz
745 @item
746 Bignum: Jerry James
747 @end itemize
748
749 @item Internationalization/Mule
750 @itemize @minus
751 @item
752 mostly Ben Wing; many ideas for future work, Stephen Turnbull
753 @end itemize
754
755 @item I/O
756 @itemize @minus
757 @item
758 Basic event/event-stream implementation: Jamie Zawinski
759 @item
760 Most event work since 1994: Ben Wing
761 @item
762 Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing
763 @item
764 Process method abstraction, Windows process work: Kirill Katsnelson
765 @item
766 Misc-user events, async timeouts, most quit-checking and signal code, most other work since 1994: Ben Wing
767 @item
768 Lstreams: Ben Wing
769 @end itemize
770
771 @item Display
772 @itemize @minus
773 @item
774 Redisplay mechanism: implementation, Chuck Thompson; additional work, lots of people
775 @item
776 Glyphs: mostly Ben Wing
777 @item
778 Specifiers: Ben Wing
779 @item
780 Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wing
781 @item
782 Widgets: Andy Piper
783 @item
784 JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, others (see comment in @file{glyphs-eimage.c})
785 @item
786 Menus: Jamie Zawinski, someone at Lucid (Lucid menus)
787 @item
788 Scrollbars: Chuck Thompson, ??? (Lucid scrollbar)
789 @item
790 Multi-device/device-independence work (console/device/etc methods): Ben Wing, prototype by chuck thompson
791 @item
792 Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben Wing
793 @item
794 Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wing
795 @item
796 Toolbars: implementation, chuck, much interface work, Ben Wing
797 @item
798 Gutters, tabs: andy piper
799 @end itemize
800
801 @item Device subsystems
802 @itemize @minus
803 @item
804 X Windows: Jamie Zawinksi, Ben Wing, others
805 @item
806 GTK: William Perry, Malcolm Purvis
807 @item
808 MS Windows: initial implementation, Jonathan Harris; some more work, Andy Piper, Ben Wing
809 @item
810 TTY: Chuck Thompson, Ben Wing
811 @item
812 Cygwin: Andy Piper
813 @end itemize
814
815 @item Misc
816 @itemize @minus
817 @item
818 Configure: initial porting from fsf, Chuck Thompson; conversion to autoconf 2, much rewriting, Martin Buchholz
819 @item
820 Most initialization-related code: Ben Wing
821 @item
822 Internals manual, much of Lisp manual: Ben Wing
823 @item
824 FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, Ben Wing
825 @end itemize
826 @end table
827
828 @subheading SUPPORT
829
830 Currently, support duties are handled by many different people.
831
832 Release managers have been
833
834 @itemize @minus
835 @item
836 Stephen Turnbull (April 2001 - January 2003, March 2004 - present, 21.2.47 - 21.4.12, 21.5.2 - 21.5.7, 21.5.17 - present)
837 @item
838 Vin Shelton (May 2003 - present, 21.4.13 - present)
839 @item
840 Steve Youngs (July 2002 - September 2003, 21.5.8 - 21.5.16)
841 @item
842 Martin Buchholz (December 1998, November 1999 - May 2001, 21.2.7 - 21.2.8, 21.2.21 - 21.2.46, 21.5.0 - 21.5.1)
843 @item
844 Steve Baur (early 1997 - December 1998, February 1999 - November 1999, 19.15 - 21.2.5, 21.2.9 - 21.2.20)
845 @item
846 Andy Piper (December 1998, 21.2.6)
847 @item
848 Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14)
849 @item
850 Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10)
851 @end itemize
852
853 The recent overlapping dates are intentional, since two or three trees
854 are maintained simultaneously at any point.
855
856 Other major support work:
857
858 @itemize @minus
859 @item
860 Adrian Aichner wrote and maintains the web site.
861 @item
862 Stephen Turnbull has produced many of the beta and semi-stable releases
863 and has attempted to be the "face" of XEmacs on the newsgroups and
864 mailing lists.
865 @item
866 Steve Youngs currently produces the beta releases (???).
867 @item
868 Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns
869 maintaining the packages.
870 @item
871 Vin Shelton maintains the stable releases.
872 @item
873 Testing - #### Norbert, Adrian, ???
874 @end itemize
875
876 Portraits and email of some of the major developers:
877
878 @itemize @bullet
879 @item @email{andy@@xemacs.org, Andy Piper}
880 @html
881 <br><img src="piper.png" alt="Portrait of Andy Piper"><br>
882 @end html
883
884 @item @email{ben@@xemacs.org, Ben Wing}
885 @html
886 <br><img src="ben.png" alt="Portrait of Ben Wing"><br>
887 @end html
888
889 @item @email{cthomp@@xemacs.org, Chuck Thompson}
890 @html
891 <br><img src="cthomp.png" alt="Portrait of Chuck Thompson"><br>
892 @end html
893
894 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
895
896 @html
897 <br><img src="hniksic.png" alt="Portrait of Hrvoje Niksic"><br>
898 @end html
899
900 @item @email{jwz@@jwz.org, Jamie Zawinski}
901 @html
902 <br><img src="jwz.png" alt="Portrait of Jamie Zawinski"><br>
903 @end html
904
905 @item @email{martin@@xemacs.org, Martin Buchholz}
906 @html
907 <br><img src="martin.png" alt="Portrait of Martin Buchholz"><br>
908 @end html
909
910 @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
911 @html
912 <br><img src="mly.png" alt="Portrait of Richard Mlynarik"><br>
913 @end html
914
915 @item @email{stephen@@xemacs.org, Stephen Turnbull}
916
917 @item @email{steve@@xemacs.org, Steve Baur}
918 @html
919 <br><img src="slb.png" alt="Portrait of Steve Baur"><br>
920 @end html
921 @end itemize
922
923 Many other people have contributed to XEmacs; this is partially
924 enumerated in the @samp{About XEmacs} option in the Help menu.
925
926 @node Q1.0.6, Q1.1.1, Q1.0.5, Introduction
927 @unnumberedsubsec Q1.0.6: Who wrote the FAQ?
928
929 The current version of this FAQ was created by @email{ben@@xemacs.org,
930 Ben Wing}.
931
932 Previous contributors to the FAQ include
933
934 @itemize @bullet
935 @item @email{steve@@xemacs.org, SL Baur}
936
937 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
938
939 @item @email{binge@@aloft.att.com, Curtis.N.Bingham}
940
941 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan}
942
943 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley}
944
945 @item @email{cognot@@ensg.u-nancy.fr, Richard Cognot}
946
947 @item @email{daku@@nortel.ca, Mark Daku}
948
949 @item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque}
950
951 @item @email{eeide@@cs.utah.edu, Eric Eide}
952
953 @item @email{af@@biomath.jussieu.fr, Alain Fauconnet}
954
955 @item @email{cflatter@@nrao.edu, Chris Flatters}
956
957 @item @email{ginsparg@@adra.com, Evelyn Ginsparg}
958
959 @item @email{hall@@aplcenmp.apl.jhu.edu, Marty Hall}
960
961 @item @email{dkindred@@cmu.edu, Darrell Kindred}
962
963 @item @email{dmoore@@ucsd.edu, David Moore}
964
965 @item @email{arup+@@cmu.edu, Arup Mukherjee}
966
967 @item @email{nickel@@prz.tu-berlin.de, Juergen Nickelsen}
968
969 @item @email{powell@@csl.ncsa.uiuc.edu, Kevin R. Powell}
970
971 @item @email{dworkin@@ccs.neu.edu, Justin Sheehy}
972
973 @item @email{stig@@hackvan.com, Stig}
974
975 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
976 @end itemize
977
978 @unnumberedsec 1.1: Getting XEmacs
979
980 @node Q1.1.1, Q1.1.2, Q1.0.6, Introduction
981 @unnumberedsubsec Q1.1.1: Where can I find XEmacs?
982
983 To download XEmacs, visit the XEmacs WWW page at
984 @uref{http://www.xemacs.org/Download/}. The most up-to-date list of
985 distribution sites can always be found there. Try to pick a site that
986 is networkologically close to you. If you know of other mirrors of
987 the XEmacs archives, please send e-mail to
988 @uref{mailto:webmaster@@xemacs.org} and we will list them here as well.
989
990 The canonical distribution point is ftp.xemacs.org, available either
991 through HTTP (@uref{http://ftp.xemacs.org/}) or anonymous FTP
992 (@uref{ftp://ftp.xemacs.org/pub/xemacs/}).
993
994 @node Q1.1.2, Q1.1.3, Q1.1.1, Introduction
995 @unnumberedsubsec Q1.1.2: Are binaries available?
680 996
681 MS Windows binaries are available at 997 MS Windows binaries are available at
682 @uref{http://www.xemacs.org/Download/win32/} for the native versions 998 @uref{http://www.xemacs.org/Download/win32/} for the native versions
683 of 21.4 and 21.1. Cygwin binaries are now available as part of the 999 of 21.4 and 21.1. Cygwin binaries are now available as part of the
684 standard Cygwin installation process. XEmacs also comes pre-built as 1000 standard Cygwin installation process. XEmacs also comes pre-built as
689 under Unix and Mac OS X, as XEmacs has been tested under all of the 1005 under Unix and Mac OS X, as XEmacs has been tested under all of the
690 common Unix versions and under Mac OS X and comes with an extensive 1006 common Unix versions and under Mac OS X and comes with an extensive
691 configure script that is able to automatically detect most aspects of 1007 configure script that is able to automatically detect most aspects of
692 the configuration of your particular system. 1008 the configuration of your particular system.
693 1009
694 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction 1010 @node Q1.1.3, Q1.1.4, Q1.1.2, Introduction
695 @unnumberedsubsec Q1.0.5: How does XEmacs differ from GNU Emacs? 1011 @unnumberedsubsec Q1.1.3: How do I get the bleeding-edge sources?
1012
1013 If you are interested in developing XEmacs, or getting the absolutely most
1014 recent, up-to-the-moment, bleeding-edge source code, you can directly
1015 access the master CVS source tree (read-only, of course, until you ask for
1016 and are granted permission to directly modify portions of the source tree)
1017 at cvs.xemacs.org. Directions on how to access the source tree are located
1018 at @uref{http://www.xemacs.org/Develop/cvsaccess.html}.
1019
1020 Nightly CVS snapshots are available at
1021 @uref{http://www.dk.xemacs.org/Download/CVS-snapshots/}.
1022
1023 @node Q1.1.4, Q1.2.1, Q1.1.3, Introduction
1024 @unnumberedsubsec Q1.1.4: Where can I obtain a printed copy of the XEmacs User's Manual?
1025
1026 Pre-printed manuals are not available. If you are familiar with
1027 TeX, you can generate your own manual from the XEmacs sources.
1028
1029 HTML and Postscript versions of XEmacs manuals are available from the
1030 XEmacs web site at
1031 @uref{http://www.xemacs.org/Documentation/index.html}.
1032
1033 @unnumberedsec 1.2: Versions for Different Operating Systems
1034
1035 @node Q1.2.1, Q1.2.2, Q1.1.4, Introduction
1036 @unnumberedsubsec Q1.2.1: Do I need X11 to run XEmacs?
1037
1038 No. The name @dfn{XEmacs} is unfortunate in the sense that it is
1039 @strong{not} an X Window System-only version of Emacs. XEmacs has
1040 full color support on a color-capable character terminal.
1041
1042 @node Q1.2.2, Q1.2.3, Q1.2.1, Introduction
1043 @unnumberedsubsec Q1.2.2: What versions of Unix does XEmacs run on?
1044
1045 For problems with particular machines and versions of Unix, see the
1046 @file{PROBLEMS} file.
1047
1048 Much effort has gone into making XEmacs work on as many different
1049 machines, configurations, and compilers as possible.
1050
1051 Much effort has gone into making XEmacs 64-bit clean.
1052
1053 Much effort has gone into removing system-specific code, and replacing
1054 such code with autodetection at configure time.
1055
1056 The XEmacs core should build "out of the box" on most Unix-like systems.
1057
1058 XEmacs 21.2 was tested and @samp{make check} succeeded on these Unix
1059 configurations as of 2001-02-10:
1060
1061 @example
1062 alphaev56-dec-osf4.0e (both Compaq C and gcc)
1063 i386-unknown-freebsd4.2
1064 i386-unknown-netbsdelf1.5
1065 i586-sco-sysv5uw7.0.1 (both SCO's cc and gcc)
1066 i686-pc-linux-gnu
1067 hppa2.0-hp-hpux10.20 (both HP's ANSI cc and gcc)
1068 mips-sgi-irix6.5 (both MIPSpro cc and gcc)
1069 rs6000-ibm-aix4.3.0.0 (both IBM's xlc and gcc)
1070 sparc-sun-solaris2.6 (both Sun's Forte C and gcc)
1071 sparc-sun-solaris2.7 (both Sun's Forte C and gcc)
1072 sparc-sun-sunos4.1.4 (gcc)
1073 @end example
1074
1075 Some systems have a dual mode 32-bit/64-bit compiler. On most of
1076 these, XEmacs requires the @samp{--pdump} configure option to build
1077 correctly with the 64-bit version of the compiler.
1078
1079 @example
1080 mips-sgi-irix6.5, CC="gcc -mabi=64"
1081 mips-sgi-irix6.5, CC="cc -64"
1082 rs6000-ibm-aix4.3.0.0, CC="cc -q64"
1083 @end example
1084
1085 On most of these systems, XEmacs also builds with a C++ compiler,
1086 but not "out of the box". This feature is only for use by the
1087 maintainers.
1088
1089 XEmacs 21.2 is known @emph{not} to work on any machines with m680x0
1090 processors. Sorry, all you sun3 and Unix PC nostalgia buffs out there.
1091
1092 VMS has never been supported by XEmacs. In fact, all the old VMS code
1093 inherited from Emacs has been removed. Sorry, all you VMS fans out there.
1094
1095 @node Q1.2.3, Q1.2.4, Q1.2.2, Introduction
1096 @unnumberedsubsec Q1.2.3: Is there a port of XEmacs to Microsoft Windows?
1097
1098 Yes. Beginning with release 21.0, XEmacs has worked under MS Windows
1099 and is fully-featured and actively developed. A group of dedicated
1100 developers actively maintains and improves the Windows-specific
1101 portions of the code. Some of the core developers, in fact, use
1102 Windows as their only development environment, and some features, such
1103 as printing, actually work better on Windows than native Unix and Mac
1104 OS X. The mailing list at @email{xemacs-winnt@@xemacs.org} is dedicated
1105 to that effort (please use the -request address to
1106 subscribe). (Despite its name, XEmacs actually works on all versions
1107 of Windows.)
1108
1109 The list name is misleading, as XEmacs supports and has been compiled on
1110 Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
1111 XP, and all newer versions of Windows. The MS Windows-specific code is
1112 based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
1113 MS-DOS.
1114
1115 XEmacs also supports the Cygwin and MinGW development and runtime
1116 environments, where it also uses native Windows code for graphical
1117 features. In addition, under Cygwin it is possible to compile XEmacs
1118 to use an X server (and XFree86 is available as part of the standard
1119 Cygwin installation).
1120
1121 @node Q1.2.4, Q1.2.5, Q1.2.3, Introduction
1122 @unnumberedsubsec Q1.2.4: Can I build XEmacs on MS Windows with X support? Do I need to?
1123
1124 Yes, you can, but no you do not need to. In fact, we recommend that you
1125 use a native-GUI version unless you have a specific need for an X
1126 version.
1127
1128 @node Q1.2.5, Q1.2.6, Q1.2.4, Introduction
1129 @unnumberedsubsec Q1.2.5: What are Cygwin and MinGW, and do I need them to run XEmacs?
1130
1131 To answer the second part of the question: No, you, you don't need
1132 Cygwin or MinGW to build or to run XEmacs. But if you have them and
1133 want to use them, XEmacs supports these environments.
1134
1135 (One important reason to support Cygwin is that it lets the MS Windows
1136 developers test out their code in a Unix environment without actually
1137 having to have a Unix machine around. For this reason alone, Cygwin
1138 support is likely to remain supported for a long time in XEmacs. Same
1139 goes for the X support under Cygwin, for the same reasons. MinGW
1140 support, on the other hand, depends on volunteers to keep it up to date;
1141 but this is generally not hard.)
1142
1143 Cygwin is a set of tools providing Unix-like API on top of Win32.
1144 It makes it easy to port large Unix programs without significant
1145 changes to their source code. It is a development environment as well
1146 as a runtime environment.
1147
1148 When built with Cygwin, XEmacs supports all display types -- TTY, X &
1149 Win32 GUI, and can be built with support for all three simultaneously.
1150 If you build with Win32 GUI support then the Cygwin version uses the
1151 majority of the Windows-specific code, which is mostly related to
1152 display. If you want to build with X support you need X libraries (and
1153 an X server to display XEmacs on); see @ref{Q2.2.7}. TTY and Win32 GUI
1154 require no additional libraries beyond what comes standard with Cygwin.
1155
1156 The advantages of the Cygwin version are that it integrates well with
1157 the Cygwin environment for existing Cygwin users; uses configure so
1158 building with different features is very easy; and actively supports X &
1159 TTY. Furthermore, the entire Cygwin environment and compiler are free,
1160 whereas Visual C++ costs money.
1161
1162 The disadvantage is that it requires the whole Cygwin environment,
1163 whereas the native port requires only a suitable MS Windows compiler.
1164 Also, it follows the Unix filesystem and process model very closely
1165 (some will undoubtedly view this as an advantage).
1166
1167 See @uref{http://www.cygwin.com/} for more information on
1168 Cygwin.
1169
1170 MinGW is a collection of header files and import libraries that allow
1171 one to use GCC under the Cygwin environment to compile and produce
1172 exactly the same native Win32 programs that you can using Visual C++.
1173 Programs compiled with MinGW make use of the standard Microsoft runtime
1174 library @file{MSVCRT.DLL}, present on all Windows systems, and look,
1175 feel, and act like a standard Visual-C-produced application. (The only
1176 difference is the compiler.) This means that, unlike a
1177 standardly-compiled Cygwin application, no extra runtime support
1178 (e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the
1179 fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
1180 environment, for those die-hard Unix hackers out there), is the main
1181 advantage of MinGW. It is also potentially faster than Cygwin because
1182 it has less overhead when calling Windows, but you lose the POSIX
1183 emulation layer, which makes Unix programs harder to port. (But this is
1184 irrelevant for XEmacs since it's already ported to Win32.)
1185
1186 See @uref{http://www.mingw.org/} for more information on MinGW.
1187
1188 @node Q1.2.6, Q1.2.7, Q1.2.5, Introduction
1189 @unnumberedsubsec Q1.2.6: What are the differences between the various MS Windows emacsen?
1190
1191 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
1192 Could you briefly explain the differences between them?
1193
1194 Here is a recount of various Emacs versions running on MS Windows:
1195
1196 @itemize @bullet
1197
1198 @item
1199 XEmacs
1200
1201 @itemize @minus
1202
1203 @item
1204 Beginning with XEmacs 19.12, XEmacs' architecture was redesigned
1205 in such a way to allow clean support of multiple window systems. At
1206 this time the TTY support was added, making X and TTY the first two
1207 "window systems" supported by XEmacs. The 19.12 design is the basis for
1208 the current native MS Windows code.
1209
1210 @item
1211 Some time during 1997, David Hobley (soon joined by Marc Paquette)
1212 imported some of the NT-specific portions of GNU Emacs, making XEmacs
1213 with X support compile under Windows NT, and creating the "X" port.
1214
1215 @item
1216 Several months later, Jonathan Harris sent out initial patches to use
1217 the Win32 API, thus creating the native port. Since then, various
1218 people have contributed, including Kirill M. Katsnelson (contributed
1219 support for menubars, subprocesses and network, as well as loads of
1220 other code), Andy Piper (ported XEmacs to Cygwin environment,
1221 contributed Windows unexec, Windows-specific glyphs and toolbars code,
1222 and more), Ben Wing (loads of improvements; primary MS Windows developer
1223 since 2000), Jeff Sparkes (contributed scrollbars support) and many
1224 others.
1225 @end itemize
1226
1227 @item
1228 NT Emacs
1229
1230 @itemize @minus
1231
1232 @item
1233 NT Emacs was an early version of GNU Emacs 19 modified to compile and
1234 run under MS Windows 95 and NT using the native Win32 API. It was
1235 written by Geoff Voelker, and has long since been incorporated into
1236 the mainline GNU Emacs distribution.
1237 @end itemize
1238
1239 @item
1240 Win-Emacs
1241
1242 @itemize @minus
1243
1244 @item
1245 Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
1246 compatibility libraries. Win-Emacs was written by Ben Wing. The MS
1247 Windows code never made it back to Lucid Emacs, and its creator (Pearl
1248 Software) has long since gone out of business.
1249 @end itemize
1250
1251 @item
1252 GNU Emacs for DOS
1253
1254 @itemize @minus
1255
1256 @item
1257 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
1258 port of GCC). Such an Emacs is heavily underfeatured, because it does
1259 not support long file names, lacks proper subprocesses support, and
1260 is far too big compared with typical DOS editors.
1261 @end itemize
1262
1263 @item
1264 GNU Emacs compiled with Win32
1265
1266 @itemize @minus
1267
1268 @item
1269 Starting with GNU Emacs 19.30, it has been possible to compile GNU Emacs
1270 under MS Windows using the DJGPP compiler and X libraries. The result
1271 is very similar to GNU Emacs compiled under MS DOS, only it works
1272 somewhat better because it runs in 32-bit mode, makes use of all the
1273 system memory, supports long file names, etc.
1274 @end itemize
1275
1276 @end itemize
1277
1278 @node Q1.2.7, Q1.2.8, Q1.2.6, Introduction
1279 @unnumberedsubsec Q1.2.7: How does the port cope with differences in the Windows user interface?
1280
1281 The XEmacs (and Emacs in general) user interface is pretty different
1282 from what is expected of a typical MS Windows program. How does the MS
1283 Windows port cope with it?
1284
1285 As a general rule, we follow native MS Windows conventions as much as
1286 possible. 21.4 is a fairly complete Windows application, supporting
1287 native printing, system file dialog boxes, tool tips, etc. In cases
1288 where there's a clear UI conflict, we currently use normal Unix XEmacs
1289 behavior by default, but make sure the MS Windows "look and feel" (mark
1290 via shift-arrow, self-inserting deletes region, Alt selects menu items,
1291 etc.) is easily configurable (respectively: using the variable
1292 @code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact
1293 the default in these versions], or the @file{pc-select} package; using
1294 the @file{pending-del} package; and setting the variable
1295 @code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above).
1296 In fact, if you use the sample @file{init.el} file as your init file,
1297 you will get all these behaviors automatically turned on.
1298
1299 In future versions, some of these features might be turned on by
1300 default in the MS Windows environment.
1301
1302 @node Q1.2.8, Q1.2.9, Q1.2.7, Introduction
1303 @unnumberedsubsec Q1.2.8: Is there a port of XEmacs to the Macintosh?
1304
1305 Yes.
1306
1307 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
1308 will not feel very much like a Mac application as it has no Mac-specific
1309 code in it.
1310
1311 There is also a port of XEmacs 19.14 that works on all recent versions
1312 of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com,
1313 Pitts Jarvis} (recently deceased). It runs in an equivalent of TTY
1314 mode only (one single Macintosh window, 25 colors), but has a large
1315 number of Mac-specific additions. It's available at
1316 @uref{http://homepage.mac.com/pjarvis/xemacs.html}.
1317
1318 @node Q1.2.9, Q1.2.10, Q1.2.8, Introduction
1319 @unnumberedsubsec Q1.2.9: Is there a port of XEmacs to the Macintosh?
1320
1321 Yes.
1322
1323 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
1324 will not feel very much like a Mac application as it has no Mac-specific
1325 code in it.
1326
1327 There is also a port of XEmacs 19.14 that works on all recent versions
1328 of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com,
1329 Pitts Jarvis} (recently deceased). It runs in an equivalent of TTY
1330 mode only (one single Macintosh window, 25 colors), but has a large
1331 number of Mac-specific additions. It's available at
1332 @uref{http://homepage.mac.com/pjarvis/xemacs.html}.
1333
1334 @node Q1.2.10, Q1.2.11, Q1.2.9, Introduction
1335 @unnumberedsubsec Q1.2.10: Is there a port of XEmacs to MS-DOS?
1336
1337 No. We have never supported running on MS-DOS or Windows 3.1, and in
1338 fact have long since deleted all MS-DOS-related code.
1339
1340 @node Q1.2.11, Q1.2.12, Q1.2.10, Introduction
1341 @unnumberedsubsec Q1.2.11: Is there a port of XEmacs to OS/2?
1342
1343 No, but Alexander Nikolaev <avn_1251@@mail.ru> was at one point
1344 working on it.
1345
1346 @node Q1.2.12, Q1.2.13, Q1.2.11, Introduction
1347 @unnumberedsubsec Q1.2.12: Is there a port of XEmacs to NextStep?
1348
1349 Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did
1350 the port of GNU Emacs to NeXTstep and expressed interest in doing the
1351 XEmacs port, but never went any farther.
1352
1353 @node Q1.2.13, Q1.3.1, Q1.2.12, Introduction
1354 @unnumberedsubsec Q1.2.13: Is there a port of XEmacs to VMS?
1355
1356 VMS has never been supported by XEmacs. In fact, all the old VMS code
1357 inherited from GNU Emacs has been removed. Sorry, all you VMS fans
1358 out there.
1359
1360 @unnumberedsec 1.3: Getting Started
1361
1362 @node Q1.3.1, Q1.3.2, Q1.2.13, Introduction
1363 @unnumberedsubsec Q1.3.1: What is an @file{init.el} or @file{.emacs} and is there a sample one?
1364
1365 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to
1366 your tastes. Starting in 21.4, the preferred location for the init file
1367 is @file{~/.xemacs/init.el}; in previous versions, it was
1368 @file{~/.emacs}. 21.4 still accepts the old location, but the first
1369 time you run it, it will ask to migrate your file to the new location.
1370 If you answer yes, the file will be moved, and a "compatibility"
1371 @file{.emacs} file will be placed in the old location so that you can
1372 still run older versions of XEmacs, and versions of GNU Emacs, which
1373 expect the old location. The @file{.emacs} file present is just a stub
1374 that loads the real file in @file{~/.xemacs/init.el}.
1375
1376 No two init files are alike, nor are they expected to be alike, but
1377 that's the point. The XEmacs distribution contains an excellent starter
1378 example in the @file{etc/} directory called @file{sample.init.el}
1379 (starting in 21.4) or @file{sample.emacs} in older versions. Copy this
1380 file from there to @file{~/.xemacs/init.el} (starting in 21.4) or
1381 @file{~/.emacs} in older versions, where @samp{~} means your home
1382 directory, of course. Then edit it to suit.
1383
1384 You may bring the @file{sample.init.el} or @file{sample.emacs} file into
1385 an XEmacs buffer from the menubar. (The menu entry for it is always
1386 under the @samp{Help} menu, but its location under that has changed in
1387 various versions. Recently, look under the @samp{Samples} submenu.) To
1388 determine the location of the @file{etc/} directory type the command
1389 @kbd{C-h v data-directory @key{RET}}.
1390
1391 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction
1392 @unnumberedsubsec Q1.3.2: Where do I put my @file{init.el} file?
1393
1394 @file{init.el} is the name of the init file starting with 21.4, and is
1395 located in the subdirectory @file{.xemacs/} of your home directory. In
1396 prior versions, the init file is called @file{.emacs} and is located in
1397 your home directory.
1398
1399 Your home directory under Windows is determined by the @samp{HOME}
1400 environment variable. If this is not set, it defaults to @samp{C:\}.
1401 To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
1402 select @samp{Control Panel->System->Advanced->Environment Variables...}
1403 under Windows NT/2000.
1404
1405 @node Q1.3.3, Q1.3.4, Q1.3.2, Introduction
1406 @unnumberedsubsec Q1.3.3: Can I use the same @file{init.el} with the other Emacs?
1407
1408 Yes. The sample @file{init.el} included in the XEmacs
1409 distribution will show you how to handle different versions and flavors
1410 of Emacs.
1411
1412 @node Q1.3.4, Q1.3.5, Q1.3.3, Introduction
1413 @unnumberedsubsec Q1.3.4: Any good XEmacs tutorials around?
1414
1415 There's the XEmacs tutorial available from the Help Menu under
1416 @samp{Help->Tutorials}, or by typing @kbd{C-h t}. To check whether
1417 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type
1418 the first letters of your preferred language, then type @key{RET}.
1419
1420 @comment There's an Emacs Lisp tutorial at
1421 @comment
1422 @comment @example
1423 @comment @uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar.gz}.
1424 @comment @end example
1425 @comment
1426 @comment @email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tutorial web
1427 @comment page at
1428 @comment @iftex
1429 @comment @*
1430 @comment @end iftex
1431 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}.
1432
1433 @node Q1.3.5, Q1.3.6, Q1.3.4, Introduction
1434 @unnumberedsubsec Q1.3.5: May I see an example of a useful XEmacs Lisp function?
1435
1436 The following function does a little bit of everything useful. It does
1437 something with the prefix argument, it examines the text around the
1438 cursor, and it's interactive so it may be bound to a key. It inserts
1439 copies of the current word the cursor is sitting on at the cursor. If
1440 you give it a prefix argument: @kbd{C-u 3 M-x double-word} then it will
1441 insert 3 copies.
1442
1443 @lisp
1444 (defun double-word (count)
1445 "Insert a copy of the current word underneath the cursor"
1446 (interactive "*p")
1447 (let (here there string)
1448 (save-excursion
1449 (forward-word -1)
1450 (setq here (point))
1451 (forward-word 1)
1452 (setq there (point))
1453 (setq string (buffer-substring here there)))
1454 (while (>= count 1)
1455 (insert string)
1456 (decf count))))
1457 @end lisp
1458
1459 The best way to see what is going on here is to let XEmacs tell you.
1460 Put the code into an XEmacs buffer, and do a @kbd{C-h f} with the cursor
1461 sitting just to the right of the function you want explained. Eg. move
1462 the cursor to the SPACE between @code{interactive} and @samp{"*p"} and
1463 hit @kbd{C-h f} to see what the function @code{interactive} does. Doing
1464 this will tell you that the @code{*} requires a writable buffer, and
1465 @code{p} converts the prefix argument to a number, and
1466 @code{interactive} allows you to execute the command with @kbd{M-x}.
1467
1468 @node Q1.3.6, Q1.3.7, Q1.3.5, Introduction
1469 @unnumberedsubsec Q1.3.6: And how do I bind it to a key?
1470
1471 To bind to a key do:
1472
1473 @lisp
1474 (global-set-key "\C-cd" 'double-word)
1475 @end lisp
1476
1477 Or interactively, @kbd{M-x global-set-key} and follow the prompts.
1478
1479 @node Q1.3.7, Q1.3.8, Q1.3.6, Introduction
1480 @unnumberedsubsec Q1.3.7: What's the difference between a macro and a function?
1481
1482 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual:
1483
1484 @dfn{Macros} enable you to define new control constructs and other
1485 language features. A macro is defined much like a function, but instead
1486 of telling how to compute a value, it tells how to compute another Lisp
1487 expression which will in turn compute the value. We call this
1488 expression the @dfn{expansion} of the macro.
1489
1490 Macros can do this because they operate on the unevaluated expressions
1491 for the arguments, not on the argument values as functions do. They can
1492 therefore construct an expansion containing these argument expressions
1493 or parts of them.
1494
1495 Do not confuse the two terms with @dfn{keyboard macros}, which are
1496 another matter, entirely. A keyboard macro is a key bound to several
1497 other keys. Refer to manual for details.
1498
1499 @node Q1.3.8, Q1.4.1, Q1.3.7, Introduction
1500 @unnumberedsubsec Q1.3.8: What is @code{Custom}?
1501
1502 @code{Custom} is a system for customizing XEmacs options.
1503
1504 You can access @code{Advanced (Customize)} from the @code{Options} menu
1505 or invoking one of customize commands by typing eg.
1506 @kbd{M-x customize}, @kbd{M-x customize-face},
1507 @kbd{M-x customize-variable} or @kbd{M-x customize-apropos}.
1508
1509 There is also new @samp{browser} mode for Customize.
1510 Try it out with @kbd{M-x customize-browse}
1511
1512 @unnumberedsec 1.4: Getting Help
1513
1514 @node Q1.4.1, Q1.4.2, Q1.3.8, Introduction
1515 @unnumberedsubsec Q1.4.1: Where can I get help?
1516
1517 Probably the easiest way, if everything is installed, is to use Info, by
1518 pressing @kbd{C-h i}, or looking for an Info item on the
1519 Help Menu. @kbd{M-x apropos} can be used to look for particular commands.
1520
1521 For items not found in the manual, try reading this FAQ
1522 and reading the Usenet group comp.emacs.xemacs.
1523
1524 If you choose to post to a newsgroup, @strong{please use
1525 comp.emacs.xemacs}. Please do not post XEmacs related questions to
1526 gnu.emacs.help.
1527
1528 If you cannot post or read Usenet news, there is a corresponding mailing
1529 list @email{xemacs-news@@xemacs.org} which is available. It can be
1530 subscribed to via the Mailman Web interface or by sending mail to to
1531 @email{xemacs-news-request@@xemacs.org} with @samp{subscribe} in the
1532 body of the message. See also
1533 @uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a
1534 subscription, you may use the @email{xemacs-news-request@@xemacs.org}
1535 address or the Web interface. Send a message with a subject of
1536 @samp{unsubscribe} to be removed.
1537
1538 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction
1539 @unnumberedsubsec Q1.4.2: Which mailing lists are there?
1540
1541 For complete, up-to-date info on the lists and how to subscribe, see
1542 @uref{http://www.xemacs.org/Lists/}.
1543
1544 @table @samp
1545
1546 @item comp.emacs.xemacs
1547 is a Usenet newsgroup
1548 for XEmacs users to discuss problems and issues that arise
1549 for them. It's not generally an appropriate place to ask
1550 about apparent bugs (use @samp{xemacs-beta}), or future plans
1551 (use @samp{xemacs-design}).
1552
1553 @item xemacs-announce
1554 is a read-only, low
1555 volume list for announcements concerning the XEmacs project
1556 and new releases of the XEmacs software.
1557
1558 @item xemacs-beta
1559 is an open list for bug
1560 reports about beta versions of XEmacs. This includes the bug
1561 reports themselves, by both users and developers, as well as
1562 queries, follow-ups, and discussions further determining their
1563 nature and status. This is the primary channel for this kind
1564 of discussion; related code changes will usually not be
1565 applied until they have been discussed here. When such
1566 discussions touch on significant changes to the code (in
1567 particular, structural changes), or on changes to API's or
1568 external functionality, they should be moved to
1569 @samp{xemacs-design}. Requests and proposals for
1570 non-bug-related changes do not belong on @samp{xemacs-beta},
1571 and should be sent to @samp{xemacs-design} instead.
1572
1573 @item xemacs-beta-ja
1574 is an open list for bug
1575 reports and design discussion related to Mule features,
1576 including Japanese handling, in beta versions of XEmacs.
1577 Japanese is the preferred language of discussion. For most
1578 timely presentation to reviewers, please consider sending
1579 appropriate discussion to @samp{xemacs-mule} or
1580 @samp{xemacs-design} in English when convenient for
1581 the participants in discussion. When possible, bug reports
1582 not related to Mule (including Japanese) should be reported on
1583 @samp{xemacs-beta} in English.
1584
1585 @item xemacs-buildreports
1586 is an open list for
1587 submission of build-reports on beta versions of XEmacs. For
1588 information on what the build-reports should contain, please
1589 see the `etc/BETA' file which is included in each beta
1590 distribution.
1591
1592 @item xemacs-cvs
1593 is a read-only list for notices
1594 and information on what has been committed to the XEmacs CVS
1595 trees, by whom, and for what.
1596
1597 @item xemacs-design
1598 is an open list for
1599 discussing the design of XEmacs. This includes discussion
1600 about planned and ongoing changes to functionality and API
1601 changes and additions as well as requests for them. This is
1602 the primary channel for this kind of discussion; related code
1603 changes will usually not be applied until they have been
1604 discussed here. This does not include bug reports, which go
1605 to @samp{xemacs-beta}.
1606
1607 @item xemacs-mule
1608 is an open mailing list for
1609 discussion of International extensions to XEmacs including
1610 Mule, XIM, I18n issues, etc, and is not confined to
1611 developmental issues. This list is not restricted to
1612 English, postings in all languages are welcome.
1613
1614 @item xemacs-news
1615 is an open list for discussion
1616 and bug reporting for XEmacs. This mailing list is
1617 bi-directionally gatewayed with the USENET newsgroup
1618 comp.emacs.xemacs.
1619
1620 @item xemacs-nt
1621 is a developers-only mailing
1622 list and is intended for people who wish to work actively on
1623 the porting of XEmacs to Microsoft Windows NT and Microsoft
1624 Windows '95.
1625
1626 @item xemacs-patches
1627 is an open, moderated
1628 list for submission of patches to the XEmacs distribution
1629 and its packages. Anyone may subscribe or submit to
1630 xemacs-patches, but all submissions are reviewed by the list
1631 moderator before they are distributed to the
1632 list. Discussion is not appropriate on xemacs-patches.
1633
1634 @item xemacs-users-ja
1635 is an open list for
1636 discussion and bug reporting for XEmacs. Japanese is the
1637 preferred language of discussion. It is not gated to
1638 comp.emacs.xemacs or the @samp{xemacs} list. For
1639 fastest response, bugs not specifically related to Japanese
1640 or Mule features should be reported on
1641 @samp{xemacs-beta} (in English).
1642
1643 @item xemacs-users-ru
1644 is an open list for
1645 discussion and bug reporting for XEmacs. Russian is the
1646 preferred language of discussion. It is not gated to
1647 comp.emacs.xemacs or the @samp{xemacs} list. For
1648 fastest response, bugs not specifically related to Russian
1649 or Mule features should be reported on
1650 @samp{xemacs-beta} (in English).
1651 @end table
1652
1653 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction
1654 @unnumberedsubsec Q1.4.3: Where are the mailing lists archived?
1655
1656 The archives can be found at @uref{http://list-archive.xemacs.org}
1657
1658 @node Q1.4.4, Q1.4.5, Q1.4.3, Introduction
1659 @unnumberedsubsec Q1.4.4: How can I get two instances of info?
1660
1661 Before 21.4, you can't. The @code{info} package does not provide for
1662 multiple info buffers. In 21.4, this should be fixed. #### how?
1663
1664 @node Q1.4.5, Q1.5.1, Q1.4.4, Introduction
1665 @unnumberedsubsec Q1.4.5: How do I add new Info directories?
1666
1667 You use something like:
1668
1669 @lisp
1670 (setq Info-directory-list (cons
1671 (expand-file-name "~/info")
1672 Info-default-directory-list))
1673 @end lisp
1674
1675 @email{davidm@@prism.kla.com, David Masterson} writes:
1676
1677 @quotation
1678 Emacs Info and XEmacs Info do many things differently. If you're trying to
1679 support a number of versions of Emacs, here are some notes to remember:
1680
1681 @enumerate
1682 @item
1683 Emacs Info scans @code{Info-directory-list} from right-to-left while
1684 XEmacs Info reads it from left-to-right, so append to the @emph{correct}
1685 end of the list.
1686
1687 @item
1688 Use @code{Info-default-directory-list} to initialize
1689 @code{Info-directory-list} @emph{if} it is available at startup, but not
1690 all Emacsen define it.
1691
1692 @item
1693 Emacs Info looks for a standard @file{dir} file in each of the
1694 directories scanned from #1 and magically concatenates them together.
1695
1696 @item
1697 XEmacs Info looks for a @file{localdir} file (which consists of just the
1698 menu entries from a @file{dir} file) in each of the directories scanned
1699 from #1 (except the first), does a simple concatenation of them, and
1700 magically attaches the resulting list to the end of the menu in the
1701 @file{dir} file in the first directory.
1702 @end enumerate
1703
1704 Another alternative is to convert the documentation to HTML with
1705 texi2html and read it from a web browser like Lynx or W3.
1706 @end quotation
1707
1708 @unnumberedsec 1.5: Contributing to XEmacs
1709
1710 @node Q1.5.1, Q1.5.2, Q1.4.5, Introduction
1711 @unnumberedsubsec Q1.5.1: How do I submit changes to the FAQ?
1712
1713 The FAQ is actively maintained and modified regularly. All links should
1714 be up to date. Unfortunately, some of the information is out of date --
1715 a situation which the FAQ maintainer is working on. All submissions are
1716 welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ
1717 maintainers}.
1718
1719 Please make sure that @samp{XEmacs FAQ} appears on the Subject: line.
1720 If you think you have a better way of answering a question, or think a
1721 question should be included, we'd like to hear about it. Questions and
1722 answers included into the FAQ will be edited for spelling and grammar
1723 and will be attributed. Answers appearing without attribution are
1724 either from versions of the FAQ dated before May 1996 or are from
1725 previous FAQ maintainers. Answers quoted from Usenet news articles will
1726 always be attributed, regardless of the author.
1727
1728 @node Q1.5.2, Q1.5.3, Q1.5.1, Introduction
1729 @unnumberedsubsec Q1.5.2: How do I become a beta tester?
1730
1731 Send an email message to @email{xemacs-beta-request@@xemacs.org} with
1732 the line @samp{subscribe} in the body of the message.
1733
1734 Be prepared to get your hands dirty, as beta testers are expected to
1735 identify problems as best they can.
1736
1737 @node Q1.5.3, Q1.6.1, Q1.5.2, Introduction
1738 @unnumberedsubsec Q1.5.3: How do I contribute to XEmacs itself?
1739
1740 It depends on the knowledge and time you possess. If you are able, by
1741 all means become a beta tester (@pxref{Q1.5.2}). If you are a
1742 programmer, try to build XEmacs and see if you can improve it.
1743
1744 Otherwise, you can still help by using XEmacs as your everyday editor
1745 (for pre-built binary versions, @pxref{Q1.1.2}) and reporting bugs you
1746 find to the mailing list.
1747
1748 Another area where we need help is the documentation: We need good
1749 documentation for building XEmacs and for using it. This FAQ is a
1750 small step in that direction.
1751
1752 Ben Wing @email{ben@@xemacs.org} writes:
1753
1754 @quotation
1755 BTW if you have a wish list of things that you want added, you have to
1756 speak up about it! More specifically, you can do the following if you
1757 want a feature added (in increasing order of usefulness):
1758
1759 @itemize @bullet
1760 @item
1761 Make a posting about a feature you want added.
1762
1763 @item
1764 Become a beta tester and make more postings about those same features.
1765
1766 @item
1767 Convince us that you're going to use the features in some cool and
1768 useful way.
1769
1770 @item
1771 Come up with a clear and well-thought-out API concerning the features.
1772
1773 @item
1774 Write the code to implement a feature and send us a patch.
1775 @end itemize
1776
1777 (not that we're necessarily requiring you to write the code, but we can
1778 always hope :)
1779 @end quotation
1780
1781 @unnumberedsec 1.6: Politics (XEmacs vs. GNU Emacs)
1782
1783 @node Q1.6.1, Q1.6.2, Q1.5.3, Introduction
1784 @unnumberedsubsec Q1.6.1: What is GNU Emacs?
1785
1786 GNU Emacs and XEmacs are related open-source text editors. Both
1787 derive from GNU Emacs version 18; the split between the two happened
1788 in 1991 (for comparison, the oldest versions of GNU Emacs date from
1789 1984). For information on GNU Emacs, see
1790 @uref{http://www.gnu.org/software/emacs/emacs.html}.
1791
1792 @node Q1.6.2, Q1.6.3, Q1.6.1, Introduction
1793 @unnumberedsubsec Q1.6.2: How does XEmacs differ from GNU Emacs?
696 1794
697 For a detailed description of the differences between GNU Emacs and 1795 For a detailed description of the differences between GNU Emacs and
698 XEmacs and a detailed history of XEmacs, check out the 1796 XEmacs and a detailed history of XEmacs, check out the
699 @example 1797 @example
700 @uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file} 1798 @uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file}
848 CVS commit authority is broadly dispersed. Recognized maintainers of 1946 CVS commit authority is broadly dispersed. Recognized maintainers of
849 LISP libraries who are willing to maintain XEmacs packaged versions 1947 LISP libraries who are willing to maintain XEmacs packaged versions
850 automatically qualify for CVS accounts for their packages. 1948 automatically qualify for CVS accounts for their packages.
851 @end table 1949 @end table
852 1950
853 @node Q1.0.6, Q1.0.7, Q1.0.5, Introduction 1951 @node Q1.6.3, Q1.6.4, Q1.6.2, Introduction
854 @unnumberedsubsec Q1.0.6: How much does XEmacs differ? 1952 @unnumberedsubsec Q1.6.3: How much does XEmacs differ?
855 1953
856 RMS has asserted at times that XEmacs is merely a "patch" on top of 1954 RMS has asserted at times that XEmacs is merely a "patch" on top of
857 GNU Emacs (@pxref{Q1.0.7}). In fact, probably not more than 5% of the 1955 GNU Emacs (@pxref{Q1.6.4}). In fact, probably not more than 5% of the
858 code, if that, remains unchanged, and nearly 14 years of work has gone 1956 code, if that, remains unchanged, and nearly 14 years of work has gone
859 into XEmacs at this point. (GNU Emacs itself is only than 20 years 1957 into XEmacs at this point. (GNU Emacs itself is only than 20 years
860 old, and thus XEmacs has existed as a separate product for over 2/3 of 1958 old, and thus XEmacs has existed as a separate product for over 2/3 of
861 the lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has 1959 the lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has
862 perhaps 65,000 more lines of C code than GNU Emacs 21.2. 1960 perhaps 65,000 more lines of C code than GNU Emacs 21.2.
868 from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs 1966 from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs
869 developers are instructed by RMS not to even look at XEmacs source code! 1967 developers are instructed by RMS not to even look at XEmacs source code!
870 This stems from self-imposed licensing restrictions on the part of GNU 1968 This stems from self-imposed licensing restrictions on the part of GNU
871 Emacs -- and almost certainly out of hostility, as well.) 1969 Emacs -- and almost certainly out of hostility, as well.)
872 1970
873 @node Q1.0.7, Q1.0.8, Q1.0.6, Introduction 1971 @node Q1.6.4, Q1.6.5, Q1.6.3, Introduction
874 @unnumberedsubsec Q1.0.7: Is XEmacs "GNU"? 1972 @unnumberedsubsec Q1.6.4: Is XEmacs "GNU"?
875 1973
876 RMS insists on the term "GNU XEmacs" and maintains that 1974 RMS insists on the term "GNU XEmacs" and maintains that
877 1975
878 @quotation 1976 @quotation
879 XEmacs is GNU software because it's a modified version of a 1977 XEmacs is GNU software because it's a modified version of a
882 protecting its free status falls on us whether we want it or not. This 1980 protecting its free status falls on us whether we want it or not. This
883 is why the term "GNU XEmacs" is legitimate. 1981 is why the term "GNU XEmacs" is legitimate.
884 @end quotation 1982 @end quotation
885 1983
886 In fact, FSF is @emph{not} the copyright holder for most of the code, 1984 In fact, FSF is @emph{not} the copyright holder for most of the code,
887 as very little unmodified FSF code remains (@pxref{Q1.0.6}). 1985 as very little unmodified FSF code remains (@pxref{Q1.6.3}).
888 1986
889 Furthermore, RMS's assertion that XEmacs is "GNU" seems rather bizarre 1987 Furthermore, RMS's assertion that XEmacs is "GNU" seems rather bizarre
890 to the XEmacs developers given RMS's hostility and general lack of 1988 to the XEmacs developers given RMS's hostility and general lack of
891 interest in cooperation. "GNU" software in general is part of the GNU 1989 interest in cooperation. "GNU" software in general is part of the GNU
892 Project, is distributed by it on their FTP site, and receives support 1990 Project, is distributed by it on their FTP site, and receives support
895 distributed XEmacs, and RMS's hostility is the farthest thing possible 1993 distributed XEmacs, and RMS's hostility is the farthest thing possible
896 from an endorsement. In fact, the GNU Project distributes a number of 1994 from an endorsement. In fact, the GNU Project distributes a number of
897 non-GNU software projects on the FSF web site, but again XEmacs is not 1995 non-GNU software projects on the FSF web site, but again XEmacs is not
898 one of them. 1996 one of them.
899 1997
900 @node Q1.0.8, Q1.0.9, Q1.0.7, Introduction 1998 @node Q1.6.5, Q1.6.6, Q1.6.4, Introduction
901 @unnumberedsubsec Q1.0.8: What is the correct way to refer to XEmacs and GNU Emacs? 1999 @unnumberedsubsec Q1.6.5: What is the correct way to refer to XEmacs and GNU Emacs?
902 2000
903 Unfortunately even the naming of these two applications has become 2001 Unfortunately even the naming of these two applications has become
904 politicized. Much of this stems from RMS, who has a history of 2002 politicized. Much of this stems from RMS, who has a history of
905 politicizing similar issues. (Compare the controversy over "Lignux" 2003 politicizing similar issues. (Compare the controversy over "Lignux"
906 and "GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU 2004 and "GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU
907 Emacs" be used, which are neutral and acceptable to most people. RMS, 2005 Emacs" be used, which are neutral and acceptable to most people. RMS,
908 however, is not willing to accept these terms. He insists that, if 2006 however, is not willing to accept these terms. He insists that, if
909 his product is called "GNU Emacs", then ours must be called "GNU 2007 his product is called "GNU Emacs", then ours must be called "GNU
910 XEmacs". (For our opinion of this term, @xref{Q1.0.7}.) On the other 2008 XEmacs". (For our opinion of this term, @xref{Q1.6.4}.) On the other
911 hand, if our product is to be called "XEmacs", as we prefer, then his 2009 hand, if our product is to be called "XEmacs", as we prefer, then his
912 product must simply be called "Emacs". The intent of this seems 2010 product must simply be called "Emacs". The intent of this seems
913 clear: RMS wants to make sure the names reflect his view that his 2011 clear: RMS wants to make sure the names reflect his view that his
914 version is the "real" Emacs and ours is merely a derivative, 2012 version is the "real" Emacs and ours is merely a derivative,
915 second-class product (@pxref{Q1.0.6}). 2013 second-class product (@pxref{Q1.6.3}).
916 2014
917 The XEmacs developers hope that you will use the neutral terms 2015 The XEmacs developers hope that you will use the neutral terms
918 "XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on 2016 "XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on
919 the other hand, is a generic term for a class of programmable text 2017 the other hand, is a generic term for a class of programmable text
920 editors with a similar look-and-feel, and usually a Lisp-based 2018 editors with a similar look-and-feel, and usually a Lisp-based
931 own usage of "Gosmacs" and "Gosling Emacs" in reference to Unipress 2029 own usage of "Gosmacs" and "Gosling Emacs" in reference to Unipress
932 Emacs, produced by James Gosling. RMS, however, considers such terms 2030 Emacs, produced by James Gosling. RMS, however, considers such terms
933 to be insulting, so we refrain from using them as much as possible in 2031 to be insulting, so we refrain from using them as much as possible in
934 preference to GNU Emacs.) 2032 preference to GNU Emacs.)
935 2033
936 @node Q1.0.9, Q1.0.10, Q1.0.8, Introduction 2034 @node Q1.6.6, Q1.7.1, Q1.6.5, Introduction
937 @unnumberedsubsec Q1.0.9: Why haven't XEmacs and GNU Emacs merged? 2035 @unnumberedsubsec Q1.6.6: Why haven't XEmacs and GNU Emacs merged?
938 2036
939 There are currently irreconcilable differences in the views about 2037 There are currently irreconcilable differences in the views about
940 technical, programming, design, organizational and legal matters 2038 technical, programming, design, organizational and legal matters
941 between Richard Stallman (RMS), the author and leader of the GNU Emacs 2039 between Richard Stallman (RMS), the author and leader of the GNU Emacs
942 project, and the XEmacs development team which provide little hope for 2040 project, and the XEmacs development team which provide little hope for
1012 If you have a comment to add regarding the merge, it is a good idea to 2110 If you have a comment to add regarding the merge, it is a good idea to
1013 avoid posting to the newsgroups, because of the very heated flamewars 2111 avoid posting to the newsgroups, because of the very heated flamewars
1014 that often result. Mail your questions to 2112 that often result. Mail your questions to
1015 @email{xemacs-beta@@xemacs.org} and @email{emacs-devel@@gnu.org}. 2113 @email{xemacs-beta@@xemacs.org} and @email{emacs-devel@@gnu.org}.
1016 2114
1017 @node Q1.0.10, Q1.0.11, Q1.0.9, Introduction 2115 @unnumberedsec 1.7: External Packages
1018 @unnumberedsubsec Q1.0.10: Where can I get help? 2116
1019 2117 @node Q1.7.1, Q1.8.1, Q1.6.6, Introduction
1020 Probably the easiest way, if everything is installed, is to use Info, by 2118 @unnumberedsubsec Q1.7.1: Which external packages are there?
1021 pressing @kbd{C-h i}, or looking for an Info item on the 2119
1022 Help Menu. @kbd{M-x apropos} can be used to look for particular commands. 2120 @subheading Normal Packages
1023 2121
1024 For items not found in the manual, try reading this FAQ 2122 A very broad collection of elisp packages.
1025 and reading the Usenet group comp.emacs.xemacs.
1026
1027 If you choose to post to a newsgroup, @strong{please use
1028 comp.emacs.xemacs}. Please do not post XEmacs related questions to
1029 gnu.emacs.help.
1030
1031 If you cannot post or read Usenet news, there is a corresponding mailing
1032 list @email{xemacs-news@@xemacs.org} which is available. It can be
1033 subscribed to via the Mailman Web interface or by sending mail to to
1034 @email{xemacs-news-request@@xemacs.org} with @samp{subscribe} in the
1035 body of the message. See also
1036 @uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a
1037 subscription, you may use the @email{xemacs-news-request@@xemacs.org}
1038 address or the Web interface. Send a message with a subject of
1039 @samp{unsubscribe} to be removed.
1040
1041 @node Q1.0.11, Q1.0.12, Q1.0.10, Introduction
1042 @unnumberedsubsec Q1.0.11: Where are the mailing lists archived?
1043
1044 The archives can be found at @uref{http://list-archive.xemacs.org}
1045
1046 @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction
1047 @unnumberedsubsec Q1.0.12: How do you pronounce XEmacs?
1048
1049 The most common pronounciation is @samp{Eks eemax}.
1050
1051 @node Q1.0.13, Q1.0.14, Q1.0.12, Introduction
1052 @unnumberedsubsec Q1.0.13: What does XEmacs look like?
1053
1054 Screen snapshots are available at
1055 @uref{http://www.xemacs.org/About/Screenshots/index.html}
1056 as part of the XEmacs website.
1057
1058 @node Q1.0.14, Q1.1.1, Q1.0.13, Introduction
1059 @unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual?
1060
1061 Pre-printed manuals are not available. If you are familiar with
1062 TeX, you can generate your own manual from the XEmacs sources.
1063
1064 HTML and Postscript versions of XEmacs manuals are available from the
1065 XEmacs web site at
1066 @uref{http://www.xemacs.org/Documentation/index.html}.
1067
1068 @unnumberedsec 1.1: Versions for Different Operating Systems
1069
1070 @node Q1.1.1, Q1.1.2, Q1.0.14, Introduction
1071 @unnumberedsubsec Q1.1.1: Do I need X11 to run XEmacs?
1072
1073 No. The name @dfn{XEmacs} is unfortunate in the sense that it is
1074 @strong{not} an X Window System-only version of Emacs. XEmacs has
1075 full color support on a color-capable character terminal.
1076
1077 @node Q1.1.2, Q1.1.3, Q1.1.1, Introduction
1078 @unnumberedsubsec Q1.1.2: Is there a port of XEmacs to Microsoft Windows?
1079
1080 Yes. Beginning with release 21.0, XEmacs has worked under MS Windows
1081 and is fully-featured and actively developed. A group of dedicated
1082 developers actively maintains and improves the Windows-specific
1083 portions of the code. Some of the core developers, in fact, use
1084 Windows as their only development environment, and some features, such
1085 as printing, actually work better on Windows than native Unix and Mac
1086 OS X. The mailing list at @email{xemacs-winnt@@xemacs.org} is dedicated
1087 to that effort (please use the -request address to
1088 subscribe). (Despite its name, XEmacs actually works on all versions
1089 of Windows.)
1090
1091 The list name is misleading, as XEmacs supports and has been compiled on
1092 Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
1093 XP, and all newer versions of Windows. The MS Windows-specific code is
1094 based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
1095 MS-DOS.
1096
1097 XEmacs also supports the Cygwin and MinGW development and runtime
1098 environments, where it also uses native Windows code for graphical
1099 features. In addition, under Cygwin it is possible to compile XEmacs
1100 to use an X server (and XFree86 is available as part of the standard
1101 Cygwin installation).
1102
1103 @node Q1.1.3, Q1.1.4, Q1.1.2, Introduction
1104 @unnumberedsubsec Q1.1.3: Can I build XEmacs on MS Windows with X support? Do I need to?
1105
1106 Yes, you can, but no you do not need to. In fact, we recommend that you
1107 use a native-GUI version unless you have a specific need for an X
1108 version.
1109
1110 @node Q1.1.4, Q1.1.5, Q1.1.3, Introduction
1111 @unnumberedsubsec Q1.1.4: What are Cygwin and MinGW, and do I need them to run XEmacs?
1112
1113 To answer the second part of the question: No, you, you don't need
1114 Cygwin or MinGW to build or to run XEmacs. But if you have them and
1115 want to use them, XEmacs supports these environments.
1116
1117 (One important reason to support Cygwin is that it lets the MS Windows
1118 developers test out their code in a Unix environment without actually
1119 having to have a Unix machine around. For this reason alone, Cygwin
1120 support is likely to remain supported for a long time in XEmacs. Same
1121 goes for the X support under Cygwin, for the same reasons. MinGW
1122 support, on the other hand, depends on volunteers to keep it up to date;
1123 but this is generally not hard.)
1124
1125 Cygwin is a set of tools providing Unix-like API on top of Win32.
1126 It makes it easy to port large Unix programs without significant
1127 changes to their source code. It is a development environment as well
1128 as a runtime environment.
1129
1130 When built with Cygwin, XEmacs supports all display types -- TTY, X &
1131 Win32 GUI, and can be built with support for all three simultaneously.
1132 If you build with Win32 GUI support then the Cygwin version uses the
1133 majority of the Windows-specific code, which is mostly related to
1134 display. If you want to build with X support you need X libraries (and
1135 an X server to display XEmacs on); see @ref{Q2.2.7}. TTY and Win32 GUI
1136 require no additional libraries beyond what comes standard with Cygwin.
1137
1138 The advantages of the Cygwin version are that it integrates well with
1139 the Cygwin environment for existing Cygwin users; uses configure so
1140 building with different features is very easy; and actively supports X &
1141 TTY. Furthermore, the entire Cygwin environment and compiler are free,
1142 whereas Visual C++ costs money.
1143
1144 The disadvantage is that it requires the whole Cygwin environment,
1145 whereas the native port requires only a suitable MS Windows compiler.
1146 Also, it follows the Unix filesystem and process model very closely
1147 (some will undoubtedly view this as an advantage).
1148
1149 See @uref{http://www.cygwin.com/} for more information on
1150 Cygwin.
1151
1152 MinGW is a collection of header files and import libraries that allow
1153 one to use GCC under the Cygwin environment to compile and produce
1154 exactly the same native Win32 programs that you can using Visual C++.
1155 Programs compiled with MinGW make use of the standard Microsoft runtime
1156 library @file{MSVCRT.DLL}, present on all Windows systems, and look,
1157 feel, and act like a standard Visual-C-produced application. (The only
1158 difference is the compiler.) This means that, unlike a
1159 standardly-compiled Cygwin application, no extra runtime support
1160 (e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the
1161 fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
1162 environment, for those die-hard Unix hackers out there), is the main
1163 advantage of MinGW. It is also potentially faster than Cygwin because
1164 it has less overhead when calling Windows, but you lose the POSIX
1165 emulation layer, which makes Unix programs harder to port. (But this is
1166 irrelevant for XEmacs since it's already ported to Win32.)
1167
1168 See @uref{http://www.mingw.org/} for more information on MinGW.
1169
1170 @node Q1.1.5, Q1.1.6, Q1.1.4, Introduction
1171 @unnumberedsubsec Q1.1.5: What are the differences between the various MS Windows emacsen?
1172
1173 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
1174 Could you briefly explain the differences between them?
1175
1176 Here is a recount of various Emacs versions running on MS Windows:
1177
1178 @itemize @bullet
1179
1180 @item
1181 XEmacs
1182
1183 @itemize @minus
1184
1185 @item
1186 Beginning with XEmacs 19.12, XEmacs' architecture was redesigned
1187 in such a way to allow clean support of multiple window systems. At
1188 this time the TTY support was added, making X and TTY the first two
1189 "window systems" supported by XEmacs. The 19.12 design is the basis for
1190 the current native MS Windows code.
1191
1192 @item
1193 Some time during 1997, David Hobley (soon joined by Marc Paquette)
1194 imported some of the NT-specific portions of GNU Emacs, making XEmacs
1195 with X support compile under Windows NT, and creating the "X" port.
1196
1197 @item
1198 Several months later, Jonathan Harris sent out initial patches to use
1199 the Win32 API, thus creating the native port. Since then, various
1200 people have contributed, including Kirill M. Katsnelson (contributed
1201 support for menubars, subprocesses and network, as well as loads of
1202 other code), Andy Piper (ported XEmacs to Cygwin environment,
1203 contributed Windows unexec, Windows-specific glyphs and toolbars code,
1204 and more), Ben Wing (loads of improvements; primary MS Windows developer
1205 since 2000), Jeff Sparkes (contributed scrollbars support) and many
1206 others.
1207 @end itemize
1208
1209 @item
1210 NT Emacs
1211
1212 @itemize @minus
1213
1214 @item
1215 NT Emacs was an early version of GNU Emacs 19 modified to compile and
1216 run under MS Windows 95 and NT using the native Win32 API. It was
1217 written by Geoff Voelker, and has long since been incorporated into
1218 the mainline GNU Emacs distribution.
1219 @end itemize
1220
1221 @item
1222 Win-Emacs
1223
1224 @itemize @minus
1225
1226 @item
1227 Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
1228 compatibility libraries. Win-Emacs was written by Ben Wing. The MS
1229 Windows code never made it back to Lucid Emacs, and its creator (Pearl
1230 Software) has long since gone out of business.
1231 @end itemize
1232
1233 @item
1234 GNU Emacs for DOS
1235
1236 @itemize @minus
1237
1238 @item
1239 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
1240 port of GCC). Such an Emacs is heavily underfeatured, because it does
1241 not support long file names, lacks proper subprocesses support, and
1242 is far too big compared with typical DOS editors.
1243 @end itemize
1244
1245 @item
1246 GNU Emacs compiled with Win32
1247
1248 @itemize @minus
1249
1250 @item
1251 Starting with GNU Emacs 19.30, it has been possible to compile GNU Emacs
1252 under MS Windows using the DJGPP compiler and X libraries. The result
1253 is very similar to GNU Emacs compiled under MS DOS, only it works
1254 somewhat better because it runs in 32-bit mode, makes use of all the
1255 system memory, supports long file names, etc.
1256 @end itemize
1257
1258 @end itemize
1259
1260 @node Q1.1.6, Q1.1.7, Q1.1.5, Introduction
1261 @unnumberedsubsec Q1.1.6: Is there a port of XEmacs to the Macintosh?
1262
1263 Yes.
1264
1265 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
1266 will not feel very much like a Mac application as it has no Mac-specific
1267 code in it.
1268
1269 There is also a port of XEmacs 19.14 that works on all recent versions
1270 of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com,
1271 Pitts Jarvis} (recently deceased). It runs in an equivalent of TTY
1272 mode only (one single Macintosh window, 25 colors), but has a large
1273 number of Mac-specific additions. It's available at
1274 @uref{http://homepage.mac.com/pjarvis/xemacs.html}.
1275
1276 @node Q1.1.7, Q1.1.8, Q1.1.6, Introduction
1277 @unnumberedsubsec Q1.1.7: Is there a port of XEmacs to NextStep?
1278
1279 Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did
1280 the port of GNU Emacs to NeXTstep and expressed interest in doing the
1281 XEmacs port, but never went any farther.
1282
1283 @node Q1.1.8, Q1.1.9, Q1.1.7, Introduction
1284 @unnumberedsubsec Q1.1.8: Is there a port of XEmacs to OS/2?
1285
1286 No, but Alexander Nikolaev <avn_1251@@mail.ru> is working on it.
1287
1288 @node Q1.1.9, Q1.2.1, Q1.1.8, Introduction
1289 @unnumberedsubsec Q1.1.9: How does the port cope with differences in the Windows user interface?
1290
1291 The XEmacs (and Emacs in general) user interface is pretty different
1292 from what is expected of a typical MS Windows program. How does the MS
1293 Windows port cope with it?
1294
1295 As a general rule, we follow native MS Windows conventions as much as
1296 possible. 21.4 is a fairly complete Windows application, supporting
1297 native printing, system file dialog boxes, tool tips, etc. In cases
1298 where there's a clear UI conflict, we currently use normal Unix XEmacs
1299 behavior by default, but make sure the MS Windows "look and feel" (mark
1300 via shift-arrow, self-inserting deletes region, Alt selects menu items,
1301 etc.) is easily configurable (respectively: using the variable
1302 @code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact
1303 the default in these versions], or the @file{pc-select} package; using
1304 the @file{pending-del} package; and setting the variable
1305 @code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above).
1306 In fact, if you use the sample @file{init.el} file as your init file,
1307 you will get all these behaviors automatically turned on.
1308
1309 In future versions, some of these features might be turned on by
1310 default in the MS Windows environment.
1311
1312 @unnumberedsec 1.2: Policies
1313
1314 @node Q1.2.1, Q1.2.2, Q1.1.9, Introduction
1315 @unnumberedsubsec Q1.2.1: What is the FAQ editorial policy?
1316
1317 The FAQ is actively maintained and modified regularly. All links should
1318 be up to date. Unfortunately, some of the information is out of date --
1319 a situation which the FAQ maintainer is working on. All submissions are
1320 welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ
1321 maintainers}.
1322
1323 Please make sure that @samp{XEmacs FAQ} appears on the Subject: line.
1324 If you think you have a better way of answering a question, or think a
1325 question should be included, we'd like to hear about it. Questions and
1326 answers included into the FAQ will be edited for spelling and grammar
1327 and will be attributed. Answers appearing without attribution are
1328 either from versions of the FAQ dated before May 1996 or are from
1329 previous FAQ maintainers. Answers quoted from Usenet news articles will
1330 always be attributed, regardless of the author.
1331
1332 @node Q1.2.2, Q1.2.3, Q1.2.1, Introduction
1333 @unnumberedsubsec Q1.2.2: How do I become a beta tester?
1334
1335 Send an email message to @email{xemacs-beta-request@@xemacs.org} with
1336 the line @samp{subscribe} in the body of the message.
1337
1338 Be prepared to get your hands dirty, as beta testers are expected to
1339 identify problems as best they can.
1340
1341 @node Q1.2.3, Q1.3.1, Q1.2.2, Introduction
1342 @unnumberedsubsec Q1.2.3: How do I contribute to XEmacs itself?
1343
1344 It depends on the knowledge and time you possess. If you are able, by
1345 all means become a beta tester (@pxref{Q1.2.2}). If you are a
1346 programmer, try to build XEmacs and see if you can improve it.
1347
1348 Otherwise, you can still help by using XEmacs as your everyday editor
1349 (for pre-built binary versions, @pxref{Q1.0.4}) and reporting bugs you
1350 find to the mailing list.
1351
1352 Another area where we need help is the documentation: We need good
1353 documentation for building XEmacs and for using it. This FAQ is a
1354 small step in that direction.
1355
1356 Ben Wing @email{ben@@xemacs.org} writes:
1357
1358 @quotation
1359 BTW if you have a wish list of things that you want added, you have to
1360 speak up about it! More specifically, you can do the following if you
1361 want a feature added (in increasing order of usefulness):
1362
1363 @itemize @bullet
1364 @item
1365 Make a posting about a feature you want added.
1366
1367 @item
1368 Become a beta tester and make more postings about those same features.
1369
1370 @item
1371 Convince us that you're going to use the features in some cool and
1372 useful way.
1373
1374 @item
1375 Come up with a clear and well-thought-out API concerning the features.
1376
1377 @item
1378 Write the code to implement a feature and send us a patch.
1379 @end itemize
1380
1381 (not that we're necessarily requiring you to write the code, but we can
1382 always hope :)
1383 @end quotation
1384
1385 @unnumberedsec 1.3: Credits
1386
1387 @node Q1.3.1, Q1.3.2, Q1.2.3, Introduction
1388 @unnumberedsubsec Q1.3.1: Who wrote XEmacs?
1389
1390 XEmacs is the result of the time and effort of many people, and the
1391 active developers have changed over time. There are two major
1392 components of the XEmacs effort -- writing the code itself and providing
1393 all the support work (testing the code, releasing beta and final
1394 versions, handling patches, reading bug reports, maintaining the web
1395 site, managing the mailing lists, etc. etc.). Neither component would
1396 work without the other.
1397
1398 @subheading CODING
1399
1400 The primary code contributor over the years has been Ben Wing (active
1401 since late 1992). Between 1991 and 1995, large amounts of coding was
1402 contributed by Jamie Zawinski and Chuck Thompson. Many other people
1403 have authored major subsystems or otherwise contributed large amounts of
1404 code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris,
1405 Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard
1406 Mlynarik, Stig, William Perry and plenty of others.
1407
1408 Primary XEmacs-specific subsystems and their authors:
1409 2123
1410 @table @asis 2124 @table @asis
1411 @item Objects 2125 @item Sun
1412 @itemize @minus 2126 Support for Sparcworks.
1413 @item 2127
1414 Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcrecords: Richard Mlynarik, 1994 2128 @item ada
1415 @item 2129 Ada language support.
1416 Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Buchholz 2130
1417 @item 2131 @item apel
1418 Portable dumper, object descriptions: Olivier Galibert 2132 A Portable Emacs Library. Used by XEmacs MIME support.
1419 @item 2133
1420 KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber and students 2134 @item auctex
1421 @item 2135 Basic TeX/LaTeX support.
1422 Random object work (object equal and hash methods, weak lists, lcrecord lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing 2136
1423 @item 2137 @item bbdb
1424 Profiling: Ben Wing 2138 The Big Brother Data Base: a rolodex-like database program.
1425 @item 2139
1426 Some byte-compilation and hash-table improvements: Martin Buchholz 2140 @item build
1427 @item 2141 Build XEmacs from within (UNIX, Windows).
1428 Bignum: Jerry James 2142
1429 @end itemize 2143 @item c-support
1430 2144 Basic single-file add-ons for editing C code.
1431 @item Internationalization/Mule 2145
1432 @itemize @minus 2146 @item calc
1433 @item 2147 Emacs calculator.
1434 mostly Ben Wing; many ideas for future work, Stephen Turnbull 2148
1435 @end itemize 2149 @item calendar
1436 2150 Calendar and diary support.
1437 @item I/O 2151
1438 @itemize @minus 2152 @item cc-mode
1439 @item 2153 C, C++, Objective-C, Java, CORBA IDL, Pike and AWK language support.
1440 Basic event/event-stream implementation: Jamie Zawinski 2154
1441 @item 2155 @item clearcase
1442 Most event work since 1994: Ben Wing 2156 New Clearcase Version Control for XEmacs (UNIX, Windows).
1443 @item 2157
1444 Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing 2158 @item clearcase
1445 @item 2159 Support for the Clearcase version control system.
1446 Process method abstraction, Windows process work: Kirill Katsnelson 2160
1447 @item 2161 @item cookie
1448 Misc-user events, async timeouts, most quit-checking and signal code, most other work since 1994: Ben Wing 2162 "Fortune cookie"-style messages. Includes Spook (suspicious phrases)
1449 @item 2163 and Yow (Zippy quotes).
1450 Lstreams: Ben Wing 2164
1451 @end itemize 2165 @item crisp
1452 2166 Crisp/Brief emulation.
1453 @item Display 2167
1454 @itemize @minus 2168 @item debug
1455 @item 2169 GUD, gdb, dbx debugging support.
1456 Redisplay mechanism: implementation, Chuck Thompson; additional work, lots of people 2170
1457 @item 2171 @item dictionary
1458 Glyphs: mostly Ben Wing 2172 Interface to RFC2229 dictionary servers.
1459 @item 2173
1460 Specifiers: Ben Wing 2174 @item dired
1461 @item 2175 The DIRectory EDitor is for manipulating, and running commands on
1462 Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wing 2176 files in a directory.
1463 @item 2177
1464 Widgets: Andy Piper 2178 @item docbookide
1465 @item 2179 DocBook editing support.
1466 JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, others (see comment in @file{glyphs-eimage.c}) 2180
1467 @item 2181 @item ecb
1468 Menus: Jamie Zawinski, someone at Lucid (Lucid menus) 2182 Emacs source code browser.
1469 @item 2183
1470 Scrollbars: Chuck Thompson, ??? (Lucid scrollbar) 2184 @item ecrypto
1471 @item 2185 Crypto functionality in Emacs Lisp.
1472 Multi-device/device-independence work (console/device/etc methods): Ben Wing, prototype by chuck thompson 2186
1473 @item 2187 @item edebug
1474 Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben Wing 2188 An Emacs Lisp debugger.
1475 @item 2189
1476 Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wing 2190 @item ediff
1477 @item 2191 Interface over GNU patch.
1478 Toolbars: implementation, chuck, much interface work, Ben Wing 2192
1479 @item 2193 @item edit-utils
1480 Gutters, tabs: andy piper 2194 Miscellaneous editor extensions, you probably need this.
1481 @end itemize 2195
1482 2196 @item edt
1483 @item Device subsystems 2197 DEC EDIT/EDT emulation.
1484 @itemize @minus 2198
1485 @item 2199 @item efs
1486 X Windows: Jamie Zawinksi, Ben Wing, others 2200 Treat files on remote systems the same as local files.
1487 @item 2201
1488 GTK: William Perry, Malcolm Purvis 2202 @item eieio
1489 @item 2203 Enhanced Implementation of Emacs Interpreted Objects.
1490 MS Windows: initial implementation, Jonathan Harris; some more work, Andy Piper, Ben Wing 2204
1491 @item 2205 @item elib
1492 TTY: Chuck Thompson, Ben Wing 2206 Portable Emacs Lisp utilities library.
1493 @item 2207
1494 Cygwin: Andy Piper 2208 @item emerge
1495 @end itemize 2209 Another interface over GNU patch.
1496 2210
1497 @item Misc 2211 @item erc
1498 @itemize @minus 2212 ERC is an Emacs InternetRelayChat client.
1499 @item 2213
1500 Configure: initial porting from fsf, Chuck Thompson; conversion to autoconf 2, much rewriting, Martin Buchholz 2214 @item escreen
1501 @item 2215 Multiple editing sessions withing a single frame (like screen).
1502 Most initialization-related code: Ben Wing 2216
1503 @item 2217 @item eshell
1504 Internals manual, much of Lisp manual: Ben Wing 2218 Command shell implemented entirely in Emacs Lisp.
1505 @item 2219
1506 FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, Ben Wing 2220 @item ess
1507 @end itemize 2221 ESS: Emacs Speaks Statistics.
2222
2223 @item eterm
2224 Terminal emulation.
2225
2226 @item eudc
2227 Emacs Unified Directory Client (LDAP, PH).
2228
2229 @item footnote
2230 Footnoting in mail message editing modes.
2231
2232 @item forms
2233 Forms editing support (obsolete, use Widget instead).
2234
2235 @item fortran-modes
2236 Fortran support.
2237
2238 @item fortran-modes
2239 Fortran language support.
2240
2241 @item frame-icon
2242 Set up mode-specific icons for each frame under XEmacs.
2243
2244 @item fsf-compat
2245 GNU Emacs compatibility files.
2246
2247 @item games
2248 Tetris, Sokoban, and Snake.
2249
2250 @item general-docs
2251 General documentation. Presently, empty.
2252
2253 @item gnats
2254 XEmacs bug reports.
2255
2256 @item gnus
2257 The Gnus Newsreader and Mailreader.
2258
2259 @item haskell-mode
2260 Haskell editing support.
2261
2262 @item hm--html-menus
2263 HTML editing.
2264
2265 @item hyperbole
2266 Hyperbole: The Everyday Info Manager.
2267
2268 @item ibuffer
2269 Advanced replacement for buffer-menu.
2270
2271 @item idlwave
2272 Editing and Shell mode for the Interactive Data Language.
2273
2274 @item igrep
2275 Enhanced front-end for Grep.
2276
2277 @item ilisp
2278 Front-end for interacting with Inferior Lisp (external lisps).
2279
2280 @item ispell
2281 Spell-checking with GNU ispell.
2282
2283 @item jde
2284 Integrated Development Environment for Java.
2285
2286 @item liece
2287 IRC (Internet Relay Chat) client for Emacs. Note, this package is
2288 deprecated and will be removed, use riece instead.
2289
2290 @item mail-lib
2291 Fundamental lisp files for providing email support.
2292
2293 @item mailcrypt
2294 Support for messaging encryption with PGP.
2295
2296 @item mew
2297 Messaging in an Emacs World; a MIME-based email program.
2298
2299 @item mh-e
2300 The XEmacs Interface to the MH Mail System.
2301
2302 @item mine
2303 Elisp implementation of the game 'Minehunt'.
2304
2305 @item misc-games
2306 Other amusements and diversions.
2307
2308 @item mmm-mode
2309 Support for Multiple Major Modes within a single buffer.
2310
2311 @item net-utils
2312 Miscellaneous Networking Utilities.
2313
2314 @item ocaml
2315 Objective Caml editing support.
2316
2317 @item oo-browser
2318 OO-Browser: The Multi-Language Object-Oriented Code Browser.
2319
2320 @item ocaml
2321 Objective Caml editing support.
2322
2323 @item os-utils
2324 Miscellaneous single-file O/S utilities, for printing, archiving,
2325 compression, remote shells, etc.
2326
2327 @item pc
2328 PC style interface emulation.
2329
2330 @item pcl-cvs
2331 CVS frontend.
2332
2333 @item pcomplete
2334 Provides programmatic completion.
2335
2336 @item perl-modes
2337 Perl support.
2338
2339 @item pgg
2340 Emacs interface to various PGP implementations.
2341
2342 @item prog-modes
2343 Support for various programming languages.
2344
2345 @item ps-print
2346 Printing functions and utilities.
2347
2348 @item psgml
2349 Validated HTML/SGML editing.
2350
2351 @item psgml-dtds
2352 A collection of DTDs for psgml. Note that this package is deprecated
2353 and will be removed in the future, most likely Q2/2003. Instead of using
2354 this, you should install needed DTDs yourself.
2355
2356 @item python-modes
2357 Python language support.
2358
2359 @item reftex
2360 Emacs support for LaTeX cross-references, citations.
2361
2362 @item riece
2363 IRC (Internet Relay Chat) client for Emacs.
2364
2365 @item rmail
2366 An obsolete Emacs mailer. If you do not already use it don't start.
2367
2368 @item ruby-modes
2369 Ruby support.
2370
2371 @item sasl
2372 Simple Authentication and Security Layer (SASL) library.
2373
2374 @item scheme
2375 Front-end support for Inferior Scheme.
2376
2377 @item semantic
2378 Semantic bovinator (Yacc/Lex for XEmacs). Includes Senator.
2379
2380 @item sgml
2381 SGML/Linuxdoc-SGML editing.
2382
2383 @item sh-script
2384 Support for editing shell scripts.
2385
2386 @item sieve
2387 Manage Sieve email filtering scripts.
2388
2389 @item slider
2390 User interface tool.
2391
2392 @item sml-mode
2393 SML editing support.
2394
2395 @item sounds-au
2396 XEmacs Sun sound files.
2397
2398 @item sounds-wav
2399 XEmacs Microsoft sound files.
2400
2401 @item speedbar
2402 Provides a separate frame with convenient references.
2403
2404 @item strokes
2405 Mouse enhancement utility.
2406
2407 @item supercite
2408 An Emacs citation tool for News & Mail messages.
2409
2410 @item texinfo
2411 XEmacs TeXinfo support.
2412
2413 @item text-modes
2414 Miscellaneous support for editing text files.
2415
2416 @item textools
2417 Miscellaneous TeX support.
2418
2419 @item time
2420 Display time & date on the modeline.
2421
2422 @item tm
2423 Emacs MIME support. Not needed for gnus >= 5.8.0.
2424
2425 @item tooltalk
2426 Support for building with Tooltalk.
2427
2428 @item tpu
2429 DEC EDIT/TPU support.
2430
2431 @item tramp
2432 Remote shell-based file editing. This is similar to EFS or Ange-FTP,
2433 but works with rsh/ssh and rcp/scp.
2434
2435 @item vc
2436 Version Control for Free systems.
2437
2438 @item vc-cc
2439 Version Control for ClearCase (UnFree) systems.
2440
2441 @item vhdl
2442 Support for VHDL.
2443
2444 @item view-process
2445 A Unix process browsing tool.
2446
2447 @item viper
2448 VI emulation support.
2449
2450 @item vm
2451 An Emacs mailer.
2452
2453 @item w3
2454 A Web browser.
2455
2456 @item x-symbol
2457 Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts.
2458
2459 @item xemacs-base
2460 Fundamental XEmacs support, you almost certainly need this.
2461
2462 @item xemacs-devel
2463 XEmacs Lisp developer support. This package contains utilities for
2464 supporting Lisp development. It is a single-file package so it may be
2465 tailored.
2466
2467 @item xlib
2468 Emacs interface to X server.
2469
2470 @item xslide
2471 XSL editing support.
2472
2473 @item xslt-process
2474 A minor mode for (X)Emacs which allows running an XSLT processor on a
2475 buffer.
2476
2477 @item xwem
2478 X Emacs Window Manager.
2479
2480 @item zenirc
2481 ZENIRC IRC Client.
1508 @end table 2482 @end table
1509 2483
1510 @subheading SUPPORT 2484 @subheading Mule Support (mule)
1511 2485
1512 Currently, support duties are handled by many different people. 2486 MULti-lingual Enhancement. Support for world scripts such as
1513 2487 Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
1514 Release managers have been 2488 To use these packages your XEmacs must be compiled with Mule
1515 2489 support.
1516 @itemize @minus 2490
1517 @item 2491 @table @asis
1518 Stephen Turnbull (April 2001 - present, 21.x - 21.x?) 2492 @item edict
1519 @item 2493 MULE: Lisp Interface to EDICT, Kanji Dictionary.
1520 Vin Shelton? 2494
1521 @item 2495 @item egg-its
1522 Steve Youngs (July 2002 - present??, 21.x - 21.x?) 2496 MULE: Wnn (4.2 and 6) support. SJ3 support.
1523 @item 2497
1524 Martin Buchholz (December 1998 - May 2001, 21.x - 21.x?) 2498 @item latin-unity
1525 @item 2499 MULE: find single ISO 8859 character set to encode a buffer.
1526 Steve Baur (early 1997 - November 1998, 19.15 - 21.0) 2500
1527 @item 2501 @item latin-unity
1528 Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14) 2502 Unify character sets in a buffer. When characters belong to disjoint
1529 @item 2503 character sets, this attempts to translate the characters so
1530 Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10) 2504 that they belong to one character set. If the buffer coding system is
1531 @end itemize 2505 not sufficient, this suggests different coding systems.
1532 2506
1533 The recent overlapping dates are intentional, since two or three trees 2507 @item leim
1534 are maintained simultaneously at any point. 2508 MULE: Quail. All non-English and non-Japanese language support.
1535 2509
1536 Other major support work: 2510 @item locale
1537 2511 MULE: Localized menubars and localized splash screens.
1538 @itemize @minus 2512
1539 @item 2513 @item lookup
1540 Adrian Aichner wrote and maintains the web site. 2514 Dictionary support. (This isn't an English dictionary program)
1541 @item 2515
1542 Stephen Turnbull has produced many of the beta and semi-stable releases 2516 @item mule-base
1543 and has attempted to be the "face" of XEmacs on the newsgroups and 2517 MULE: Basic Mule support, required for building with Mule.
1544 mailing lists. 2518
1545 @item 2519 @item mule-ucs
1546 Steve Youngs currently produces the beta releases (???). 2520 MULE: Extended coding systems (including Unicode) for XEmacs.
1547 @item 2521
1548 Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns 2522 @item mule-ucs
1549 maintaining the packages. 2523 Extended coding systems (including Unicode) for XEmacs.
1550 @item 2524
1551 Vin Shelton maintains the stable releases. 2525 @item skk
1552 @item 2526 Another Japanese Language Input Method. Can be used without a
1553 Testing - #### Norbert, Adrian, ??? 2527 separate process running as a dictionary server.
1554 @end itemize 2528 @end table
1555 2529
1556 Portraits and email of some of the major developers: 2530 @unnumberedsec 1.8: Internationalization
1557 2531
1558 @itemize @bullet 2532 @node Q1.8.1, Q1.8.2, Q1.7.1, Introduction
1559 @item @email{andy@@xemacs.org, Andy Piper} 2533 @unnumberedsubsec Q1.8.1: What is the status of internationalization support aka MULE (including Asian language support)?
1560 @html
1561 <br><img src="piper.png" alt="Portrait of Andy Piper"><br>
1562 @end html
1563
1564 @item @email{ben@@xemacs.org, Ben Wing}
1565 @html
1566 <br><img src="ben.png" alt="Portrait of Ben Wing"><br>
1567 @end html
1568
1569 @item @email{cthomp@@xemacs.org, Chuck Thompson}
1570 @html
1571 <br><img src="cthomp.png" alt="Portrait of Chuck Thompson"><br>
1572 @end html
1573
1574 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
1575
1576 @html
1577 <br><img src="hniksic.png" alt="Portrait of Hrvoje Niksic"><br>
1578 @end html
1579
1580 @item @email{jwz@@jwz.org, Jamie Zawinski}
1581 @html
1582 <br><img src="jwz.png" alt="Portrait of Jamie Zawinski"><br>
1583 @end html
1584
1585 @item @email{martin@@xemacs.org, Martin Buchholz}
1586 @html
1587 <br><img src="martin.png" alt="Portrait of Martin Buchholz"><br>
1588 @end html
1589
1590 @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
1591 @html
1592 <br><img src="mly.png" alt="Portrait of Richard Mlynarik"><br>
1593 @end html
1594
1595 @item @email{stephen@@xemacs.org, Stephen Turnbull}
1596
1597 @item @email{steve@@xemacs.org, Steve Baur}
1598 @html
1599 <br><img src="slb.png" alt="Portrait of Steve Baur"><br>
1600 @end html
1601 @end itemize
1602
1603 Many other people have contributed to XEmacs; this is partially
1604 enumerated in the @samp{About XEmacs} option in the Help menu.
1605
1606 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction
1607 @unnumberedsubsec Q1.3.2: Who contributed to this version of the FAQ?
1608
1609 The current version of this FAQ was created by @email{ben@@xemacs.org,
1610 Ben Wing}.
1611
1612 @node Q1.3.3, Q1.4.1, Q1.3.2, Introduction
1613 @unnumberedsubsec Q1.3.3: Who contributed to the FAQ in the past?
1614
1615 This is only a partial list, as many names were lost in a hard disk
1616 crash some time ago.
1617
1618 @itemize @bullet
1619 @item @email{steve@@xemacs.org, SL Baur}
1620
1621 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
1622
1623 @item @email{binge@@aloft.att.com, Curtis.N.Bingham}
1624
1625 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan}
1626
1627 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley}
1628
1629 @item @email{cognot@@ensg.u-nancy.fr, Richard Cognot}
1630
1631 @item @email{daku@@nortel.ca, Mark Daku}
1632
1633 @item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque}
1634
1635 @item @email{eeide@@cs.utah.edu, Eric Eide}
1636
1637 @item @email{af@@biomath.jussieu.fr, Alain Fauconnet}
1638
1639 @item @email{cflatter@@nrao.edu, Chris Flatters}
1640
1641 @item @email{ginsparg@@adra.com, Evelyn Ginsparg}
1642
1643 @item @email{hall@@aplcenmp.apl.jhu.edu, Marty Hall}
1644
1645 @item @email{dkindred@@cmu.edu, Darrell Kindred}
1646
1647 @item @email{dmoore@@ucsd.edu, David Moore}
1648
1649 @item @email{arup+@@cmu.edu, Arup Mukherjee}
1650
1651 @item @email{nickel@@prz.tu-berlin.de, Juergen Nickelsen}
1652
1653 @item @email{powell@@csl.ncsa.uiuc.edu, Kevin R. Powell}
1654
1655 @item @email{dworkin@@ccs.neu.edu, Justin Sheehy}
1656
1657 @item @email{stig@@hackvan.com, Stig}
1658
1659 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
1660 @end itemize
1661
1662 @unnumberedsec 1.4: Internationalization
1663
1664 @node Q1.4.1, Q1.4.2, Q1.3.3, Introduction
1665 @unnumberedsubsec Q1.4.1: What is the status of internationalization support aka MULE (including Asian language support)?
1666 2534
1667 Both the stable and development versions of XEmacs include 2535 Both the stable and development versions of XEmacs include
1668 internationalization support (aka MULE). MULE currently (21.4) works on 2536 internationalization support (aka MULE). MULE currently (21.4) works on
1669 UNIX and Linux systems. It is possible to build with MULE on Windows 2537 UNIX and Linux systems. It is possible to build with MULE on Windows
1670 systems, but if you really need MULE on Windows, it is recommended that 2538 systems, but if you really need MULE on Windows, it is recommended that
1671 you build and use the development (21.5) version, and deal with the 2539 you build and use the development (21.5) version, and deal with the
1672 instability of the development tree. Binaries compiled without MULE 2540 instability of the development tree. Binaries compiled without MULE
1673 support run faster than MULE capable XEmacsen. 2541 support run faster than MULE capable XEmacsen.
1674 2542
1675 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction 2543 @node Q1.8.2, Q1.8.3, Q1.8.1, Introduction
1676 @unnumberedsubsec Q1.4.2: How can I help with internationalization? 2544 @unnumberedsubsec Q1.8.2: How can I help with internationalization?
1677 2545
1678 If you would like to help, you may want to join the 2546 If you would like to help, you may want to join the
1679 @email{xemacs-mule@@xemacs.org} mailing list. Especially needed are 2547 @email{xemacs-mule@@xemacs.org} mailing list. Especially needed are
1680 people who speak/write languages other than English, who are willing to 2548 people who speak/write languages other than English, who are willing to
1681 use XEmacs/MULE regularly, and have some experience with Elisp. 2549 use XEmacs/MULE regularly, and have some experience with Elisp.
1682 2550
1683 Translations of the TUTORIAL and man page are welcome, and XEmacs does 2551 Translations of the TUTORIAL and man page are welcome, and XEmacs does
1684 support multilingual menus, but we have few current translations. 2552 support multilingual menus, but we have few current translations.
1685 2553
1686 @xref{Q1.2.2, How do I become a Beta Tester?}. 2554 @xref{Q1.5.2, How do I become a Beta Tester?}.
1687 2555
1688 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction 2556 @node Q1.8.3, Q1.8.4, Q1.8.2, Introduction
1689 @unnumberedsubsec Q1.4.3: How do I type non-ASCII characters? 2557 @unnumberedsubsec Q1.8.3: How do I type non-ASCII characters?
1690 2558
1691 @xref{Q3.0.6, How can you type in special characters in XEmacs?}, in 2559 @xref{Q3.0.6, How can you type in special characters in XEmacs?}, in
1692 part 3 of this FAQ, for some simple methods that also work in non-MULE 2560 part 3 of this FAQ, for some simple methods that also work in non-MULE
1693 builds of XEmacs (but only for one-octet coded character sets, and 2561 builds of XEmacs (but only for one-octet coded character sets, and
1694 mostly for ISO 8859/1). Many of the methods available for Cyrillic 2562 mostly for ISO 8859/1). Many of the methods available for Cyrillic
1695 (@pxref{Q1.4.7, How about Cyrillic modes?}) work without MULE. MULE 2563 (@pxref{Q1.8.7, How about Cyrillic modes?}) work without MULE. MULE
1696 has more general capabilities. @xref{Q1.4.5, Please explain the 2564 has more general capabilities. @xref{Q1.8.5, Please explain the
1697 various input methods in MULE/XEmacs}. 2565 various input methods in MULE/XEmacs}.
1698 2566
1699 @xref{Q4.0.8, How do I display non-ASCII characters?}, which covers 2567 @xref{Q4.0.8, How do I display non-ASCII characters?}, which covers
1700 display of non-ASCII characters. 2568 display of non-ASCII characters.
1701 2569
1702 @node Q1.4.4, Q1.4.5, Q1.4.3, Introduction 2570 @node Q1.8.4, Q1.8.5, Q1.8.3, Introduction
1703 @unnumberedsubsec Q1.4.4: Can XEmacs messages come out in a different language? 2571 @unnumberedsubsec Q1.8.4: Can XEmacs messages come out in a different language?
1704 2572
1705 The message-catalog support was written but is badly bit-rotted. XEmacs 2573 The message-catalog support was written but is badly bit-rotted. XEmacs
1706 20 and 21 did @emph{not} support it, and early releases of XEmacs 22 2574 20 and 21 did @emph{not} support it, and early releases of XEmacs 22
1707 will not either. 2575 will not either.
1708 2576
1716 @end example 2584 @end example
1717 2585
1718 The name of the resource is derived from the non-localized entry by 2586 The name of the resource is derived from the non-localized entry by
1719 removing punctuation and capitalizing as above. 2587 removing punctuation and capitalizing as above.
1720 2588
1721 @node Q1.4.5, Q1.4.6, Q1.4.4, Introduction 2589 @node Q1.8.5, Q1.8.6, Q1.8.4, Introduction
1722 @unnumberedsubsec Q1.4.5: Please explain the various input methods in MULE/XEmacs 2590 @unnumberedsubsec Q1.8.5: Please explain the various input methods in MULE/XEmacs
1723 2591
1724 Mule supports a wide variety of input methods. There are three basic 2592 Mule supports a wide variety of input methods. There are three basic
1725 classes: Lisp implementations, generic platform support, and library 2593 classes: Lisp implementations, generic platform support, and library
1726 interfaces. 2594 interfaces.
1727 2595
1809 boiled-egg-like utilities. 2677 boiled-egg-like utilities.
1810 2678
1811 Much of this information was provided by @email{morioka@@jaist.ac.jp, 2679 Much of this information was provided by @email{morioka@@jaist.ac.jp,
1812 MORIOKA Tomohiko}. 2680 MORIOKA Tomohiko}.
1813 2681
1814 @node Q1.4.6, Q1.4.7, Q1.4.5, Introduction 2682 @node Q1.8.6, Q1.8.7, Q1.8.5, Introduction
1815 @unnumberedsubsec Q1.4.6: How do I portably code for MULE/XEmacs? 2683 @unnumberedsubsec Q1.8.6: How do I portably code for MULE/XEmacs?
1816 2684
1817 MULE has evolved rapidly over the last few years, and the original third 2685 MULE has evolved rapidly over the last few years, and the original third
1818 party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite 2686 party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite
1819 different implementations. The APIs also vary although recent versions 2687 different implementations. The APIs also vary although recent versions
1820 of XEmacs have tended to converge to the GNU Emacs standard. 2688 of XEmacs have tended to converge to the GNU Emacs standard.
1874 ;; for old emacs variants 2742 ;; for old emacs variants
1875 ) 2743 )
1876 @end lisp 2744 @end lisp
1877 @end quotation 2745 @end quotation
1878 2746
1879 @node Q1.4.7, Q1.4.8, Q1.4.6, Introduction 2747 @node Q1.8.7, Q1.8.8, Q1.8.6, Introduction
1880 @unnumberedsubsec Q1.4.7: How about Cyrillic modes? 2748 @unnumberedsubsec Q1.8.7: How about Cyrillic modes?
1881 2749
1882 @email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes: 2750 @email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes:
1883 2751
1884 @quotation 2752 @quotation
1885 There is a cyrillic mode in the file @file{mysetup.zip} in 2753 There is a cyrillic mode in the file @file{mysetup.zip} in
1912 @quotation 2780 @quotation
1913 The fullest resource I found on Russian language use (in and out of 2781 The fullest resource I found on Russian language use (in and out of
1914 XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html} 2782 XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html}
1915 @end quotation 2783 @end quotation
1916 2784
1917 @node Q1.4.8, Q1.4.9, Q1.4.7, Introduction 2785 @node Q1.8.8, Q1.8.9, Q1.8.7, Introduction
1918 @unnumberedsubsec Q1.4.8: Does XEmacs support Unicode? 2786 @unnumberedsubsec Q1.8.8: Does XEmacs support Unicode?
1919 2787
1920 To get Unicode support, you need a Mule-enabled XEmacs. 2788 To get Unicode support, you need a Mule-enabled XEmacs.
1921 2789
1922 21.5 has internal support for Unicode and supports it fully, although we 2790 21.5 has internal support for Unicode and supports it fully, although we
1923 don't yet use it as the internal encoding. 2791 don't yet use it as the internal encoding.
1924 2792
1925 21.4 supports Unicode partially -- as an external encoding for files, 2793 21.4 supports Unicode partially -- as an external encoding for files,
1926 processes, and terminals, but without font support. @xref{Q1.4.9, How 2794 processes, and terminals, but without font support. @xref{Q1.8.9, How
1927 does XEmacs display Unicode?}. To get Unicode support in 21.4, 2795 does XEmacs display Unicode?}. To get Unicode support in 21.4,
1928 install Mule-UCS from packages in the usual way, and put 2796 install Mule-UCS from packages in the usual way, and put
1929 2797
1930 @example 2798 @example
1931 (require 'un-define) 2799 (require 'un-define)
1936 in your init file to enable the UTF-8 coding system. You may wish to 2804 in your init file to enable the UTF-8 coding system. You may wish to
1937 view the documentation of @code{set-coding-priority-list} if you find 2805 view the documentation of @code{set-coding-priority-list} if you find
1938 that files that are not UTF-8 are being mis-recognized as UTF-8. 2806 that files that are not UTF-8 are being mis-recognized as UTF-8.
1939 2807
1940 Install standard national fonts (not Unicode fonts) for all character 2808 Install standard national fonts (not Unicode fonts) for all character
1941 sets you use. @xref{Q1.4.9, How does XEmacs display Unicode??}. 2809 sets you use. @xref{Q1.8.9, How does XEmacs display Unicode??}.
1942 2810
1943 Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not 2811 Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not
1944 support 31-bit forms of Unicode (UTF-32 or UCS-4). 2812 support 31-bit forms of Unicode (UTF-32 or UCS-4).
1945 2813
1946 @node Q1.4.9, Q1.5.1, Q1.4.8, Introduction 2814 @node Q1.8.9, , Q1.8.8, Introduction
1947 @unnumberedsubsec Q1.4.9: How does XEmacs display Unicode? 2815 @unnumberedsubsec Q1.8.9: How does XEmacs display Unicode?
1948 2816
1949 Mule doesn't have a Unicode charset internally, so there's nothing to 2817 Mule doesn't have a Unicode charset internally, so there's nothing to
1950 bind a Unicode registry to. It would not be straightforward to create, 2818 bind a Unicode registry to. It would not be straightforward to create,
1951 either, because Unicode is not ISO 2022-compatible. You'd have to 2819 either, because Unicode is not ISO 2022-compatible. You'd have to
1952 translate it to multiple 96x96 pages. 2820 translate it to multiple 96x96 pages.
1962 It also means you can't use Unicode fonts directly, at least not without 2830 It also means you can't use Unicode fonts directly, at least not without
1963 extreme hackery. You can run -nw with (set-terminal-coding-system 2831 extreme hackery. You can run -nw with (set-terminal-coding-system
1964 'utf-8) if you really want a Unicode font for some reason. 2832 'utf-8) if you really want a Unicode font for some reason.
1965 2833
1966 Real Unicode support will be introduced in XEmacs 22.0. 2834 Real Unicode support will be introduced in XEmacs 22.0.
1967
1968 @unnumberedsec 1.5: Getting Started
1969
1970 @node Q1.5.1, Q1.5.2, Q1.4.9, Introduction
1971 @unnumberedsubsec Q1.5.1: What is an @file{init.el} or @file{.emacs} and is there a sample one?
1972
1973 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to
1974 your tastes. Starting in 21.4, the preferred location for the init file
1975 is @file{~/.xemacs/init.el}; in previous versions, it was
1976 @file{~/.emacs}. 21.4 still accepts the old location, but the first
1977 time you run it, it will ask to migrate your file to the new location.
1978 If you answer yes, the file will be moved, and a "compatibility"
1979 @file{.emacs} file will be placed in the old location so that you can
1980 still run older versions of XEmacs, and versions of GNU Emacs, which
1981 expect the old location. The @file{.emacs} file present is just a stub
1982 that loads the real file in @file{~/.xemacs/init.el}.
1983
1984 No two init files are alike, nor are they expected to be alike, but
1985 that's the point. The XEmacs distribution contains an excellent starter
1986 example in the @file{etc/} directory called @file{sample.init.el}
1987 (starting in 21.4) or @file{sample.emacs} in older versions. Copy this
1988 file from there to @file{~/.xemacs/init.el} (starting in 21.4) or
1989 @file{~/.emacs} in older versions, where @samp{~} means your home
1990 directory, of course. Then edit it to suit.
1991
1992 You may bring the @file{sample.init.el} or @file{sample.emacs} file into
1993 an XEmacs buffer from the menubar. (The menu entry for it is always
1994 under the @samp{Help} menu, but its location under that has changed in
1995 various versions. Recently, look under the @samp{Samples} submenu.) To
1996 determine the location of the @file{etc/} directory type the command
1997 @kbd{C-h v data-directory @key{RET}}.
1998
1999 @node Q1.5.2, Q1.5.3, Q1.5.1, Introduction
2000 @unnumberedsubsec Q1.5.2: Where do I put my @file{init.el} file?
2001
2002 @file{init.el} is the name of the init file starting with 21.4, and is
2003 located in the subdirectory @file{.xemacs/} of your home directory. In
2004 prior versions, the init file is called @file{.emacs} and is located in
2005 your home directory.
2006
2007 Your home directory under Windows is determined by the @samp{HOME}
2008 environment variable. If this is not set, it defaults to @samp{C:\}.
2009 To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
2010 select @samp{Control Panel->System->Advanced->Environment Variables...}
2011 under Windows NT/2000.
2012
2013 @node Q1.5.3, Q1.5.4, Q1.5.2, Introduction
2014 @unnumberedsubsec Q1.5.3: Can I use the same @file{init.el} with the other Emacs?
2015
2016 Yes. The sample @file{init.el} included in the XEmacs
2017 distribution will show you how to handle different versions and flavors
2018 of Emacs.
2019
2020 @node Q1.5.4, Q1.5.5, Q1.5.3, Introduction
2021 @unnumberedsubsec Q1.5.4: Any good XEmacs tutorials around?
2022
2023 There's the XEmacs tutorial available from the Help Menu under
2024 @samp{Help->Tutorials}, or by typing @kbd{C-h t}. To check whether
2025 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type
2026 the first letters of your preferred language, then type @key{RET}.
2027
2028 @comment There's an Emacs Lisp tutorial at
2029 @comment
2030 @comment @example
2031 @comment @uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar.gz}.
2032 @comment @end example
2033 @comment
2034 @comment @email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tutorial web
2035 @comment page at
2036 @comment @iftex
2037 @comment @*
2038 @comment @end iftex
2039 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}.
2040
2041 @node Q1.5.5, Q1.5.6, Q1.5.4, Introduction
2042 @unnumberedsubsec Q1.5.5: May I see an example of a useful XEmacs Lisp function?
2043
2044 The following function does a little bit of everything useful. It does
2045 something with the prefix argument, it examines the text around the
2046 cursor, and it's interactive so it may be bound to a key. It inserts
2047 copies of the current word the cursor is sitting on at the cursor. If
2048 you give it a prefix argument: @kbd{C-u 3 M-x double-word} then it will
2049 insert 3 copies.
2050
2051 @lisp
2052 (defun double-word (count)
2053 "Insert a copy of the current word underneath the cursor"
2054 (interactive "*p")
2055 (let (here there string)
2056 (save-excursion
2057 (forward-word -1)
2058 (setq here (point))
2059 (forward-word 1)
2060 (setq there (point))
2061 (setq string (buffer-substring here there)))
2062 (while (>= count 1)
2063 (insert string)
2064 (decf count))))
2065 @end lisp
2066
2067 The best way to see what is going on here is to let XEmacs tell you.
2068 Put the code into an XEmacs buffer, and do a @kbd{C-h f} with the cursor
2069 sitting just to the right of the function you want explained. Eg. move
2070 the cursor to the SPACE between @code{interactive} and @samp{"*p"} and
2071 hit @kbd{C-h f} to see what the function @code{interactive} does. Doing
2072 this will tell you that the @code{*} requires a writable buffer, and
2073 @code{p} converts the prefix argument to a number, and
2074 @code{interactive} allows you to execute the command with @kbd{M-x}.
2075
2076 @node Q1.5.6, Q1.5.7, Q1.5.5, Introduction
2077 @unnumberedsubsec Q1.5.6: And how do I bind it to a key?
2078
2079 To bind to a key do:
2080
2081 @lisp
2082 (global-set-key "\C-cd" 'double-word)
2083 @end lisp
2084
2085 Or interactively, @kbd{M-x global-set-key} and follow the prompts.
2086
2087 @node Q1.5.7, Q1.5.8, Q1.5.6, Introduction
2088 @unnumberedsubsec Q1.5.7: What's the difference between a macro and a function?
2089
2090 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual:
2091
2092 @dfn{Macros} enable you to define new control constructs and other
2093 language features. A macro is defined much like a function, but instead
2094 of telling how to compute a value, it tells how to compute another Lisp
2095 expression which will in turn compute the value. We call this
2096 expression the @dfn{expansion} of the macro.
2097
2098 Macros can do this because they operate on the unevaluated expressions
2099 for the arguments, not on the argument values as functions do. They can
2100 therefore construct an expansion containing these argument expressions
2101 or parts of them.
2102
2103 Do not confuse the two terms with @dfn{keyboard macros}, which are
2104 another matter, entirely. A keyboard macro is a key bound to several
2105 other keys. Refer to manual for details.
2106
2107 @node Q1.5.8, , Q1.5.7, Introduction
2108 @unnumberedsubsec Q1.5.8: What is @code{Custom}?
2109
2110 @code{Custom} is a system for customizing XEmacs options.
2111
2112 You can access @code{Advanced (Customize)} from the @code{Options} menu
2113 or invoking one of customize commands by typing eg.
2114 @kbd{M-x customize}, @kbd{M-x customize-face},
2115 @kbd{M-x customize-variable} or @kbd{M-x customize-apropos}.
2116
2117 There is also new @samp{browser} mode for Customize.
2118 Try it out with @kbd{M-x customize-browse}
2119 2835
2120 @node Installation, Editing, Introduction, Top 2836 @node Installation, Editing, Introduction, Top
2121 @unnumbered 2 Installation and Troubleshooting 2837 @unnumbered 2 Installation and Troubleshooting
2122 2838
2123 This is part 2 of the XEmacs Frequently Asked Questions list. This 2839 This is part 2 of the XEmacs Frequently Asked Questions list. This
2440 port is the most reliable version and provides the best graphical 3156 port is the most reliable version and provides the best graphical
2441 support. Almost all development is geared towards this version, and 3157 support. Almost all development is geared towards this version, and
2442 there is little reason not to use it. 3158 there is little reason not to use it.
2443 3159
2444 The second way to build is the Cygwin port. It takes advantage of 3160 The second way to build is the Cygwin port. It takes advantage of
2445 Cygnus emulation library under Win32. @xref{Q1.1.4, What are Cygwin 3161 Cygnus emulation library under Win32. @xref{Q1.2.5, What are Cygwin
2446 and MinGW, and do I need them to run XEmacs?}, for more information. 3162 and MinGW, and do I need them to run XEmacs?}, for more information.
2447 3163
2448 A third way is the MinGW port. It uses the Cygwin environment to 3164 A third way is the MinGW port. It uses the Cygwin environment to
2449 build but does not require it at runtime. @xref{Q1.1.4, What are 3165 build but does not require it at runtime. @xref{Q1.2.5, What are
2450 Cygwin and MinGW, and do I need them to run XEmacs?}, for more 3166 Cygwin and MinGW, and do I need them to run XEmacs?}, for more
2451 information. 3167 information.
2452 3168
2453 Finally, you might also be able to build the non-Cygwin, non-MinGW "X" 3169 Finally, you might also be able to build the non-Cygwin, non-MinGW "X"
2454 port. This was actually the first version of XEmacs that ran under MS 3170 port. This was actually the first version of XEmacs that ran under MS
2463 3179
2464 You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have 3180 You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
2465 some beta testers currently trying to compile with VC.NET, aka version 3181 some beta testers currently trying to compile with VC.NET, aka version
2466 7.0, but we can't yet report complete success.) For the Cygwin and 3182 7.0, but we can't yet report complete success.) For the Cygwin and
2467 MinGW versions, you need the Cygwin environment, which comes with GCC, 3183 MinGW versions, you need the Cygwin environment, which comes with GCC,
2468 the compiler used for those versions. @xref{Q1.1.4, What are Cygwin 3184 the compiler used for those versions. @xref{Q1.2.5, What are Cygwin
2469 and MinGW, and do I need them to run XEmacs?}, for more information on 3185 and MinGW, and do I need them to run XEmacs?}, for more information on
2470 Cygwin and MinGW. 3186 Cygwin and MinGW.
2471 3187
2472 @node Q2.2.3, Q2.2.4, Q2.2.2, Installation 3188 @node Q2.2.3, Q2.2.4, Q2.2.2, Installation
2473 @unnumberedsubsec Q2.2.3: How do I compile the native port? 3189 @unnumberedsubsec Q2.2.3: How do I compile the native port?
3193 21.1.10 includes a fix for this that makes more intelligent guesses 3909 21.1.10 includes a fix for this that makes more intelligent guesses
3194 about which memory addresses will be free, and this should cure the 3910 about which memory addresses will be free, and this should cure the
3195 problem for most people. 21.4 implements "portable dumping", which 3911 problem for most people. 21.4 implements "portable dumping", which
3196 eliminates the problem altogether. We recommend you use the 21.4 3912 eliminates the problem altogether. We recommend you use the 21.4
3197 binaries, but you can use the 21.1 binaries if you are very paranoid 3913 binaries, but you can use the 21.1 binaries if you are very paranoid
3198 about stability. @xref{Q1.0.4, Are binaries available?}. 3914 about stability. @xref{Q1.1.2, Are binaries available?}.
3199 3915
3200 @node Q2.4.3, Q2.4.4, Q2.4.2, Installation 3916 @node Q2.4.3, Q2.4.4, Q2.4.2, Installation
3201 @unnumberedsubsec Q2.4.3: XEmacs won't start without network. 3917 @unnumberedsubsec Q2.4.3: XEmacs won't start without network.
3202 3918
3203 If XEmacs starts when you're on the network, but fails when you're not 3919 If XEmacs starts when you're on the network, but fails when you're not
5955 6671
5956 This is part 7 of the XEmacs Frequently Asked Questions list. This 6672 This is part 7 of the XEmacs Frequently Asked Questions list. This
5957 section is devoted to advanced customization using XEmacs Lisp. 6673 section is devoted to advanced customization using XEmacs Lisp.
5958 6674
5959 @menu 6675 @menu
5960 7.0: Online Help 6676 7.0: Emacs Lisp and @file{init.el}
5961 * Q7.0.1:: How can I get two instances of info? 6677 * Q7.0.1:: What version of Emacs am I running?
5962 * Q7.0.2:: How do I add new Info directories? 6678 * Q7.0.2:: How can I evaluate Emacs-Lisp expressions?
5963 6679 * Q7.0.3:: @code{(setq tab-width 6)} behaves oddly.
5964 7.1: Emacs Lisp and @file{init.el} 6680 * Q7.0.4:: How can I add directories to the @code{load-path}?
5965 * Q7.1.1:: What version of Emacs am I running? 6681 * Q7.0.5:: How to check if a lisp function is defined?
5966 * Q7.1.2:: How can I evaluate Emacs-Lisp expressions? 6682 * Q7.0.6:: Can I force the output of @code{(face-list)} to a buffer?
5967 * Q7.1.3:: @code{(setq tab-width 6)} behaves oddly. 6683
5968 * Q7.1.4:: How can I add directories to the @code{load-path}? 6684 7.1: Emacs Lisp Programming Techniques
5969 * Q7.1.5:: How to check if a lisp function is defined? 6685 * Q7.1.1:: What is the difference in key sequences between XEmacs and GNU Emacs?
5970 * Q7.1.6:: Can I force the output of @code{(face-list)} to a buffer? 6686 * Q7.1.2:: Can I generate "fake" keyboard events?
5971 6687 * Q7.1.3:: Could you explain @code{read-kbd-macro} in more detail?
5972 7.2: Emacs Lisp Programming Techniques 6688 * Q7.1.4:: What is the performance hit of @code{let}?
5973 * Q7.2.1:: What is the difference in key sequences between XEmacs and GNU Emacs? 6689 * Q7.1.5:: What is the recommended use of @code{setq}?
5974 * Q7.2.2:: Can I generate "fake" keyboard events? 6690 * Q7.1.6:: What is the typical misuse of @code{setq}?
5975 * Q7.2.3:: Could you explain @code{read-kbd-macro} in more detail? 6691 * Q7.1.7:: I like the @code{do} form of cl, does it slow things down?
5976 * Q7.2.4:: What is the performance hit of @code{let}? 6692 * Q7.1.8:: I like recursion, does it slow things down?
5977 * Q7.2.5:: What is the recommended use of @code{setq}? 6693 * Q7.1.9:: How do I put a glyph as annotation in a buffer?
5978 * Q7.2.6:: What is the typical misuse of @code{setq}? 6694 * Q7.1.10:: @code{map-extents} won't traverse all of my extents!
5979 * Q7.2.7:: I like the @code{do} form of cl, does it slow things down? 6695 * Q7.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
5980 * Q7.2.8:: I like recursion, does it slow things down? 6696
5981 * Q7.2.9:: How do I put a glyph as annotation in a buffer? 6697 7.2: Mathematics
5982 * Q7.2.10:: @code{map-extents} won't traverse all of my extents! 6698 * Q7.2.1:: What are bignums, ratios, and bigfloats in Lisp?
5983 * Q7.2.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time? 6699 * Q7.2.2:: XEmacs segfaults when I use very big numbers!
5984 6700 * Q7.2.3:: Bignums are really slow!
5985 7.3: Mathematics 6701 * Q7.2.4:: Equal bignums don't compare as equal! What gives?
5986 * Q7.3.1:: What are bignums, ratios, and bigfloats in Lisp?
5987 * Q7.3.2:: XEmacs segfaults when I use very big numbers!
5988 * Q7.3.3:: Bignums are really slow!
5989 * Q7.3.4:: Equal bignums don't compare as equal! What gives?
5990 @end menu 6702 @end menu
5991 6703
5992 @unnumberedsec 7.0: Online Help 6704 @unnumberedsec 7.0: Emacs Lisp and @file{init.el}
5993 6705
5994 @node Q7.0.1, Q7.0.2, Advanced, Advanced 6706 @node Q7.0.1, Q7.0.2, Advanced, Advanced
5995 @unnumberedsubsec Q7.0.1: How can I get two instances of info? 6707 @unnumberedsubsec Q7.0.1: What version of Emacs am I running?
5996
5997 Before 21.4, you can't. The @code{info} package does not provide for
5998 multiple info buffers. In 21.4, this should be fixed. #### how?
5999
6000 @node Q7.0.2, Q7.1.1, Q7.0.1, Advanced
6001 @unnumberedsubsec Q7.0.2: How do I add new Info directories?
6002
6003 You use something like:
6004
6005 @lisp
6006 (setq Info-directory-list (cons
6007 (expand-file-name "~/info")
6008 Info-default-directory-list))
6009 @end lisp
6010
6011 @email{davidm@@prism.kla.com, David Masterson} writes:
6012
6013 @quotation
6014 Emacs Info and XEmacs Info do many things differently. If you're trying to
6015 support a number of versions of Emacs, here are some notes to remember:
6016
6017 @enumerate
6018 @item
6019 Emacs Info scans @code{Info-directory-list} from right-to-left while
6020 XEmacs Info reads it from left-to-right, so append to the @emph{correct}
6021 end of the list.
6022
6023 @item
6024 Use @code{Info-default-directory-list} to initialize
6025 @code{Info-directory-list} @emph{if} it is available at startup, but not
6026 all Emacsen define it.
6027
6028 @item
6029 Emacs Info looks for a standard @file{dir} file in each of the
6030 directories scanned from #1 and magically concatenates them together.
6031
6032 @item
6033 XEmacs Info looks for a @file{localdir} file (which consists of just the
6034 menu entries from a @file{dir} file) in each of the directories scanned
6035 from #1 (except the first), does a simple concatenation of them, and
6036 magically attaches the resulting list to the end of the menu in the
6037 @file{dir} file in the first directory.
6038 @end enumerate
6039
6040 Another alternative is to convert the documentation to HTML with
6041 texi2html and read it from a web browser like Lynx or W3.
6042 @end quotation
6043
6044 @unnumberedsec 7.1: Emacs Lisp and @file{init.el}
6045
6046 @node Q7.1.1, Q7.1.2, Q7.0.2, Advanced
6047 @unnumberedsubsec Q7.1.1: What version of Emacs am I running?
6048 6708
6049 How can @file{init.el} determine which of the family of 6709 How can @file{init.el} determine which of the family of
6050 Emacsen I am using? 6710 Emacsen I am using?
6051 6711
6052 To determine if you are currently running GNU Emacs 18, GNU Emacs 19, 6712 To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
6059 6719
6060 @lisp 6720 @lisp
6061 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) 6721 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
6062 @end lisp 6722 @end lisp
6063 6723
6064 @node Q7.1.2, Q7.1.3, Q7.1.1, Advanced 6724 @node Q7.0.2, Q7.0.3, Q7.0.1, Advanced
6065 @unnumberedsubsec Q7.1.2: How can I evaluate Emacs-Lisp expressions? 6725 @unnumberedsubsec Q7.0.2: How can I evaluate Emacs-Lisp expressions?
6066 6726
6067 I know I can evaluate Elisp expressions from @code{*scratch*} buffer 6727 I know I can evaluate Elisp expressions from @code{*scratch*} buffer
6068 with @kbd{C-j} after the expression. How do I do it from another 6728 with @kbd{C-j} after the expression. How do I do it from another
6069 buffer? 6729 buffer?
6070 6730
6071 Press @kbd{M-:} (the default binding of @code{eval-expression}), and 6731 Press @kbd{M-:} (the default binding of @code{eval-expression}), and
6072 enter the expression to the minibuffer. 6732 enter the expression to the minibuffer.
6073 6733
6074 @node Q7.1.3, Q7.1.4, Q7.1.2, Advanced 6734 @node Q7.0.3, Q7.0.4, Q7.0.2, Advanced
6075 @unnumberedsubsec Q7.1.3: @code{(setq tab-width 6)} behaves oddly. 6735 @unnumberedsubsec Q7.0.3: @code{(setq tab-width 6)} behaves oddly.
6076 6736
6077 If you put @code{(setq tab-width 6)} in your 6737 If you put @code{(setq tab-width 6)} in your
6078 @file{init.el} file it does not work! Is there a reason 6738 @file{init.el} file it does not work! Is there a reason
6079 for this? If you do it at the EVAL prompt it works fine!! How strange. 6739 for this? If you do it at the EVAL prompt it works fine!! How strange.
6080 6740
6081 Use @code{setq-default} instead, since @code{tab-width} is 6741 Use @code{setq-default} instead, since @code{tab-width} is
6082 all-buffer-local. 6742 all-buffer-local.
6083 6743
6084 @node Q7.1.4, Q7.1.5, Q7.1.3, Advanced 6744 @node Q7.0.4, Q7.0.5, Q7.0.3, Advanced
6085 @unnumberedsubsec Q7.1.4: How can I add directories to the @code{load-path}? 6745 @unnumberedsubsec Q7.0.4: How can I add directories to the @code{load-path}?
6086 6746
6087 Here are two ways to do that, one that puts your directories at the 6747 Here are two ways to do that, one that puts your directories at the
6088 front of the load-path, the other at the end: 6748 front of the load-path, the other at the end:
6089 6749
6090 @lisp 6750 @lisp
6107 @lisp 6767 @lisp
6108 (push (expand-file-name "~keithh/.emacsdir") load-path) 6768 (push (expand-file-name "~keithh/.emacsdir") load-path)
6109 @end lisp 6769 @end lisp
6110 @end quotation 6770 @end quotation
6111 6771
6112 @node Q7.1.5, Q7.1.6, Q7.1.4, Advanced 6772 @node Q7.0.5, Q7.0.6, Q7.0.4, Advanced
6113 @unnumberedsubsec Q7.1.5: How to check if a lisp function is defined? 6773 @unnumberedsubsec Q7.0.5: How to check if a lisp function is defined?
6114 6774
6115 Use the following elisp: 6775 Use the following elisp:
6116 6776
6117 @lisp 6777 @lisp
6118 (fboundp 'foo) 6778 (fboundp 'foo)
6132 6792
6133 There is an incredible amount of broken code out there which could work 6793 There is an incredible amount of broken code out there which could work
6134 much better more often in more places if it did the above instead of 6794 much better more often in more places if it did the above instead of
6135 trying to divine its environment from the value of one variable. 6795 trying to divine its environment from the value of one variable.
6136 6796
6137 @node Q7.1.6, Q7.2.1, Q7.1.5, Advanced 6797 @node Q7.0.6, Q7.1.1, Q7.0.5, Advanced
6138 @unnumberedsubsec Q7.1.6: Can I force the output of @code{(face-list)} to a buffer? 6798 @unnumberedsubsec Q7.0.6: Can I force the output of @code{(face-list)} to a buffer?
6139 6799
6140 It would be good having it in a buffer, as the output of 6800 It would be good having it in a buffer, as the output of
6141 @code{(face-list)} is too wide to fit to a minibuffer. 6801 @code{(face-list)} is too wide to fit to a minibuffer.
6142 6802
6143 Evaluate the expression in the @samp{*scratch*} buffer with point after 6803 Evaluate the expression in the @samp{*scratch*} buffer with point after
6145 6805
6146 If the minibuffer smallness is the only problem you encounter, you can 6806 If the minibuffer smallness is the only problem you encounter, you can
6147 simply press @kbd{C-h l} to get the former minibuffer contents in a 6807 simply press @kbd{C-h l} to get the former minibuffer contents in a
6148 buffer. 6808 buffer.
6149 6809
6150 @unnumberedsec 7.2: Emacs Lisp Programming Techniques 6810 @unnumberedsec 7.1: Emacs Lisp Programming Techniques
6151 6811
6152 @node Q7.2.1, Q7.2.2, Q7.1.6, Advanced 6812 @node Q7.1.1, Q7.1.2, Q7.0.6, Advanced
6153 @unnumberedsubsec Q7.2.1: What is the difference in key sequences between XEmacs and GNU Emacs? 6813 @unnumberedsubsec Q7.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
6154 6814
6155 @email{clerik@@naggum.no, Erik Naggum} writes; 6815 @email{clerik@@naggum.no, Erik Naggum} writes;
6156 6816
6157 @quotation 6817 @quotation
6158 Emacs has a legacy of keyboards that produced characters with modifier 6818 Emacs has a legacy of keyboards that produced characters with modifier
6180 Another (even safer) way to be sure of the key-sequences is to use the 6840 Another (even safer) way to be sure of the key-sequences is to use the
6181 @code{read-kbd-macro} function, which takes a string like @samp{C-c 6841 @code{read-kbd-macro} function, which takes a string like @samp{C-c
6182 <up>}, and converts it to the internal key representation of the Emacs 6842 <up>}, and converts it to the internal key representation of the Emacs
6183 you use. The function is available both on XEmacs and GNU Emacs. 6843 you use. The function is available both on XEmacs and GNU Emacs.
6184 6844
6185 @node Q7.2.2, Q7.2.3, Q7.2.1, Advanced 6845 @node Q7.1.2, Q7.1.3, Q7.1.1, Advanced
6186 @unnumberedsubsec Q7.2.2: Can I generate "fake" keyboard events? 6846 @unnumberedsubsec Q7.1.2: Can I generate "fake" keyboard events?
6187 6847
6188 I wonder if there is an interactive function that can generate 6848 I wonder if there is an interactive function that can generate
6189 @dfn{fake} keyboard events. This way, I could simply map them inside 6849 @dfn{fake} keyboard events. This way, I could simply map them inside
6190 XEmacs. 6850 XEmacs.
6191 6851
6201 (lambda () (interactive) (cg--generate-char-event 127))) 6861 (lambda () (interactive) (cg--generate-char-event 127)))
6202 (global-set-key [unknown_keysym_0x4] 6862 (global-set-key [unknown_keysym_0x4]
6203 (lambda () (interactive) (cg--generate-char-event 4))) 6863 (lambda () (interactive) (cg--generate-char-event 4)))
6204 @end lisp 6864 @end lisp
6205 6865
6206 @node Q7.2.3, Q7.2.4, Q7.2.2, Advanced 6866 @node Q7.1.3, Q7.1.4, Q7.1.2, Advanced
6207 @unnumberedsubsec Q7.2.3: Could you explain @code{read-kbd-macro} in more detail? 6867 @unnumberedsubsec Q7.1.3: Could you explain @code{read-kbd-macro} in more detail?
6208 6868
6209 The @code{read-kbd-macro} function returns the internal Emacs 6869 The @code{read-kbd-macro} function returns the internal Emacs
6210 representation of a human-readable string (which is its argument). 6870 representation of a human-readable string (which is its argument).
6211 Thus: 6871 Thus:
6212 6872
6292 @code{\123} is a single key written in octal, and @code{< right >} is 6952 @code{\123} is a single key written in octal, and @code{< right >} is
6293 seven keys but @code{<right>} is a single function key. When in doubt, 6953 seven keys but @code{<right>} is a single function key. When in doubt,
6294 use whitespace. 6954 use whitespace.
6295 @end quotation 6955 @end quotation
6296 6956
6297 @node Q7.2.4, Q7.2.5, Q7.2.3, Advanced 6957 @node Q7.1.4, Q7.1.5, Q7.1.3, Advanced
6298 @unnumberedsubsec Q7.2.4: What is the performance hit of @code{let}? 6958 @unnumberedsubsec Q7.1.4: What is the performance hit of @code{let}?
6299 6959
6300 In most cases, not noticeable. Besides, there's no avoiding 6960 In most cases, not noticeable. Besides, there's no avoiding
6301 @code{let}---you have to bind your local variables, after all. Some 6961 @code{let}---you have to bind your local variables, after all. Some
6302 pose a question whether to nest @code{let}s, or use one @code{let} per 6962 pose a question whether to nest @code{let}s, or use one @code{let} per
6303 function. I think because of clarity and maintenance (and possible 6963 function. I think because of clarity and maintenance (and possible
6304 future implementation), @code{let}-s should be used (nested) in a way to 6964 future implementation), @code{let}-s should be used (nested) in a way to
6305 provide the clearest code. 6965 provide the clearest code.
6306 6966
6307 @node Q7.2.5, Q7.2.6, Q7.2.4, Advanced 6967 @node Q7.1.5, Q7.1.6, Q7.1.4, Advanced
6308 @unnumberedsubsec Q7.2.5: What is the recommended use of @code{setq}? 6968 @unnumberedsubsec Q7.1.5: What is the recommended use of @code{setq}?
6309 6969
6310 @itemize @bullet 6970 @itemize @bullet
6311 @item Global variables 6971 @item Global variables
6312 6972
6313 You will typically @code{defvar} your global variable to a default 6973 You will typically @code{defvar} your global variable to a default
6365 (setq foo-processed-inbox 7025 (setq foo-processed-inbox
6366 (let .....)) 7026 (let .....))
6367 @end lisp 7027 @end lisp
6368 @end itemize 7028 @end itemize
6369 7029
6370 @node Q7.2.6, Q7.2.7, Q7.2.5, Advanced 7030 @node Q7.1.6, Q7.1.7, Q7.1.5, Advanced
6371 @unnumberedsubsec Q7.2.6: What is the typical misuse of @code{setq}? 7031 @unnumberedsubsec Q7.1.6: What is the typical misuse of @code{setq}?
6372 7032
6373 A typical misuse is probably @code{setq}ing a variable that was meant to 7033 A typical misuse is probably @code{setq}ing a variable that was meant to
6374 be local. Such a variable will remain bound forever, never to be 7034 be local. Such a variable will remain bound forever, never to be
6375 garbage-collected. For example, the code doing: 7035 garbage-collected. For example, the code doing:
6376 7036
6407 7067
6408 While compiling toplevel forms: 7068 While compiling toplevel forms:
6409 ** assignment to free variable flurghoze 7069 ** assignment to free variable flurghoze
6410 @end lisp 7070 @end lisp
6411 7071
6412 @node Q7.2.7, Q7.2.8, Q7.2.6, Advanced 7072 @node Q7.1.7, Q7.1.8, Q7.1.6, Advanced
6413 @unnumberedsubsec Q7.2.7: I like the @code{do} form of cl, does it slow things down? 7073 @unnumberedsubsec Q7.1.7: I like the @code{do} form of cl, does it slow things down?
6414 7074
6415 It shouldn't. Here is what Dave Gillespie has to say about cl.el 7075 It shouldn't. Here is what Dave Gillespie has to say about cl.el
6416 performance: 7076 performance:
6417 7077
6418 @quotation 7078 @quotation
6449 7109
6450 You can find out how a macro expands by using the @code{cl-prettyexpand} 7110 You can find out how a macro expands by using the @code{cl-prettyexpand}
6451 function. 7111 function.
6452 @end quotation 7112 @end quotation
6453 7113
6454 @node Q7.2.8, Q7.2.9, Q7.2.7, Advanced 7114 @node Q7.1.8, Q7.1.9, Q7.1.7, Advanced
6455 @unnumberedsubsec Q7.2.8: I like recursion, does it slow things down? 7115 @unnumberedsubsec Q7.1.8: I like recursion, does it slow things down?
6456 7116
6457 Yes. The Emacs byte-compiler cannot do much to optimize recursion. But 7117 Yes. The Emacs byte-compiler cannot do much to optimize recursion. But
6458 think well whether this is a real concern in Emacs. Much of the Emacs 7118 think well whether this is a real concern in Emacs. Much of the Emacs
6459 slowness comes from internal mechanisms such as redisplay, or from the 7119 slowness comes from internal mechanisms such as redisplay, or from the
6460 fact that it is an interpreter. 7120 fact that it is an interpreter.
6461 7121
6462 Please try not to make your code much uglier to gain a very small speed 7122 Please try not to make your code much uglier to gain a very small speed
6463 gain. It's not usually worth it. 7123 gain. It's not usually worth it.
6464 7124
6465 @node Q7.2.9, Q7.2.10, Q7.2.8, Advanced 7125 @node Q7.1.9, Q7.1.10, Q7.1.8, Advanced
6466 @unnumberedsubsec Q7.2.9: How do I put a glyph as annotation in a buffer? 7126 @unnumberedsubsec Q7.1.9: How do I put a glyph as annotation in a buffer?
6467 7127
6468 Here is a solution that will insert the glyph annotation at the 7128 Here is a solution that will insert the glyph annotation at the
6469 beginning of buffer: 7129 beginning of buffer:
6470 7130
6471 @lisp 7131 @lisp
6487 7147
6488 You can turn this to a function (that optionally prompts you for a file 7148 You can turn this to a function (that optionally prompts you for a file
6489 name), and inserts the glyph at @code{(point)} instead of 7149 name), and inserts the glyph at @code{(point)} instead of
6490 @code{(point-min)}. 7150 @code{(point-min)}.
6491 7151
6492 @node Q7.2.10, Q7.2.11, Q7.2.9, Advanced 7152 @node Q7.1.10, Q7.1.11, Q7.1.9, Advanced
6493 @unnumberedsubsec Q7.2.10: @code{map-extents} won't traverse all of my extents! 7153 @unnumberedsubsec Q7.1.10: @code{map-extents} won't traverse all of my extents!
6494 7154
6495 I tried to use @code{map-extents} to do an operation on all the extents 7155 I tried to use @code{map-extents} to do an operation on all the extents
6496 in a region. However, it seems to quit after processing a random number 7156 in a region. However, it seems to quit after processing a random number
6497 of extents. Is it buggy? 7157 of extents. Is it buggy?
6498 7158
6518 (delete-extent ext) 7178 (delete-extent ext)
6519 (message "fubar!") 7179 (message "fubar!")
6520 nil)) 7180 nil))
6521 @end lisp 7181 @end lisp
6522 7182
6523 @node Q7.2.11, Q7.3.1, Q7.2.10, Advanced 7183 @node Q7.1.11, Q7.2.1, Q7.1.10, Advanced
6524 @unnumberedsubsec Q7.2.11: My elisp program is horribly slow. Is there an easy way to find out where it spends time? 7184 @unnumberedsubsec Q7.1.11: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
6525 @c New 7185 @c New
6526 7186
6527 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes: 7187 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
6528 @quotation 7188 @quotation
6529 Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence}, 7189 Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence},
6530 press a key (say @key{RET} in the Gnus Group buffer), and get the 7190 press a key (say @key{RET} in the Gnus Group buffer), and get the
6531 results using @kbd{M-x profile-results}. It should give you an idea of 7191 results using @kbd{M-x profile-results}. It should give you an idea of
6532 where the time is being spent. 7192 where the time is being spent.
6533 @end quotation 7193 @end quotation
6534 7194
6535 @unnumberedsec 7.3: Mathematics 7195 @unnumberedsec 7.2: Mathematics
6536 7196
6537 @node Q7.3.1, Q7.3.2, Q7.2.11, Advanced 7197 @node Q7.2.1, Q7.2.2, Q7.1.11, Advanced
6538 @unnumberedsubsec Q7.3.1: What are bignums, ratios, and bigfloats in Lisp? 7198 @unnumberedsubsec Q7.2.1: What are bignums, ratios, and bigfloats in Lisp?
6539 7199
6540 Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and 7200 Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and
6541 later can use the capabilities of multiple-precision libraries that may 7201 later can use the capabilities of multiple-precision libraries that may
6542 be available for your platform. The GNU Multiple Precision (GMP) and 7202 be available for your platform. The GNU Multiple Precision (GMP) and
6543 BSD Multiple Precision (MP) libraries are partially supported. GMP 7203 BSD Multiple Precision (MP) libraries are partially supported. GMP
6561 User-visible changes in behavior include (in probable order of annoyance) 7221 User-visible changes in behavior include (in probable order of annoyance)
6562 7222
6563 @itemize 7223 @itemize
6564 @item 7224 @item
6565 Arithmetic can cause a segfault, depending on your MP library 7225 Arithmetic can cause a segfault, depending on your MP library
6566 @ref{Q7.3.2, XEmacs segfaults when I use very big numbers!}. 7226 @ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}.
6567 7227
6568 @item 7228 @item
6569 Terminology is not Common-Lisp-conforming. For example, ``integer'' for 7229 Terminology is not Common-Lisp-conforming. For example, ``integer'' for
6570 Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being 7230 Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being
6571 investigated, but the use of ``integer'' for fixnum is pervasive and may 7231 investigated, but the use of ``integer'' for fixnum is pervasive and may
6587 disabled at runtime. New functions have been added which produce 7247 disabled at runtime. New functions have been added which produce
6588 ratios, so there should be few surprises with type conflicts, but they 7248 ratios, so there should be few surprises with type conflicts, but they
6589 can't be ruled out. ``Arbitrary'' precision means precisely what it 7249 can't be ruled out. ``Arbitrary'' precision means precisely what it
6590 says. If you work with extremely large numbers, your machine may 7250 says. If you work with extremely large numbers, your machine may
6591 arbitrarily decide to hand you an unpleasant surprise rather than a 7251 arbitrarily decide to hand you an unpleasant surprise rather than a
6592 bignum @ref{Q7.3.2, XEmacs segfaults when I use very big numbers!}. 7252 bignum @ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}.
6593 7253
6594 To configure with GNU MP, add 7254 To configure with GNU MP, add
6595 @samp{--use-number-lib=gmp} 7255 @samp{--use-number-lib=gmp}
6596 to your invocation of @file{configure}. For BSD MP, use 7256 to your invocation of @file{configure}. For BSD MP, use
6597 @samp{--use-number-lib=mp}. 7257 @samp{--use-number-lib=mp}.
6602 @file{number-mp.h}. Jerry has promised to write internals documentation 7262 @file{number-mp.h}. Jerry has promised to write internals documentation
6603 eventually, but if your skills run more to analysis and documentation 7263 eventually, but if your skills run more to analysis and documentation
6604 than to writing new code, feel free to fill in the gap! 7264 than to writing new code, feel free to fill in the gap!
6605 7265
6606 7266
6607 @node Q7.3.2, Q7.3.3, Q7.3.1, Advanced 7267 @node Q7.2.2, Q7.2.3, Q7.2.1, Advanced
6608 @unnumberedsubsec Q7.3.2: XEmacs segfaults when I use very big numbers! 7268 @unnumberedsubsec Q7.2.2: XEmacs segfaults when I use very big numbers!
6609 7269
6610 GMP by default allocates temporaries on the stack. If you run out of 7270 GMP by default allocates temporaries on the stack. If you run out of
6611 stack space, you're dead; there is no way that we know of to reliably 7271 stack space, you're dead; there is no way that we know of to reliably
6612 detect this condition, because @samp{alloca} is typically implemented to 7272 detect this condition, because @samp{alloca} is typically implemented to
6613 be @emph{fast} rather than robust. If you just need a little more 7273 be @emph{fast} rather than robust. If you just need a little more
6620 @key{RET}}), which will give us platform information. (We do know that 7280 @key{RET}}), which will give us platform information. (We do know that
6621 BSD MP implementations vary across vendors, but how much, we do not know 7281 BSD MP implementations vary across vendors, but how much, we do not know
6622 yet.) 7282 yet.)
6623 7283
6624 7284
6625 @node Q7.3.3, Q7.3.4, Q7.3.2, Advanced 7285 @node Q7.2.3, Q7.2.4, Q7.2.2, Advanced
6626 @unnumberedsubsec Q7.3.3: Bignums are really slow! 7286 @unnumberedsubsec Q7.2.3: Bignums are really slow!
6627 7287
6628 Many Linux distributions compile all their packages for the i386, and 7288 Many Linux distributions compile all their packages for the i386, and
6629 this is costly. An optimized version can give you two or three orders 7289 this is costly. An optimized version can give you two or three orders
6630 of magnitude better performance for a Pentium III or IV. (Yes, really. 7290 of magnitude better performance for a Pentium III or IV. (Yes, really.
6631 See @uref{http://www.swox.com/gmp/gmp-speed.html}.) 7291 See @uref{http://www.swox.com/gmp/gmp-speed.html}.)
6632 7292
6633 7293
6634 @node Q7.3.4, , Q7.3.3, Advanced 7294 @node Q7.2.4, , Q7.2.3, Advanced
6635 @unnumberedsubsec Q7.3.4: Equal bignums don't compare as equal! What gives? 7295 @unnumberedsubsec Q7.2.4: Equal bignums don't compare as equal! What gives?
6636 7296
6637 Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva 7297 Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva
6638 CLTL2 warned of the illusion that equal numbers would be @samp{eq}! 7298 CLTL2 warned of the illusion that equal numbers would be @samp{eq}!
6639 Meditate on the deeper truths of @samp{eql}, in which numbers of the same 7299 Meditate on the deeper truths of @samp{eql}, in which numbers of the same
6640 type which have equal values compare equal, and @samp{=}, which does any 7300 type which have equal values compare equal, and @samp{=}, which does any
6652 This is part 8 of the XEmacs Frequently Asked Questions list. This 7312 This is part 8 of the XEmacs Frequently Asked Questions list. This
6653 section is devoted to miscellaneous external packages not covered 7313 section is devoted to miscellaneous external packages not covered
6654 elsewhere in XEmacs. 7314 elsewhere in XEmacs.
6655 7315
6656 @menu 7316 @menu
7317 8.0: TeX
6657 * Q8.0.1:: Is there something better than LaTeX mode? 7318 * Q8.0.1:: Is there something better than LaTeX mode?
6658 * Q8.0.2:: What is AUCTeX? Where do you get it? 7319 * Q8.0.2:: What is AUCTeX? Where do you get it?
6659 * Q8.0.3:: Problems installing AUCTeX. 7320 * Q8.0.3:: Problems installing AUCTeX.
6660 * Q8.0.4:: How do I turn off current chapter from AUCTeX modeline? 7321 * Q8.0.4:: How do I turn off current chapter from AUCTeX modeline?
6661 7322
7008 7669
7009 Information on older versions of XEmacs can be find in @file{ONEWS} in 7670 Information on older versions of XEmacs can be find in @file{ONEWS} in
7010 the same directory, or @file{OONEWS} for really old versions. 7671 the same directory, or @file{OONEWS} for really old versions.
7011 7672
7012 @menu 7673 @menu
7674 9.0: Changes
7013 * Q9.0.1:: What new features will be in XEmacs soon? 7675 * Q9.0.1:: What new features will be in XEmacs soon?
7014 * Q9.0.2:: What's new in XEmacs 21.4? 7676 * Q9.0.2:: What's new in XEmacs 21.4?
7015 * Q9.0.3:: What's new in XEmacs 21.1? 7677 * Q9.0.3:: What's new in XEmacs 21.1?
7016 * Q9.0.4:: What's new in XEmacs 20.4? 7678 * Q9.0.4:: What's new in XEmacs 20.4?
7017 * Q9.0.5:: What's new in XEmacs 20.3? 7679 * Q9.0.5:: What's new in XEmacs 20.3?
7337 is advice on compatibility of older XEmacsen with new packages and 7999 is advice on compatibility of older XEmacsen with new packages and
7338 updated versions of packages, but bug fixes (which will not be applied 8000 updated versions of packages, but bug fixes (which will not be applied
7339 to released XEmacsen, but users can apply themselves) are also accepted. 8001 to released XEmacsen, but users can apply themselves) are also accepted.
7340 8002
7341 @menu 8003 @menu
8004 10.0: XEmacs 21.1
7342 * Q10.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. 8005 * Q10.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1.
7343 @end menu 8006 @end menu
7344 8007
7345 @unnumberedsec 10.0: XEmacs 21.1 8008 @unnumberedsec 10.0: XEmacs 21.1
7346 8009