Mercurial > hg > xemacs-beta
diff man/xemacs-faq.texi @ 428:3ecd8885ac67 r21-2-22
Import from CVS: tag r21-2-22
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:28:15 +0200 |
parents | |
children | a5df635868b2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/xemacs-faq.texi Mon Aug 13 11:28:15 2007 +0200 @@ -0,0 +1,6276 @@ +\input texinfo.tex @c -*-texinfo-*- +@c %**start of header +@setfilename ../info/xemacs-faq.info +@settitle Frequently asked questions about XEmacs +@setchapternewpage off +@c %**end of header +@finalout +@titlepage +@title XEmacs FAQ +@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1999/11/27 05:27:19 $ +@sp 1 +@author Tony Rossini <arossini@@stat.sc.edu> +@author Ben Wing <ben@@xemacs.org> +@author Chuck Thompson <cthomp@@xemacs.org> +@author Steve Baur <steve@@xemacs.org> +@author Andreas Kaempf <andreas@@sccon.com> +@author Christian Nyb@o{} <chr@@mediascience.no> +@page +@end titlepage + +@ifinfo +@dircategory XEmacs Editor +@direntry +* FAQ: (xemacs-faq). XEmacs FAQ. +@end direntry +@end ifinfo + +@node Top, Introduction, (dir), (dir) +@top XEmacs FAQ +@unnumbered Introduction + +This is the guide to the XEmacs Frequently Asked Questions list---a +compendium of questions and answers pertaining to one of the finest +programs ever written. It is much more than just a Text Editor. + +This FAQ is freely redistributable. I take no liability for the +correctness and safety of any procedures or advice given here. This +FAQ is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. + +If you have a Web browser, the official hypertext version is at +@iftex +@* +@end iftex +@uref{http://www.xemacs.org/faq/xemacs-faq.html}. + +This version is somewhat nicer than the unofficial hypertext versions +that are archived at Utrecht, Oxford, Smart Pages, and other FAQ +archives. + +@ifset CANONICAL +@html +This document is available in several different formats: +@itemize @bullet +@item +@uref{xemacs-faq.txt, As a single ASCII file}, produced by +@code{makeinfo --no-headers} +@item +@uref{xemacs-faq.dvi, As a .dvi file}, as used with +@uref{http://www.tug.org, TeX.} +@item +As a PostScript file @uref{xemacs-faq-a4.ps, in A4 format}, +as well as in @uref{xemacs-faq-letter.ps, letter format} +@item +In html format, @uref{xemacs-faq_1.html, split by chapter}, or in +@uref{xemacs-faq.html, one monolithic} document. +@item +The canonical version of the FAQ is the texinfo document +@uref{xemacs-faq.texi, man/xemacs-faq.texi}. +@item +If you do not have makeinfo installed, you may @uref{xemacs-faq.info, +download the faq} in info format, and install it in @file{<XEmacs +library directory>/info/}. For example in +@file{/usr/local/lib/xemacs-20.4/info/}. + +@end itemize + +@end html + +@end ifset + +@c end ifset points to CANONICAL + +@menu +* Introduction:: Introduction, Policy, Credits. +* Installation:: Installation and Trouble Shooting. +* Customization:: Customization and Options. +* Subsystems:: Major Subsystems. +* Miscellaneous:: The Miscellaneous Stuff. +* Current Events:: What the Future Holds. + +@detailmenu + + --- The Detailed Node Listing --- + +Introduction, Policy, Credits + +* Q1.0.1:: What is XEmacs? +* Q1.0.2:: What is the current version of XEmacs? +* Q1.0.3:: Where can I find it? +* Q1.0.4:: Why Another Version of Emacs? +* Q1.0.5:: Why Haven't XEmacs and GNU Emacs Merged? +* Q1.0.6:: Where can I get help? +* Q1.0.7:: Where is the mailing list archived? +* Q1.0.8:: How do you pronounce XEmacs? +* Q1.0.9:: What does XEmacs look like? +* Q1.0.10:: Is there a port of XEmacs to Microsoft ('95 or NT)? +* Q1.0.11:: Is there a port of XEmacs to the Macintosh? +* Q1.0.12:: Is there a port of XEmacs to NextStep? +* Q1.0.13:: Is there a port of XEmacs to OS/2? +* Q1.0.14:: Where can I get a printed copy of the XEmacs users manual? + +Policies: +* Q1.1.1:: What is the FAQ editorial policy? +* Q1.1.2:: How do I become a Beta Tester? +* Q1.1.3:: How do I contribute to XEmacs itself? + +Credits: +* Q1.2.1:: Who wrote XEmacs? +* Q1.2.2:: Who contributed to this version of the FAQ? +* Q1.2.3:: Who contributed to the FAQ in the past? + +Internationalization: +* Q1.3.1:: What is the status of XEmacs v20? +* Q1.3.2:: What is the status of Asian-language support, aka @var{mule}? +* Q1.3.3:: How do I type non-ASCII characters? +* Q1.3.4:: Can XEmacs messages come out in a different language? +* Q1.3.5:: Please explain the various input methods in MULE/XEmacs 20.0 +* Q1.3.6:: How do I portably code for MULE/XEmacs 20.0? +* Q1.3.7:: How about Cyrillic Modes? + +Getting Started: +* Q1.4.1:: What is a @file{.emacs} and is there a sample one? +* Q1.4.2:: Can I use the same @file{.emacs} with the other Emacs? +* Q1.4.3:: Any good XEmacs tutorials around? +* Q1.4.4:: May I see an example of a useful XEmacs Lisp function? +* Q1.4.5:: And how do I bind it to a key? +* Q1.4.6:: What's the difference between a macro and a function? +* Q1.4.7:: Why options saved with 19.13 don't work with 19.14 or later? + +Installation and Trouble Shooting + +* Q2.0.1:: Running XEmacs without installing. +* Q2.0.2:: XEmacs is too big. +* Q2.0.3:: Compiling XEmacs with Netaudio. +* Q2.0.4:: Problems with Linux and ncurses. +* Q2.0.5:: Do I need X11 to run XEmacs? +* Q2.0.6:: I'm having strange crashes. What do I do? +* Q2.0.7:: Libraries in non-standard locations. +* Q2.0.8:: can't resolve symbol _h_errno +* Q2.0.9:: Where do I find external libraries? +* Q2.0.10:: After I run configure I find a coredump, is something wrong? +* Q2.0.11:: XEmacs can't resolve host names. +* Q2.0.12:: Why can't I strip XEmacs? +* Q2.0.13:: Can't link XEmacs on Solaris with Gcc. +* Q2.0.14:: Make on HP/UX 9 fails after linking temacs + +Trouble Shooting: +* Q2.1.1:: XEmacs just crashed on me! +* Q2.1.2:: Cryptic Minibuffer messages. +* Q2.1.3:: Translation Table Syntax messages at Startup. +* Q2.1.4:: Startup warnings about deducing proper fonts? +* Q2.1.5:: XEmacs cannot connect to my X Terminal. +* Q2.1.6:: XEmacs just locked up my Linux X server. +* Q2.1.7:: HP Alt key as Meta. +* Q2.1.8:: got (wrong-type-argument color-instance-p nil)! +* Q2.1.9:: XEmacs causes my OpenWindows 3.0 server to crash. +* Q2.1.10:: Warnings from incorrect key modifiers. +* Q2.1.11:: Can't instantiate image error... in toolbar +* Q2.1.12:: Regular Expression Problems on DEC OSF1. +* Q2.1.13:: HP/UX 10.10 and @code{create_process} failure +* Q2.1.14:: @kbd{C-g} doesn't work for me. Is it broken? +* Q2.1.15:: How to debug an XEmacs problem with a debugger. +* Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. +* Q2.1.17:: @samp{Marker does not point anywhere}. +* Q2.1.18:: 19.14 hangs on HP/UX 10.10. +* Q2.1.19:: XEmacs does not follow the local timezone. +* Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} +* Q2.1.21:: Every so often the XEmacs frame freezes. +* Q2.1.22:: XEmacs seems to take a really long time to do some things. +* Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. + +Customization and Options + +* Q3.0.1:: What version of Emacs am I running? +* Q3.0.2:: How do I evaluate Elisp expressions? +* Q3.0.3:: @code{(setq tab-width 6)} behaves oddly. +* Q3.0.4:: How can I add directories to the @code{load-path}? +* Q3.0.5:: How to check if a lisp function is defined? +* Q3.0.6:: Can I force the output of @code{(face-list)} to a buffer? +* Q3.0.7:: Font selections don't get saved after @code{Save Options}. +* Q3.0.8:: How do I make a single minibuffer frame? +* Q3.0.9:: What is @code{Customize}? + +X Window System & Resources: +* Q3.1.1:: Where is a list of X resources? +* Q3.1.2:: How can I detect a color display? +* Q3.1.3:: @code{(set-screen-width)} worked in 19.6, but not in 19.13? +* Q3.1.4:: Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15? +* Q3.1.5:: How can I get the icon to just say @samp{XEmacs}? +* Q3.1.6:: How can I have the window title area display the full path? +* Q3.1.7:: @samp{xemacs -name junk} doesn't work? +* Q3.1.8:: @samp{-iconic} doesn't work. + +Textual Fonts & Colors: +* Q3.2.1:: How can I set color options from @file{.emacs}? +* Q3.2.2:: How do I set the text, menu and modeline fonts? +* Q3.2.3:: How can I set the colors when highlighting a region? +* Q3.2.4:: How can I limit color map usage? +* Q3.2.5:: My tty supports color, but XEmacs doesn't use them. +* Q3.2.6:: Can I have pixmap backgrounds in XEmacs? + +The Modeline: +* Q3.3.1:: How can I make the modeline go away? +* Q3.3.2:: How do you have XEmacs display the line number in the modeline? +* Q3.3.3:: How do I get XEmacs to put the time of day on the modeline? +* Q3.3.4:: How do I turn off current chapter from AUC TeX modeline? +* Q3.3.5:: How can one change the modeline color based on the mode used? + +Multiple Device Support: +* Q3.4.1:: How do I open a frame on another screen of my multi-headed display? +* Q3.4.2:: Can I really connect to a running XEmacs after calling up over a modem? How? + +The Keyboard: +* Q3.5.1:: How can I bind complex functions (or macros) to keys? +* Q3.5.2:: How can I stop down-arrow from adding empty lines to the bottom of my buffers? +* Q3.5.3:: How do I bind C-. and C-; to scroll one line up and down? +* Q3.5.4:: Globally binding @kbd{Delete}? +* Q3.5.5:: Scrolling one line at a time. +* Q3.5.6:: How to map @kbd{Help} key alone on Sun type4 keyboard? +* Q3.5.7:: How can you type in special characters in XEmacs? +* Q3.5.8:: Why does @code{(global-set-key [delete-forward] 'delete-char)} complain? +* Q3.5.9:: How do I make the Delete key delete forward? +* Q3.5.10:: Can I turn on @dfn{sticky} modifier keys? +* Q3.5.11:: How do I map the arrow keys? + +The Cursor: +* Q3.6.1:: Is there a way to make the bar cursor thicker? +* Q3.6.2:: Is there a way to get back the old block cursor where the cursor covers the character in front of the point? +* Q3.6.3:: Can I make the cursor blink? + +The Mouse and Highlighting: +* Q3.7.1:: How can I turn off Mouse pasting? +* Q3.7.2:: How do I set control/meta/etc modifiers on mouse buttons? +* Q3.7.3:: Clicking the left button does not do anything in buffer list. +* Q3.7.4:: How can I get a list of buffers when I hit mouse button 3? +* Q3.7.5:: Why does cut-and-paste not work between XEmacs and a cmdtool? +* Q3.7.6:: How I can set XEmacs up so that it pastes where the text cursor is? +* Q3.7.7:: How do I select a rectangular region? +* Q3.7.8:: Why does @kbd{M-w} take so long? + +The Menubar and Toolbar: +* Q3.8.1:: How do I get rid of the menu (or menubar)? +* Q3.8.2:: Can I customize the basic menubar? +* Q3.8.3:: How do I control how many buffers are listed in the menu @code{Buffers} list? +* Q3.8.4:: Resources like @code{Emacs*menubar*font} are not working? +* Q3.8.5:: How can I bind a key to a function to toggle the toolbar? + +Scrollbars: +* Q3.9.1:: How can I disable the scrollbar? +* Q3.9.2:: How can one use resources to change scrollbar colors? +* Q3.9.3:: Moving the scrollbar can move the point; can I disable this? +* Q3.9.4:: How can I get automatic horizontal scrolling? + +Text Selections: +* Q3.10.1:: How can I turn off or change highlighted selections? +* Q3.10.2:: How do I get that typing on an active region removes it? +* Q3.10.3:: Can I turn off the highlight during isearch? +* Q3.10.4:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? +* Q3.10.5:: The region disappears when I hit the end of buffer while scrolling. + +Major Subsystems + +* Q4.0.1:: How do I set up VM to retrieve remote mail using POP? +* Q4.0.2:: How do I get VM to filter mail for me? +* Q4.0.3:: How can I get VM to automatically check for new mail? +* Q4.0.4:: [This question intentionally left blank] +* Q4.0.5:: How do I get my outgoing mail archived? +* Q4.0.6:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? +* Q4.0.7:: Is there a mailing list or FAQ for VM? +* Q4.0.8:: Remote mail reading with VM. +* Q4.0.9:: rmail or VM gets an error incorporating new mail. +* Q4.0.10:: How do I make VM stay in a single frame? +* Q4.0.11:: How do I make VM or mh-e display graphical smilies? +* Q4.0.12:: Customization of VM not covered in the manual or here. + +Web browsing with W3: +* Q4.1.1:: What is W3? +* Q4.1.2:: How do I run W3 from behind a firewall? +* Q4.1.3:: Is it true that W3 supports style sheets and tables? + +Reading Netnews and Mail with Gnus: +* Q4.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh! +* Q4.2.2:: [This question intentionally left blank] +* Q4.2.3:: How do I make Gnus stay within a single frame? +* Q4.2.4:: How do I customize the From: line? + +Other Mail & News: +* Q4.3.1:: How can I read and/or compose MIME messages? +* Q4.3.2:: What is TM and where do I get it? +* Q4.3.3:: Why isn't this @code{movemail} program working? +* Q4.3.4:: Movemail is also distributed by Netscape? Can that cause problems? +* Q4.3.5:: Where do I find pstogif (required by tm)? + +Sparcworks, EOS, and WorkShop: +* Q4.4.1:: What is SPARCworks, EOS, and WorkShop +* Q4.4.2:: How do I start the Sun Workshop support in XEmacs 21? + +Energize: +* Q4.5.1:: What is/was Energize? + +Infodock: +* Q4.6.1:: What is Infodock? + +Other Unbundled Packages: +* Q4.7.1:: What is AUC TeX? Where do you get it? +* Q4.7.2:: Are there any Emacs Lisp Spreadsheets? +* Q4.7.3:: Byte compiling AUC TeX on XEmacs 19.14 +* Q4.7.4:: Problems installing AUC TeX +* Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs? +* Q4.7.6:: Is there a MatLab mode? + +The Miscellaneous Stuff + +* Q5.0.1:: How can I do source code highlighting using font-lock? +* Q5.0.2:: I do not like cc-mode. How do I use the old c-mode? +* Q5.0.3:: How do I get @samp{More} Syntax Highlighting on by default? +* Q5.0.4:: How can I enable auto-indent? +* Q5.0.5:: How can I get XEmacs to come up in text/auto-fill mode by default? +* Q5.0.6:: How do I start up a second shell buffer? +* Q5.0.7:: Telnet from shell filters too much. +* Q5.0.8:: Why does edt emulation not work? +* Q5.0.9:: How can I emulate VI and use it as my default mode? +* Q5.0.10:: [This question intentionally left blank] +* Q5.0.11:: Filladapt doesn't work in 19.15? +* Q5.0.12:: How do I disable gnuserv from opening a new frame? +* Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client? +* Q5.0.14:: Strange things are happening in Shell Mode. +* Q5.0.15:: Where do I get the latest CC Mode? +* Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off? +* Q5.0.17:: How can I get two instances of info? +* Q5.0.18:: I upgraded to XEmacs 19.14 and gnuserv stopped working +* Q5.0.19:: Is there something better than LaTeX mode? +* Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? + +Emacs Lisp Programming Techniques: +* Q5.1.1:: The difference in key sequences between XEmacs and GNU Emacs? +* Q5.1.2:: Can I generate "fake" keyboard events? +* Q5.1.3:: Could you explain @code{read-kbd-macro} in more detail? +* Q5.1.4:: What is the performance hit of @code{let}? +* Q5.1.5:: What is the recommended use of @code{setq}? +* Q5.1.6:: What is the typical misuse of @code{setq} ? +* Q5.1.7:: I like the the @code{do} form of cl, does it slow things down? +* Q5.1.8:: I like recursion, does it slow things down? +* Q5.1.9:: How do I put a glyph as annotation in a buffer? +* Q5.1.10:: @code{map-extents} won't traverse all of my extents! +* Q5.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time? + +Sound: +* Q5.2.1:: How do I turn off the sound? +* Q5.2.2:: How do I get funky sounds instead of a boring beep? +* Q5.2.3:: What's NAS, how do I get it? +* Q5.2.4:: Sunsite sounds don't play. + +Miscellaneous: +* Q5.3.1:: How do you make XEmacs indent CL if-clauses correctly? +* Q5.3.2:: Fontifying hangs when editing a postscript file. +* Q5.3.3:: How can I print WYSIWYG a font-locked buffer? +* Q5.3.4:: Getting @kbd{M-x lpr} to work with postscript printer. +* Q5.3.5:: How do I specify the paths that XEmacs uses for finding files? +* Q5.3.6:: [This question intentionally left blank] +* Q5.3.7:: Can I have the end of the buffer delimited in some way? +* Q5.3.8:: How do I insert today's date into a buffer? +* Q5.3.9:: Are only certain syntactic character classes available for abbrevs? +* Q5.3.10:: How can I get those oh-so-neat X-Face lines? +* Q5.3.11:: How do I add new Info directories? +* Q5.3.12:: What do I need to change to make printing work? + +What the Future Holds + +* Q6.0.1:: What is new in 20.2? +* Q6.0.2:: What is new in 20.3? +* Q6.0.3:: What is new in 20.4? +* Q6.0.4:: Procedural changes in XEmacs development. +@end detailmenu +@end menu + +@node Introduction, Installation, Top, Top +@unnumbered 1 Introduction, Policy, Credits + +Learning XEmacs is a lifelong activity. Even people who have used Emacs +for years keep discovering new features. Therefore this document cannot +be complete. Instead it is aimed at the person who is either +considering XEmacs for their own use, or has just obtained it and is +wondering what to do next. It is also useful as a reference to +available resources. + +The previous maintainer of the FAQ was @email{rossini@@stat.sc.edu, +Anthony Rossini}, who started it, after getting tired of hearing JWZ +complain about repeatedly having to answer questions. +@email{ben@@xemacs.org, Ben Wing} and @email{cthomp@@xemacs.org, Chuck +Thompson}, the principal authors of XEmacs, then took over and Ben did +a massive update reorganizing the whole thing. At which point Anthony +took back over, but then had to give it up again. Some of the other +contributors to this FAQ are listed later in this document. + +The previous version was converted to hypertext format, and edited by +@email{steve@@xemacs.org, Steven L. Baur}. It was converted back to +texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}. + +The FAQ was then maintained by @email{andreas@@sccon.com, Andreas +Kaempf}, who passed it on to @email{faq@@xemacs.org, Christian +Nyb@o{}}, the current FAQ maintainer. + +If you notice any errors or items which should be added or amended to +this FAQ please send email to @email{faq@@xemacs.org, Christian +Nyb@o{}}. Include @samp{XEmacs FAQ} on the Subject: line. + +@menu +Introduction: +* Q1.0.1:: What is XEmacs? +* Q1.0.2:: What is the current version of XEmacs? +* Q1.0.3:: Where can I find it? +* Q1.0.4:: Why Another Version of Emacs? +* Q1.0.5:: Why Haven't XEmacs and GNU Emacs Merged? +* Q1.0.6:: Where can I get help? +* Q1.0.7:: Where is the mailing list archived? +* Q1.0.8:: How do you pronounce XEmacs? +* Q1.0.9:: What does XEmacs look like? +* Q1.0.10:: Is there a port of XEmacs to Microsoft ('95 or NT)? +* Q1.0.11:: Is there a port of XEmacs to the Macintosh? +* Q1.0.12:: Is there a port of XEmacs to NextStep? +* Q1.0.13:: Is there a port of XEmacs to OS/2? +* Q1.0.14:: Where can I get a printed copy of the XEmacs users manual? + +Policies: +* Q1.1.1:: What is the FAQ editorial policy? +* Q1.1.2:: How do I become a Beta Tester? +* Q1.1.3:: How do I contribute to XEmacs itself? + +Credits: +* Q1.2.1:: Who wrote XEmacs? +* Q1.2.2:: Who contributed to this version of the FAQ? +* Q1.2.3:: Who contributed to the FAQ in the past? + +Internationalization: +* Q1.3.1:: What is the status of XEmacs v20? +* Q1.3.2:: What is the status of Asian-language support, aka @var{mule}? +* Q1.3.3:: How do I type non-ASCII characters? +* Q1.3.4:: Can XEmacs messages come out in a different language? +* Q1.3.5:: Please explain the various input methods in MULE/XEmacs 20.0 +* Q1.3.6:: How do I portably code for MULE/XEmacs 20.0? +* Q1.3.7:: How about Cyrillic Modes? + +Getting Started: +* Q1.4.1:: What is a @file{.emacs} and is there a sample one? +* Q1.4.2:: Can I use the same @file{.emacs} with the other Emacs? +* Q1.4.3:: Any good XEmacs tutorials around? +* Q1.4.4:: May I see an example of a useful XEmacs Lisp function? +* Q1.4.5:: And how do I bind it to a key? +* Q1.4.6:: What's the difference between a macro and a function? +* Q1.4.7:: Why options saved with 19.13 don't work with 19.14 or later? +@end menu + +@node Q1.0.1, Q1.0.2, Introduction, Introduction +@unnumberedsec 1.0: Introduction +@unnumberedsubsec Q1.0.1: What is XEmacs? + + +An alternative to GNU Emacs, originally based on an early alpha version +of FSF's version 19, and has diverged quite a bit since then. XEmacs +was known as Lucid Emacs through version 19.10. Almost all features of +GNU Emacs are supported in XEmacs. The maintainers of XEmacs actively +track changes to GNU Emacs while also working to add new features. + +@node Q1.0.2, Q1.0.3, Q1.0.1, Introduction +@unnumberedsubsec Q1.0.2: What is the current version of XEmacs? + +XEmacs 20.4 is a minor upgrade from 20.3, containing many bugfixes. It +was released in February 1998. + +XEmacs 19.16 was the last release of v19, released in November, 1997, +which was also the last version without international language support. + +@node Q1.0.3, Q1.0.4, Q1.0.2, Introduction +@unnumberedsubsec Q1.0.3: Where can I find it? + +The canonical source and binaries is found via anonymous FTP at: + +@example +@uref{ftp://ftp.xemacs.org/pub/xemacs/} +@end example + +@node Q1.0.4, Q1.0.5, Q1.0.3, Introduction +@unnumberedsubsec Q1.0.4: Why Another Version of Emacs? + +For a detailed description of the differences between GNU Emacs and +XEmacs and a detailed history of XEmacs, check out the +@example +@uref{http://www.xemacs.org/NEWS.html, NEWS file} +@end example + +However, here is a list of some of the reasons why we think you might +consider using it: + +@itemize @bullet +@item +It looks nicer. + +@item +The XEmacs maintainers are generally more receptive to suggestions than +the GNU Emacs maintainers. + +@item +Many more bundled packages than GNU Emacs + +@item +Binaries are available for many common operating systems. + +@item +Face support on TTY's. + +@item +A built-in toolbar. + +@item +Better Motif compliance. + +@item +Some internationalization support (including full MULE support, if +compiled with it.) + +@item +Variable-width fonts. + +@item +Variable-height lines. + +@item +Marginal annotations. + +@item +ToolTalk support. + +@item +XEmacs can be used as an Xt widget, and can be embedded within another +application. + +@item +Horizontal and vertical scrollbars (using real toolkit scrollbars). + +@item +Better APIs (and performance) for attaching fonts, colors, and other +properties to text. + +@item +The ability to embed arbitrary graphics in a buffer. + +@item +Completely compatible (at the C level) with the Xt-based toolkits. + +@item +First production Web Browser supporting Style Sheets. +@end itemize + +@node Q1.0.5, Q1.0.6, Q1.0.4, Introduction +@unnumberedsubsec Q1.0.5: Why Haven't XEmacs and GNU Emacs Merged? + +There are currently irreconcilable differences in the views about +technical, programming, design and organizational matters between RMS +and the XEmacs development team which provide little hope for a merge to +take place in the short-term future. + +If you have a comment to add regarding the merge, it is a good idea to +avoid posting to the newsgroups, because of the very heated flamewars +that often result. Mail your questions to @email{xemacs-beta@@xemacs.org} and +@email{bug-gnu-emacs@@prep.ai.mit.edu}. + +@node Q1.0.6, Q1.0.7, Q1.0.5, Introduction +@unnumberedsubsec Q1.0.6: Where can I get help? + +Probably the easiest way, if everything is installed, is to use info, by +pressing @kbd{C-h i}, or selecting @code{Manuals->Info} from the Help Menu. + +Also, @kbd{M-x apropos} will look for commands for you. + +Try reading this FAQ, examining the regular GNU Emacs FAQ (which can be +found with the Emacs 19 distribution) as well as at +@uref{http://www.eecs.nwu.edu/emacs/faq/} and reading the Usenet group +comp.emacs.xemacs. + +If that does not help, try posting your question to comp.emacs.xemacs. +Please @strong{do not} post XEmacs related questions to gnu.emacs.help. + +If you cannot post or read Usenet news, there is a corresponding mailing +list which is available. It can be subscribed to by sending a message +with a subject of @samp{subscribe} to @email{xemacs-request@@xemacs.org} +for subscription information and @email{xemacs@@xemacs.org} to send messages +to the list. + +To cancel a subscription, you @strong{must} use the xemacs-request +address. Send a message with a subject of @samp{unsubscribe} to be +removed. + +@node Q1.0.7, Q1.0.8, Q1.0.6, Introduction +@unnumberedsubsec Q1.0.7: Where is the mailing list archived? + +The mailing list was archived in the directory +@example +@uref{ftp://ftp.xemacs.org/pub/mlists/}. +@end example + +However, this archive is out of date. The current mailing list server +supports an @code{archive} feature, which may be utilized. + +@node Q1.0.8, Q1.0.9, Q1.0.7, Introduction +@unnumberedsubsec Q1.0.8: How do you pronounce XEmacs? + +I pronounce it @samp{Eks eemax}. + +@node Q1.0.9, Q1.0.10, Q1.0.8, Introduction +@unnumberedsubsec Q1.0.9: What does XEmacs look like? + +Screen snapshots are available in the WWW version of the FAQ. +@example +@uref{http://www.xemacs.org/faq/xemacs-faq.html} +@end example + +@node Q1.0.10, Q1.0.11, Q1.0.9, Introduction +@unnumberedsubsec Q1.0.10: Is there a port of XEmacs to Microsoft ('95 or NT)? + +Thanks to efforts of many people, coordinated by +@email{davidh@@wr.com.au, David Hobley} and @email{marcpa@@cam.org, Marc +Paquette}, beta versions of XEmacs now run on 32-bit Windows platforms +(NT and 95). The current betas require having an X server to run +XEmacs; however, a native NT/95 port is in alpha, thanks to +@email{jhar@@tardis.ed.ac.uk, Jonathan Harris}. + +Although some features are still unimplemented, XEmacs 21.0 will support +MS-Windows. + +The NT development is now coordinated by a mailing list at +@email{xemacs-nt@@xemacs.org}. + +If you are willing to contribute or want to follow the progress, mail to +@iftex +@* +@end iftex +@email{xemacs-nt-request@@xemacs.org} to subscribe. + +Furthermore, Altrasoft is seeking corporate and government sponsors to +help fund a fully native port of XEmacs to Windows 95 and NT using +full-time, senior-level staff working under a professionally managed +project structure. See @uref{http://www.altrasoft.com/, the Altrasoft +web site} for more details +or contact Altrasoft directly at 1-888-ALTSOFT. + + +The closest existing port is @dfn{Win-Emacs}, which is based on Lucid +Emacs 19.6. Available from @uref{http://www.pearlsoft.com/}. + +There's a port of GNU Emacs (not XEmacs) at +@example +@uref{http://www.cs.washington.edu/homes/voelker/ntemacs.html}. +@end example + +@node Q1.0.11, Q1.0.12, Q1.0.10, Introduction +@unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh? +@c changed + +There has been a port to the MachTen environment of XEmacs 19.13, but no +patches have been submitted to the maintainers to get this in the +mainstream distribution. + +For the MacOS, there is a port of +@uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}. + +@node Q1.0.12, Q1.0.13, Q1.0.11, Introduction +@unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep? + +Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did +the port of GNU Emacs to NeXTstep and expressed interest in doing the +XEmacs port, but never went any farther. + +@node Q1.0.13, Q1.0.14, Q1.0.12, Introduction +@unnumberedsubsec Q1.0.13: Is there a port of XEmacs to OS/2? + +No, and there is no news of anyone working on it. + +@node Q1.0.14, Q1.1.1, Q1.0.13, Introduction +@unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs users manual? + +Altrasoft Associates, a firm specializing in Emacs-related support and +development, will be maintaining the XEmacs user manual. The firm plans +to begin publishing printed copies of the manual soon. +@c This used to say `March 1997'! + +@example + Web: @uref{http://www.xemacs.com} + E-mail: @email{info@@xemacs.com} + Tel: +1 408 243 3300 +@end example + +@node Q1.1.1, Q1.1.2, Q1.0.14, Introduction +@unnumberedsec 1.1: Policies +@unnumberedsubsec Q1.1.1: What is the FAQ editorial policy? + +The FAQ is actively maintained and modified regularly. All links should +be up to date. + +Changes are displayed on a monthly basis. @dfn{Months}, for this +purpose are defined as the 5th of the month through the 5th of the +month. Preexisting questions that have been changed are marked as such. +Brand new questions are tagged. + +All submissions are welcome. E-mail submissions +to +@iftex +@* +@end iftex +@email{faq@@xemacs.org, Christian Nyb@o{}}. + +Please make sure that @samp{XEmacs FAQ} appears on the Subject: line. +If you think you have a better way of answering a question, or think a +question should be included, I'd like to hear about it. Questions and +answers included into the FAQ will be edited for spelling and grammar, +and will be attributed. Answers appearing without attribution are +either from versions of the FAQ dated before May 1996, or are from one +of the four people listed at the top of this document. Answers quoted +from Usenet news articles will always be attributed, regardless of the +author. + +@node Q1.1.2, Q1.1.3, Q1.1.1, Introduction +@unnumberedsubsec Q1.1.2: How do I become a Beta Tester? + +Send an email message to @email{xemacs-beta-request@@xemacs.org} with a +subject line of @samp{subscribe}. + +Be prepared to get your hands dirty, as beta testers are expected to +identify problems as best they can. + +@node Q1.1.3, Q1.2.1, Q1.1.2, Introduction +@unnumberedsubsec Q1.1.3: How do I contribute to XEmacs itself? + +Ben Wing @email{ben@@xemacs.org} writes: + +@quotation +BTW if you have a wish list of things that you want added, you have to +speak up about it! More specifically, you can do the following if you +want a feature added (in increasing order of usefulness): + +@itemize @bullet +@item +Make a posting about a feature you want added. + +@item +Become a beta tester and make more postings about those same features. + +@item +Convince us that you're going to use the features in some cool and +useful way. + +@item +Come up with a clear and well-thought-out API concerning the features. + +@item +Write the code to implement a feature and send us a patch. +@end itemize + +(not that we're necessarily requiring you to write the code, but we can +always hope :) +@end quotation + +@node Q1.2.1, Q1.2.2, Q1.1.3, Introduction +@unnumberedsec 1.2: Credits +@unnumberedsubsec Q1.2.1: Who wrote XEmacs? + +XEmacs is the result of the time and effort of many people. The +developers responsible for the 19.16/20.x releases are: + +@itemize @bullet +@item @email{martin@@xemacs.org, Martin Buchholz} +@ifhtml +<br><img src="mrb.jpeg" alt="Portrait of Martin Buchholz"><br> +@end ifhtml + + +@item @email{steve@@xemacs.org, Steve Baur} + +@ifhtml +<br><img src="steve.gif" alt="Portrait of Steve Baur"><br> +@end ifhtml + + +@item @email{hniksic@@xemacs.org, Hrvoje Niksic} + +@ifhtml +<br><img src="hniksic.jpeg" alt="Portrait of Hrvoje Niksic"><br> +@end ifhtml + +@end itemize + +The developers responsible for the 19.14 release are: + +@itemize @bullet +@item @email{cthomp@@xemacs.org, Chuck Thompson} +@ifhtml +<br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br> +@end ifhtml + +Chuck was Mr. XEmacs from 19.11 through 19.14, and is responsible +for XEmacs becoming a widely distributed program over the Internet. + +@item @email{ben@@xemacs.org, Ben Wing} +@ifhtml +<br><img src="wing.gif" alt="Portrait of Ben Wing"><br> +@end ifhtml + +@end itemize + + +@itemize @bullet +@item @email{jwz@@jwz.org, Jamie Zawinski} +@ifhtml +<br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br> +@end ifhtml + +Jamie Zawinski was Mr. Lucid Emacs from 19.0 through 19.10, the last +release actually named Lucid Emacs. Richard Mlynarik was crucial to +most of those releases. + +@item @email{mly@@adoc.xerox.com, Richard Mlynarik} +@end itemize + +Along with many other contributors, partially enumerated in the +@samp{About XEmacs} option in the Help menu. + +@node Q1.2.2, Q1.2.3, Q1.2.1, Introduction +@unnumberedsubsec Q1.2.2: Who contributed to this version of the FAQ? + +The following people contributed valuable suggestions to building this +version of the FAQ (listed in alphabetical order): + +@itemize @bullet +@item @email{steve@@xemacs.org, SL Baur} + +@item @email{hniksic@@xemacs.org, Hrvoje Niksic} + +@item @email{Aki.Vehtari@@hut.fi, Aki Vehtari} + +@end itemize + +@node Q1.2.3, Q1.3.1, Q1.2.2, Introduction +@unnumberedsubsec Q1.2.3: Who contributed to the FAQ in the past? + +This is only a partial list, as many names were lost in a hard disk +crash some time ago. + +@itemize @bullet +@item @email{binge@@aloft.att.com, Curtis.N.Bingham} + +@item @email{rjc@@cogsci.ed.ac.uk, Richard Caley} + +@item @email{cognot@@ensg.u-nancy.fr, Richard Cognot} + +@item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque} + +@item @email{eeide@@cs.utah.edu, Eric Eide} + +@item @email{cflatter@@nrao.edu, Chris Flatters} + +@item @email{ginsparg@@adra.com, Evelyn Ginsparg} + +@item @email{hall@@aplcenmp.apl.jhu.edu, Marty Hall} + +@item @email{dkindred@@cmu.edu, Darrell Kindred} + +@item @email{dmoore@@ucsd.edu, David Moore} + +@item @email{arup+@@cmu.edu, Arup Mukherjee} + +@item @email{nickel@@prz.tu-berlin.de, Juergen Nickelsen} + +@item @email{powell@@csl.ncsa.uiuc.edu, Kevin R. Powell} + +@item @email{dworkin@@ccs.neu.edu, Justin Sheehy} + +@item @email{stig@@hackvan.com, Stig} + +@item @email{Aki.Vehtari@@hut.fi, Aki Vehtari} +@end itemize + +@node Q1.3.1, Q1.3.2, Q1.2.3, Introduction +@unnumberedsec 1.3: Internationalization +@unnumberedsubsec Q1.3.1: What is the status of XEmacs v20? + +XEmacs v20 is the version of XEmacs that includes MULE (Asian-language) +support. XEmacs 20.0 was released in February 1997, followed by XEmacs +20.2 in May, XEmacs 20.3 in November and XEmacs 20.4 in February 1998. When compiled without MULE +support, 20.4 is approximately as stable as 19.16, and probably faster +(due to additional optimization work.) + +As of XEmacs 20.3, version 20 is @emph{the} supported version of +XEmacs. This means that 19.16 will optionally receive stability fixes +(if any), but that all the real development work will be done on the v20 +tree. + +The incompatible changes in XEmacs 20 include the additional byte-codes, +new primitive data types (@code{character}, @code{char-table}, and +@code{range-table}). This means that the character-integer equivalence +inherent to all the previous Emacs and XEmacs releases no longer +applies. + +However, to avoid breaking old code, many functions that should normally +accept characters work with integers, and vice versa. For more +information, see the Lisp reference manual. Here is a relevant excerpt, +for your convenience. + +@quotation + In XEmacs version 19, and in all versions of FSF GNU Emacs, a +@dfn{character} in XEmacs Lisp is nothing more than an integer. +This is yet another holdover from XEmacs Lisp's derivation from +vintage-1980 Lisps; modern versions of Lisp consider this equivalence +a bad idea, and have separate character types. In XEmacs version 20, +the modern convention is followed, and characters are their own +primitive types. (This change was necessary in order for @sc{mule}, +i.e. Asian-language, support to be correctly implemented.) + + Even in XEmacs version 20, remnants of the equivalence between +characters and integers still exist; this is termed the @dfn{char-int +confoundance disease}. In particular, many functions such as @code{eq}, +@code{equal}, and @code{memq} have equivalent functions (@code{old-eq}, +@code{old-equal}, @code{old-memq}, etc.) that pretend like characters +are integers are the same. Byte code compiled under any version 19 +Emacs will have all such functions mapped to their @code{old-} equivalents +when the byte code is read into XEmacs 20. This is to preserve +compatibility -- Emacs 19 converts all constant characters to the equivalent +integer during byte-compilation, and thus there is no other way to preserve +byte-code compatibility even if the code has specifically been written +with the distinction between characters and integers in mind. + + Every character has an equivalent integer, called the @dfn{character +code}. For example, the character @kbd{A} is represented as the +@w{integer 65}, following the standard @sc{ascii} representation of +characters. If XEmacs was not compiled with @sc{mule} support, the +range of this integer will always be 0 to 255 -- eight bits, or one +byte. (Integers outside this range are accepted but silently truncated; +however, you should most decidedly @emph{not} rely on this, because it +will not work under XEmacs with @sc{mule} support.) When @sc{mule} +support is present, the range of character codes is much +larger. (Currently, 19 bits are used.) + + FSF GNU Emacs uses kludgy character codes above 255 to represent +keyboard input of @sc{ascii} characters in combination with certain +modifiers. XEmacs does not use this (a more general mechanism is +used that does not distinguish between @sc{ascii} keys and other +keys), so you will never find character codes above 255 in a +non-@sc{mule} XEmacs. + + Individual characters are not often used in programs. It is far more +common to work with @emph{strings}, which are sequences composed of +characters. +@end quotation + +@node Q1.3.2, Q1.3.3, Q1.3.1, Introduction +@unnumberedsubsec Q1.3.2: What is the status of Asian-language support, aka MULE? + +The MULE support works OK but still needs a fair amount of work before +it's really solid. We could definitely use some help here, esp. people +who speak Japanese and will use XEmacs/MULE to work with Japanese and +have some experience with E-Lisp. + +As the fundings on Mule have stopped, the Mule part of XEmacs is currently +looking for a full-time maintainer. If you can provide help here, or +are willing to fund the work, please mail to @email{xemacs-beta@@xemacs.org}. + +@xref{Q1.1.2}. + +@node Q1.3.3, Q1.3.4, Q1.3.2, Introduction +@unnumberedsubsec Q1.3.3: How do I type non-ASCII characters? + +See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ. + +@node Q1.3.4, Q1.3.5, Q1.3.3, Introduction +@unnumberedsubsec Q1.3.4: Can XEmacs messages come out in a different language? + +The message-catalog support has mostly been written but doesn't +currently work. The first release of XEmacs 20 will @emph{not} support +it. However, menubar localization @emph{does} work, even in 19.14. To +enable it, add to your @file{Emacs} file entries like this: + +@example +Emacs*XlwMenu.resourceLabels: True +Emacs*XlwMenu.file.labelString: Fichier +Emacs*XlwMenu.openInOtherWindow.labelString: In anderem Fenster offnen +@end example + +The name of the resource is derived from the non-localized entry by +removing punctuation and capitalizing as above. + +@node Q1.3.5, Q1.3.6, Q1.3.4, Introduction +@unnumberedsubsec Q1.3.5: Please explain the various input methods in MULE/XEmacs 20.0 + +@email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes: + +@quotation +Original Mule supports the following input methods: Wnn4, Wnn6, Canna, SJ3 +and XIM. Interfaces for Wnn and SJ3 uses the @code{egg} user +interface. Interface for Canna does not use @samp{egg}. I don't know +about XIM. It is to support ATOK, of course, it may work for another +servers. + +Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Kyôto +university. It is a powerful and complex system. Wnn4 is free and Wnn6 +is not free. + +Canna supports only Japanese. It is made by NEC. It is a simple and +powerful system. Canna uses only grammar (Wnn uses grammar and +probability between words), so I think Wnn is cleverer than Canna, +however Canna users made a good grammar and dictionary. So for standard +modern Japanese, Canna seems cleverer than Wnn4. In addition, the UNIX +version of Canna is free (now there is a Microsoft Windows version). + +SJ3 supports only Japanese. It is made by Sony. XIM supports was made +to use ATOK (a major input method in personal computer world). XIM is +the standard for accessing input methods bundled in Japanese versions of +Solaris. (XEmacs 20 will support XIM input). + +Egg consists of following parts: + +@enumerate +@item +Input character Translation System (ITS) layer. +It translates ASCII inputs to Kana/PinYin/Hangul characters. + +@item +Kana/PinYin/Hangul to Kanji transfer layer. +It is interface layer for network Kana-Kanji server (Wnn and Sj3). +@end enumerate + +These input methods are modal, namely there are mode, alphabet mode and +Kana-Kanji transfer mode. However there are mode-less input methods for +Egg and Canna. @samp{Boiled-egg} is a mode-less input method running on +Egg. For Canna, @samp{canna.el} has a tiny boiled-egg like command, +@code{(canna-boil)}, and there are some boiled-egg like utilities. In +addition, it was planned to make an abstraction for all transfer type +input methods. However authors of input methods are busy, so maybe this +plan is stopped. Perhaps after Mule merged GNU Emacs will be released, +it will be continued. +@end quotation + +@node Q1.3.6, Q1.3.7, Q1.3.5, Introduction +@unnumberedsubsec Q1.3.6: How do I portably code for MULE/XEmacs 20? + +@email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes: + +@quotation +MULE and XEmacs are quite different. So the application +implementor must write separate code for these mule variants. + +MULE and the next version of Emacs are similar but the symbols are very +different---requiring separate code as well. + +Namely we must support 3 kinds of mule variants and 4 or 5 or 6 kinds of +emacs variants... (;_;) I'm shocked, so I wrote a wrapper package called +@code{emu} to provide a common interface. + +I have the following suggestions about dealing with mule variants: + +@itemize @bullet +@item +@code{(featurep 'mule)} @code{t} on all mule variants + +@item +@code{(boundp 'MULE)} is @code{t} on only MULE. Maybe the next version +of Emacs will not have this symbol. + +@item +MULE has a variable @code{mule-version}. Perhaps the next version of +Emacs will have this variable as well. +@end itemize + +Following is a sample to distinguish mule variants: + +@lisp +(if (featurep 'mule) + (cond ((boundp 'MULE) + ;; for original Mule + ) + ((string-match "XEmacs" emacs-version) + ;; for XEmacs with Mule + ) + (t + ;; for next version of Emacs + )) + ;; for old emacs variants + ) +@end lisp +@end quotation + +@node Q1.3.7, Q1.4.1, Q1.3.6, Introduction +@unnumberedsubsec Q1.3.7: How about Cyrillic Modes? + +@email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes: + +@quotation +There is a cyrillic mode in the file @file{mysetup.zip} in +@iftex +@* +@end iftex +@uref{ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/}. This is a +modification to @email{ava@@math.jhu.ed, Valery Alexeev's} @file{russian.el} +which can be obtained from +@end quotation + +@uref{http://ftpsearch.ntnu.no/?query=russian.el.Z}. +@c dead link above + +@email{d.barsky@@ee.surrey.ac.uk, Dima Barsky} writes: + +@quotation +There is another cyrillic mode for both GNU Emacs and XEmacs by +@email{manin@@camelot.mssm.edu, Dmitrii +(Mitya) Manin} at +@iftex + +@end iftex +@uref{http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el}. +@c Link above, <URL:http://camelot.mssm.edu/~manin/cyr.el> was dead. +@c Changed to russian host instead +@end quotation + +@email{rebecca.ore@@op.net, Rebecca Ore} writes: + +@quotation +The fullest resource I found on Russian language use (in and out of +XEmacs) is @uref{http://sunsite.oit.unc.edu/sergei/Software/Software.html} +@end quotation + +@node Q1.4.1, Q1.4.2, Q1.3.7, Introduction +@unnumberedsec 1.4: Getting Started, Backing up & Recovery +@unnumberedsubsec Q1.4.1: What is a @file{.emacs} and is there a sample one? + +The @file{.emacs} file is used to customize XEmacs to your tastes. No +two are alike, nor are they expected to be alike, but that's the point. +The XEmacs distribution contains an excellent starter example in the etc +directory called @file{sample.emacs}. Copy this file from there to your +home directory and rename it @file{.emacs}. Then edit it to suit. + +Starting with 19.14, you may bring the @file{sample.emacs} into an +XEmacs buffer by selecting @samp{Help->Sample .emacs} from the menubar. +To determine the location of the @file{etc} directory type the command +@kbd{C-h v data-directory @key{RET}}. + +@node Q1.4.2, Q1.4.3, Q1.4.1, Introduction +@unnumberedsubsec Q1.4.2: Can I use the same @file{.emacs} with the other Emacs? + +Yes. The sample @file{.emacs} included in the XEmacs distribution will +show you how to handle different versions and flavors of Emacs. + +@node Q1.4.3, Q1.4.4, Q1.4.2, Introduction +@unnumberedsubsec Q1.4.3: Any good tutorials around? + +There's the XEmacs tutorial available from the Help Menu under +@samp{Basics->Tutorials}, or by typing @kbd{C-h t}. To check whether +it's available in a non-english language, type @kbd{C-u C-h t TAB}, type +the first letters of your preferred language, then type @key{RET}. + +There's an Emacs Lisp tutorial at + +@example +@uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar.gz}. +@end example + +@email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tutorial web +page at +@iftex +@* +@end iftex +@uref{http://petaxp.rug.ac.be/~erik/xemacs/}. + +@node Q1.4.4, Q1.4.5, Q1.4.3, Introduction +@unnumberedsubsec Q1.4.4: May I see an example of a useful XEmacs Lisp function? + +The following function does a little bit of everything useful. It does +something with the prefix argument, it examines the text around the +cursor, and it's interactive so it may be bound to a key. It inserts +copies of the current word the cursor is sitting on at the cursor. If +you give it a prefix argument: @kbd{C-u 3 M-x double-word} then it will +insert 3 copies. + +@lisp +(defun double-word (count) + "Insert a copy of the current word underneath the cursor" + (interactive "*p") + (let (here there string) + (save-excursion + (forward-word -1) + (setq here (point)) + (forward-word 1) + (setq there (point)) + (setq string (buffer-substring here there))) + (while (>= count 1) + (insert string) + (decf count)))) +@end lisp + +The best way to see what is going on here is to let XEmacs tell you. +Put the code into an XEmacs buffer, and do a @kbd{C-h f} with the cursor +sitting just to the right of the function you want explained. Eg. move +the cursor to the SPACE between @code{interactive} and @samp{"*p"} and +hit @kbd{C-h f} to see what the function @code{interactive} does. Doing +this will tell you that the @code{*} requires a writable buffer, and +@code{p} converts the prefix argument to a number, and +@code{interactive} allows you to execute the command with @kbd{M-x}. + +@node Q1.4.5, Q1.4.6, Q1.4.4, Introduction +@unnumberedsubsec Q1.4.5: And how do I bind it to a key? + +To bind to a key do: + +@lisp +(global-set-key "\C-cd" 'double-word) +@end lisp + +Or interactively, @kbd{M-x global-set-key} and follow the prompts. + +@node Q1.4.6, Q1.4.7, Q1.4.5, Introduction +@unnumberedsubsec Q1.4.6: What's the difference between a macro and a function? + +Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual: + +@dfn{Macros} enable you to define new control constructs and other +language features. A macro is defined much like a function, but instead +of telling how to compute a value, it tells how to compute another Lisp +expression which will in turn compute the value. We call this +expression the @dfn{expansion} of the macro. + +Macros can do this because they operate on the unevaluated expressions +for the arguments, not on the argument values as functions do. They can +therefore construct an expansion containing these argument expressions +or parts of them. + +Do not confuse the two terms with @dfn{keyboard macros}, which are +another matter, entirely. A keyboard macro is a key bound to several +other keys. Refer to manual for details. + +@node Q1.4.7, , Q1.4.6, Introduction +@unnumberedsubsec Q1.4.7: How come options saved with 19.13 don't work with 19.14 or later? + +There's a problem with options of the form: + +@lisp +(add-spec-list-to-specifier (face-property 'searchm-field 'font) + '((global (nil)))) +@end lisp + +saved by a 19.13 XEmacs that causes a 19.14 XEmacs grief. You must +delete these options. XEmacs 19.14 and later no longer write the +options directly to @file{.emacs} which should allow us to deal with +version incompatibilities better in the future. + +Options saved under XEmacs 19.13 are protected by code that specifically +requires a version 19 XEmacs. This won't be a problem unless you're +using XEmacs v20. You should consider changing the code to read: + +@lisp +(cond + ((and (string-match "XEmacs" emacs-version) + (boundp 'emacs-major-version) + (or (and (= emacs-major-version 19) + (>= emacs-minor-version 12)) + (>= emacs-major-version 20))) + ... + )) +@end lisp + +@node Installation, Customization, Introduction, Top +@unnumbered 2 Installation and Trouble Shooting + +This is part 2 of the XEmacs Frequently Asked Questions list. This +section is devoted to Installation, Maintenance and Trouble Shooting. + +@menu +Installation: +* Q2.0.1:: Running XEmacs without installing. +* Q2.0.2:: XEmacs is too big. +* Q2.0.3:: Compiling XEmacs with Netaudio. +* Q2.0.4:: Problems with Linux and ncurses. +* Q2.0.5:: Do I need X11 to run XEmacs? +* Q2.0.6:: I'm having strange crashes. What do I do? +* Q2.0.7:: Libraries in non-standard locations. +* Q2.0.8:: can't resolve symbol _h_errno +* Q2.0.9:: Where do I find external libraries? +* Q2.0.10:: After I run configure I find a coredump, is something wrong? +* Q2.0.11:: XEmacs can't resolve host names. +* Q2.0.12:: Why can't I strip XEmacs? +* Q2.0.13:: Can't link XEmacs on Solaris with Gcc. +* Q2.0.14:: Make on HP/UX 9 fails after linking temacs + +Trouble Shooting: +* Q2.1.1:: XEmacs just crashed on me! +* Q2.1.2:: Cryptic Minibuffer messages. +* Q2.1.3:: Translation Table Syntax messages at Startup. +* Q2.1.4:: Startup warnings about deducing proper fonts? +* Q2.1.5:: XEmacs cannot connect to my X Terminal. +* Q2.1.6:: XEmacs just locked up my Linux X server. +* Q2.1.7:: HP Alt key as Meta. +* Q2.1.8:: got (wrong-type-argument color-instance-p nil)! +* Q2.1.9:: XEmacs causes my OpenWindows 3.0 server to crash. +* Q2.1.10:: Warnings from incorrect key modifiers. +* Q2.1.11:: Can't instantiate image error... in toolbar +* Q2.1.12:: Regular Expression Problems on DEC OSF1. +* Q2.1.13:: HP/UX 10.10 and @code{create_process} failure +* Q2.1.14:: @kbd{C-g} doesn't work for me. Is it broken? +* Q2.1.15:: How to debug an XEmacs problem with a debugger. +* Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. +* Q2.1.17:: @samp{Marker does not point anywhere}. +* Q2.1.18:: 19.14 hangs on HP/UX 10.10. +* Q2.1.19:: XEmacs does not follow the local timezone. +* Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} +* Q2.1.21:: Every so often the XEmacs frame freezes. +* Q2.1.22:: XEmacs seems to take a really long time to do some things. +* Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. +@end menu + +@node Q2.0.1, Q2.0.2, Installation, Installation +@unnumberedsec 2.0: Installation +@unnumberedsubsec Q2.0.1: Running XEmacs without installing +The @file{INSTALL} file says that up to 108 MB of space is needed +temporarily during installation! How can I just try it out? + +XEmacs will run in place without requiring installation and copying of +the Lisp directories, and without having to specify a special build-time +flag. It's the copying of the Lisp directories that requires so much +space. XEmacs is largely written in Lisp. + +A good method is to make a shell alias for xemacs: + +@example +alias xemacs=/i/xemacs-20.2/src/xemacs +@end example + +(You will obviously use whatever directory you downloaded the source +tree to instead of @file{/i/xemacs-20.2}). + +This will let you run XEmacs without massive copying. + +@node Q2.0.2, Q2.0.3, Q2.0.1, Installation +@unnumberedsubsec Q2.0.2: XEmacs is too big + +Although this entry has been written for XEmacs 19.13, most of it still +stands true. + +@email{steve@@xemacs.org, Steve Baur} writes: + +@quotation +The 45MB of space required by the installation directories can be +reduced dramatically if desired. Gzip all the .el files. Remove all +the packages you'll never want to use (or even ones you do like the two +obsolete mailcrypts and Gnus 4 in 19.13). Remove the TexInfo manuals. +Remove the Info (and use just hardcopy versions of the manual). Remove +most of the stuff in etc. Remove or gzip all the source code. Gzip or +remove the C source code. Configure it so that copies are not made of +the support lisp. I'm not advocating any of these things, just pointing +out ways to reduce the disk requirements if desired. + +Now examine the space used by directory: + +@format +0 /usr/local/bin/xemacs +2048 /usr/local/bin/xemacs-19.13 + +1546 /usr/local/lib/xemacs-19.13/i486-miranova-sco3.2v4.2 +1158 /usr/local/lib/xemacs-19.13/i486-unknown-linux1.2.13 +@end format + +You need to keep these. XEmacs isn't stripped by default in +installation, you should consider stripping. That will save you about +5MB right there. + +@format +207 /usr/local/lib/xemacs-19.13/etc/w3 +122 /usr/local/lib/xemacs-19.13/etc/sounds +18 /usr/local/lib/xemacs-19.13/etc/sparcworks +159 /usr/local/lib/xemacs-19.13/etc/vm +6 /usr/local/lib/xemacs-19.13/etc/e +21 /usr/local/lib/xemacs-19.13/etc/eos +172 /usr/local/lib/xemacs-19.13/etc/toolbar +61 /usr/local/lib/xemacs-19.13/etc/ns +43 /usr/local/lib/xemacs-19.13/etc/gnus +@end format + +These are support directories for various packages. In general they +match a directory under ./xemacs-19.13/lib/xemacs-19.13/lisp/. If you +do not require the package, you may delete or gzip the support too. + +@format +1959 /usr/local/lib/xemacs-19.13/etc +175 /usr/local/lib/xemacs-19.13/lisp/bytecomp +340 /usr/local/lib/xemacs-19.13/lisp/calendar +342 /usr/local/lib/xemacs-19.13/lisp/comint +517 /usr/local/lib/xemacs-19.13/lisp/dired +42 /usr/local/lib/xemacs-19.13/lisp/electric +212 /usr/local/lib/xemacs-19.13/lisp/emulators +238 /usr/local/lib/xemacs-19.13/lisp/energize +289 /usr/local/lib/xemacs-19.13/lisp/gnus +457 /usr/local/lib/xemacs-19.13/lisp/ilisp +1439 /usr/local/lib/xemacs-19.13/lisp/modes +2276 /usr/local/lib/xemacs-19.13/lisp/packages +1040 /usr/local/lib/xemacs-19.13/lisp/prim +176 /usr/local/lib/xemacs-19.13/lisp/pcl-cvs +154 /usr/local/lib/xemacs-19.13/lisp/rmail +3 /usr/local/lib/xemacs-19.13/lisp/epoch +45 /usr/local/lib/xemacs-19.13/lisp/term +860 /usr/local/lib/xemacs-19.13/lisp/utils +851 /usr/local/lib/xemacs-19.13/lisp/vm +13 /usr/local/lib/xemacs-19.13/lisp/vms +157 /usr/local/lib/xemacs-19.13/lisp/x11 +19 /usr/local/lib/xemacs-19.13/lisp/tooltalk +14 /usr/local/lib/xemacs-19.13/lisp/sunpro +291 /usr/local/lib/xemacs-19.13/lisp/games +198 /usr/local/lib/xemacs-19.13/lisp/edebug +619 /usr/local/lib/xemacs-19.13/lisp/w3 +229 /usr/local/lib/xemacs-19.13/lisp/eos +55 /usr/local/lib/xemacs-19.13/lisp/iso +59 /usr/local/lib/xemacs-19.13/lisp/mailcrypt +187 /usr/local/lib/xemacs-19.13/lisp/eterm +356 /usr/local/lib/xemacs-19.13/lisp/ediff +408 /usr/local/lib/xemacs-19.13/lisp/hyperbole/kotl +1262 /usr/local/lib/xemacs-19.13/lisp/hyperbole +247 /usr/local/lib/xemacs-19.13/lisp/hm--html-menus +161 /usr/local/lib/xemacs-19.13/lisp/mh-e +299 /usr/local/lib/xemacs-19.13/lisp/viper +53 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-x +4 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx/English.lproj/DocWindow.nib +3 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx/English.lproj/InfoPanel.nib +3 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx/English.lproj/TreeView.nib +11 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx/English.lproj +53 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx +466 /usr/local/lib/xemacs-19.13/lisp/oobr +14142 /usr/local/lib/xemacs-19.13/lisp +@end format + +These are all Emacs Lisp source code and bytecompiled object code. You +may safely gzip everything named *.el here. You may remove any package +you don't use. @emph{Nothing bad will happen if you delete a package +that you do not use}. You must be sure you do not use it though, so be +conservative at first. + +Possible candidates for deletion include w3 (newer versions exist, or +you may just use Lynx or Netscape for web browsing), games, hyperbole, +mh-e, hm--html-menus (better packages exist), vm, viper, oobr, gnus (new +versions exist), etc. Ask yourself, @emph{Do I ever want to use this +package?} If the answer is no, then it is a candidate for removal. + +First, gzip all the .el files. Then go about package by package and +start gzipping the .elc files. Then run XEmacs and do whatever it is +you normally do. If nothing bad happens, then delete the directory. Be +conservative about deleting directories, and it would be handy to have a +backup tape around in case you get too zealous. + +@file{prim}, @file{modes}, @file{packages}, and @file{utils} are four +directories you definitely do @strong{not} want to delete, although +certain packages can be removed from them if you do not use them. + +@example +1972 /usr/local/lib/xemacs-19.13/info +@end example + +These are online texinfo sources. You may either gzip them or remove +them. In either case, @kbd{C-h i} (info mode) will no longer work. + +@example +20778 /usr/local/lib/xemacs-19.13 +@end example + +The 20MB achieved is less than half of what the full distribution takes up, +@strong{and} can be achieved without deleting a single file. +@end quotation + +@email{boffi@@hp735.stru.polimi.it, Giacomo Boffi} provides this procedure: + +@quotation +Substitute @file{/usr/local/lib/} with the path where the xemacs tree is +rooted, then use this script: + +@example +#!/bin/sh + +r=/usr/local/lib/xemacs-19.13/lisp + +cd $r ; rm -f cmpr ; touch cmpr + +du -s . + +for d in * ; do + if test -d $d ; then + cd $d + for f in *.el ; do +# compress (remove) only (ONLY) the sources that have a +# corresponding compiled file --- do not (DO NOT) +# touch other sources + if test -f $@{f@}c ; then gzip -v9 $f >> $r/cmpr ; fi + done + cd .. + fi +done + +du -s . +@end example + +A step beyond would be substituting @samp{rm -f} for @samp{gzip -v9}, +but you have to be desperate for removing the sources (remember that +emacs can access compressed files transparently). + +Also, a good megabyte could easily be trimmed from the $r/../etc +directory, e.g., the termcap files, some O+NEWS, others that I don't +remember as well. +@end quotation + +@quotation +XEmacs 21.0 will unbundle the lisp hierarchy and allow the installer +to choose exactly how much support code gets installed. +@end quotation + +@node Q2.0.3, Q2.0.4, Q2.0.2, Installation +@unnumberedsubsec Q2.0.3: Compiling XEmacs with Netaudio. + +What is the best way to compile XEmacs with the netaudio system, since I +have got the netaudio system compiled but installed at a weird place, I +am not root. Also in the READMEs it does not say anything about +compiling with the audioserver? + +You should only need to add some stuff to the configure command line. +To tell it to compile in netaudio support: @samp{--with-sound=both}, or +@samp{--with-sound=nas} if you don't want native sound support for some +reason.) To tell it where to find the netaudio includes and libraries: + +@example +--site-libraries=WHATEVER +--site-includes=WHATEVER +@end example + +Then (fingers crossed) it should compile and it will use netaudio if you +have a server running corresponding to the X server. The netaudio server +has to be there when XEmacs starts. If the netaudio server goes away and +another is run, XEmacs should cope (fingers crossed, error handling in +netaudio isn't perfect). + +BTW, netaudio has been renamed as it has a name clash with something +else, so if you see references to NAS or Network Audio System, it's the +same thing. It also might be found at +@uref{ftp://ftp.x.org/contrib/audio/nas/}. + +@node Q2.0.4, Q2.0.5, Q2.0.3, Installation +@unnumberedsubsec Q2.0.4: Problems with Linux and ncurses. + +On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc +5.2.18, XEmacs 20.0b20 is unable to open a tty device: + +@example +src/xemacs -nw -q +Initialization error: +@iftex +@* +@end iftex +Terminal type `xterm' undefined (or can't access database?) +@end example + +@email{ben@@xemacs.org, Ben Wing} writes: + +@quotation +Your ncurses configuration is messed up. Your /usr/lib/terminfo is a +bad pointer, perhaps to a CD-ROM that is not inserted. +@end quotation + +@node Q2.0.5, Q2.0.6, Q2.0.4, Installation +@unnumberedsubsec Q2.0.5: Do I need X11 to run XEmacs? + +No. The name @dfn{XEmacs} is unfortunate in the sense that it is +@strong{not} an X Window System-only version of Emacs. Starting with +19.14 XEmacs has full color support on a color-capable character +terminal. + +@node Q2.0.6, Q2.0.7, Q2.0.5, Installation +@unnumberedsubsec Q2.0.6: I'm having strange crashes. What do I do? + +There have been a variety of reports of crashes due to compilers with +buggy optimizers. Please see the @file{PROBLEMS} file that comes with +XEmacs to read what it says about your platform. + +@node Q2.0.7, Q2.0.8, Q2.0.6, Installation +@unnumberedsubsec Q2.0.7: Libraries in non-standard locations + +I have x-faces, jpeg, xpm etc. all in different places. I've tried +space-separated, comma-separated, several --site-libraries, all to no +avail. + +@example +--site-libraries='/path/one /path/two /path/etc' +@end example + +@node Q2.0.8, Q2.0.9, Q2.0.7, Installation +@unnumberedsubsec Q2.0.8: can't resolve symbol _h_errno + +You are using the Linux/ELF distribution of XEmacs 19.14, and your ELF +libraries are out of date. You have the following options: + +@enumerate +@item +Upgrade your libc to at least 5.2.16 (better is 5.2.18, 5.3.12, or +5.4.10). + +@item +Patch the XEmacs binary by replacing all occurrences of +@samp{_h_errno^@@} with +@iftex +@* +@end iftex +@samp{h_errno^@@^@@}. Any version of Emacs will +suffice. If you don't understand how to do this, don't do it. + +@item +Rebuild XEmacs yourself -- any working ELF version of libc should be +O.K. +@end enumerate + +@email{hniksic@@xemacs.org, Hrvoje Niksic} writes: + +@quotation +Why not use a Perl one-liner for No. 2? + +@example +perl -pi -e 's/_h_errno\0/h_errno\0\0/g' \ +/usr/local/bin/xemacs-19.14 +@end example + +NB: You @emph{must} patch @file{/usr/local/bin/xemacs-19.14}, and not +@file{xemacs} because @file{xemacs} is a link to @file{xemacs-19.14}; +the Perl @samp{-i} option will cause unwanted side-effects if applied to +a symbolic link. +@end quotation + +@email{steve@@xemacs.org, SL Baur} writes: + +@quotation +If you build against a recent libc-5.4 (late enough to have caused +problems earlier in the beta cycle) and then run with an earlier version +of libc, you get a + +@example +$ xemacs +xemacs: can't resolve symbol '__malloc_hook' +zsh: 7942 segmentation fault (core dumped) xemacs +@end example + +(Example binary compiled against libc-5.4.23 and run with libc-5.4.16). + +The solution is to upgrade to at least libc-5.4.23. Sigh. Drat. +@end quotation + +@node Q2.0.9, Q2.0.10, Q2.0.8, Installation +@unnumberedsubsec Q2.0.9: Where do I find external libraries? + +All external libraries used by XEmacs can be found at the XEmacs FTP +site +@iftex +@* +@end iftex +@uref{ftp://ftp.xemacs.org/pub/xemacs/aux/}. + +@c Changed June Link above, <URL:ftp://ftp.xemacs.org/pub/aux/> was dead. +@c This list is a pain in the you-know-what to keep in synch with the +@c world. +The canonical locations (at the time of this writing) are as follows: + +@table @asis +@item JPEG +@uref{ftp://ftp.uu.net/graphics/jpeg/}. Version 6a is current. +@c Check from host with legal IP address +@item XPM +@uref{ftp://ftp.x.org/contrib/libraries/}. Version 3.4j is current. +Older versions of this package are known to cause XEmacs crashes. + +@item TIFF +@uref{ftp://ftp.sgi.com/graphics/tiff/}. v3.4 is current. The latest +beta is v3.4b035. There is a HOWTO here. + +@item PNG +@uref{ftp://ftp.uu.net/graphics/png/}. 0.89c is current. XEmacs +requires a fairly recent version to avoid using temporary files. +@c Check from host with legal IP address + +@uref{ftp://swrinde.nde.swri.edu/pub/png/src/} + +@item Compface +@uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/}. This library has +been frozen for about 6 years, and is distributed without version +numbers. @emph{It should be compiled with the same options that X11 was +compiled with on your system}. The version of this library at +XEmacs.org includes the @file{xbm2xface.pl} script, written by +@email{stig@@hackvan.com}, which may be useful when generating your own xface. + +@item NAS +@uref{ftp://ftp.x.org/contrib/audio/nas/}. +Version 1.2p5 is current. There is a FAQ here. +@end table + +@node Q2.0.10, Q2.0.11, Q2.0.9, Installation +@unnumberedsubsec Q2.0.10: After I run configure I find a core dump, is something wrong? + +Not necessarily. If you have GNU sed 3.0 you should downgrade it to +2.05. From the @file{README} at prep.ai.mit.edu: + +@quotation +sed 3.0 has been withdrawn from distribution. It has major revisions, +which mostly seem to be improvements; but it turns out to have bugs too +which cause trouble in some common cases. + +Tom Lord won't be able to work fixing the bugs until May. So in the +mean time, we've decided to withdraw sed 3.0 from distribution and make +version 2.05 once again the recommended version. +@end quotation + +It has also been observed that the vfork test on Solaris will leave a +core dump. + +@node Q2.0.11, Q2.0.12, Q2.0.10, Installation +@unnumberedsubsec Q2.0.11: XEmacs doesn't resolve hostnames. + +This is the result of a long-standing problem with SunOS and the fact +that stock SunOS systems do not ship with DNS resolver code in libc. + +@email{ckd@@loiosh.kei.com, Christopher Davis} writes: + +@quotation +That's correct [The SunOS 4.1.3 precompiled binaries don't do name +lookup]. Since Sun figured that everyone used NIS to do name lookups +(that DNS thing was apparently only a passing fad, right?), the stock +SunOS 4.x systems don't have DNS-based name lookups in libc. + +This is also why Netscape ships two binaries for SunOS 4.1.x. + +The best solution is to compile it yourself; the configure script will +check to see if you've put DNS in the shared libc and will then proceed +to link against the DNS resolver library code. +@end quotation + +@node Q2.0.12, Q2.0.13, Q2.0.11, Installation +@unnumberedsubsec Q2.0.12: Why can't I strip XEmacs? + +@email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes: + +@quotation +Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The +link gives you a bare-boned emacs (called temacs). temacs is then run, +preloading some of the lisp files. The result is then dumped into a new +executable, named xemacs, which will contain all of the preloaded lisp +functions and data. + +Now, during the dump itself, the executable (code+data+symbols) is +written on disk using a special unexec() function. This function is +obviously heavily system dependent. And on some systems, it leads to an +executable which, although valid, cannot be stripped without damage. If +memory serves, this is especially the case for AIX binaries. On other +architecture it might work OK. + +The Right Way to strip the emacs binary is to strip temacs prior to +dumping xemacs. This will always work, although you can do that only if +you install from sources (as temacs is @file{not} part of the binary +kits). +@end quotation + +@email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes: + +@quotation +Here is the trick: + +@enumerate +@item +[ ./configure; make ] + +@item +rm src/xemacs + +@item +strip src/temacs + +@item +make + +@item +cp src/xemacs /usr/local/bin/xemacs + +@item +cp lib-src/DOC-19.16-XEmacs +@iftex +\ @* +@end iftex +/usr/local/lib/xemacs-19.16/i586-unknown-linuxaout +@end enumerate +@end quotation + +@node Q2.0.13, Q2.0.14, Q2.0.12, Installation +@unnumberedsubsec Q2.0.13: Problems linking with Gcc on Solaris + +There are known difficulties linking with Gnu ld on Solaris. A typical +error message might look like: + +@example +unexec(): dlopen(../dynodump/dynodump.so): ld.so.1: ./temacs: +fatal: relocation error: +symbol not found: main: referenced in ../dynodump/dynodump.so +@end example + +@email{martin@@xemacs.org, Martin Buchholz} writes: + +@quotation +You need to specify @samp{-fno-gnu-linker} as part of your flags to pass +to ld. Future releases of XEmacs will try to do this automatically. +@end quotation + +@node Q2.0.14, Q2.1.1, Q2.0.13, Installation +@unnumberedsubsec Q2.0.14: Make on HP/UX 9 fails after linking temacs + +Problem when building xemacs-19.16 on hpux 9: + +@email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes: + +@quotation +make on hpux fails after linking temacs with a message: + +@example +"make: don't know how to make .y." +@end example + +Solution: This is a problem with HP make revision 70.X. Either use GNU +make, or install PHCO_6552, which will bring make to revision +72.24.1.17. +@end quotation + + +@node Q2.1.1, Q2.1.2, Q2.0.14, Installation +@unnumberedsec 2.1: Trouble Shooting +@unnumberedsubsec Q2.1.1: Help! XEmacs just crashed on me! + +First of all, don't panic. Whenever XEmacs crashes, it tries extremely +hard to auto-save all of your files before dying. (The main time that +this will not happen is if the machine physically lost power or if you +killed the XEmacs process using @code{kill -9}). The next time you try +to edit those files, you will be informed that a more recent auto-save +file exists. You can use @kbd{M-x recover-file} to retrieve the +auto-saved version of the file. + +Starting with 19.14, you may use the command @kbd{M-x recover-session} +after a crash to pick up where you left off. + +Now, XEmacs is not perfect, and there may occasionally be times, or +particular sequences of actions, that cause it to crash. If you can +come up with a reproducible way of doing this (or even if you have a +pretty good memory of exactly what you were doing at the time), the +maintainers would be very interested in knowing about it. Post a +message to comp.emacs.xemacs or send mail to @email{crashes@@xemacs.org}. +Please note that the @samp{crashes} address is exclusively for crash +reports. + +If at all possible, include a stack backtrace of the core dump that was +produced. This shows where exactly things went wrong, and makes it much +easier to diagnose problems. To do this, you need to locate the core +file (it's called @file{core}, and is usually sitting in the directory +that you started XEmacs from, or your home directory if that other +directory was not writable). Then, go to that directory and execute a +command like: + +@example +gdb `which xemacs` core +@end example + +and then issue the command @samp{where} to get the stack backtrace. You +might have to use @code{dbx} or some similar debugger in place of +@code{gdb}. If you don't have any such debugger available, complain to +your system administrator. + +It's possible that a core file didn't get produced, in which case you're +out of luck. Go complain to your system administrator and tell him not +to disable core files by default. Also @xref{Q2.1.15}, for tips and +techniques for dealing with a debugger. + +When making a problem report make sure that: + +@enumerate +@item +Report @strong{all} of the information output by XEmacs during the +crash. + +@item +You mention what O/S & Hardware you are running XEmacs on. + +@item +What version of XEmacs you are running. + +@item +What build options you are using. + +@item +If the problem is related to graphics, we will also need to know what +version of the X Window System you are running, and what window manager +you are using. + +@item +If the problem happened on a tty, please include the terminal type. +@end enumerate + +@node Q2.1.2, Q2.1.3, Q2.1.1, Installation +@unnumberedsubsec Q2.1.2: Cryptic Minibuffer messages. + +When I try to use some particular option of some particular package, I +get a cryptic error in the minibuffer. + +If you can't figure out what's going on, select Options/General +Options/Debug on Error from the Menubar and then try and make the error +happen again. This will give you a backtrace that may be enlightening. +If not, try reading through this FAQ; if that fails, you could try +posting to comp.emacs.xemacs (making sure to include the backtrace) and +someone may be able to help. If you can identify which Emacs lisp +source file the error is coming from you can get a more detailed stack +backtrace by doing the following: + +@enumerate +@item +Visit the .el file in an XEmacs buffer. + +@item +Issue the command @kbd{M-x eval-current-buffer}. + +@item +Reproduce the error. +@end enumerate + +Depending on the version of XEmacs, you may either select Edit->Show +Messages (19.13 and earlier) or Help->Recent Keystrokes/Messages (19.14 +and later) from the menubar to see the most recent messages. This +command is bound to @kbd{C-h l} by default. + +@node Q2.1.3, Q2.1.4, Q2.1.2, Installation +@unnumberedsubsec Q2.1.3: Translation Table Syntax messages at Startup + +I get tons of translation table syntax error messages during startup. +How do I get rid of them? + +There are two causes of this problem. The first usually only strikes +people using the prebuilt binaries. The culprit in both cases is the +file @file{XKeysymDB}. + +@itemize @bullet +@item +The binary cannot find the @file{XKeysymDB} file. The location is +hardcoded at compile time so if the system the binary was built on puts +it a different place than your system does, you have problems. To fix, +set the environment variable @var{XKEYSYMDB} to the location of the +@file{XKeysymDB} file on your system or to the location of the one +included with XEmacs which should be at +@iftex +@* +@end iftex +@file{<xemacs_root_directory>/lib/xemacs-19.16/etc/XKeysymDB}. + +@item +The binary is finding the XKeysymDB but it is out-of-date on your system +and does not contain the necessary lines. Either ask your system +administrator to replace it with the one which comes with XEmacs (which +is the stock R6 version and is backwards compatible) or set your +@var{XKEYSYMDB} variable to the location of XEmacs's described above. +@end itemize + +@node Q2.1.4, Q2.1.5, Q2.1.3, Installation +@unnumberedsubsec Q2.1.4: Startup warnings about deducing proper fonts? + +How can I avoid the startup warnings about deducing proper fonts? + +This is highly dependent on your installation, but try with the +following font as your base font for XEmacs and see what it does: + +@format +-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1 +@end format + +More precisely, do the following in your resource file: + +@format +Emacs.default.attributeFont: \ +-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1 +@end format + +If you just don't want to see the @samp{*Warnings*} buffer at startup +time, you can set this: + +@lisp +(setq display-warning-minimum-level 'error) +@end lisp + +The buffer still exists; it just isn't in your face. + +@node Q2.1.5, Q2.1.6, Q2.1.4, Installation +@unnumberedsubsec Q2.1.5: XEmacs cannot connect to my X Terminal! + +Help! I can not get XEmacs to display on my Envizex X-terminal! + +Try setting the @var{DISPLAY} variable using the numeric IP address of +the host you are running XEmacs from. + +@node Q2.1.6, Q2.1.7, Q2.1.5, Installation +@unnumberedsubsec Q2.1.6: XEmacs just locked up my Linux X server! + +There have been several reports of the X server locking up under Linux. +In all reported cases removing speedo and scaled fonts from the font +path corrected the problem. This can be done with the command +@code{xset}. + +It is possible that using a font server may also solve the problem. + +@node Q2.1.7, Q2.1.8, Q2.1.6, Installation +@unnumberedsubsec Q2.1.7: HP Alt key as Meta. + +How can I make XEmacs recognize the Alt key of my HP workstation as a +Meta key? + +Put the following line into a file and load it with xmodmap(1) before +starting XEmacs: + +@example +remove Mod1 = Mode_switch +@end example + +@node Q2.1.8, Q2.1.9, Q2.1.7, Installation +@unnumberedsubsec Q2.1.8: got (wrong-type-argument color-instance-p nil) + +@email{nataliek@@rd.scitec.com.au, Natalie Kershaw} writes: + +@quotation +I am trying to run xemacs 19.13 under X11R4. Whenever I move the mouse I +get the following error. Has anyone seen anything like this? This +doesn't occur on X11R5. + +@lisp +Signalling: +(error "got (wrong-type-argument color-instance-p nil) +and I don't know why!") +@end lisp +@end quotation + +@email{map01kd@@gold.ac.uk, dinos} writes: + +@quotation +I think this is due to undefined resources; You need to define color +backgrounds and foregrounds into your @file{.../app-defaults/Emacs} +like: + +@example +*Foreground: Black ;everything will be of black on grey95, +*Background: Grey95 ;unless otherwise specified. +*cursorColor: Red3 ;red3 cursor with grey95 border. +*pointerColor: Red3 ;red3 pointer with grey95 border. +@end example +@end quotation + +Natalie Kershaw adds: + +@quotation +What fixed the problem was adding some more colors to the X color +database (copying the X11R5 colors over), and also defining the +following resources: + +@example +xemacs*cursorColor: black +xemacs*pointerColor: black +@end example + +With the new colors installed the problem still occurs if the above +resources are not defined. + +If the new colors are not present then an additional error occurs on +XEmacs startup, which says @samp{Color Red3} not defined. +@end quotation + +@node Q2.1.9, Q2.1.10, Q2.1.8, Installation +@unnumberedsubsec Q2.1.9: XEmacs causes my OpenWindows 3.0 server to crash. + +The OpenWindows 3.0 server is incredibly buggy. Your best bet is to +replace it with one from the generic MIT X11 release. You might also +try disabling parts of your @file{.emacs}, like enabling background +pixmaps. + +@node Q2.1.10, Q2.1.11, Q2.1.9, Installation +@unnumberedsubsec Q2.1.10: Warnings from incorrect key modifiers. + +The following information comes from the @file{PROBLEMS} file that comes +with XEmacs. + +If you're having troubles with HP/UX it is because HP/UX defines the +modifiers wrong in X. Here is a shell script to fix the problem; be +sure that it is run after VUE configures the X server. + +@example +#! /bin/sh +xmodmap 2> /dev/null - << EOF +keysym Alt_L = Meta_L +keysym Alt_R = Meta_R +EOF + +xmodmap - << EOF +clear mod1 +keysym Mode_switch = NoSymbol +add mod1 = Meta_L +keysym Meta_R = Mode_switch +add mod2 = Mode_switch +EOF +@end example + +@node Q2.1.11, Q2.1.12, Q2.1.10, Installation +@unnumberedsubsec Q2.1.11: @samp{Can't instantiate image error...} in toolbar +@c New + +@email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes: + +I just installed the XEmacs (20.4-2) RPMS that I downloaded from +@uref{http://www.xemacs.org/}. Everything works fine, except that when +I place my mouse over the toolbar, it beeps and gives me this message: + +@example + Can't instantiate image (probably cached): + [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data + (16 16 <strange control characters> ... +@end example + +@email{kyle_jones@@wonderworks.com, Kyle Jones} writes: +@quotation +This is problem specific to some Chips and Technologies video +chips, when running XFree86. Putting + +@code{Option "sw_cursor"} + +in @file{XF86Config} gets rid of the problem. +@end quotation + +@node Q2.1.12, Q2.1.13, Q2.1.11, Installation +@unnumberedsubsec Q2.1.12: Problems with Regular Expressions on DEC OSF1. + +I have xemacs 19.13 running on an alpha running OSF1 V3.2 148 and ispell +would not run because it claimed the version number was incorrect +although it was indeed OK. I traced the problem to the regular +expression handler. + +@email{douglask@@dstc.edu.au, Douglas Kosovic} writes: + +@quotation +Actually it's a DEC cc optimization bug that screws up the regexp +handling in XEmacs. + +Rebuilding using the @samp{-migrate} switch for DEC cc (which uses a +different sort of optimization) works fine. +@end quotation + +See @file{xemacs-19_13-dunix-3_2c.patch} at the following URL on how to +build with the @samp{-migrate} flag: + +@example +@uref{http://www-digital.cern.ch/carney/emacs/emacs.html} +@c Link above, <URL:http://www-digital.cern.ch/carney/emacs/emacs.html> is +@c dead. And the directory `carney' is empty. + + + +@end example + +NOTE: There have been a variety of other problems reported that are +fixed in this fashion. + +@node Q2.1.13, Q2.1.14, Q2.1.12, Installation +@unnumberedsubsec Q2.1.13: HP/UX 10.10 and @code{create_process} failure. + +@email{Dave.Carrigan@@ipl.ca, Dave Carrigan} writes: + +@quotation +With XEmacs 19.13 and HP/UX 10.10, anything that relies on the +@code{create_process} function fails. This breaks a lot of things +(shell-mode, compile, ange-ftp, to name a few). +@end quotation + +@email{johnson@@dtc.hp.com, Phil Johnson} writes: + +@quotation +This is a problem specific to HP-UX 10.10. It only occurs when XEmacs +is compiled for shared libraries (the default), so you can work around +it by compiling a statically-linked binary (run configure with +@samp{--dynamic=no}). + +I'm not sure whether the problem is with a particular shared library or +if it's a kernel problem which crept into 10.10. +@end quotation + +@email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes: + +@quotation +I had a few problems with 10.10. Apparently, some of them were solved by +forcing a static link of libc (manually). +@end quotation + +@node Q2.1.14, Q2.1.15, Q2.1.13, Installation +@unnumberedsubsec Q2.1.14: @kbd{C-g} doesn't work for me. Is it broken? + +@email{ben@@xemacs.org, Ben Wing} writes: + +@quotation +@kbd{C-g} does work for most people in most circumstances. If it +doesn't, there are only two explanations: + +@enumerate +@item +The code is wrapped with a binding of @code{inhibit-quit} to +@code{t}. @kbd{Ctrl-Shift-G} should still work, I think. + +@item +SIGIO is broken on your system, but BROKEN_SIGIO isn't defined. +@end enumerate + +To test #2, try executing @code{(while t)} from the @samp{*scratch*} +buffer. If @kbd{C-g} doesn't interrupt, then you're seeing #2. +@end quotation + +@email{terra@@diku.dk, Morten Welinder} writes: + +@quotation +On some (but @emph{not} all) machines a hung XEmacs can be revived by +@code{kill -FPE <pid>}. This is a hack, of course, not a solution. +This technique works on a Sun4 running 4.1.3_U1. To see if it works for +you, start another XEmacs and test with that first. If you get a core +dump the method doesn't work and if you get @samp{Arithmetic error} then +it does. +@end quotation + +@node Q2.1.15, Q2.1.16, Q2.1.14, Installation +@unnumberedsubsec Q2.1.15: How to Debug an XEmacs problem with a debugger + +If XEmacs does crash on you, one of the most productive things you can +do to help get the bug fixed is to poke around a bit with the debugger. +Here are some hints: + +@itemize @bullet +@item +First of all, if the crash is at all reproducible, consider very +strongly recompiling your XEmacs with debugging symbols, with no +optimization, and with the configure options @samp{--debug=yes} and +@samp{--error-checking=all}. This will make your XEmacs run somewhat +slower but make it a lot more likely to catch the problem earlier +(closer to its source), and a lot easier to determine what's going on +with a debugger. + +@item +If you're able to run XEmacs under a debugger and reproduce the crash +(if it's inconvenient to do this because XEmacs is already running or is +running in batch mode as part of a bunch of scripts, consider attaching +to the existing process with your debugger; most debuggers let you do +this by substituting the process ID for the core file when you invoke +the debugger from the command line, or by using the @code{attach} +command or something similar), here are some things you can do: + +@item +If XEmacs is hitting an assertion failure, put a breakpoint on +@code{assert_failed()}. + +@item +If XEmacs is hitting some weird Lisp error that's causing it to crash +(e.g. during startup), put a breakpoint on @code{signal_1()}---this is +declared static in eval.c. + +@item +Internally, you will probably see lots of variables that hold objects of +type @code{Lisp_Object}. These are exactly what they appear to be, +i.e. references to Lisp objects. Printing them out with the debugger +probably won't be too useful---you'll likely just see a number. To +decode them, do this: + +@example +call debug_print (OBJECT) +@end example + +where @var{OBJECT} is whatever you want to decode (it can be a variable, +a function call, etc.). This will print out a readable representation +on the TTY from which the xemacs process was invoked. + +@item +If you want to get a Lisp backtrace showing the Lisp call +stack, do this: + +@example +call debug_backtrace () +@end example + +@item +Using @code{debug_print} and @code{debug_backtrace} has two +disadvantages - it can only be used with a running xemacs process, and +it cannot display the internal C structure of a Lisp Object. Even if +all you've got is a core dump, all is not lost. + +If you're using GDB, there are some macros in the file +@file{src/gdbinit} in the XEmacs source distribution that should make it +easier for you to decode Lisp objects. Copy this file to +@file{~/.gdbinit}, or @code{source} it from @file{~/.gdbinit}, and use +the macros defined therein. In particular, use the @code{pobj} macro to +print the internal C representation of a lisp object. This will work +with a core file or not-yet-run executable. The aliases @code{ldp} and +@code{lbt} are provided for conveniently calling @code{debug_print} and +@code{debug_backtrace}. + +If you are using Sun's @file{dbx} debugger, there is an equivalent file +@file{src/dbxrc} to copy to or source from @file{~/.dbxrc}. + +@item +If you're using a debugger to get a C stack backtrace and you're seeing +stack traces with some of the innermost frames mangled, it may be due to +dynamic linking. (This happens especially under Linux.) Consider +reconfiguring with @samp{--dynamic=no}. Also, sometimes (again under +Linux), stack backtraces of core dumps will have the frame where the +fatal signal occurred mangled; if you can obtain a stack trace while +running the XEmacs process under a debugger, the stack trace should be +clean. + +@email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so version 1.8 +if dynamic linking and debugging is a problem on Linux. + +@item +If you're using a debugger to get a C stack backtrace and you're +getting a completely mangled and bogus stack trace, it's probably due to +one of the following: + +@enumerate a +@item +Your executable has been stripped. Bad news. Tell your sysadmin not to +do this---it doesn't accomplish anything except to save a bit of disk +space, and makes debugging much much harder. + +@item +Your stack is getting trashed. Debugging this is hard; you have to do a +binary-search type of narrowing down where the crash occurs, until you +figure out exactly which line is causing the problem. Of course, this +only works if the bug is highly reproducible. + +@item +If your stack trace has exactly one frame in it, with address 0x0, this +could simply mean that XEmacs attempted to execute code at that address, +e.g. through jumping to a null function pointer. Unfortunately, under +those circumstances, GDB under Linux doesn't know how to get a stack +trace. (Yes, this is the third Linux-related problem I've mentioned. I +have no idea why GDB under Linux is so bogus. Complain to the GDB +authors, or to comp.os.linux.development.system). Again, you'll have to +use the narrowing-down process described above. + +@item +If you compiled 19.14 with @samp{--debug} (or by default in later +versions), you will get a Lisp backtrace output when XEmacs crashes, so +you'll have something useful. + +@end enumerate + +@item +If you compile with the newer gcc variants gcc-2.8 or egcs, you will +also need gdb 4.17. Earlier releases of gdb can't handle the debug +information generated by the newer compilers. + +@item +The above information on using @file{src/gdbinit} works for XEmacs-21.0 +and above. For older versions of XEmacs, there are different +@file{gdbinit} files provided in the @file{src} directory. Use the one +corresponding to the configure options used when building XEmacs. + +@end itemize + +@node Q2.1.16, Q2.1.17, Q2.1.15, Installation +@unnumberedsubsec Q2.1.16: XEmacs crashes in @code{strcat} on HP/UX 10 + +>From the problems database (through +@uref{http://support.mayfield.hp.com/}): + +@example +Problem Report: 5003302299 +Status: Open + +System/Model: 9000/700 +Product Name: HPUX S800 10.0X +Product Vers: 9245XB.10.00 + +Description: strcat(3C) may read beyond +end of source string, can cause SIGSEGV + + +*** PROBLEM TEXT *** +strcat(3C) may read beyond the source string onto an unmapped page, +causing a segmentation violation. +@end example + +@node Q2.1.17, Q2.1.18, Q2.1.16, Installation +@unnumberedsubsec Q2.1.17: @samp{Marker does not point anywhere} + +As with other errors, set @code{debug-on-error} to @code{t} to get the +backtrace when the error occurs. Specifically, two problems have been +reported (and fixed). + +@enumerate +@item +A problem with line-number-mode in XEmacs 19.14 affected a large number +of other packages. If you see this error message, turn off +line-number-mode. + +@item +A problem with some early versions of Gnus 5.4 caused this error. +Upgrade your Gnus. +@end enumerate + +@node Q2.1.18, Q2.1.19, Q2.1.17, Installation +@unnumberedsubsec Q2.1.18: 19.14 hangs on HP/UX 10.10. + +@email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes: + +@quotation +For the record, compiling on hpux 10.10 leads to a hang in Gnus when +compiled with optimization on. + +I've just discovered that my hpux 10.01 binary was working less well +than expected. In fact, on a 10.10 system, @code{(while t)} was not +interrupted by @kbd{C-g}. I defined @code{BROKEN_SIGIO} and recompiled on +10.10, and... the hang is now gone. + +As far as configure goes, this will be a bit tricky: @code{BROKEN_SIGIO} +is needed on 10.10, but @strong{not} on 10.01: if I run my 10.01 binary +on a 10.01 machine, without @code{BROKEN_SIGIO} being defined, @kbd{C-g} +works as expected. +@end quotation + +@email{cognot@@ensg.u-nancy.fr, Richard Cognot} adds: + +@quotation +Apparently somebody has found the reason why there is this +@iftex +@* +@end iftex +@samp{poll: +interrupted...} message for each event. For some reason, libcurses +reimplements a @code{select()} system call, in a highly broken fashion. +The fix is to add a -lc to the link line @emph{before} the +-lxcurses. XEmacs will then use the right version of @code{select()}. +@end quotation + + +@email{af@@biomath.jussieu.fr, Alain Fauconnet} writes: + +@quotation +The @emph{real} solution is to @emph{not} link -lcurses in! I just +changed -lcurses to -ltermcap in the Makefile and it fixed: + +@enumerate +@item +The @samp{poll: interrupted system call} message. + +@item +A more serious problem I had discovered in the meantime, that is the +fact that subprocess handling was seriously broken: subprocesses +e.g. started by AUC TeX for TeX compilation of a buffer would +@emph{hang}. Actually they would wait forever for emacs to read the +socket which connects stdout... +@end enumerate +@end quotation + +@node Q2.1.19, Q2.1.20, Q2.1.18, Installation +@unnumberedsubsec Q2.1.19: XEmacs does not follow the local timezone. + +When using one of the prebuilt binaries many users have observed that +XEmacs uses the timezone under which it was built, but not the timezone +under which it is running. The solution is to add: + +@lisp +(set-time-zone-rule "MET") +@end lisp + +to your @file{.emacs} or the @file{site-start.el} file if you can. +Replace @code{MET} with your local timezone. + +@node Q2.1.20, Q2.1.21, Q2.1.19, Installation +@unnumberedsubsec Q2.1.20: @samp{Symbol's function definition is void: hkey-help-show.} + +This is a problem with a partially loaded hyperbole. Try adding: + +@lisp +(require 'hmouse-drv) +@end lisp + +where you load hyperbole and the problem should go away. + +@node Q2.1.21, Q2.1.22, Q2.1.20, Installation +@unnumberedsubsec Q2.1.21: Every so often the XEmacs frame freezes + +This problem has been fixed in 19.15, and was due to a not easily +reproducible race condition. + +@node Q2.1.22, Q2.1.23, Q2.1.21, Installation +@unnumberedsubsec Q2.1.22: XEmacs seems to take a really long time to do some things + +@email{dmoore@@ucsd.edu, David Moore} writes: + +@quotation +Two things you can do: + +1) C level: + +When you see it going mad like this, you might want to use gdb from an +'xterm' to attach to the running process and get a stack trace. To do +this just run: + +@example +gdb /path/to/xemacs/xemacs #### +@end example + +Where @code{####} is the process id of your xemacs, instead of +specifying the core. When gdb attaches, the xemacs will stop [1] and +you can type `where' in gdb to get a stack trace as usual. To get +things moving again, you can just type `quit' in gdb. It'll tell you +the program is running and ask if you want to quit anyways. Say 'y' and +it'll quit and have your emacs continue from where it was at. + +2) Lisp level: + +Turn on debug-on-quit early on. When you think things are going slow +hit C-g and it may pop you in the debugger so you can see what routine +is running. Press `c' to get going again. + +debug-on-quit doesn't work if something's turned on inhibit-quit or in +some other strange cases. +@end quotation + +@node Q2.1.23, , Q2.1.22, Installation +@unnumberedsubsec Q2.1.23: Movemail on Linux does not work for XEmacs 19.15 and later. + +Movemail used to work fine in 19.14 but has stopped working in 19.15 +and 20.x. I am using Linux. + +@email{steve@@xemacs.org, SL Baur} writes: + +@quotation +Movemail on Linux used to default to using flock file locking. With +19.15 and later versions it now defaults to using @code{.lock} file +locking. If this is not appropriate for your system, edit src/s/linux.h +and uncomment the line that reads: + +@example +#define MAIL_USE_FLOCK +@end example +@end quotation + +@node Customization, Subsystems, Installation, Top +@unnumbered 3 Customization and Options + +This is part 3 of the XEmacs Frequently Asked Questions list. This +section is devoted to Customization and screen settings. + +@menu +Customization---Emacs Lisp and @file{.emacs}: +* Q3.0.1:: What version of Emacs am I running? +* Q3.0.2:: How do I evaluate Elisp expressions? +* Q3.0.3:: @code{(setq tab-width 6)} behaves oddly. +* Q3.0.4:: How can I add directories to the @code{load-path}? +* Q3.0.5:: How to check if a lisp function is defined? +* Q3.0.6:: Can I force the output of @code{(face-list)} to a buffer? +* Q3.0.7:: Font selections don't get saved after @code{Save Options}. +* Q3.0.8:: How do I make a single minibuffer frame? +* Q3.0.9:: What is @code{Customize}? + +X Window System & Resources: +* Q3.1.1:: Where is a list of X resources? +* Q3.1.2:: How can I detect a color display? +* Q3.1.3:: @code{(set-screen-width)} worked in 19.6, but not in 19.13? +* Q3.1.4:: Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15? +* Q3.1.5:: How can I get the icon to just say @samp{XEmacs}? +* Q3.1.6:: How can I have the window title area display the full path? +* Q3.1.7:: @samp{xemacs -name junk} doesn't work? +* Q3.1.8:: @samp{-iconic} doesn't work. + +Textual Fonts & Colors: +* Q3.2.1:: How can I set color options from @file{.emacs}? +* Q3.2.2:: How do I set the text, menu and modeline fonts? +* Q3.2.3:: How can I set the colors when highlighting a region? +* Q3.2.4:: How can I limit color map usage? +* Q3.2.5:: My tty supports color, but XEmacs doesn't use them. +* Q3.2.6:: Can I have pixmap backgrounds in XEmacs? + +The Modeline: +* Q3.3.1:: How can I make the modeline go away? +* Q3.3.2:: How do you have XEmacs display the line number in the modeline? +* Q3.3.3:: How do I get XEmacs to put the time of day on the modeline? +* Q3.3.4:: How do I turn off current chapter from AUC TeX modeline? +* Q3.3.5:: How can one change the modeline color based on the mode used? + +3.4 Multiple Device Support: +* Q3.4.1:: How do I open a frame on another screen of my multi-headed display? +* Q3.4.2:: Can I really connect to a running XEmacs after calling up over a modem? How? + +3.5 The Keyboard: +* Q3.5.1:: How can I bind complex functions (or macros) to keys? +* Q3.5.2:: How can I stop down-arrow from adding empty lines to the bottom of my buffers? +* Q3.5.3:: How do I bind C-. and C-; to scroll one line up and down? +* Q3.5.4:: Globally binding @kbd{Delete}? +* Q3.5.5:: Scrolling one line at a time. +* Q3.5.6:: How to map @kbd{Help} key alone on Sun type4 keyboard? +* Q3.5.7:: How can you type in special characters in XEmacs? +* Q3.5.8:: Why does @code{(global-set-key [delete-forward] 'delete-char)} complain? +* Q3.5.9:: How do I make the Delete key delete forward? +* Q3.5.10:: Can I turn on @dfn{sticky} modifier keys? +* Q3.5.11:: How do I map the arrow keys? + +The Cursor: +* Q3.6.1:: Is there a way to make the bar cursor thicker? +* Q3.6.2:: Is there a way to get back the old block cursor where the cursor covers the character in front of the point? +* Q3.6.3:: Can I make the cursor blink? + +The Mouse and Highlighting: +* Q3.7.1:: How can I turn off Mouse pasting? +* Q3.7.2:: How do I set control/meta/etc modifiers on mouse buttons? +* Q3.7.3:: Clicking the left button does not do anything in buffer list. +* Q3.7.4:: How can I get a list of buffers when I hit mouse button 3? +* Q3.7.5:: Why does cut-and-paste not work between XEmacs and a cmdtool? +* Q3.7.6:: How I can set XEmacs up so that it pastes where the text cursor is? +* Q3.7.7:: How do I select a rectangular region? +* Q3.7.8:: Why does @kbd{M-w} take so long? + +The Menubar and Toolbar: +* Q3.8.1:: How do I get rid of the menu (or menubar)? +* Q3.8.2:: Can I customize the basic menubar? +* Q3.8.3:: How do I control how many buffers are listed in the menu @code{Buffers} list? +* Q3.8.4:: Resources like @code{Emacs*menubar*font} are not working? +* Q3.8.5:: How can I bind a key to a function to toggle the toolbar? + +Scrollbars: +* Q3.9.1:: How can I disable the scrollbar? +* Q3.9.2:: How can one use resources to change scrollbar colors? +* Q3.9.3:: Moving the scrollbar can move the point; can I disable this? +* Q3.9.4:: How can I get automatic horizontal scrolling? + +Text Selections: +* Q3.10.1:: How can I turn off or change highlighted selections? +* Q3.10.2:: How do I get that typing on an active region removes it? +* Q3.10.3:: Can I turn off the highlight during isearch? +* Q3.10.4:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? +* Q3.10.5:: The region disappears when I hit the end of buffer while scrolling. +@end menu + +@node Q3.0.1, Q3.0.2, Customization, Customization +@unnumberedsec 3.0: Customization -- Emacs Lisp and .emacs +@unnumberedsubsec Q3.0.1: What version of Emacs am I running? + +How can @file{.emacs} determine which of the family of Emacsen I am +using? + +To determine if you are currently running GNU Emacs 18, GNU Emacs 19, +XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the +example given in @file{etc/sample.emacs}. There are other nifty things +in there as well! + +For all new code, all you really need to do is: + +@lisp +(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) +@end lisp + +@node Q3.0.2, Q3.0.3, Q3.0.1, Customization +@unnumberedsubsec Q3.0.2: How can I evaluate Emacs-Lisp expressions? + +I know I can evaluate Elisp expressions from @code{*scratch*} buffer +with @kbd{C-j} after the expression. How do I do it from another +buffer? + +Press @kbd{M-:} (the default binding of @code{eval-expression}), and +enter the expression to the minibuffer. In XEmacs prior to 19.15 +@code{eval-expression} used to be a disabled command by default. If +this is the case, upgrade your XEmacs. + +@node Q3.0.3, Q3.0.4, Q3.0.2, Customization +@unnumberedsubsec Q3.0.3: @code{(setq tab-width 6)} behaves oddly. + +If you put @code{(setq tab-width 6)} in your @file{.emacs} file it does +not work! Is there a reason for this? If you do it at the EVAL prompt +it works fine!! How strange. + +Use @code{setq-default} instead, since @code{tab-width} is +all-buffer-local. + +@node Q3.0.4, Q3.0.5, Q3.0.3, Customization +@unnumberedsubsec Q3.0.4: How can I add directories to the @code{load-path}? + +Here are two ways to do that, one that puts your directories at the +front of the load-path, the other at the end: + +@lisp +;;; Add things at the beginning of the load-path, do not add +;;; duplicate directories: +(pushnew "bar" load-path :test 'equal) + +(pushnew "foo" load-path :test 'equal) + +;;; Add things at the end, unconditionally +(setq load-path (nconc load-path '("foo" "bar"))) +@end lisp + +@email{keithh@@nortel.ca, keith (k.p.) hanlan} writes: + +@quotation +To add directories using Unix shell metacharacters use +@file{expand-file-name} like this: + +@lisp +(push (expand-file-name "~keithh/.emacsdir") load-path) +@end lisp +@end quotation + +@node Q3.0.5, Q3.0.6, Q3.0.4, Customization +@unnumberedsubsec Q3.0.5: How to check if a lisp function is defined? + +Use the following elisp: + +@lisp +(fboundp 'foo) +@end lisp + +It's almost always a mistake to test @code{emacs-version} or any similar +variables. + +Instead, use feature-tests, such as @code{featurep}, @code{boundp}, +@code{fboundp}, or even simple behaviroal tests, eg.: + +@lisp +(defvar foo-old-losing-code-p + (condition-case nil (progn (losing-code t) nil) + (wrong-number-of-arguments t))) +@end lisp + +There is an incredible amount of broken code out there which could work +much better more often in more places if it did the above instead of +trying to divine its environment from the value of one variable. + +@node Q3.0.6, Q3.0.7, Q3.0.5, Customization +@unnumberedsubsec Q3.0.6: Can I force the output of @code{(face-list)} to a buffer? + +It would be good having it in a buffer, as the output of +@code{(face-list)} is too wide to fit to a minibuffer. + +Evaluate the expression in the @samp{*scratch*} buffer with point after +the rightmost paren and typing @kbd{C-j}. + +If the minibuffer smallness is the only problem you encounter, you can +simply press @kbd{C-h l} to get the former minibuffer contents in a +buffer. + +@node Q3.0.7, Q3.0.8, Q3.0.6, Customization +@unnumberedsubsec Q3.0.7: Font selections in don't get saved after @code{Save Options}. + +For XEmacs 19.14 and previous: + +@email{mannj@@ll.mit.edu, John Mann} writes: + +@quotation +You have to go to Options->Frame Appearance and unselect +@samp{Frame-Local Font Menu}. If this option is selected, font changes +are only applied to the @emph{current} frame and do @emph{not} get saved +when you save options. +@end quotation + +For XEmacs 19.15 and later: + +Implement the above as well as set the following in your @file{.emacs} + +@lisp +(setq options-save-faces t) +@end lisp + +@node Q3.0.8, Q3.0.9, Q3.0.7, Customization +@unnumberedsubsec Q3.0.8: How do I get a single minibuffer frame? + +@email{acs@@acm.org, Vin Shelton} writes: + +@lisp +(setq initial-frame-plist '(minibuffer nil)) +(setq default-frame-plist '(minibuffer nil)) +(setq default-minibuffer-frame + (make-frame + '(minibuffer only + width 86 + height 1 + menubar-visible-p nil + default-toolbar-visible-p nil + name "minibuffer" + top -2 + left -2 + has-modeline-p nil))) +(frame-notice-user-settings) +@end lisp + +@strong{Please note:} The single minibuffer frame may not be to everyone's +taste, and there any number of other XEmacs options settings that may +make it difficult or inconvenient to use. + +@node Q3.0.9, Q3.1.1, Q3.0.8, Customization +@unnumberedsubsec Q3.0.9: What is @code{Customize}? + +Starting with XEmacs 20.2 there is new system 'Customize' for customizing +XEmacs options. + +You can access @code{Customize} from the @code{Options} menu +or invoking one of customize commands by typing eg. +@kbd{M-x customize}, @kbd{M-x customize-face}, +@kbd{M-x customize-variable} or @kbd{M-x customize-apropos}. + +Starting with XEmacs 20.3 there is also new `browser' mode for Customize. +Try it out with @kbd{M-x customize-browse} + +@node Q3.1.1, Q3.1.2, Q3.0.9, Customization +@unnumberedsec 3.1: X Window System & Resources +@unnumberedsubsec Q3.1.1: Where is a list of X resources? + +Search through the @file{NEWS} file for @samp{X Resources}. A fairly +comprehensive list is given after it. + +In addition, an @file{app-defaults} file is supplied, +@file{etc/Emacs.ad} listing the defaults. The file +@file{etc/sample.Xdefaults} gives a set of defaults that you might +consider. It is essentially the same as @file{etc/Emacs.ad} but some +entries are slightly altered. Be careful about installing the contents +of this file into your @file{.Xdefaults} or @file{.Xresources} file if +you use GNU Emacs under X11 as well. + +@node Q3.1.2, Q3.1.3, Q3.1.1, Customization +@unnumberedsubsec Q3.1.2: How can I detect a color display? + +You can test the return value of the function @code{(device-class)}, as +in: + +@lisp +(when (eq (device-class) 'color) + (set-face-foreground 'font-lock-comment-face "Grey") + (set-face-foreground 'font-lock-string-face "Red") + .... + ) +@end lisp + +@node Q3.1.3, Q3.1.4, Q3.1.2, Customization +@unnumberedsubsec Q3.1.3: @code{(set-screen-width)} worked in 19.6, but not in 19.13? + +In Lucid Emacs 19.6 I did @code{(set-screen-width @var{characters})} and +@code{(set-screen-height @var{lines})} in my @file{.emacs} instead of +specifying @code{Emacs*EmacsScreen.geometry} in my +@iftex +@* +@end iftex +@file{.Xdefaults} but +this does not work in XEmacs 19.13. + +These two functions now take frame arguments: + +@lisp +(set-frame-width (selected-frame) @var{characters}) +(set-frame-height (selected-frame) @var{lines}) +@end lisp + +@node Q3.1.4, Q3.1.5, Q3.1.3, Customization +@unnumberedsubsec Q3.1.4: Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15? + +In XEmacs 19.11 I specified @code{Emacs*EmacsScreen.geometry} in +my @file{.emacs} but this does not work in XEmacs 19.15. + +We have switched from using the term @dfn{screen} to using the term +@dfn{frame}. + +The correct entry for your @file{.Xdefaults} is now: + +@example +Emacs*EmacsFrame.geometry +@end example + +@node Q3.1.5, Q3.1.6, Q3.1.4, Customization +@unnumberedsubsec Q3.1.5: How can I get the icon to just say @samp{XEmacs}? + +I'd like the icon to just say @samp{XEmacs}, and not include the name of +the current file in it. + +Add the following line to your @file{.emacs}: + +@lisp +(setq frame-icon-title-format "XEmacs") +@end lisp + +@node Q3.1.6, Q3.1.7, Q3.1.5, Customization +@unnumberedsubsec Q3.1.6: How can I have the window title area display the full path? + +I'd like to have the window title area display the full directory/name +of the current buffer file and not just the name. + +Add the following line to your @file{.emacs}: + +@lisp +(setq frame-title-format "%S: %f") +@end lisp + +A more sophisticated title might be: + +@lisp +(setq frame-title-format + '("%S: " (buffer-file-name "%f" + (dired-directory dired-directory "%b")))) +@end lisp + +That is, use the file name, or the dired-directory, or the buffer name. + +@node Q3.1.7, Q3.1.8, Q3.1.6, Customization +@unnumberedsubsec Q3.1.7: @samp{xemacs -name junk} doesn't work? + +When I run @samp{xterm -name junk}, I get an xterm whose class name +according to xprop, is @samp{junk}. This is the way it's supposed to +work, I think. When I run @samp{xemacs -name junk} the class name is +not set to @samp{junk}. It's still @samp{emacs}. What does +@samp{xemacs -name} really do? The reason I ask is that my window +manager (fvwm) will make a window sticky and I use XEmacs to read my +mail. I want that XEmacs window to be sticky, without having to use the +window manager's function to set the window sticky. What gives? + +@samp{xemacs -name} sets the application name for the program (that is, +the thing which normally comes from @samp{argv[0]}). Using @samp{-name} +is the same as making a copy of the executable with that new name. The +@code{WM_CLASS} property on each frame is set to the frame-name, and the +application-class. So, if you did @samp{xemacs -name FOO} and then +created a frame named @var{BAR}, you'd get an X window with WM_CLASS = +@code{( "BAR", "Emacs")}. However, the resource hierarchy for this +widget would be: + +@example +Name: FOO .shell .container .BAR +Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame +@end example + +instead of the default + +@example +Name: xemacs.shell .container .emacs +Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame +@end example + + +It is arguable that the first element of WM_CLASS should be set to the +application-name instead of the frame-name, but I think that's less +flexible, since it does not give you the ability to have multiple frames +with different WM_CLASS properties. Another possibility would be for +the default frame name to come from the application name instead of +simply being @samp{emacs}. However, at this point, making that change +would be troublesome: it would mean that many users would have to make +yet another change to their resource files (since the default frame name +would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever +the executable happened to be named), so we'd rather avoid it. + +To make a frame with a particular name use: + +@lisp +(make-frame '((name . "the-name"))) +@end lisp + +@node Q3.1.8, Q3.2.1, Q3.1.7, Customization +@unnumberedsubsec Q3.1.8: @samp{-iconic} doesn't work. + +When I start up XEmacs using @samp{-iconic} it doesn't work right. +Using @samp{-unmapped} on the command line, and setting the +@code{initiallyUnmapped} X Resource don't seem to help much either... + +@email{ben@@xemacs.org, Ben Wing} writes: + +@quotation +Ugh, this stuff is such an incredible mess that I've about given up +getting it to work. The principal problem is numerous window-manager +bugs... +@end quotation + +@node Q3.2.1, Q3.2.2, Q3.1.8, Customization +@unnumberedsec 3.2: Textual Fonts & Colors +@unnumberedsubsec Q3.2.1: How can I set color options from @file{.emacs}? + +How can I set the most commonly used color options from my @file{.emacs} +instead of from my @file{.Xdefaults}? + +Like this: + +@lisp +(set-face-background 'default "bisque") ; frame background +(set-face-foreground 'default "black") ; normal text +(set-face-background 'zmacs-region "red") ; When selecting w/ + ; mouse +(set-face-foreground 'zmacs-region "yellow") +(set-face-font 'default "*courier-bold-r*120-100-100*") +(set-face-background 'highlight "blue") ; Ie when selecting + ; buffers +(set-face-foreground 'highlight "yellow") +(set-face-background 'modeline "blue") ; Line at bottom + ; of buffer +(set-face-foreground 'modeline "white") +(set-face-font 'modeline "*bold-r-normal*140-100-100*") +(set-face-background 'isearch "yellow") ; When highlighting + ; while searching +(set-face-foreground 'isearch "red") +(setq x-pointer-foreground-color "black") ; Adds to bg color, + ; so keep black +(setq x-pointer-background-color "blue") ; This is color + ; you really + ; want ptr/crsr +@end lisp + +@node Q3.2.2, Q3.2.3, Q3.2.1, Customization +@unnumberedsubsec Q3.2.2: How do I set the text, menu and modeline fonts? + +Note that you should use @samp{Emacs.} and not @samp{Emacs*} when +setting face values. + +In @file{.Xdefaults}: + +@example +Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-*-* +Emacs*menubar*font: fixed +Emacs.modeline.attributeFont: fixed +@end example + +This is confusing because modeline is a face, and can be found listed +with all faces in the current mode by using @kbd{M-x set-face-font +(enter) ?}. It uses the face specification of @code{attributeFont}, +while menubar is a normal X thing that uses the specification +@code{font}. With Motif it may be necessary to use @code{fontList} +instead of @code{font}. + +@node Q3.2.3, Q3.2.4, Q3.2.2, Customization +@unnumberedsubsec Q3.2.3: How can I set the colors when highlighting a region? + +How can I set the background/foreground colors when highlighting a +region? + +You can change the face @code{zmacs-region} either in your +@file{.Xdefaults}: + +@example +Emacs.zmacs-region.attributeForeground: firebrick +Emacs.zmacs-region.attributeBackground: lightseagreen +@end example + +or in your @file{.emacs}: + +@lisp +(set-face-background 'zmacs-region "red") +(set-face-foreground 'zmacs-region "yellow") +@end lisp + +@node Q3.2.4, Q3.2.5, Q3.2.3, Customization +@unnumberedsubsec Q3.2.4: How can I limit color map usage? + +I'm using Netscape (or another color grabber like XEmacs); +is there anyway to limit the number of available colors in the color map? + +XEmacs 19.13 didn't have such a mechanism (unlike netscape, or other +color-hogs). One solution is to start XEmacs prior to netscape, since +this will prevent Netscape from grabbing all colors (but Netscape will +complain). You can use the flags for Netscape, like -mono, -ncols <#> +or -install (for mono, limiting to <#> colors, or for using a private +color map). Since Netscape will take the entire colormap and never +release it, the only reasonable way to run it is with @samp{-install}. + +If you have the money, another solution would be to use a truecolor or +direct color video. + +Starting with XEmacs 19.14, XEmacs uses the closest available color if +the colormap is full, so it's O.K. now to start Netscape first. + +@node Q3.2.5, Q3.2.6, Q3.2.4, Customization +@unnumberedsubsec Q3.2.5: My tty supports color, but XEmacs doesn't use them. + +XEmacs tries to automatically determine whether your tty supports color, +but sometimes guesses wrong. In that case, you can make XEmacs Do The +Right Thing using this Lisp code: + +@lisp +(if (eq 'tty (device-type)) + (set-device-class nil 'color)) +@end lisp + +@node Q3.2.6, Q3.3.1, Q3.2.5, Customization +@unnumberedsubsec Q3.2.6: Can I have pixmap backgrounds in XEmacs? +@c New +@email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes: + +@quotation +There are several ways to do it. For example, you could specify a +default pixmap image to use in your @file{~/.Xresources}, e.g., + + +@example + Emacs*EmacsFrame.default.attributeBackgroundPixmap: /path/to/image.xpm +@end example + + +and then reload ~/.Xresources and restart XEmacs. Alternatively, +since each face can have its own pixmap background, a better way +would be to set a face's pixmap within your XEmacs init file, e.g., + +@lisp + (set-face-background-pixmap 'default "/path/to/image.xpm") + (set-face-background-pixmap 'bold "/path/to/another_image.xpm") +@end lisp + +and so on. You can also do this interactively via @kbd{M-x edit-faces}. + +@end quotation + +@unnumberedsec 3.3: The Modeline +@node Q3.3.1, Q3.3.2, Q3.2.6, Customization +@unnumberedsubsec Q3.3.1: How can I make the modeline go away? + +@lisp +(set-specifier has-modeline-p nil) +@end lisp + +Starting with XEmacs 19.14 the modeline responds to mouse clicks, so if +you haven't liked or used the modeline in the past, you might want to +try the new version out. + +@node Q3.3.2, Q3.3.3, Q3.3.1, Customization +@unnumberedsubsec Q3.3.2: How do you have XEmacs display the line number in the modeline? + +Add the following line to your @file{.emacs} file to display the +line number: + +@lisp +(line-number-mode 1) +@end lisp + +Use the following to display the column number: + +@lisp +(column-number-mode 1) +@end lisp + +Or select from the @code{Options} menu +@iftex +@* +@end iftex +@code{Customize->Emacs->Editing->Basics->Line Number Mode} +and/or +@iftex +@* +@end iftex +@code{Customize->Emacs->Editing->Basics->Column Number Mode} + +Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. + +@node Q3.3.3, Q3.3.4, Q3.3.2, Customization +@unnumberedsubsec Q3.3.3: How do I get XEmacs to put the time of day on the modeline? + +Add the following line to your @file{.emacs} file to display the +time: + +@lisp +(display-time) +@end lisp + +See @code{Customize} from the @code{Options} menu for customization. + +@node Q3.3.4, Q3.3.5, Q3.3.3, Customization +@unnumberedsubsec Q3.3.4: How do I turn off current chapter from AUC TeX modeline? + +With AUC TeX, fast typing is hard because the current chapter, section +etc. are given in the modeline. How can I turn this off? + +It's not AUC TeX, it comes from @code{func-menu} in @file{func-menu.el}. +Add this code to your @file{.emacs} to turn it off: + +@lisp +(setq fume-display-in-modeline-p nil) +@end lisp + +Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX +mode: + +@lisp +(add-hook 'TeX-mode-hook + '(lambda () (setq fume-display-in-modeline-p nil))) +@end lisp + +@email{dhughes@@origin-at.co.uk, David Hughes} writes: + +@quotation +If you have 19.14 or later, try this instead; you'll still get the +function name displayed in the modeline, but it won't attempt to keep +track when you modify the file. To refresh when it gets out of synch, +you simply need click on the @samp{Rescan Buffer} option in the +function-menu. + +@lisp +(setq-default fume-auto-rescan-buffer-p nil) +@end lisp +@end quotation + +@node Q3.3.5, Q3.4.1, Q3.3.4, Customization +@unnumberedsubsec Q3.3.5: How can one change the modeline color based on the mode used? + +You can use something like the following: + +@lisp +(add-hook 'lisp-mode-hook + (lambda () + (set-face-background 'modeline "red" (current-buffer)))) +@end lisp + +Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline +colors change from the default set in your @file{.emacs}. The change +will only be made in the buffer you just entered (which contains the +Lisp file you are editing) and will not affect the modeline colors +anywhere else. + +Notes: + +@itemize @bullet + +@item +The hook is the mode name plus @code{-hook}. eg. c-mode-hook, +c++-mode-hook, emacs-lisp-mode-hook (used for your @file{.emacs} or a +@file{xx.el} file), lisp-interaction-mode-hook (the @samp{*scratch*} +buffer), text-mode-hook, etc. + +@item +Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)}, +otherwise you will erase anything that anybody has already put on the +hook. + +@item +You can also do @code{(set-face-font 'modeline @var{font})}, +eg. @code{(set-face-font 'modeline "*bold-r-normal*140-100-100*" +(current-buffer))} if you wish the modeline font to vary based on the +current mode. +@end itemize + +This works in 19.15 as well, but there are additional modeline faces, +@code{modeline-buffer-id}, @code{modeline-mousable}, and +@code{modeline-mousable-minor-mode}, which you may want to customize. + +@node Q3.4.1, Q3.4.2, Q3.3.5, Customization +@unnumberedsec 3.4: Multiple Device Support +@unnumberedsubsec Q3.4.1: How do I open a frame on another screen of my multi-headed display? + +The support for this was revamped for 19.14. Use the command +@kbd{M-x make-frame-on-display}. This command is also on the File menu +in the menubar. + +XEmacs 19.14 and later also have the command @code{make-frame-on-tty} +which will establish a connection to any tty-like device. Opening the +TTY devices should be left to @code{gnuclient}, though. + +@node Q3.4.2, Q3.5.1, Q3.4.1, Customization +@unnumberedsubsec Q3.4.2: Can I really connect to a running XEmacs after calling up over a modem? How? + +If you're not running at least XEmacs 19.14, you can't. Otherwise check +out the @code{gnuattach} program supplied with XEmacs. Starting with +XEmacs 20.3, @code{gnuattach} and @code{gnudoit} functionality is +provided by @code{gnuclient}. + +Also @xref{Q5.0.12}. + +@node Q3.5.1, Q3.5.2, Q3.4.2, Customization +@unnumberedsec 3.5: The Keyboard +@unnumberedsubsec Q3.5.1: How can I bind complex functions (or macros) to keys? + +As an example, say you want the @kbd{paste} key on a Sun keyboard to +insert the current Primary X selection at point. You can accomplish this +with: + +@lisp +(define-key global-map [f18] 'x-insert-selection) +@end lisp + +However, this only works if there is a current X selection (the +selection will be highlighted). The functionality I like is for the +@kbd{paste} key to insert the current X selection if there is one, +otherwise insert the contents of the clipboard. To do this you need to +pass arguments to @code{x-insert-selection}. This is done by wrapping +the call in a 'lambda form: + +@lisp +(global-set-key [f18] + (lambda () (interactive) (x-insert-selection t nil))) +@end lisp + +This binds the f18 key to a @dfn{generic} functional object. The +interactive spec is required because only interactive functions can be +bound to keys. + +For the FAQ example you could use: + +@lisp +(global-set-key [(control ?.)] + (lambda () (interactive) (scroll-up 1))) +(global-set-key [(control ? ;)] + (lambda () (interactive) (scroll-up -1))) +@end lisp + +This is fine if you only need a few functions within the lambda body. +If you're doing more it's cleaner to define a separate function as in +question 3.5.3 (@pxref{Q3.5.3}). + +@node Q3.5.2, Q3.5.3, Q3.5.1, Customization +@unnumberedsubsec Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers? + +Add the following line to your @file{.emacs} file: + +@lisp +(setq next-line-add-newlines nil) +@end lisp + +This has been the default setting in XEmacs for some time. + +@node Q3.5.3, Q3.5.4, Q3.5.2, Customization +@unnumberedsubsec Q3.5.3: How do I bind C-. and C-; to scroll one line up and down? + +Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and +@email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}: + +@lisp +(defun scroll-up-one-line () + (interactive) + (scroll-up 1)) + +(defun scroll-down-one-line () + (interactive) + (scroll-down 1)) + +(global-set-key [(control ?.)] 'scroll-up-one-line) ; C-. +(global-set-key [(control ? ;)] 'scroll-down-one-line) ; C-; +@end lisp + +The key point is that you can only bind simple functions to keys; you +can not bind a key to a function that you're also passing arguments to. +(@pxref{Q3.5.1} for a better answer). + +@node Q3.5.4, Q3.5.5, Q3.5.3, Customization +@unnumberedsubsec Q3.5.4: Globally binding @kbd{Delete}? + +I cannot manage to globally bind my @kbd{Delete} key to something other +than the default. How does one do this? + +@lisp +(defun foo () + (interactive) + (message "You hit DELETE")) + +(global-set-key 'delete 'foo) +@end lisp + +However, some modes explicitly bind @kbd{Delete}, so you would need to +add a hook that does @code{local-set-key} for them. If what you want to +do is make the Backspace and Delete keys work more PC/Motif-like, then +take a look at the @file{delbs.el} package. + +New in XEmacs 19.14 is a variable called @code{key-translation-map} +which makes it easier to bind @kbd{Delete}. @file{delbs.el} is a +good example of how to do this correctly. + +Also @xref{Q3.5.10}. + +@node Q3.5.5, Q3.5.6, Q3.5.4, Customization +@unnumberedsubsec Q3.5.5: Scrolling one line at a time. + +Can the cursor keys scroll the screen a line at a time, rather than the +default half page jump? I tend it to find it disorienting. + +Try this: + +@lisp +(defun scroll-one-line-up (&optional arg) + "Scroll the selected window up (forward in the text) one line (or N lines)." + (interactive "p") + (scroll-up (or arg 1))) + +(defun scroll-one-line-down (&optional arg) + "Scroll the selected window down (backward in the text) one line (or N)." + (interactive "p") + (scroll-down (or arg 1))) + +(global-set-key [up] 'scroll-one-line-up) +(global-set-key [down] 'scroll-one-line-down) +@end lisp + +The following will also work but will affect more than just the cursor +keys (i.e. @kbd{C-n} and @kbd{C-p}): + +@lisp +(setq scroll-step 1) +@end lisp + +Starting with XEmacs-20.3 you can also change this with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->Environment->Windows->Scroll Step...} or type +@kbd{M-x customize @key{RET} windows @key{RET}}. + +@node Q3.5.6, Q3.5.7, Q3.5.5, Customization +@unnumberedsubsec Q3.5.6: How to map @kbd{Help} key alone on Sun type4 keyboard? + +The following works in GNU Emacs 19: + +@lisp +(global-set-key [help] 'help-command);; Help +@end lisp + +The following works in XEmacs 19.15 with the addition of shift: + +@lisp +(global-set-key [(shift help)] 'help-command);; Help +@end lisp + +But it doesn't work alone. This is in the file @file{PROBLEMS} which +should have come with your XEmacs installation: @emph{Emacs ignores the +@kbd{help} key when running OLWM}. + +OLWM grabs the @kbd{help} key, and retransmits it to the appropriate +client using +@iftex +@* +@end iftex +@code{XSendEvent}. Allowing Emacs to react to synthetic +events is a security hole, so this is turned off by default. You can +enable it by setting the variable @code{x-allow-sendevents} to t. You +can also cause fix this by telling OLWM to not grab the help key, with +the null binding @code{OpenWindows.KeyboardCommand.Help:}. + +@node Q3.5.7, Q3.5.8, Q3.5.6, Customization +@unnumberedsubsec Q3.5.7: How can you type in special characters in XEmacs? +@c Changed +One way is to use the package @code{x-compose}. Then you can use +sequences like @kbd{Compose " a} to get ä, etc. + +Another way is to use the @code{iso-insert} package, provided in XEmacs +19.15 and later. Then you can use sequences like @kbd{C-x 8 " a} to get +ä, etc. + +@email{glynn@@sensei.co.uk, Glynn Clements} writes: + +@quotation +It depends upon your X server. + +Generally, the simplest way is to define a key as Multi_key with +xmodmap, e.g. +@c hey, show some respect, willya -- there's xkeycaps, isn't there? -- +@c chr ;) +@example + xmodmap -e 'keycode 0xff20 = Multi_key' +@end example + +You will need to pick an appropriate keycode. Use xev to find out the +keycodes for each key. + +[NB: On a `Windows' keyboard, recent versions of XFree86 automatically +define the right `Windows' key as Multi_key'.] + +Once you have Multi_key defined, you can use e.g. +@example + Multi a ' => á + Multi e " => ë + Multi c , => ç +@end example + +etc. + +Also, recent versions of XFree86 define various AltGr-<key> +combinations as dead keys, i.e. +@example + AltGr [ => dead_diaeresis + AltGr ] => dead_tilde + AltGr ; => dead_acute +@end example +etc. + +Running @samp{xmodmap -pk} will list all of the defined keysyms. +@end quotation + +@node Q3.5.8, Q3.5.9, Q3.5.7, Customization +@unnumberedsubsec Q3.5.8: Why does @code{(global-set-key [delete-forward] 'delete-char)} complain? + +Why does @code{(define-key global-map [ delete-forward ] 'delete-char)} +complain of not being able to bind an unknown key? + +Try this instead: + +@lisp +(define-key global-map [delete_forward] 'delete-char) +@end lisp + +and it will work. + +What you are seeing above is a bug due to code that is trying to check +for GNU Emacs syntax like: + +(define-key global-map [C-M-a] 'delete-char) + +which otherwise would cause no errors but would not result in the +expected behavior. + +This bug has been fixed in 19.14. + +@node Q3.5.9, Q3.5.10, Q3.5.8, Customization +@unnumberedsubsec Q3.5.9: How do I make the Delete key delete forward? + +With XEmacs-20.2 use the @code{delbs} package: + +@lisp +(require 'delbs) +@end lisp + +This will give you the functions @code{delbs-enable-delete-forward} to +set things up, and @code{delbs-disable-delete-forward} to revert to +``normal'' behavior. Note that @code{delbackspace} package is obsolete. + +Starting with XEmacs-20.3 better solution is to set variable +@code{delete-key-deletes-forward} to t. You can also change this with +Customize. Select from the @code{Options} menu +@code{Customize->Emacs->Editing->Basics->Delete Key Deletes Forward} or +type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. + +Also @xref{Q3.5.4}. + +@node Q3.5.10, Q3.5.11, Q3.5.9, Customization +@unnumberedsubsec Q3.5.10: Can I turn on @dfn{sticky} modifier keys? + +Yes, with @code{(setq modifier-keys-are-sticky t)}. This will give the +effect of being able to press and release Shift and have the next +character typed come out in upper case. This will affect all the other +modifier keys like Control and Meta as well. + +@email{ben@@xemacs.org, Ben Wing} writes: + +@quotation +One thing about the sticky modifiers is that if you move the mouse out +of the frame and back in, it cancels all currently ``stuck'' modifiers. +@end quotation + +@node Q3.5.11, Q3.6.1, Q3.5.10, Customization +@unnumberedsubsec Q3.5.11: How do I map the arrow keys? +@c New +Say you want to map @kbd{C-@key{right}} to forward-word: + +@email{sds@@usa.net, Sam Steingold} writes: + +@quotation +@lisp +; both XEmacs and Emacs +(define-key global-map [(control right)] 'forward-word) +@end lisp +or +@lisp +; Emacs only +(define-key global-map [C-right] 'forward-word) +@end lisp +or +@lisp +; ver > 20, both +(define-key global-map (kbd "C-<right>") 'forward-word) +@end lisp +@end quotation + + + +@node Q3.6.1, Q3.6.2, Q3.5.11, Customization +@unnumberedsec 3.6: The Cursor +@unnumberedsubsec Q3.6.1: Is there a way to make the bar cursor thicker? + +I'd like to have the bar cursor a little thicker, as I tend to "lose" it +often. + +For a 1 pixel bar cursor, use: + +@lisp +(setq bar-cursor t) +@end lisp + +For a 2 pixel bar cursor, use: + +@lisp +(setq bar-cursor 'anything-else) +@end lisp + +Starting with XEmacs-20.3 you can also change these with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->Environment->Display->Bar Cursor...} or type +@kbd{M-x customize @key{RET} display @key{RET}}. + +You can use a color to make it stand out better: + +@example +Emacs*cursorColor: Red +@end example + +@node Q3.6.2, Q3.6.3, Q3.6.1, Customization +@unnumberedsubsec Q3.6.2: Is there a way to get back the block cursor? + +@lisp +(setq bar-cursor nil) +@end lisp + +Starting with XEmacs-20.3 you can also change this with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->Environment->Display->Bar Cursor...} or type +@kbd{M-x customize @key{RET} display @key{RET}}. + +@node Q3.6.3, Q3.7.1, Q3.6.2, Customization +@unnumberedsubsec Q3.6.3: Can I make the cursor blink? + +If you are running a version of XEmacs older than 19.14, no. Otherwise +you can do the following: + +@lisp +(blink-cursor-mode) +@end lisp + +This function toggles between a steady cursor and a blinking cursor. +You may also set this mode from the menu bar by selecting @samp{Options +=> Frame Appearance => Blinking Cursor}. Remember to save options. + +@node Q3.7.1, Q3.7.2, Q3.6.3, Customization +@unnumberedsec 3.7: The Mouse and Highlighting +@unnumberedsubsec Q3.7.1: How can I turn off Mouse pasting? + +I keep hitting the middle mouse button by accident and getting stuff +pasted into my buffer so how can I turn this off? + +Here is an alternative binding, whereby the middle mouse button selects +(but does not cut) the expression under the mouse. Clicking middle on a +left or right paren will select to the matching one. Note that you can +use @code{define-key} or @code{global-set-key}. + +@lisp +(defun mouse-set-point-and-select (event) + "Sets the point at the mouse location, then marks following form" + (interactive "@@e") + (mouse-set-point event) + (mark-sexp 1)) +(define-key global-map [button2] 'mouse-set-point-and-select) +@end lisp + +@node Q3.7.2, Q3.7.3, Q3.7.1, Customization +@unnumberedsubsec Q3.7.2: How do I set control/meta/etc modifiers on mouse buttons? + +Use, for instance, @code{[(meta button1)]}. For example, here is a common +setting for Common Lisp programmers who use the bundled @code{ilisp} +package, whereby meta-button1 on a function name will find the file where +the function name was defined, and put you at that location in the source +file. + +[Inside a function that gets called by the lisp-mode-hook and +ilisp-mode-hook] + +@lisp +(local-set-key [(meta button1)] 'edit-definitions-lisp) +@end lisp + +@node Q3.7.3, Q3.7.4, Q3.7.2, Customization +@unnumberedsubsec Q3.7.3: Clicking the left button does not do anything in buffer list. + +I do @kbd{C-x C-b} to get a list of buffers and the entries get +highlighted when I move the mouse over them but clicking the left mouse +does not do anything. + +Use the middle mouse button. + +@node Q3.7.4, Q3.7.5, Q3.7.3, Customization +@unnumberedsubsec Q3.7.4: How can I get a list of buffers when I hit mouse button 3? + +The following code will replace the default popup on button3: + +@lisp +(global-set-key [button3] 'popup-buffer-menu) +@end lisp + +@node Q3.7.5, Q3.7.6, Q3.7.4, Customization +@unnumberedsubsec Q3.7.5: Why does cut-and-paste not work between XEmacs and a cmdtool? + +We don't know. It's a bug. There does seem to be a work-around, +however. Try running xclipboard first. It appears to fix the problem +even if you exit it. (This should be mostly fixed in 19.13, but we +haven't yet verified that). + +@node Q3.7.6, Q3.7.7, Q3.7.5, Customization +@unnumberedsubsec Q3.7.6: How I can set XEmacs up so that it pastes where the text cursor is? + +By default XEmacs pastes X selections where the mouse pointer is. How +do I disable this? + +Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank +@key{RET}}. + +To get XEmacs to paste at the text cursor, add this your @file{.emacs}: + +@lisp +(setq mouse-yank-at-point t) +@end lisp + +Starting with XEmacs-20.2 you can also change this with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->Editing->Mouse->Yank At Point...} or type +@kbd{M-x customize @key{RET} mouse @key{RET}}. + +@node Q3.7.7, Q3.7.8, Q3.7.6, Customization +@unnumberedsubsec Q3.7.7: How do I select a rectangular region? + +Just select the region normally, then use the rectangle commands (e.g. +@code{kill-rectangle} on it. The region does not highlight as a +rectangle, but the commands work just fine. + +To actually sweep out rectangular regions with the mouse you can use +@code{mouse-track-do-rectangle} which is assigned to @kbd{M-button1}. +Then use rectangle commands. + +You can also do the following to change default behavior to sweep out +rectangular regions: + +@lisp +(setq mouse-track-rectangle-p t) +@end lisp + +Starting with XEmacs-20.2 you can also change this with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->Editing->Mouse->Track Rectangle...} or type +@kbd{M-x customize @key{RET} mouse @key{RET}}. + + +@example + mouse-track-do-rectangle: (event) + -- an interactive compiled Lisp function. + Like `mouse-track' but selects rectangles instead of regions. +@end example + +@node Q3.7.8, Q3.8.1, Q3.7.7, Customization +@unnumberedsubsec Q3.7.8: Why does @kbd{M-w} take so long? + +It actually doesn't. It leaves the region visible for a second so that +you can see what area is being yanked. If you start working, though, it +will immediately complete its operation. In other words, it will only +delay for a second if you let it. + +@node Q3.8.1, Q3.8.2, Q3.7.8, Customization +@unnumberedsec 3.8: The Menubar and Toolbar +@unnumberedsubsec Q3.8.1: How do I get rid of the menu (or menubar)? + +If you are running XEmacs 19.13 and earlier, add this command to your +@file{.emacs}. + +@lisp +(set-menubar nil) +@end lisp + +Starting with XEmacs 19.14 the preferred method is: + +@lisp +(set-specifier menubar-visible-p nil) +@end lisp + +@node Q3.8.2, Q3.8.3, Q3.8.1, Customization +@unnumberedsubsec Q3.8.2: Can I customize the basic menubar? + +For an extensive menubar, add this line to your @file{.emacs}: + +@lisp +(load "big-menubar") +@end lisp + +If you'd like to write your own, this file provides as good a set of +examples as any to start from. The file is located in +@file{lisp/packages/big-menubar.el} in the XEmacs installation +directory. + +@node Q3.8.3, Q3.8.4, Q3.8.2, Customization +@unnumberedsubsec Q3.8.3: How do I control how many buffers are listed in the menu @code{Buffers List}? + +Add the following to your @file{.emacs} (suit to fit): + +@lisp +(setq buffers-menu-max-size 20) +@end lisp + +For no limit, use an argument of @samp{nil}. + +Starting with XEmacs-20.3 you can also change this with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->Environment->Menu->Buffers Menu->Max Size...} or +type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}. + +@node Q3.8.4, Q3.8.5, Q3.8.3, Customization +@unnumberedsubsec Q3.8.4: Resources like @code{Emacs*menubar*font} are not working? + +I am trying to use a resource like @code{Emacs*menubar*font} to set the +font of the menubar but it's not working. + +If you are using the real Motif menubar, this resource is not +recognized; you have to say: + +@example +Emacs*menubar*fontList: FONT +@end example + +If you are using the Lucid menubar, the former resource will be +recognized only if the latter resource is unset. This means that the +resource + +@example +*fontList: FONT +@end example + +will override + +@example +Emacs*menubar*font: FONT +@end example + +even though the latter is more specific. + +@node Q3.8.5, Q3.9.1, Q3.8.4, Customization +@unnumberedsubsec Q3.8.5: How can I bind a key to a function to toggle the toolbar? + +Try something like: + +@lisp +(defun my-toggle-toolbar () + (interactive) + (set-specifier default-toolbar-visible-p + (not (specifier-instance default-toolbar-visible-p)))) +(global-set-key "\C-xT" 'my-toggle-toolbar) +@end lisp + +There are redisplay bugs in 19.14 that may make the preceding result in +a messed-up display, especially for frames with multiple windows. You +may need to resize the frame before XEmacs completely realizes the +toolbar is really gone. + +Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct +code. + +@node Q3.9.1, Q3.9.2, Q3.8.5, Customization +@unnumberedsec 3.9: Scrollbars +@unnumberedsubsec Q3.9.1: How can I disable the scrollbar? + +To disable them for all frames, add the following line to +your @file{.Xdefaults}: + +@example +Emacs.scrollBarWidth: 0 +@end example + +Or select from the @code{Options} menu @code{Frame Appearance->Scrollbars}. +Remember to save options. + +To turn the scrollbar off on a per-frame basis, use the following +function: + +@lisp +(set-specifier scrollbar-width 0 (selected-frame)) +@end lisp + +You can actually turn the scrollbars on at any level you want by +substituting for (selected-frame) in the above command. For example, to +turn the scrollbars off only in a single buffer: + +@lisp +(set-specifier scrollbar-width 0 (current-buffer)) +@end lisp + +In XEmacs versions prior to 19.14, you had to use the hairier construct: + +@lisp +(set-specifier scrollbar-width (cons (selected-frame) 0)) +@end lisp + +@node Q3.9.2, Q3.9.3, Q3.9.1, Customization +@unnumberedsubsec Q3.9.2: How can one use resources to change scrollbar colors? + +Here's a recap of how to use resources to change your scrollbar colors: + +@example +! Motif scrollbars + +Emacs*XmScrollBar.Background: skyblue +Emacs*XmScrollBar.troughColor: lightgray + +! Athena scrollbars + +Emacs*Scrollbar.Foreground: skyblue +Emacs*Scrollbar.Background: lightgray +@end example + +Note the capitalization of @code{Scrollbar} for the Athena widget. + +@node Q3.9.3, Q3.9.4, Q3.9.2, Customization +@unnumberedsubsec Q3.9.3: Moving the scrollbar can move the point; can I disable this? + +When I move the scrollbar in an XEmacs window, it moves the point as +well, which should not be the default behavior. Is this a bug or a +feature? Can I disable it? + +The current behavior is a feature, not a bug. Point remains at the same +buffer position as long as that position does not scroll off the screen. +In that event, point will end up in either the upper-left or lower-left +hand corner. + +This cannot be changed. + +@node Q3.9.4, Q3.10.1, Q3.9.3, Customization +@unnumberedsubsec Q3.9.4: How can I get automatic horizontal scrolling? + +By the same token, how can I turn it off in specific modes? + +To do this, add to your @file{.emacs} file: + +@lisp +(require 'auto-show) +@end lisp + +Then do @code{(setq truncate-lines t)} in the mode-hooks for any modes +in which you want lines truncated. + +More precisely: If @code{truncate-lines} is nil, horizontal scrollbars +will never appear. Otherwise, they will appear only if the value of +@code{scrollbar-height} for that buffer/window/etc. is non-zero. If you +do + +@lisp +(set-specifier scrollbar-height 0) +@end lisp + +then horizontal scrollbars will not appear in truncated buffers unless +the package specifically asked for them. + +Automatic horizontal scrolling is now standard, starting with 19.14. + +@node Q3.10.1, Q3.10.2, Q3.9.4, Customization +@unnumberedsec 3.10: Text Selections +@unnumberedsubsec Q3.10.1: How can I turn off or change highlighted selections? + +The @code{zmacs} mode allows for what some might call gratuitous +highlighting for selected regions (either by setting mark or by using +the mouse). This is the default behavior. To turn off, add the +following line to your @file{.emacs} file: + +@lisp +(setq zmacs-regions nil) +@end lisp + +Starting with XEmacs-20.2 you can also change this with Customize. Select +from the @code{Options} menu @code{Customize->Emacs->Editing->Basics->Zmacs +Regions} or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. + +To change the face for selection, look at @code{Options->Customize} on +the menubar. + +@node Q3.10.2, Q3.10.3, Q3.10.1, Customization +@unnumberedsubsec Q3.10.2: How do I get that typing on an active region removes it? + +I want to change things so that if I select some text and start typing, +the typed text replaces the selected text, similar to Motif. + +You want to use something called @dfn{pending delete}. Pending delete +is what happens when you select a region (with the mouse or keyboard) +and you press a key to replace the selected region by the key you typed. +Usually backspace kills the selected region. + +To get this behavior, add the following line to your @file{.emacs}: + +@lisp +(turn-on-pending-delete) +@end lisp + +Note that this will work with both Backspace and Delete. + +@node Q3.10.3, Q3.10.4, Q3.10.2, Customization +@unnumberedsubsec Q3.10.3: Can I turn off the highlight during isearch? + +I do not like my text highlighted while I am doing isearch as I am not +able to see what's underneath. How do I turn it off? + +Put the following in your @file{.emacs}: + +@lisp +(setq isearch-highlight nil) +@end lisp + +Starting with XEmacs-20.2 you can also change this with Customize. Type +@kbd{M-x customize-variable @key{RET} isearch-highlight @key{RET}}. + +Note also that isearch-highlight affects query-replace and ispell. +Instead of disabling isearch-highlight you may find that a better +solution consists of customizing the @code{isearch} face. + +@node Q3.10.4, Q3.10.5, Q3.10.3, Customization +@unnumberedsubsec Q3.10.4: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? + +Put this in your @code{.emacs}: + +@lisp +(setq zmacs-regions nil) +@end lisp + +@strong{Warning: This command turns off all region highlighting.} + +Also @xref{Q3.10.1}. + +@node Q3.10.5, , Q3.10.4, Customization +@unnumberedsubsec Q3.10.5: The region disappears when I hit the end of buffer while scrolling. + +This has been fixed by default starting with XEmacs-20.3. + +With older versions you can turn this feature (if it indeed is a feature) +off like this: + +@lisp +(defadvice scroll-up (around scroll-up freeze) + (interactive "_P") + (let ((zmacs-region-stays t)) + (if (interactive-p) + (condition-case nil + ad-do-it + (end-of-buffer (goto-char (point-max)))) + ad-do-it))) + +(defadvice scroll-down (around scroll-down freeze) + (interactive "_P") + (let ((zmacs-region-stays t)) + (if (interactive-p) + (condition-case nil + ad-do-it + (beginning-of-buffer (goto-char (point-min)))) + ad-do-it))) +@end lisp + +Thanks to @email{raman@@adobe.com, T. V. Raman} for assistance in deriving this +answer. + +@node Subsystems, Miscellaneous, Customization, Top +@unnumbered 4 Major Subsystems + +This is part 4 of the XEmacs Frequently Asked Questions list. This +section is devoted to major XEmacs subsystems. + +@menu +Reading Mail with VM: +* Q4.0.1:: How do I set up VM to retrieve remote mail using POP? +* Q4.0.2:: How do I get VM to filter mail for me? +* Q4.0.3:: How can I get VM to automatically check for new mail? +* Q4.0.4:: [This question intentionally left blank] +* Q4.0.5:: How do I get my outgoing mail archived? +* Q4.0.6:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? +* Q4.0.7:: Is there a mailing list or FAQ for VM? +* Q4.0.8:: Remote mail reading with VM. +* Q4.0.9:: rmail or VM gets an error incorporating new mail. +* Q4.0.10:: How do I make VM stay in a single frame? +* Q4.0.11:: How do I make VM or mh-e display graphical smilies? +* Q4.0.12:: Customization of VM not covered in the manual or here. + +Web browsing with W3: +* Q4.1.1:: What is W3? +* Q4.1.2:: How do I run W3 from behind a firewall? +* Q4.1.3:: Is it true that W3 supports style sheets and tables? + +Reading Netnews and Mail with Gnus: +* Q4.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus,argh! +* Q4.2.2:: [This question intentionally left blank] +* Q4.2.3:: How do I make Gnus stay within a single frame? +* Q4.2.4:: How do I customize the From: line? + +Other Mail & News: +* Q4.3.1:: How can I read and/or compose MIME messages? +* Q4.3.2:: What is TM and where do I get it? +* Q4.3.3:: Why isn't this @code{movemail} program working? +* Q4.3.4:: Movemail is also distributed by Netscape? Can that cause problems? +* Q4.3.5:: Where do I find pstogif (required by tm)? + +Sparcworks, EOS, and WorkShop: +* Q4.4.1:: What is SPARCworks, EOS, and WorkShop +* Q4.4.2:: How do I start the Sun Workshop support in XEmacs 21? + +Energize: +* Q4.5.1:: What is/was Energize? + +Infodock: +* Q4.6.1:: What is Infodock? + +Other Unbundled Packages: +* Q4.7.1:: What is AUC TeX? Where do you get it? +* Q4.7.2:: Are there any Emacs Lisp Spreadsheets? +* Q4.7.3:: Byte compiling AUC TeX on XEmacs 19.14 +* Q4.7.4:: Problems installing AUC TeX +* Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs? +* Q4.7.6:: Is there a MatLab mode? +@end menu + +@node Q4.0.1, Q4.0.2, Subsystems, Subsystems +@unnumberedsec 4.0: Reading Mail with VM +@unnumberedsubsec Q4.0.1: How do I set up VM to retrieve mail from a remote site using POP? + +Use @code{vm-spool-files}, like this for example: + +@lisp +(setq vm-spool-files '("/var/spool/mail/wing" + "netcom23.netcom.com:110:pass:wing:MYPASS")) +@end lisp + +Of course substitute your actual password for MYPASS. + +@node Q4.0.2, Q4.0.3, Q4.0.1, Subsystems +@unnumberedsubsec Q4.0.2: How do I get VM to filter mail for me? + +One possibility is to use procmail to split your mail before it gets to +VM. I prefer this personally, since there are many strange and +wonderful things one can do with procmail. Procmail may be found at +@uref{ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/}. + +Also see the Mail Filtering FAQ at: +@iftex +@* +@end iftex +@uref{ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq}. +@c Link above, +@c <URL:http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/filtering-faq/faq.html> +@c was dead. + +@node Q4.0.3, Q4.0.4, Q4.0.2, Subsystems +@unnumberedsubsec Q4.0.3: How can I get VM to automatically check for new mail? + +@email{turner@@lanl.gov, John Turner} writes: + +@quotation +Use the following: + +@lisp +(setq vm-auto-get-new-mail 60) +@end lisp +@end quotation + +@node Q4.0.4, Q4.0.5, Q4.0.3, Subsystems +@unnumberedsubsec Q4.0.4: [This question intentionally left blank] + +Obsolete question, left blank to avoid renumbering. + +@node Q4.0.5, Q4.0.6, Q4.0.4, Subsystems +@unnumberedsubsec Q4.0.5: How do I get my outgoing mail archived? + +@lisp +(setq mail-archive-file-name "~/outbox") +@end lisp + +@node Q4.0.6, Q4.0.7, Q4.0.5, Subsystems +@unnumberedsubsec Q4.0.6: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? + +Set @code{vm-reply-ignored-addresses} to a list, like + +@lisp +(setq vm-reply-ignored-addresses + '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com" + "wing@@netcom.com" "wing@@xemacs.org")) +@end lisp + +Note that each string is a regular expression. + +@node Q4.0.7, Q4.0.8, Q4.0.6, Subsystems +@unnumberedsubsec Q4.0.7: Is there a mailing list or FAQ for VM? + +A FAQ for VM exists at @uref{http://www.cyberpass.net/~gorkab/vmfaq.htm}. + +VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug. + +@node Q4.0.8, Q4.0.9, Q4.0.7, Subsystems +@unnumberedsubsec Q4.0.8: Remote mail reading with VM. + +My mailbox lives at the office on a big honkin server. My regular INBOX +lives on my honkin desktop machine. I now can PPP to the office from +home which is far from honking... I'd like to be able to read mail at +home without storing it here and I'd like to use xemacs and VM at +home... Is there a recommended setup? + +@email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes: + +@quotation +There are several ways to do this. + +@enumerate +@item +Set your display to your home machine and run dxpc or one of the other X +compressors. + +@item +NFS mount your desktop machine on your home machine and modify your pop +command on your home machine to rsh to your desktop machine and actually +do the pop get's. + +@item +Run a POP server on your desktop machine as well and do a sort of two +tiered POP get. +@end enumerate +@end quotation + + @email{wmperry@@monolith.spry.com, William Perry} adds: + +@quotation +Or you could run a pop script periodically on your desktop machine, and +just use ange-ftp or NFS to get to your mailbox. I used to do this all +the time back at IU. +@end quotation + +@node Q4.0.9, Q4.0.10, Q4.0.8, Subsystems +@unnumberedsubsec Q4.0.9: rmail or VM gets an error incorporating new mail. + +Quoting the XEmacs PROBLEMS file: + +@quotation +rmail and VM get new mail from @file{/usr/spool/mail/$USER} using a +program called @code{movemail}. This program interlocks with +@code{/bin/mail} using the protocol defined by @code{/bin/mail}. + +There are two different protocols in general use. One of them uses the +@code{flock} system call. The other involves creating a lock file; +@code{movemail} must be able to write in @file{/usr/spool/mail} in order +to do this. You control which one is used by defining, or not defining, +the macro @code{MAIL_USE_FLOCK} in @file{config.h} or the m- or s- file +it includes. + +@strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR +SYSTEM, YOU CAN LOSE MAIL!} + +If your system uses the lock file protocol, and fascist restrictions +prevent ordinary users from writing the lock files in +@file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a +suitable group such as @samp{mail}. You can use these commands (as +root): + +@example +chgrp mail movemail +chmod 2755 movemail +@end example + +If your system uses the lock file protocol, and fascist restrictions +prevent ordinary users from writing the lock files in +@file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a +suitable group such as @code{mail}. To do this, use the following +commands (as root) after doing the make install. + +@example +chgrp mail movemail +chmod 2755 movemail +@end example + +Installation normally copies movemail from the build directory to an +installation directory which is usually under @file{/usr/local/lib}. +The installed copy of @code{movemail} is usually in the directory +@file{/usr/local/lib/emacs/VERSION/TARGET}. You must change the group +and mode of the installed copy; changing the group and mode of the build +directory copy is ineffective. +@end quotation + +@node Q4.0.10, Q4.0.11, Q4.0.9, Subsystems +@unnumberedsubsec Q4.0.10: How do I make VM stay in a single frame? + +John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes: + +@quotation +@lisp + ; Don't use multiple frames +(setq vm-frame-per-composition nil) +(setq vm-frame-per-folder nil) +(setq vm-frame-per-edit nil) +(setq vm-frame-per-summary nil) +@end lisp +@end quotation + +@node Q4.0.11, Q4.0.12, Q4.0.10, Subsystems +@unnumberedsubsec Q4.0.11: How do I make VM or mh-e display graphical smilies? +@c Changed June +For mh-e use the following: + +@lisp +(add-hook 'mh-show-mode-hook '(lambda () + (smiley-region (point-min) + (point-max)))) +@end lisp + +@email{bill@@carpenter.ORG, WJCarpenter} writes: +For VM use the following: +@lisp + (autoload 'smiley-region "smiley" nil t) + (add-hook 'vm-select-message-hook + '(lambda () + (smiley-region (point-min) + (point-max)))) +@end lisp + +For tm use the following: +@lisp +(autoload 'smiley-buffer "smiley" nil t) +(add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer) +@end lisp + +@node Q4.0.12, Q4.1.1, Q4.0.11, Subsystems +@unnumberedsubsec Q4.0.12: Customization of VM not covered in the manual, or here. + +@email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes: + +@quotation +The meta-answer is to look into the file @file{vm-vars.el}, in the vm +directory of the lisp library. + +@file{vm-vars.el} contains, initializes and carefully describes, with +examples of usage, the plethora of user options that @emph{fully} +control VM's behavior. + +Enter vm-vars, @code{forward-search} for toolbar, find the variables +that control the toolbar placement, appearance, existence, copy to your +@file{.emacs} or @file{.vm} and modify according to the detailed +instructions. + +The above also applies to all the various features of VM: search for +some keywords, maybe the first you conjure isn't appropriate, find the +appropriate variables, copy and experiment. +@end quotation + +@node Q4.1.1, Q4.1.2, Q4.0.12, Subsystems +@unnumberedsec 4.1: Web browsing with W3 +@unnumberedsubsec Q4.1.1: What is W3? + +W3 is an advanced graphical browser written in Emacs lisp that runs on +XEmacs. It has full support for cascaded style sheets, and more... + +It has a home web page at +@uref{http://www.cs.indiana.edu/elisp/w3/docs.html}. + +@node Q4.1.2, Q4.1.3, Q4.1.1, Subsystems +@unnumberedsubsec Q4.1.2: How do I run W3 from behind a firewall? + +There is a long, well-written, detailed section in the W3 manual that +describes how to do this. Look in the section entitled "Firewalls". + +@node Q4.1.3, Q4.2.1, Q4.1.2, Subsystems +@unnumberedsubsec Q4.1.3: Is it true that W3 supports style sheets and tables? + +Yes, and much more. W3, as distributed with the latest XEmacs is a +full-featured web browser. + +@node Q4.2.1, Q4.2.2, Q4.1.3, Subsystems +@unnumberedsec 4.2: Reading Netnews and Mail with Gnus +@unnumberedsubsec Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh! + +The Gnus numbering issues are not meant for mere mortals to know them. +If you feel you @emph{must} enter the muddy waters of Gnus, visit the +excellent FAQ, maintained by Justin Sheehy, at: + +@example +@uref{http://www.ccs.neu.edu/software/contrib/gnus/} +@end example + +See also Gnus home page +@example +@uref{http://www.gnus.org/} +@end example + +@node Q4.2.2, Q4.2.3, Q4.2.1, Subsystems +@unnumberedsubsec Q4.2.2: This question intentionally left blank. + +Obsolete question, left blank to avoid renumbering. + +@node Q4.2.3, Q4.2.4, Q4.2.2, Subsystems +@unnumberedsubsec Q4.2.3: How do I make Gnus stay within a single frame? + +The toolbar code to start Gnus opens the new frame---and it's a feature +rather than a bug. If you don't like it, but would still like to click +on the seemly icon, use the following code: + +@lisp +(defun toolbar-news () + (gnus)) +@end lisp + +It will redefine the callback function of the icon to just call +@code{gnus}, without all the fancy frame stuff. + +@node Q4.2.4, Q4.3.1, Q4.2.3, Subsystems +@unnumberedsubsec Q4.2.4: How do I customize the From: line? + +How do I change the @code{From:} line? I have set gnus-user-from-line +to +@example +Gail Gurman <gail.gurman@@sybase.com> +@end example +@noindent , but XEmacs Gnus doesn't use +it. Instead it uses +@example +Gail Mara Gurman @email{gailg@@deall} +@end example +@noindent and then complains +that it's incorrect. Also, as you perhaps can see, my Message-ID is +screwy. How can I change that? + +@email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes: + +@quotation +Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or +@code{mail-host-address} to @samp{sybase.com}. +@end quotation + +@node Q4.3.1, Q4.3.2, Q4.2.4, Subsystems +@unnumberedsec 4.3: Other Mail & News +@unnumberedsubsec Q4.3.1: How can I read and/or compose MIME messages? +@c Changed June + +VM supports MIME natively. + +You probably want to use the Tools for MIME (tm). @xref{Q4.3.2}, for +details. + +@email{trey@@cs.berkeley.edu, Trey Jackson} has an Emacs & MIME web page at +@iftex +@* +@end iftex +@uref{http://bmrc.berkeley.edu/~trey/emacs/mime.html}. + + +Another possibility is RMIME. You may find RMIME at +@iftex +@* +@end iftex +@uref{http://www.cinti.net/~rmoody/rmime/index.html}. + + +@node Q4.3.2, Q4.3.3, Q4.3.1, Subsystems +@unnumberedsubsec Q4.3.2: What is TM and where do I get it? + +TM stands for @dfn{Tools for MIME} and not Tiny MIME. TM integrates +with all major XEmacs packages like Gnus (all flavors), VM, MH-E, and +mailcrypt. It provides totally transparent and trouble-free MIME +support. When appropriate a message will be decoded in place in an +XEmacs buffer. + +TM now comes as a package with XEmacs 19.16 and XEmacs 20.2. + +TM was written by @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} and +@email{shuhei-k@@jaist.ac.jp, KOBAYASHI +Shuhei}. + +It is based on the work of @email{umerin@@mse.kyutech.ac.jp, UMEDA +Masanobu}, the original writer of GNUS. + +The following information is from the @file{README}: + +@dfn{tm} is a MIME package for GNU Emacs. +tm has following functions: + +@itemize @bullet +@item MIME style multilingual header. +@item MIME message viewer (mime/viewer-mode). +@item MIME message composer (mime/editor-mode). +@item MIME extenders for mh-e, GNUS, RMAIL and VM. +@end itemize + +tm is available from following anonymous ftp sites: +@itemize @bullet +@item @uref{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/mime/} (Japan). +@item @uref{ftp://ftp.nis.co.jp/pub/gnu/emacs-lisp/tm/} (Japan). +@c The host above is unknown. + +@item @uref{ftp://ftp.nisiq.net/pub/gnu/emacs-lisp/tm/} (US). +@item @uref{ftp://ftp.miranova.com/pub/gnus/jaist.ac.jp/} (US). +@item @uref{ftp://ftp.unicamp.br/pub/mail/mime/tm/} (Brasil). +@item @uref{ftp://ftp.th-darmstadt.de/pub/editors/GNU-Emacs/lisp/mime/} (Germany). +@item @uref{ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/} (Germany). +@end itemize + +Don't let the installation procedure & instructions stop you from trying +this package out---it's much simpler than it looks, and once installed, +trivial to use. + +@node Q4.3.3, Q4.3.4, Q4.3.2, Subsystems +@unnumberedsubsec Q4.3.3: Why isn't this @code{movemail} program working? + +Ben Wing @email{ben@@xemacs.org} writes: + +@quotation +It wasn't chown'ed/chmod'd correctly. +@end quotation + +@node Q4.3.4, Q4.3.5, Q4.3.3, Subsystems +@unnumberedsubsec Q4.3.4: Movemail is also distributed by Netscape? Can that cause problems? + +@email{steve@@xemacs.org, Steve Baur} writes: + +@quotation +Yes. Always use the movemail installed with your XEmacs. Failure to do +so can result in lost mail. +@end quotation + +Please refer to @email{jwz@@jwz.org, Jamie Zawinski's} notes at +@iftex +@* +@end iftex +@uref{http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/movemail.html}. +In particular, this document will show you how to make Netscape use the +version of movemail configured for your system by the person who built +XEmacs. + +@node Q4.3.5, Q4.4.1, Q4.3.4, Subsystems +@unnumberedsubsec Q4.3.5: Where do I find pstogif (required by tm)? + +pstogif is part of the latex2html package. + +@email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: + +latex2html is best found at the CTAN hosts and their mirrors +in +@iftex +@* +@end iftex +@file{tex-archive/support/latex2html}. + +CTAN hosts are: + +@itemize @bullet +@item @uref{ftp://ftp.tex.ac.uk/tex-archive/support/latex2html/}. +@item @uref{ftp://ftp.dante.de/tex-archive/support/latex2html/}. +@end itemize + +There is a good mirror at ftp.cdrom.com; +@iftex +@* +@end iftex +@uref{ftp://ftp.cdrom.com/pub/tex/ctan/support/latex2html/}. + +@node Q4.4.1, Q4.4.2, Q4.3.5, Subsystems +@unnumberedsec 4.4: Sparcworks, EOS, and WorkShop +@unnumberedsubsec Q4.4.1: What is SPARCworks, EOS, and WorkShop? + +@email{turner@@lanl.gov, John Turner} writes: + +@quotation +SPARCworks is SunSoft's development environment, comprising compilers +(C, C++, FORTRAN 77, Fortran 90, Ada, and Pascal), a debugger, and other +tools such as TeamWare (for configuration management), MakeTool, etc. +@end quotation + +See @uref{http://www.sun.com/software/Developer-products/} +for more info. + +EOS stands for "Era on SPARCworks", but I don't know what Era stands +for. + +EOS is the integration of XEmacs with the SPARCworks debugger. It +allows one to use an XEmacs frame to view code (complete with +fontification, etc.), set breakpoints, print variables, etc., while +using the SPARCworks debugger. It works very well and I use it all the +time. + +@email{cthomp@@xemacs.org, Chuck Thompson} writes: + +@quotation +Era stood for "Emacs Rewritten Again". It was what we were calling the +modified version of Lucid Emacs for Sun when I was dragged, er, allowed +to work on this wonderful editor. +@end quotation + +@email{martin@@xemacs.org, Martin Buchholz} writes: + +@quotation +EOS is being replaced with a new graphical development environment +called Sun WorkShop, which is currently (07/96) in Alpha Test. For more +details, check out +@iftex +@* +@end iftex +@uref{http://www.sun.com/software/Products/Developer-products/programs.html}. +@end quotation + +@node Q4.4.2, Q4.5.1, Q4.4.1, Subsystems +@unnumberedsubsec Q4.4.2: How do I start the Sun Workshop support in XEmacs 21? + +Add the switch ---with-workshop to the configure command when building +XEmacs and put the following in one of your startup files +(e.g. site-start.el or .emacs): + +@lisp +(when (featurep 'tooltalk) + (load "tooltalk-macros") + (load "tooltalk-util") + (load "tooltalk-init")) +(when (featurep 'sparcworks) + (load "sunpro-init") + (load "ring") + (load "comint") + (load "annotations") + (sunpro-startup)) +@end lisp + +If you are not using the latest Workshop (5.0) you have to apply the +following patch: + +@format +--- /opt/SUNWspro/lib/eserve.el.ORIG Fri May 14 15:23:26 1999 ++++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999 +@@@@ -42,7 +42,7 @@@@ + (defvar running-xemacs nil "t if we're running XEmacs") + (defvar running-emacs nil "t if we're running GNU Emacs 19") + +-(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version) ++(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version) + (setq running-xemacs t) + (setq running-emacs t)) +@end format + + + +@node Q4.5.1, Q4.6.1, Q4.4.2, Subsystems +@unnumberedsec 4.5: Energize +@unnumberedsubsec Q4.5.1: What is/was Energize? + +@email{gray@@meteor.harlequin.com, David N Gray} writes: +@quotation +The files in @file{lisp/energize} are to enable Emacs to interface with +the "Energize Programming System", a C and C++ development environment, +which was a product of Lucid, Inc. Tragically, Lucid went out of +business in 1994, so although Energize is still a great system, if you +don't already have it, there isn't any way to get it now. (Unless you +happen to be in Japan; INS Engineering may still be selling it there. +Tartan bought the rights to sell it in the rest of the world, but never +did so.) +@end quotation + +@node Q4.6.1, Q4.7.1, Q4.5.1, Subsystems +@unnumberedsec 4.6: Infodock +@unnumberedsubsec Q4.6.1: What is Infodock? + +InfoDock is an integrated productivity toolset, mainly aimed at +technical people. It is developed and supported by InfoDock +Associates, a firm that offers custom support and development +for InfoDock, XEmacs and GNU Emacs. ( @uref{http://www.infodock.com}, +@email{info@@infodock.com}, +1 408 243 3300). + +InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of +the power of Emacs, but with an easier to use and more comprehensive +menu-based user interface. The bottom portion of this text describes +how it differs from XEmacs and GNU Emacs from the Free Software +Foundation. + +InfoDock is aimed at people who want a free, turn-key productivity +environment. Although InfoDock is customizable, it is not intended for +people who like basic versions of Emacs which need to be customized +extensively for local use; standard Emacs distributions are better for +such uses. InfoDock is for those people who want a complete, +pre-customized environment in one package, which they need not touch +more than once or twice a year to update to new revisions. + +InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX, +and Intel Linux systems. It is intended for use on a color display, +although most features will work on monochrome monitors. Simply unpack +InfoDock according to the instructions in the ID-INSTALL file and you +are ready to run. + +The InfoDock Manual is concise, yet sufficient as a user guide for users +who have never used an Emacs-type editor before. For users who are +already familiar with Emacs, it supplements the information in the GNU +Emacs Manual. + +InfoDock menus are much more extensive and more mature than standard +Emacs menus. Each menu offers a @samp{Manual} item which displays +documentation associated with the menu's functions. + +@noindent +Four types of menubars are provided: +@enumerate +@item +An extensive menubar providing access to global InfoDock commands. +@item +Mode-specific menubars tailored to the current major mode. +@item +A simple menubar for basic editing to help novices get started with InfoDock. +@item +The standard XEmacs menubar. +@end enumerate + +Most modes also include mode-specific popup menus. Additionally, region and +rectangle popup menus are included. + +@samp{Hyperbole}, the everyday information manager, is a core part of +InfoDock. This provides context-sensitive mouse keys, a rolodex-type +contact manager, programmable hypertext buttons, and an autonumbered +outliner with embedded hyperlink anchors. + +The @samp{OO-Browser}, a multi-language object-oriented code browser, is a +standard part of InfoDock. + +InfoDock saves a more extensive set of user options than other Emacs +versions. + +InfoDock inserts a useful file header in many file types, showing the +author, summary, and last modification time of each file. A summary +program can then be used to summarize all of the files in a directory, +for easy MANIFEST file creation. + +Your working set of buffers is automatically saved and restored (if you +answer yes to a prompt) between InfoDock sessions. + +Refined color choices for code highlighting are provided for both dark and +light background display frames. + +The @kbd{C-z} key prefix performs frame-based commands which parallel the +@kbd{C-x} key prefix for window-based commands. + +The Smart Menu system is included for producing command menus on dumb +terminals. + +Lisp libraries are better categorized according to function. + +Extensions and improvements to many areas of Emacs are included, such as: +paragraph filling, mail reading with Rmail, shell handling, outlining, code +highlighting and browsing, and man page browsing. + +InfoDock questions, answers and discussion should go to the mail list +@iftex +@* +@end iftex +@email{infodock@@infodock.com}. Use +@email{infodock-request@@infodock.com} to be added or removed from the +list. Always include your InfoDock version number when sending help +requests. + +InfoDock is available across the Internet via anonymous FTP. To get +it, first move to a directory into which you want the InfoDock archive +files placed. We will call this <DIST-DIR>. + +@example + cd <DIST-DIR> +@end example + +Ftp to ftp.xemacs.org (Internet Host ID = 128.174.252.16): + +@example + prompt> ftp ftp.xemacs.org +@end example + +Login as @samp{anonymous} with your own <user-id>@@<site-name> as a password. + +@example + Name (ftp.xemacs.org): anonymous + 331 Guest login ok, send your complete e-mail address as password. + Password: -<your-user-id>@@<your-domain> + 230 Guest login ok, access restrictions apply. +@end example + +Move to the location of the InfoDock archives: + +@example + ftp> cd pub/infodock +@end example + +Set your transfer mode to binary: + +@example + ftp> bin + 200 Type set to I. +@end example + +Turn off prompting: + +@example + ftp> prompt + Interactive mode off. +@end example + +Retrieve the InfoDock archives that you want, either by using a +@samp{get <file>} for each file you want or by using the following to +get a complete distribution, including all binaries: + +@example + ftp> mget ID-INSTALL + ftp> mget id-* +@end example + +Close the FTP connection: + +@example + ftp> quit + 221 Goodbye. +@end example + +Read the @file{ID-INSTALL} file which you just retrieved for +step-by-step installation instructions. + +@node Q4.7.1, Q4.7.2, Q4.6.1, Subsystems +@unnumberedsec 4.7: Other Unbundled Packages +@unnumberedsubsec Q4.7.1: What is AUC TeX? Where do you get it? + +AUC TeX is a package written by @email{abraham@@dina.kvl.dk, Per Abrahamsen}. +Starting with XEmacs 19.16, AUC TeX is bundled with XEmacs. The +following information is from the @file{README} and website. + +AUC TeX is an extensible package that supports writing and formatting +TeX files for most variants of GNU Emacs. Many different macro packages +are supported, including AMS TeX, LaTeX, and TeXinfo. + +The most recent version is always available by ftp at +@iftex +@* +@end iftex +@uref{ftp://sunsite.auc.dk/packages/auctex/auctex.tar.gz}. + +In case you don't have access to anonymous ftp, you can get it by an +email request to @email{ftpmail@@decwrl.dec.com}. + +WWW users may want to check out the AUC TeX page at +@iftex +@* +@end iftex +@uref{http://sunsite.auc.dk/auctex/}. + +@node Q4.7.2, Q4.7.3, Q4.7.1, Subsystems +@unnumberedsubsec Q4.7.2: Are there any Emacs Lisp Spreadsheets? + +Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at +@iftex +@* +@end iftex +@uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}. + +@node Q4.7.3, Q4.7.4, Q4.7.2, Subsystems +@unnumberedsubsec Q4.7.3: Byte compiling AUC TeX on XEmacs 19.14. + +@email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} writes: + +@quotation +When byte compiling auctex-9.4g, you must use the command: + +@example +xemacs -batch -l lpath.el +@end example +@end quotation + +@node Q4.7.4, Q4.7.5, Q4.7.3, Subsystems +@unnumberedsubsec Q4.7.4: Problems installing AUC TeX. + +@email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: + +@quotation +AUC TeX works fine on both stock Emacs and XEmacs has been doing so for +a very very long time. This is mostly due to the work of +@email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu} +package. Which leads to what is probably the problem... +@end quotation + +Most problems with AUC TeX are one of two things: + +@itemize @bullet +@item +The TeX-lisp-directory in @file{tex-site.el} and the makefile don't +match. + +Fix: make sure you configure AUC TeX properly @strong{before} installing. + +@item +You have an old version of easymenu.el in your path. + +Fix: use @code{locate-library} and remove old versions to make sure it +@strong{only} finds the one that came with XEmacs. +@end itemize + + +@node Q4.7.5, Q4.7.6, Q4.7.4, Subsystems +@unnumberedsubsec Q4.7.5: Is there a reason for an Emacs package not to be included in XEmacs? + +The reason for an Emacs package not to be included in XEmacs is +usually one or more of the following: + +@enumerate +@item +The package has not been ported to XEmacs. This will typically happen +when it uses GNU-Emacs-specific features, which make it fail under +XEmacs. + +Porting a package to XEmacs can range from a trivial amount of change to +a partial or full rewrite. Fortunately, the authors of modern packages +usually choose to support both Emacsen themselves. + +@item +The package has been decided not to be appropriate for XEmacs. It may +have an equivalent or better replacement within XEmacs, in which case +the developers may choose not to burden themselves with supporting an +additional package. + +Each package bundled with XEmacs means more work for the maintainers, +whether they want it or not. If you are ready to take over the +maintenance responsibilities for the package you port, be sure to say +so -- we will more likely include it. + +@item +The package simply hasn't been noted by the XEmacs development. If +that's the case, the messages like yours are very useful for attracting +our attention. + +@item +The package was noted by the developers, but they simply haven't yet +gotten around to including/porting it. Wait for the next release or, +even better, offer your help. It will be gladly accepted and +appreciated. +@end enumerate + +@node Q4.7.6, , Q4.7.5, Subsystems +@unnumberedsubsec Q4.7.5: Is there a MatLab mode? +@c New +Is there any way I can get syntax highlighting for MatLab .m files? +Can I "teach" emacs what words are MatLab commands, comments, etc. ? + +@email{elsner@@mathematik.tu-chemnitz.de, Ulrich Elsner} writes: +@quotation +One way to do this (and much more) is by using the +@iftex +@* +@end iftex +@uref{ftp://ftp.mathworks.com/pub/contrib/v5/tools/matlab.el, matlab mode}. + +Instructions on how to install this mode are included in this file. +@end quotation + + +@node Miscellaneous, Current Events, Subsystems, Top +@unnumbered 5 The Miscellaneous Stuff + +This is part 5 of the XEmacs Frequently Asked Questions list. This +section is devoted to anything that doesn't fit neatly into the other +sections. + +@menu +Major & Minor Modes: +* Q5.0.1:: How can I do source code highlighting using font-lock? +* Q5.0.2:: I do not like cc-mode. How do I use the old c-mode? +* Q5.0.3:: How do I get @samp{More} Syntax Highlighting on by default? +* Q5.0.4:: How can I enable auto-indent? +* Q5.0.5:: How can I get XEmacs to come up in text/auto-fill mode by default? +* Q5.0.6:: How do I start up a second shell buffer? +* Q5.0.7:: Telnet from shell filters too much. +* Q5.0.8:: Why does edt emulation not work? +* Q5.0.9:: How can I emulate VI and use it as my default mode? +* Q5.0.10:: [This question intentionally left blank] +* Q5.0.11:: Filladapt doesn't work in 19.15? +* Q5.0.12:: How do I disable gnuserv from opening a new frame? +* Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client? +* Q5.0.14:: Strange things are happening in Shell Mode. +* Q5.0.15:: Where do I get the latest CC Mode? +* Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off? +* Q5.0.17:: How can I get two instances of info? +* Q5.0.18:: I upgraded to XEmacs 19.14 and gnuserv stopped working +* Q5.0.19:: Is there something better than LaTeX mode? +* Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? + +Emacs Lisp Programming Techniques: +* Q5.1.1:: The difference in key sequences between XEmacs and GNU Emacs? +* Q5.1.2:: Can I generate "fake" keyboard events? +* Q5.1.3:: Could you explain @code{read-kbd-macro} in more detail? +* Q5.1.4:: What is the performance hit of @code{let}? +* Q5.1.5:: What is the recommended use of @code{setq}? +* Q5.1.6:: What is the typical misuse of @code{setq}? +* Q5.1.7:: I like the the @code{do} form of cl, does it slow things down? +* Q5.1.8:: I like recursion, does it slow things down? +* Q5.1.9:: How do I put a glyph as annotation in a buffer? +* Q5.1.10:: @code{map-extents} won't traverse all of my extents! +* Q5.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time? + +Sound: +* Q5.2.1:: How do I turn off the sound? +* Q5.2.2:: How do I get funky sounds instead of a boring beep? +* Q5.2.3:: What's NAS, how do I get it? +* Q5.2.4:: Sunsite sounds don't play. + +Miscellaneous: +* Q5.3.1:: How do you make XEmacs indent CL if-clauses correctly? +* Q5.3.2:: Fontifying hangs when editing a postscript file. +* Q5.3.3:: How can I print WYSIWYG a font-locked buffer? +* Q5.3.4:: Getting @kbd{M-x lpr} to work with postscript printer. +* Q5.3.5:: How do I specify the paths that XEmacs uses for finding files? +* Q5.3.6:: [This question intentionally left blank] +* Q5.3.7:: Can I have the end of the buffer delimited in some way? +* Q5.3.8:: How do I insert today's date into a buffer? +* Q5.3.9:: Are only certain syntactic character classes available for abbrevs? +* Q5.3.10:: How can I get those oh-so-neat X-Face lines? +* Q5.3.11:: How do I add new Info directories? +* Q5.3.12:: What do I need to change to make printing work? +@end menu + +@node Q5.0.1, Q5.0.2, Miscellaneous, Miscellaneous +@unnumberedsec 5.0: Major & Minor Modes +@unnumberedsubsec Q5.0.1: How can I do source code highlighting using font-lock? + +For most modes, font-lock is already set up and just needs to be turned +on. This can be done by @kbd{M-x font-lock-mode}, or by having XEmacs +automatically start it by adding lines like: + +@lisp +(add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) +(add-hook 'dired-mode-hook 'turn-on-font-lock) +@end lisp + +to your @file{.emacs}. See the file @file{etc/sample.emacs} for more +examples. + +See also @code{Syntax Highlighting} from the @code{Options} menu. +Remember to save options. + +@node Q5.0.2, Q5.0.3, Q5.0.1, Miscellaneous +@unnumberedsubsec Q5.0.2: I do not like cc-mode. How do I use the old c-mode? + +Well, first off, consider if you really want to do this. cc-mode is +much more powerful than the old c-mode. If you're having trouble +getting your old offsets to work, try using @code{c-set-offset} instead. +You might also consider using the package @code{cc-compat}. + +But, if you still insist, add the following lines to your @file{.emacs}: + +@lisp +(fmakunbound 'c-mode) +(makunbound 'c-mode-map) +(fmakunbound 'c++-mode) +(makunbound 'c++-mode-map) +(makunbound 'c-style-alist) +(load-library "old-c-mode") +(load-library "old-c++-mode") +@end lisp + +This must be done before any other reference is made to either c-mode or +c++-mode. + +@node Q5.0.3, Q5.0.4, Q5.0.2, Miscellaneous +@unnumberedsubsec Q5.0.3: How do I get @samp{More} Syntax Highlighting on by default? + +Use the following code in your @file{.emacs}: + +@lisp +(setq-default font-lock-maximum-decoration t) +@end lisp + +In versions of XEmacs prior to 19.14, you had to use a kludgy solution +like this: + +@lisp +(setq c-font-lock-keywords c-font-lock-keywords-2 + c++-font-lock-keywords c++-font-lock-keywords-2 + lisp-font-lock-keywords lisp-font-lock-keywords-2) +@end lisp + +It will work for C, C++ and Lisp. + +See also @code{Syntax Highlighting} from the @code{Options} menu. +Remember to save options. + +@node Q5.0.4, Q5.0.5, Q5.0.3, Miscellaneous +@unnumberedsubsec Q5.0.4: How can I enable auto-indent? + +Put the following line in your @file{.emacs}: + +@lisp +(setq indent-line-function 'indent-relative-maybe) +@end lisp + +If you want to get fancy, try the @code{filladapt} package available +standard with XEmacs. Put this into your @file{.emacs}: + +@lisp +(require 'filladapt) +(add-hook 'text-mode-hook 'turn-on-filladapt-mode) +;;; and others ... +@end lisp + +You can customize filling and adaptive filling with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->->Editing->Fill->Fill...} +or type @kbd{M-x customize @key{RET} fill @key{RET}}. + +Note that well-behaving text-lookalike modes will run +@code{text-mode-hook} by default (e.g. that's what Message does). For +the nasty ones, you'll have to provide the @code{add-hook}s yourself. + +Please note that the @code{fa-extras} package is no longer useful. + +@node Q5.0.5, Q5.0.6, Q5.0.4, Miscellaneous +@unnumberedsubsec Q5.0.5: How can I get XEmacs to come up in text/auto-fill mode by default? + +Try the following lisp in your @file{.emacs}: + +@lisp +(setq default-major-mode 'text-mode) +(setq text-mode-hook 'turn-on-auto-fill) +@end lisp + +@strong{WARNING}: note that changing the value of +@code{default-major-mode} from @code{fundamental-mode} can break a large +amount of built-in code that expects newly created buffers to be in +@code{fundamental-mode}. (Changing from @code{fundamental-mode} to +@code{text-mode} might not wreak too much havoc, but changing to +something more exotic like a lisp-mode would break many Emacs packages). + +Note that Emacs by default starts up in buffer @code{*scratch*} in +@code{initial-major-mode}, which defaults to +@code{lisp-interaction-mode}. Thus adding the following form to your +Emacs init file will cause the initial @code{*scratch*} buffer to be put +into auto-fill'ed @code{text-mode}: + +@lisp +(setq initial-major-mode + (lambda () + (text-mode) + (turn-on-auto-fill))) +@end lisp + +Note that after your init file is loaded, if +@code{inhibit-startup-message} is @code{nil} (the default) and the +startup buffer is @code{*scratch*} then the startup message will be +inserted into @code{*scratch*}; it will be removed after a timeout by +erasing the entire @code{*scratch*} buffer. Keep in mind this default +usage of @code{*scratch*} if you desire any prior manipulation of +@code{*scratch*} from within your Emacs init file. In particular, +anything you insert into @code{*scratch*} from your init file will be +later erased. Also, if you change the mode of the @code{*scratch*} +buffer, be sure that this will not interfere with possible later +insertion of the startup message (e.g. if you put @code{*scratch*} into +a nonstandard mode that has automatic font lock rules, then the startup +message might get fontified in a strange foreign manner, e.g. as code in +some programming language). + +@node Q5.0.6, Q5.0.7, Q5.0.5, Miscellaneous +@unnumberedsubsec Q5.0.6: How do I start up a second shell buffer? + +In the @code{*shell*} buffer: + +@lisp +M-x rename-buffer @key{RET} *shell-1* @key{RET} +M-x shell RET +@end lisp + +This will then start a second shell. The key is that no buffer named +@samp{*shell*} can exist. It might be preferable to use @kbd{M-x +rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x +rename-buffer}. + +Alternately, you can set the variable @code{shell-multiple-shells}. +If the value of this variable is non-nil, each time shell mode is invoked, +a new shell is made + +@node Q5.0.7, Q5.0.8, Q5.0.6, Miscellaneous +@unnumberedsubsec Q5.0.7: Telnet from shell filters too much + +I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke +and use a telnet session within it. Everything works fine except that +now all @samp{^M}'s are filtered out by Emacs. Fixes? + +Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather +than doing rsh or telnet within the local shell buffer. Starting with +XEmacs-20.3 you can also use @kbd{M-x ssh} to open secure remote session +if you have @code{ssh} installed. + +@node Q5.0.8, Q5.0.9, Q5.0.7, Miscellaneous +@unnumberedsubsec Q5.0.8: Why does edt emulation not work? + +We don't know, but you can use tpu-edt emulation instead, which works +fine and is a little fancier than the standard edt emulation. To do +this, add the following line to your @file{.emacs}: + +@lisp +(tpu-edt) +@end lisp + +If you don't want it to replace @kbd{C-h} with an edt-style help menu +add this as well: + +@lisp +(global-set-key [(control h)] 'help-for-help) +@end lisp + +@node Q5.0.9, Q5.0.10, Q5.0.8, Miscellaneous +@unnumberedsubsec Q5.0.9: How can I emulate VI and use it as my default mode? + +Our recommended VI emulator is viper. To make viper-mode the default, +add this to your @file{.emacs}: + +@lisp +(viper-mode) +@end lisp + +@email{kifer@@CS.SunySB.EDU, Michael Kifer} writes: + +@quotation +This should be added as close to the top of @file{.emacs} as you can get +it, otherwise some minor modes may not get viper-ized. +@end quotation + +@node Q5.0.10, Q5.0.11, Q5.0.9, Miscellaneous +@unnumberedsubsec Q5.0.10: [This question intentionally left blank] + +Obsolete question, left blank to avoid renumbering + +@node Q5.0.11, Q5.0.12, Q5.0.10, Miscellaneous +@unnumberedsubsec Q5.0.11: Filladapt doesn't work in 19.15 + +Filladapt 2.x is included in 19.15. In it filladapt is now a minor +mode and minor modes are traditionally off by default. The following +added to your @file{.emacs} will turn it on for all buffers: + +@lisp +(setq-default filladapt-mode t) +@end lisp + +Use @code{turn-on-filladapt-mode} to turn Filladapt on in particular +major modes, like this: + +@lisp +(add-hook 'text-mode-hook 'turn-on-filladapt-mode) +@end lisp + +@node Q5.0.12, Q5.0.13, Q5.0.11, Miscellaneous +@unnumberedsubsec Q5.0.12: How do I disable gnuserv from opening a new frame? + +If you set the @code{gnuserv-frame} variable to the frame that should be +used to display buffers that are pulled up, a new frame will not be +created. For example, you could put + +@lisp +(setq gnuserv-frame (selected-frame)) +@end lisp + +early on in your @file{.emacs}, to ensure that the first frame created +is the one used for your gnuserv buffers. + +Starting in 19.15, there is an option to set the gnuserv target to +the current frame. See +@code{Options->"Other Window" Location->Make current frame gnuserv target} + +Starting with XEmacs-20.3 you can also change this with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->Environment->Gnuserv->Gnuserv Frame...} or type +@kbd{M-x customize @key{RET} gnuserv @key{RET}}. + + +@node Q5.0.13, Q5.0.14, Q5.0.12, Miscellaneous +@unnumberedsubsec Q5.0.13: How do I start gnuserv so that each subsequent XEmacs is a client? + +Put the following in your @file{.emacs} file to start the server: + +@lisp +(gnuserv-start) +@end lisp + +Start your first XEmacs as usual. After that, you can do: + +@example +gnuclient randomfilename +@end example + +from the command line to get your existing XEmacs process to open a new +frame and visit randomfilename in that window. When you're done editing +randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the +frame. + +See also man page of gnuclient. + +@node Q5.0.14, Q5.0.15, Q5.0.13, Miscellaneous +@unnumberedsubsec Q5.0.14: Strange things are happening in Shell Mode. + +Sometimes (i.e. it's not repeatable, and I can't work out why it +happens) when I'm typing into shell mode, I hit return and only a +portion of the command is given to the shell, and a blank prompt is +returned. If I hit return again, the rest of the previous command is +given to the shell. + +@email{martin@@xemacs.org, Martin Buchholz} writes: + +@quotation +There is a known problem with interaction between @code{csh} and the +@code{filec} option and XEmacs. You should add the following to your +@file{.cshrc}: + +@example +if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec +@end example +@end quotation + +@node Q5.0.15, Q5.0.16, Q5.0.14, Miscellaneous +@unnumberedsubsec Q5.0.15: Where do I get the latest CC Mode? + +@email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} writes: + +@quotation +This can be had from @uref{http://www.python.org/ftp/emacs/}. +@end quotation + +@node Q5.0.16, Q5.0.17, Q5.0.15, Miscellaneous +@unnumberedsubsec Q5.0.16: I find auto-show-mode disconcerting. How do I turn it off? + +@code{auto-show-mode} controls whether or not a horizontal scrollbar +magically appears when a line is too long to be displayed. This is +enabled by default. To turn it off, put the following in your +@file{.emacs}: + +@lisp +(setq auto-show-mode nil) +(setq-default auto-show-mode nil) +@end lisp + +@node Q5.0.17, Q5.0.18, Q5.0.16, Miscellaneous +@unnumberedsubsec Q5.0.17: How can I get two instances of info? + +You can't. The @code{info} package does not provide for multiple info buffers. + +@node Q5.0.18, Q5.0.19, Q5.0.17, Miscellaneous +@unnumberedsubsec Q5.0.18: I upgraded to XEmacs 19.14 and gnuserv stopped working. + +@email{daku@@nortel.ca, Mark Daku} writes: + +@quotation +It turns out I was using an older version of gnuserv. The installation +didn't put the binary into the public bin directory. It put it in +@iftex +@* +@end iftex +@file{lib/xemacs-19.14/hppa1.1-hp-hpux9.05/gnuserv}. Shouldn't it have +been put in @file{bin/hppa1.1-hp-hpux9.0}? +@end quotation + +@node Q5.0.19, Q5.0.20, Q5.0.18, Miscellaneous +@unnumberedsubsec Q5.0.19: Is there something better than LaTeX mode? + +@email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes: + +@quotation +The standard TeX modes leave much to be desired, and are somewhat +leniently maintained. Serious TeX users use AUC TeX (@pxref{Q4.7.1}). +@end quotation + +@node Q5.0.20, Q5.1.1, Q5.0.19, Miscellaneous +@unnumberedsubsec Q5.0.20: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? + +@email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: +@quotation +Here is one of the solutions, we have this in a script called +@file{etc/editclient.sh}. +@example + #!/bin/sh + if gnuclient -batch -eval t >/dev/null 2>&1 + then + exec gnuclient $@{1+"$@@"@} + else + xemacs -unmapped -f gnuserv-start & + until gnuclient -batch -eval t >/dev/null 2>&1 + do + sleep 1 + done + exec gnuclient $@{1+"$@@"@} + fi +@end example + +Note that there is a known problem when running XEmacs and 'gnuclient +-nw' on the same TTY. +@end quotation + +@node Q5.1.1, Q5.1.2, Q5.0.20, Miscellaneous +@unnumberedsec 5.1: Emacs Lisp Programming Techniques +@unnumberedsubsec Q5.1.1: What is the difference in key sequences between XEmacs and GNU Emacs? + +@email{clerik@@naggum.no, Erik Naggum} writes; + +@quotation +Emacs has a legacy of keyboards that produced characters with modifier +bits, and therefore map a variety of input systems into this scheme even +today. XEmacs is instead optimized for X events. This causes an +incompatibility in the way key sequences are specified, but both Emacs +and XEmacs will accept a key sequence as a vector of lists of modifiers +that ends with a key, e.g., to bind @kbd{M-C-a}, you would say +@code{[(meta control a)]} in both Emacsen. XEmacs has an abbreviated +form for a single key, just (meta control a). Emacs has an abbreviated +form for the Control and the Meta modifiers to string-characters (the +ASCII characters), as in @samp{\M-\C-a}. XEmacs users need to be aware +that the abbreviated form works only for one-character key sequences, +while Emacs users need to be aware that the string-character is rather +limited. Specifically, the string-character can accommodate only 256 +different values, 128 of which have the Meta modifier and 128 of which +have not. In each of these blocks, only 32 characters have the Control +modifier. Whereas @code{[(meta control A)]} differs from @code{[(meta +control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A} +do not. Programmers are advised to use the full common form, both +because it is more readable and less error-prone, and because it is +supported by both Emacsen. +@end quotation + +Another (even safer) way to be sure of the key-sequences is to use the +@code{read-kbd-macro} function, which takes a string like @samp{C-c +<up>}, and converts it to the internal key representation of the Emacs +you use. The function is available both on XEmacs and GNU Emacs. + +@node Q5.1.2, Q5.1.3, Q5.1.1, Miscellaneous +@unnumberedsubsec Q5.1.2: Can I generate "fake" keyboard events? + +I wonder if there is an interactive function that can generate +@dfn{fake} keyboard events. This way, I could simply map them inside +XEmacs. + +This seems to work: + +@lisp +(defun cg--generate-char-event (ch) + "Generate an event, as if ch has been typed" + (dispatch-event (character-to-event ch))) + +;; Backspace and Delete stuff +(global-set-key [backspace] + (lambda () (interactive) (cg--generate-char-event 127))) +(global-set-key [unknown_keysym_0x4] + (lambda () (interactive) (cg--generate-char-event 4))) +@end lisp + +@node Q5.1.3, Q5.1.4, Q5.1.2, Miscellaneous +@unnumberedsubsec Q5.1.3: Could you explain @code{read-kbd-macro} in more detail? + +The @code{read-kbd-macro} function returns the internal Emacs +representation of a human-readable string (which is its argument). +Thus: + +@lisp +(read-kbd-macro "C-c C-a") +@result{} [(control ?c) (control ?a)] + +(read-kbd-macro "C-c C-. <up>") +@result{} [(control ?c) (control ?.) up] +@end lisp + +In GNU Emacs the same forms will be evaluated to what GNU Emacs +understands internally---the sequences @code{"\C-x\C-c"} and @code{[3 +67108910 up]}, respectively. + +The exact @dfn{human-readable} syntax is defined in the docstring of +@code{edmacro-mode}. I'll repeat it here, for completeness. + +@quotation +Format of keyboard macros during editing: + +Text is divided into @dfn{words} separated by whitespace. Except for +the words described below, the characters of each word go directly as +characters of the macro. The whitespace that separates words is +ignored. Whitespace in the macro must be written explicitly, as in +@kbd{foo @key{SPC} bar @key{RET}}. + +@itemize @bullet +@item +The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD}, +@kbd{ESC}, and @kbd{NUL} represent special control characters. The +words must be written in uppercase. + +@item +A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or +@code{<f1>}, represents a function key. (Note that in the standard +configuration, the function key @code{<return>} and the control key +@key{RET} are synonymous.) You can use angle brackets on the words +@key{RET}, @key{SPC}, etc., but they are not required there. + +@item +Keys can be written by their @sc{ascii} code, using a backslash followed +by up to six octal digits. This is the only way to represent keys with +codes above \377. + +@item +One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-} +(shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may +precede a character or key notation. For function keys, the prefixes +may go inside or outside of the brackets: @code{C-<down>} @equiv{} +@code{<C-down>}. The prefixes may be written in any order: @kbd{M-C-x} +@equiv{} @kbd{C-M-x}. + +Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except +that the Meta prefix is allowed on a sequence of digits and optional +minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}. + +@item +The @code{^} notation for control characters also works: @kbd{^M} +@equiv{} @kbd{C-m}. + +@item +Double angle brackets enclose command names: @code{<<next-line>>} is +shorthand for @kbd{M-x next-line @key{RET}}. + +@item +Finally, @code{REM} or @code{;;} causes the rest of the line to be +ignored as a comment. +@end itemize + +Any word may be prefixed by a multiplier in the form of a decimal number +and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>}, +and @code{10*foo} @equiv{} +@iftex +@* +@end iftex +@code{foofoofoofoofoofoofoofoofoofoo}. + +Multiple text keys can normally be strung together to form a word, but +you may need to add whitespace if the word would look like one of the +above notations: @code{; ; ;} is a keyboard macro with three semicolons, +but @code{;;;} is a comment. Likewise, @code{\ 1 2 3} is four keys but +@code{\123} is a single key written in octal, and @code{< right >} is +seven keys but @code{<right>} is a single function key. When in doubt, +use whitespace. +@end quotation + +@node Q5.1.4, Q5.1.5, Q5.1.3, Miscellaneous +@unnumberedsubsec Q5.1.4: What is the performance hit of @code{let}? + +In most cases, not noticeable. Besides, there's no avoiding +@code{let}---you have to bind your local variables, after all. Some +pose a question whether to nest @code{let}s, or use one @code{let} per +function. I think because of clarity and maintenance (and possible +future implementation), @code{let}-s should be used (nested) in a way to +provide the clearest code. + +@node Q5.1.5, Q5.1.6, Q5.1.4, Miscellaneous +@unnumberedsubsec Q5.1.5: What is the recommended use of @code{setq}? + +@itemize @bullet +@item Global variables + +You will typically @code{defvar} your global variable to a default +value, and use @code{setq} to set it later. + +It is never a good practice to @code{setq} user variables (like +@code{case-fold-search}, etc.), as it ignores the user's choice +unconditionally. Note that @code{defvar} doesn't change the value of a +variable if it was bound previously. If you wish to change a +user-variable temporarily, use @code{let}: + +@lisp +(let ((case-fold-search nil)) + ... ; code with searches that must be case-sensitive + ...) +@end lisp + +You will notice the user-variables by their docstrings beginning with an +asterisk (a convention). + +@item Local variables + +Bind them with @code{let}, which will unbind them (or restore their +previous value, if they were bound) after exiting from the @code{let} +form. Change the value of local variables with @code{setq} or whatever +you like (e.g. @code{incf}, @code{setf} and such). The @code{let} form +can even return one of its local variables. + +Typical usage: + +@lisp +;; iterate through the elements of the list returned by +;; `hairy-function-that-returns-list' +(let ((l (hairy-function-that-returns-list))) + (while l + ... do something with (car l) ... + (setq l (cdr l)))) +@end lisp + +Another typical usage includes building a value simply to work with it. + +@lisp +;; Build the mode keymap out of the key-translation-alist +(let ((inbox (file-truename (expand-file-name box))) + (i 0)) + ... code dealing with inbox ... + inbox) +@end lisp + +This piece of code uses the local variable @code{inbox}, which becomes +unbound (or regains old value) after exiting the form. The form also +returns the value of @code{inbox}, which can be reused, for instance: + +@lisp +(setq foo-processed-inbox + (let .....)) +@end lisp +@end itemize + +@node Q5.1.6, Q5.1.7, Q5.1.5, Miscellaneous +@unnumberedsubsec Q5.1.6: What is the typical misuse of @code{setq} ? + +A typical misuse is probably @code{setq}ing a variable that was meant to +be local. Such a variable will remain bound forever, never to be +garbage-collected. For example, the code doing: + +@lisp +(defun my-function (whatever) + (setq a nil) + ... build a large list ... + ... and exit ...) +@end lisp + +does a bad thing, as @code{a} will keep consuming memory, never to be +unbound. The correct thing is to do it like this: + +@lisp +(defun my-function (whatever) + (let (a) ; default initialization is to nil + ... build a large list ... + ... and exit, unbinding `a' in the process ...) +@end lisp + +Not only is this prettier syntactically, but it makes it possible for +Emacs to garbage-collect the objects which @code{a} used to reference. + +Note that even global variables should not be @code{setq}ed without +@code{defvar}ing them first, because the byte-compiler issues warnings. +The reason for the warning is the following: + +@lisp +(defun flurgoze nil) ; ok, global internal variable +... + +(setq flurghoze t) ; ops! a typo, but semantically correct. + ; however, the byte-compiler warns. + +While compiling toplevel forms: +** assignment to free variable flurghoze +@end lisp + +@node Q5.1.7, Q5.1.8, Q5.1.6, Miscellaneous +@unnumberedsubsec Q5.1.7: I like the the @code{do} form of cl, does it slow things down? + +It shouldn't. Here is what Dave Gillespie has to say about cl.el +performance: + +@quotation +Many of the advanced features of this package, such as @code{defun*}, +@code{loop}, and @code{setf}, are implemented as Lisp macros. In +byte-compiled code, these complex notations will be expanded into +equivalent Lisp code which is simple and efficient. For example, the +forms + +@lisp +(incf i n) +(push x (car p)) +@end lisp + +are expanded at compile-time to the Lisp forms + +@lisp +(setq i (+ i n)) +(setcar p (cons x (car p))) +@end lisp + +which are the most efficient ways of doing these respective operations +in Lisp. Thus, there is no performance penalty for using the more +readable @code{incf} and @code{push} forms in your compiled code. + +@emph{Interpreted} code, on the other hand, must expand these macros +every time they are executed. For this reason it is strongly +recommended that code making heavy use of macros be compiled. (The +features labelled @dfn{Special Form} instead of @dfn{Function} in this +manual are macros.) A loop using @code{incf} a hundred times will +execute considerably faster if compiled, and will also garbage-collect +less because the macro expansion will not have to be generated, used, +and thrown away a hundred times. + +You can find out how a macro expands by using the @code{cl-prettyexpand} +function. +@end quotation + +@node Q5.1.8, Q5.1.9, Q5.1.7, Miscellaneous +@unnumberedsubsec Q5.1.8: I like recursion, does it slow things down? + +Yes. Emacs byte-compiler cannot do much to optimize recursion. But +think well whether this is a real concern in Emacs. Much of the Emacs +slowness comes from internal mechanisms such as redisplay, or from the +fact that it is an interpreter. + +Please try not to make your code much uglier to gain a very small speed +gain. It's not usually worth it. + +@node Q5.1.9, Q5.1.10, Q5.1.8, Miscellaneous +@unnumberedsubsec Q5.1.9: How do I put a glyph as annotation in a buffer? + +Here is a solution that will insert the glyph annotation at the +beginning of buffer: + +@lisp +(make-annotation (make-glyph '([FORMAT :file FILE] + [string :data "fallback-text"])) + (point-min) + 'text + (current-buffer)) +@end lisp + +Replace @samp{FORMAT} with an unquoted symbol representing the format of +the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.) +Instead of @samp{FILE}, use the image file name +(e.g. +@iftex +@* +@end iftex +@file{/usr/local/lib/xemacs-20.2/etc/recycle.xpm}). + +You can turn this to a function (that optionally prompts you for a file +name), and inserts the glyph at @code{(point)} instead of +@code{(point-min)}. + +@node Q5.1.10, Q5.1.11, Q5.1.9, Miscellaneous +@unnumberedsubsec Q5.1.10: @code{map-extents} won't traverse all of my extents! + +I tried to use @code{map-extents} to do an operation on all the extents +in a region. However, it seems to quit after processing a random number +of extents. Is it buggy? + +No. The documentation of @code{map-extents} states that it will iterate +across the extents as long as @var{function} returns @code{nil}. +Unexperienced programmers often forget to return @code{nil} explicitly, +which results in buggy code. For instance, the following code is +supposed to delete all the extents in a buffer, and issue as many +@samp{fubar!} messages. + +@lisp +(map-extents (lambda (ext ignore) + (delete-extent ext) + (message "fubar!"))) +@end lisp + +Instead, it will delete only the first extent, and stop right there -- +because @code{message} will return a non-nil value. The correct code +is: + +@lisp +(map-extents (lambda (ext ignore) + (delete-extent ext) + (message "fubar!") + nil)) +@end lisp + +@node Q5.1.11, Q5.2.1, Q5.1.10, Miscellaneous +@unnumberedsubsec Q5.1.11: My elisp program is horribly slow. Is there +an easy way to find out where it spends time? +@c New + +z@email{hniksic@@xemacs.org, Hrvoje Niksic} writes: +@quotation +Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence}, press a key +(say @key{RET} in the Gnus Group buffer), and get the results using +@kbd{M-x profile-results}. It should give you an idea of where the time +is being spent. +@end quotation + +@node Q5.2.1, Q5.2.2, Q5.1.11, Miscellaneous +@unnumberedsubsec Q5.2.1: How do I turn off the sound? + +Add the following line to your @file{.emacs}: + +@lisp +(setq bell-volume 0) +(setq sound-alist nil) +@end lisp + +That will make your XEmacs totally silent -- even the default ding sound +(TTY beep on TTY-s) will be gone. + +Starting with XEmacs-20.2 you can also change these with Customize. +Select from the @code{Options} menu +@code{Customize->Emacs->Environment->Sound->Sound...} or type +@kbd{M-x customize @key{RET} sound @key{RET}}. + + +@node Q5.2.2, Q5.2.3, Q5.2.1, Miscellaneous +@unnumberedsubsec Q5.2.2: How do I get funky sounds instead of a boring beep? + +Make sure your XEmacs was compiled with sound support, and then put this +in your @file{.emacs}: + +@lisp +(load-default-sounds) +@end lisp + +The sound support in XEmacs 19.14 was greatly improved over previous +versions. + +@node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous +@unnumberedsubsec Q5.2.3: What's NAS, how do I get it? + +@xref{Q2.0.3}, for an explanation of the @dfn{Network Audio System}. + +@node Q5.2.4, Q5.3.1, Q5.2.3, Miscellaneous +@unnumberedsubsec Q5.2.4: Sunsite sounds don't play. + +I'm having some trouble with sounds I've downloaded from sunsite. They +play when I run them through @code{showaudio} or cat them directly to +@file{/dev/audio}, but XEmacs refuses to play them. + +@email{gutschk@@uni-muenster.de, Markus Gutschke} writes: + +@quotation +[Many of] These files have an (erroneous) 24byte header that tells about +the format that they have been recorded in. If you cat them to +@file{/dev/audio}, the header will be ignored and the default behavior +for /dev/audio will be used. This happens to be 8kHz uLaw. It is +probably possible to fix the header by piping through @code{sox} and +passing explicit parameters for specifying the sampling format; you then +need to perform a 'null' conversion from SunAudio to SunAudio. +@end quotation + +@node Q5.3.1, Q5.3.2, Q5.2.4, Miscellaneous +@unnumberedsec 5.3: Miscellaneous +@unnumberedsubsec Q5.3.1: How do you make XEmacs indent CL if-clauses correctly? + +I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the +same amount instead of indenting the 3rd clause differently from the +first two. + +One way is to add, to @file{.emacs}: + +@lisp +(put 'if 'lisp-indent-function nil) +@end lisp + +However, note that the package @code{cl-indent} that comes with +XEmacs sets up this kind of indentation by default. @code{cl-indent} +also knows about many other CL-specific forms. To use @code{cl-indent}, +one can do this: + +@lisp +(load "cl-indent") +(setq lisp-indent-function (function common-lisp-indent-function)) +@end lisp + +One can also customize @file{cl-indent.el} so it mimics the default +@code{if} indentation @code{then} indented more than the @code{else}. +Here's how: + +@lisp +(put 'if 'common-lisp-indent-function '(nil nil &body)) +@end lisp + +Also, a new version (1.2) of @file{cl-indent.el} was posted to +comp.emacs.xemacs on 12/9/94. This version includes more documentation +than previous versions. This may prove useful if you need to customize +any indent-functions. + +@node Q5.3.2, Q5.3.3, Q5.3.1, Miscellaneous +@unnumberedsubsec Q5.3.2: Fontifying hang when editing a postscript file. + +When I try to edit a postscript file it gets stuck saying: +@samp{fontifying 'filename' (regexps....)} and it just sits there. If I +press @kbd{C-c} in the window where XEmacs was started, it suddenly +becomes alive again. + +This was caused by a bug in the Postscript font-lock regular +expressions. It was fixed in 19.13. For earlier versions of XEmacs, +have a look at your @file{.emacs} file. You will probably have a line +like: + +@lisp +(add-hook 'postscript-mode-hook 'turn-on-font-lock) +@end lisp + +Take it out, restart XEmacs, and it won't try to fontify your postscript +files anymore. + +@node Q5.3.3, Q5.3.4, Q5.3.2, Miscellaneous +@unnumberedsubsec Q5.3.3: How can I print WYSIWYG a font-locked buffer? + +Font-lock looks nice. How can I print (WYSIWYG) the highlighted +document? + +The package @code{ps-print}, which is now included with XEmacs, provides +the ability to do this. The source code contains complete instructions +on its use, in @file{<xemacs_src_root>/lisp/packages/ps-print.el}. + +@node Q5.3.4, Q5.3.5, Q5.3.3, Miscellaneous +@unnumberedsubsec Q5.3.4: Getting @kbd{M-x lpr} to work with postscript printer. + +My printer is a Postscript printer and @code{lpr} only works for +Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x +lpr-buffer} to work? + +Put something like this in your @file{.emacs}: + +@lisp +(setq lpr-command "a2ps") +(setq lpr-switches '("-p" "-1")) +@end lisp + +If you don't use a2ps to convert ASCII to postscript (why not, it's +free?), replace with the command you do use. Note also that some +versions of a2ps require a @samp{-Pprinter} to ensure spooling. + +@node Q5.3.5, Q5.3.6, Q5.3.4, Miscellaneous +@unnumberedsubsec Q5.3.5: How do I specify the paths that XEmacs uses for finding files? + +You can specify what paths to use by using a number of different flags +when running configure. See the section MAKE VARIABLES in the top-level +file INSTALL in the XEmacs distribution for a listing of those flags. + +Most of the time, however, the simplest fix is: @strong{do not} specify +paths as you might for GNU Emacs. XEmacs can generally determine the +necessary paths dynamically at run time. The only path that generally +needs to be specified is the root directory to install into. That can +be specified by passing the @code{--prefix} flag to configure. For a +description of the XEmacs install tree, please consult the @file{NEWS} +file. + +@node Q5.3.6, Q5.3.7, Q5.3.5, Miscellaneous +@unnumberedsubsec Q5.3.6: [This question intentionally left blank] + +Obsolete question, left blank to avoid renumbering. + +@node Q5.3.7, Q5.3.8, Q5.3.6, Miscellaneous +@unnumberedsubsec Q5.3.7: Can I have the end of the buffer delimited in some way? + +Say, with: @samp{[END]}? + +Try this: + +@lisp +(let ((ext (make-extent (point-min) (point-max)))) + (set-extent-property ext 'start-closed t) + (set-extent-property ext 'end-closed t) + (set-extent-property ext 'detachable nil) + (set-extent-end-glyph ext (make-glyph [string :data "[END]"]))) +@end lisp + +Since this is XEmacs, you can specify an icon to be shown on +window-system devices. To do so, change the @code{make-glyph} call to +something like this: + +@lisp +(make-glyph '([xpm :file "~/something.xpm"] + [string :data "[END]"])) +@end lisp + +You can inline the @sc{xpm} definition yourself by specifying +@code{:data} instead of @code{:file}. Here is such a full-featured +version that works on both X and TTY devices: + +@lisp +(let ((ext (make-extent (point-min) (point-max)))) + (set-extent-property ext 'start-closed t) + (set-extent-property ext 'end-closed t) + (set-extent-property ext 'detachable nil) + (set-extent-end-glyph ext (make-glyph '([xpm :data "\ +/* XPM */ +static char* eye = @{ +\"20 11 7 2\", +\"__ c None\" +\"_` c #7f7f7f\", +\"_a c #fefefe\", +\"_b c #7f0000\", +\"_c c #fefe00\", +\"_d c #fe0000\", +\"_e c #bfbfbf\", +\"___________`_`_`___b_b_b_b_________`____\", +\"_________`_`_`___b_c_c_c_b_b____________\", +\"_____`_`_`_e___b_b_c_c_c___b___b_______`\", +\"___`_`_e_a___b_b_d___b___b___b___b______\", +\"_`_`_e_a_e___b_b_d_b___b___b___b___b____\", +\"_`_`_a_e_a___b_b_d___b___b___b___b___b__\", +\"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\", +\"___`_`_e_a___b_b_b_d_c___b___b___d_b____\", +\"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\", +\"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\", +\"___`_____`_`_`_`___b_b_b_b_b_b__________\", +@} ;"] + [string :data "[END]"])))) +@end lisp + +Note that you might want to make this a function, and put it to a hook. +We leave that as an exercise for the reader. + +@node Q5.3.8, Q5.3.9, Q5.3.7, Miscellaneous +@unnumberedsubsec Q5.3.8: How do I insert today's date into a buffer? + +Like this: + +@lisp +(insert (current-time-string)) +@end lisp + +@node Q5.3.9, Q5.3.10, Q5.3.8, Miscellaneous +@unnumberedsubsec Q5.3.9: Are only certain syntactic character classes available for abbrevs? + +@email{gutschk@@uni-muenster.de, Markus Gutschke} writes: + +@quotation +Yes, abbrevs only expands word-syntax strings. While XEmacs does not +prevent you from defining (e.g. with @kbd{C-x a g} or @kbd{C-x a l}) +abbrevs that contain special characters, it will refuse to expand +them. So you need to ensure, that the abbreviation contains letters and +digits only. This means that @samp{xd}, @samp{d5}, and @samp{5d} are +valid abbrevs, but @samp{&d}, and @samp{x d} are not. + +If this sounds confusing to you, (re-)read the online documentation for +abbrevs (@kbd{C-h i m XEmacs @key{RET} m Abbrevs @key{RET}}), and then come back and +read this question/answer again. +@end quotation + +Starting with XEmacs 20.3 this restriction has been lifted. + +@node Q5.3.10, Q5.3.11, Q5.3.9, Miscellaneous +@unnumberedsubsec Q5.3.10: How can I get those oh-so-neat X-Face lines? + +Firstly there is an ftp site which describes X-faces and has the +associated tools mentioned below, at +@uref{ftp://ftp.cs.indiana.edu:/pub/faces/}. + +Then the steps are + +@enumerate +@item +Create 48x48x1 bitmap with your favorite tool + +@item +Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc., +and then compile the face. + +@item +@example +cat file.xbm | xbm2ikon |compface > file.face +@end example + +@item +Then be sure to quote things that are necessary for emacs strings: + +@example +cat ./file.face | sed 's/\\/\\\\/g' +@iftex +\ @* +@end iftex +| sed 's/\"/\\\"/g' > ./file.face.quoted +@end example + +@item +Then set up emacs to include the file as a mail header - there were a +couple of suggestions here---either something like: + +@lisp +(setq mail-default-headers + "X-Face: @email{Ugly looking text string here}") +@end lisp + +Or, alternatively, as: + +@lisp +(defun mail-insert-x-face () + (save-excursion + (goto-char (point-min)) + (search-forward mail-header-separator) + (beginning-of-line) + (insert "X-Face:") + (insert-file-contents "~/.face"))) + +(add-hook 'mail-setup-hook 'mail-insert-x-face) +@end lisp +@end enumerate + +However, 2 things might be wrong: + +Some versions of pbmtoicon produces some header lines that is not +expected by the version of compface that I grabbed. So I found I had to +include a @code{tail +3} in the pipeline like this: + +@example +cat file.xbm | xbm2ikon | tail +3 |compface > file.face +@end example + +Some people have also found that if one uses the @code{(insert-file)} +method, one should NOT quote the face string using the sed script . + +It might also be helpful to use @email{stig@@hackvan.com, Stig's} script +(included in the compface distribution at XEmacs.org) to do the +conversion. For convenience xbm2xface is available for anonymous FTP at +@uref{ftp://ftp.miranova.com/pub/xemacs/xbm2xface.pl}. + +Contributors for this item: + +Paul Emsley, +Ricardo Marek, +Amir J. Katz, +Glen McCort, +Heinz Uphoff, +Peter Arius, +Paul Harrison, and +Vegard Vesterheim + +@node Q5.3.11, Q5.3.12, Q5.3.10, Miscellaneous +@unnumberedsubsec Q5.3.11: How do I add new Info directories? + +You use something like: + +@lisp +(setq Info-directory-list (cons + (expand-file-name "~/info") + Info-default-directory-list)) +@end lisp + +@email{davidm@@prism.kla.com, David Masterson} writes: + +@quotation +Emacs Info and XEmacs Info do many things differently. If you're trying to +support a number of versions of Emacs, here are some notes to remember: + +@enumerate +@item +Emacs Info scans @code{Info-directory-list} from right-to-left while +XEmacs Info reads it from left-to-right, so append to the @emph{correct} +end of the list. + +@item +Use @code{Info-default-directory-list} to initialize +@code{Info-directory-list} @emph{if} it is available at startup, but not +all Emacsen define it. + +@item +Emacs Info looks for a standard @file{dir} file in each of the +directories scanned from #1 and magically concatenates them together. + +@item +XEmacs Info looks for a @file{localdir} file (which consists of just the +menu entries from a @file{dir} file) in each of the directories scanned +from #1 (except the first), does a simple concatenation of them, and +magically attaches the resulting list to the end of the menu in the +@file{dir} file in the first directory. +@end enumerate + +Another alternative is to convert the documentation to HTML with +texi2html and read it from a web browser like Lynx or W3. +@end quotation + +@node Q5.3.12, , Q5.3.11, Miscellaneous +@unnumberedsubsec Q5.3.12: What do I need to change to make printing work? + +For regular printing there are two variables that can be customized. + +@table @code +@item lpr-command +This should be set to a command that takes standard input and sends +it to a printer. Something like: + +@lisp +(setq lpr-command "lp") +@end lisp + +@item lpr-switches +This should be set to a list that contains whatever the print command +requires to do its job. Something like: + +@lisp +(setq lpr-switches '("-depson")) +@end lisp +@end table + +For postscript printing there are three analogous variables to +customize. + +@table @code +@item ps-lpr-command +This should be set to a command that takes postscript on standard input +and directs it to a postscript printer. + +@item ps-lpr-switches +This should be set to a list of switches required for +@code{ps-lpr-command} to do its job. + +@item ps-print-color-p +This boolean variable should be set @code{t} if printing will be done in +color, otherwise it should be set to @code{nil}. +@end table + +NOTE: It is an undocumented limitation in XEmacs that postscript +printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a +window system environment. It cannot be used outside of X11. + +@node Current Events, , Miscellaneous, Top +@unnumbered 6 What the Future Holds + +This is part 6 of the XEmacs Frequently Asked Questions list. This +section will change monthly, and contains any interesting items that have +transpired over the previous month. If you are reading this from the +XEmacs distribution, please see the version on the Web or archived at the +various FAQ FTP sites, as this file is surely out of date. + +@menu +* Q6.0.1:: What is new in 20.2? +* Q6.0.2:: What is new in 20.3? +* Q6.0.3:: What is new in 20.4? +* Q6.0.4:: Procedural changes in XEmacs development. +@end menu + +@node Q6.0.1, Q6.0.2, Current Events, Current Events +@unnumberedsec 6.0: Changes +@unnumberedsubsec Q6.0.1: What is new in 20.2? + +The biggest changes in 20.2 include integration of EFS (the next +generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a +major mode for editing Tex and LaTeX, and a lot of other stuff). Many +bugs from 20.0 have been fixed for this release. 20.2 also contains a +new system for customizing XEmacs options, invoked via @kbd{M-x +customize}. + +XEmacs 20.2 is the development release (20.0 was beta), and is no longer +considered unstable. + +@node Q6.0.2, Q6.0.3, Q6.0.1, Current Events +@unnumberedsubsec Q6.0.2: What is new in 20.3? + +XEmacs 20.3 was released in November 1997. It contains many bugfixes, +and a number of new features, including Autoconf 2 based configuration, +additional support for Mule (Multi-language extensions to Emacs), many +more customizations, multiple frames on TTY-s, support for multiple info +directories, an enhanced gnuclient, improvements to regexp matching, +increased MIME support, and many, many synches with GNU Emacs 20. + +The XEmacs/Mule support has been only seriously tested in a Japanese +locale, and no doubt many problems still remain. The support for +ISO-Latin-1 and Japanese is fairly strong. MULE support comes at a +price -- about a 30% slowdown from 19.16. We're making progress on +improving performance and XEmacs 20.3 compiled without Mule (which is +the default) is definitely faster than XEmacs 19.16. + +XEmacs 20.3 is the first non-beta v20 release, and will be the +basis for all further development. + +@node Q6.0.3, Q6.0.4, Q6.0.2, Current Events +@unnumberedsubsec Q6.0.3: What's new in XEmacs 20.4? + +XEmacs 20.4 is a bugfix release with no user-visible changes. +@c Filled in from NEWS file of 20.5-b33 + + +@node Q6.0.4, , Q6.0.3, Current Events +@unnumberedsubsec Q6.0.4: Procedural changes in XEmacs development. + +@enumerate +@item +Discussion about the development of XEmacs occurs on the xemacs-beta +mailing list. Subscriptions to this list will now be fully automated +instead of being handled by hand. Send a mail message to +@email{xemacs-beta-request@@xemacs.org} with @samp{subscribe} as the +BODY of the message to join the list. Please note this is a developers +mailing list for people who have an active interest in the development +process. + +The discussion of NT XEmacs development is taking place on a separate +mailing list. Send mail to +@iftex +@* +@end iftex +@email{xemacs-nt-request@@xemacs.org} to +subscribe. + +@item +Due to the long development cycle in between releases, it has been +decided that intermediate versions will be made available in source only +form for the truly interested. + +XEmacs 19.16 was the last 19 release, basically consisting of 19.15 plus +the collected bugfixes. + +@item +As of December 1996, @email{steve@@xemacs.org, Steve Baur} has become +the lead maintainer of XEmacs. +@end enumerate + +@bye