XEmacs 21.4.4 "Artificial Intelligence".
[chise/xemacs-chise.git.1] / man / xemacs-faq.texi
1 \input texinfo.tex      @c -*- mode: texinfo; coding: iso-2022-8 -*-
2 @c %**start of header
3 @setfilename ../info/xemacs-faq.info
4 @settitle Frequently asked questions about XEmacs
5 @setchapternewpage off
6 @c %**end of header
7 @finalout
8 @titlepage
9 @title XEmacs FAQ
10 @subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/07/25 07:46:06 $
11 @sp 1
12 @author Tony Rossini <rossini@@biostat.washington.edu>
13 @author Ben Wing <ben@@xemacs.org>
14 @author Chuck Thompson <cthomp@@xemacs.org>
15 @author Steve Baur <steve@@xemacs.org>
16 @author Andreas Kaempf <andreas@@sccon.com>
17 @author Christian Nyb@o{} <chr@@mediascience.no>
18 @author Sandra Wambold <wambold@@xemacs.org>
19 @page
20 @end titlepage
21
22 @ifinfo
23 @dircategory XEmacs Editor
24 @direntry
25 * FAQ: (xemacs-faq).            XEmacs FAQ.
26 @end direntry
27 @end ifinfo
28
29 @node Top, Introduction, (dir), (dir)
30 @top XEmacs FAQ
31 @unnumbered Introduction
32
33 This is the guide to the XEmacs Frequently Asked Questions list---a
34 compendium of questions and answers pertaining to one of the finest
35 programs ever written.  XEmacs is much more than just a Text Editor.
36
37 This FAQ is freely redistributable.  This FAQ is distributed in the hope
38 that it will be useful, but WITHOUT ANY WARRANTY; without even the
39 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
40
41 If you have a Web browser, the official hypertext version is at
42 @iftex
43 @*
44 @end iftex
45 @uref{http://www.xemacs.org/faq/xemacs-faq.html}
46
47 @ifset CANONICAL
48 @html
49 This document is available in several different formats:
50 @itemize @bullet
51 @item
52 @uref{xemacs-faq.txt, As a single ASCII file}, produced by
53 @code{makeinfo --no-headers}
54 @item
55 @uref{xemacs-faq.dvi, As a .dvi file}, as used with
56 @uref{http://www.tug.org, TeX.}
57 @item
58 As a PostScript file @uref{xemacs-faq-a4.ps, in A4 format},
59 as well as in @uref{xemacs-faq-letter.ps, letter format}
60 @item
61 In html format, @uref{xemacs-faq_1.html, split by chapter}, or in
62 @uref{xemacs-faq.html, one monolithic} document.
63 @item
64 The canonical version of the FAQ is the texinfo document
65 @uref{xemacs-faq.texi, man/xemacs-faq.texi}.
66 @item
67 If you do not have makeinfo installed, you may @uref{xemacs-faq.info,
68 download the faq} in info format, and install it in @file{<XEmacs
69 library directory>/info/}. For example in
70 @file{/usr/local/lib/xemacs-21.4/info/}.
71
72 @end itemize
73
74 @end html
75
76 @end ifset
77
78 @c end ifset points to CANONICAL
79
80 @menu
81 * Introduction::        Introduction, Policy, Credits.
82 * Installation::        Installation and Trouble Shooting.
83 * Customization::       Customization and Options.
84 * Subsystems::          Major Subsystems.
85 * Miscellaneous::       The Miscellaneous Stuff.
86 * MS Windows::          XEmacs on Microsoft Windows.
87 * Current Events::      What the Future Holds.
88
89 @detailmenu
90
91  --- The Detailed Node Listing ---
92
93 Introduction, Policy, Credits
94
95 * Q1.0.1::      What is XEmacs?
96 * Q1.0.2::      What is the current version of XEmacs?
97 * Q1.0.3::      Where can I find it?
98 * Q1.0.4::      Why Another Version of Emacs?
99 * Q1.0.5::      Why Haven't XEmacs and GNU Emacs Merged?
100 * Q1.0.6::      Where can I get help?
101 * Q1.0.7::      Where are the mailing lists archived?
102 * Q1.0.8::      How do you pronounce XEmacs?
103 * Q1.0.9::      What does XEmacs look like?
104 * Q1.0.10::     Is there a port of XEmacs to Microsoft ('95 or NT)?
105 * Q1.0.11::     Is there a port of XEmacs to the Macintosh?
106 * Q1.0.12::     Is there a port of XEmacs to NextStep?
107 * Q1.0.13::     Is there a port of XEmacs to OS/2?
108 * Q1.0.14::     Where can I get a printed copy of the XEmacs users manual?
109
110 Policies:
111 * Q1.1.1::      What is the FAQ editorial policy?
112 * Q1.1.2::      How do I become a Beta Tester?
113 * Q1.1.3::      How do I contribute to XEmacs itself?
114
115 Credits:
116 * Q1.2.1::      Who wrote XEmacs?
117 * Q1.2.2::      Who contributed to this version of the FAQ?
118 * Q1.2.3::      Who contributed to the FAQ in the past?
119
120 Internationalization:
121 * Q1.3.1::      What is the status of internationalization support aka MULE (including Asian language support?
122 * Q1.3.2::      How can I help with internationalization?
123 * Q1.3.3::      How do I type non-ASCII characters?
124 * Q1.3.4::      Can XEmacs messages come out in a different language?
125 * Q1.3.5::      Please explain the various input methods in MULE/XEmacs
126 * Q1.3.6::      How do I portably code for MULE/XEmacs?
127 * Q1.3.7::      How about Cyrillic Modes?
128
129 Getting Started:
130 * Q1.4.1::      What is an @file{init.el} or @file{.emacs} and is there a sample one?
131 * Q1.4.2::      Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
132 * Q1.4.3::      Any good XEmacs tutorials around?
133 * Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
134 * Q1.4.5::      And how do I bind it to a key?
135 * Q1.4.6::      What's the difference between a macro and a function?
136
137 Installation and Trouble Shooting
138
139 * Q2.0.1::      Running XEmacs without installing.
140 * Q2.0.2::      XEmacs is too big.
141 * Q2.0.3::      Compiling XEmacs with Netaudio.
142 * Q2.0.4::      Problems with Linux and ncurses.
143 * Q2.0.5::      Do I need X11 to run XEmacs?
144 * Q2.0.6::      I'm having strange crashes.  What do I do?
145 * Q2.0.7::      Libraries in non-standard locations.
146 * Q2.0.8::      can't resolve symbol _h_errno
147 * Q2.0.9::      Where do I find external libraries?
148 * Q2.0.10::     After I run configure I find a coredump, is something wrong?
149 * Q2.0.11::     XEmacs can't resolve host names.
150 * Q2.0.12::     Why can't I strip XEmacs?
151 * Q2.0.13::     I don't need no steenkin' packages.  Do I? (NEW)
152 * Q2.0.14::     How do I figure out which packages to install? (NEW)
153
154 Trouble Shooting:
155 * Q2.1.1::      XEmacs just crashed on me!
156 * Q2.1.2::      Cryptic Minibuffer messages.
157 * Q2.1.3::      Translation Table Syntax messages at Startup.
158 * Q2.1.4::      Startup warnings about deducing proper fonts?
159 * Q2.1.5::      XEmacs cannot connect to my X Terminal.
160 * Q2.1.6::      XEmacs just locked up my Linux X server.
161 * Q2.1.7::      HP Alt key as Meta.
162 * Q2.1.8::      got (wrong-type-argument color-instance-p nil)!
163 * Q2.1.9::      XEmacs causes my OpenWindows 3.0 server to crash.
164 * Q2.1.10::     Warnings from incorrect key modifiers.
165 * Q2.1.11::     Can't instantiate image error... in toolbar
166 * Q2.1.12::     Regular Expression Problems on DEC OSF1.
167 * Q2.1.13::     HP/UX 10.10 and @code{create_process} failure
168 * Q2.1.14::     @kbd{C-g} doesn't work for me.  Is it broken?
169 * Q2.1.15::     How to debug an XEmacs problem with a debugger.
170 * Q2.1.16::     XEmacs crashes in @code{strcat} on HP/UX 10.
171 * Q2.1.17::     @samp{Marker does not point anywhere}.
172 * Q2.1.18::     XEmacs is outputting lots of X errors.
173 * Q2.1.19::     XEmacs does not follow the local timezone.
174 * Q2.1.20::     @samp{Symbol's function definition is void: hkey-help-show.}
175 * Q2.1.21::     [This question intentionally left blank]
176 * Q2.1.22::     XEmacs seems to take a really long time to do some things.
177 * Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
178 * Q2.1.24::     XEmacs won't start without network. (NEW)
179 * Q2.1.25::     After upgrading, XEmacs won't do `foo' any more! (NEW)
180
181 Customization and Options
182
183 * Q3.0.1::      What version of Emacs am I running?
184 * Q3.0.2::      How do I evaluate Elisp expressions?
185 * Q3.0.3::      @code{(setq tab-width 6)} behaves oddly.
186 * Q3.0.4::      How can I add directories to the @code{load-path}?
187 * Q3.0.5::      How to check if a lisp function is defined?
188 * Q3.0.6::      Can I force the output of @code{(face-list)} to a buffer?
189 * Q3.0.7::      Font selections don't get saved after @code{Save Options}.
190 * Q3.0.8::      How do I make a single minibuffer frame?
191 * Q3.0.9::      What is @code{Customize}?
192
193 X Window System & Resources:
194 * Q3.1.1::      Where is a list of X resources?
195 * Q3.1.2::      How can I detect a color display?
196 * Q3.1.3::      [This question intentionally left blank]
197 * Q3.1.4::      [This question intentionally left blank]
198 * Q3.1.5::      How can I get the icon to just say @samp{XEmacs}?
199 * Q3.1.6::      How can I have the window title area display the full path?
200 * Q3.1.7::      @samp{xemacs -name junk} doesn't work?
201 * Q3.1.8::      @samp{-iconic} doesn't work.
202
203 Textual Fonts & Colors:
204 * Q3.2.1::      How can I set color options from @file{init.el}/@file{.emacs}?
205 * Q3.2.2::      How do I set the text, menu and modeline fonts?
206 * Q3.2.3::      How can I set the colors when highlighting a region?
207 * Q3.2.4::      How can I limit color map usage?
208 * Q3.2.5::      My tty supports color, but XEmacs doesn't use them.
209 * Q3.2.6::      Can I have pixmap backgrounds in XEmacs?
210
211 The Modeline:
212 * Q3.3.1::      How can I make the modeline go away?
213 * Q3.3.2::      How do you have XEmacs display the line number in the modeline?
214 * Q3.3.3::      How do I get XEmacs to put the time of day on the modeline?
215 * Q3.3.4::      How do I turn off current chapter from AUC TeX modeline?
216 * Q3.3.5::      How can one change the modeline color based on the mode used?
217
218 Multiple Device Support:
219 * Q3.4.1::      How do I open a frame on another screen of my multi-headed display?
220 * Q3.4.2::      Can I really connect to a running XEmacs after calling up over a modem?  How?
221
222 The Keyboard:
223 * Q3.5.1::      How can I bind complex functions (or macros) to keys?
224 * Q3.5.2::      How can I stop down-arrow from adding empty lines to the bottom of my buffers?
225 * Q3.5.3::      How do I bind C-. and C-; to scroll one line up and down?
226 * Q3.5.4::      Globally binding @kbd{Delete}?
227 * Q3.5.5::      Scrolling one line at a time.
228 * Q3.5.6::      How to map @kbd{Help} key alone on Sun type4 keyboard?
229 * Q3.5.7::      How can you type in special characters in XEmacs?
230 * Q3.5.8::      [This question intentionally left blank]
231 * Q3.5.9::      How do I make the Delete key delete forward?
232 * Q3.5.10::     Can I turn on @dfn{sticky} modifier keys?
233 * Q3.5.11::     How do I map the arrow keys?
234
235 The Cursor:
236 * Q3.6.1::      Is there a way to make the bar cursor thicker?
237 * 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?
238 * Q3.6.3::      Can I make the cursor blink?
239
240 The Mouse and Highlighting:
241 * Q3.7.1::      How can I turn off Mouse pasting?
242 * Q3.7.2::      How do I set control/meta/etc modifiers on mouse buttons?
243 * Q3.7.3::      Clicking the left button does not do anything in buffer list.
244 * Q3.7.4::      How can I get a list of buffers when I hit mouse button 3?
245 * Q3.7.5::      Why does cut-and-paste not work between XEmacs and a cmdtool?
246 * Q3.7.6::      How I can set XEmacs up so that it pastes where the text cursor is?
247 * Q3.7.7::      How do I select a rectangular region?
248 * Q3.7.8::      Why does @kbd{M-w} take so long?
249
250 The Menubar and Toolbar:
251 * Q3.8.1::      How do I get rid of the menu (or menubar)?
252 * Q3.8.2::      Can I customize the basic menubar?
253 * Q3.8.3::      How do I control how many buffers are listed in the menu @code{Buffers} list?
254 * Q3.8.4::      Resources like @code{Emacs*menubar*font} are not working?
255 * Q3.8.5::      How can I bind a key to a function to toggle the toolbar?
256
257 Scrollbars:
258 * Q3.9.1::      How can I disable the scrollbar?
259 * Q3.9.2::      How can one use resources to change scrollbar colors?
260 * Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
261 * Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
262
263 Text Selections:
264 * Q3.10.1::     How can I turn off or change highlighted selections?
265 * Q3.10.2::     How do I get that typing on an active region removes it?
266 * Q3.10.3::     Can I turn off the highlight during isearch?
267 * Q3.10.4::     How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
268 * Q3.10.5::     The region disappears when I hit the end of buffer while scrolling.
269
270 Major Subsystems
271
272 * Q4.0.1::      How do I set up VM to retrieve remote mail using POP?
273 * Q4.0.2::      How do I get VM to filter mail for me?
274 * Q4.0.3::      How can I get VM to automatically check for new mail?
275 * Q4.0.4::      [This question intentionally left blank]
276 * Q4.0.5::      How do I get my outgoing mail archived?
277 * 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"?
278 * Q4.0.7::      Is there a mailing list or FAQ for VM?
279 * Q4.0.8::      Remote mail reading with VM.
280 * Q4.0.9::      rmail or VM gets an error incorporating new mail.
281 * Q4.0.10::     How do I make VM stay in a single frame?
282 * Q4.0.11::     How do I make VM or mh-e display graphical smilies?
283 * Q4.0.12::     Customization of VM not covered in the manual or here.
284
285 Web browsing with W3:
286 * Q4.1.1::      What is W3?
287 * Q4.1.2::      How do I run W3 from behind a firewall?
288 * Q4.1.3::      Is it true that W3 supports style sheets and tables?
289
290 Reading Netnews and Mail with Gnus:
291 * Q4.2.1::      GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
292 * Q4.2.2::      [This question intentionally left blank]
293 * Q4.2.3::      How do I make Gnus stay within a single frame?
294 * Q4.2.4::      How do I customize the From: line?
295
296 Other Mail & News:
297 * Q4.3.1::      How can I read and/or compose MIME messages?
298 * Q4.3.2::      What is TM and where do I get it?
299 * Q4.3.3::      Why isn't this @code{movemail} program working?
300 * Q4.3.4::      Movemail is also distributed by Netscape?  Can that cause problems?
301 * Q4.3.5::      Where do I find pstogif (required by tm)?
302
303 Sparcworks, EOS, and WorkShop:
304 * Q4.4.1::      What is SPARCworks, EOS, and WorkShop
305 * Q4.4.2::      How do I start the Sun Workshop support in XEmacs 21?
306
307 Energize:
308 * Q4.5.1::      What is/was Energize?
309
310 Infodock:
311 * Q4.6.1::      What is Infodock?
312
313 Other Unbundled Packages:
314 * Q4.7.1::      What is AUC TeX?  Where do you get it?
315 * Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
316 * Q4.7.3::      [This question intentionally left blank]
317 * Q4.7.4::      Problems installing AUC TeX
318 * Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
319 * Q4.7.6::      Is there a MatLab mode?
320
321 The Miscellaneous Stuff
322
323 * Q5.0.1::      How can I do source code highlighting using font-lock?
324 * Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
325 * Q5.0.3::      How do I get @samp{More} Syntax Highlighting on by default?
326 * Q5.0.4::      How can I enable auto-indent and/or Filladapt?
327 * Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
328 * Q5.0.6::      How do I start up a second shell buffer?
329 * Q5.0.7::      Telnet from shell filters too much.
330 * Q5.0.8::      Why does edt emulation not work?
331 * Q5.0.9::      How can I emulate VI and use it as my default mode?
332 * Q5.0.10::     [This question intentionally left blank]
333 * Q5.0.11::     [This question intentionally left blank]
334 * Q5.0.12::     How do I disable gnuserv from opening a new frame?
335 * Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
336 * Q5.0.14::     Strange things are happening in Shell Mode.
337 * Q5.0.15::     Where do I get the latest CC Mode?
338 * Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
339 * Q5.0.17::     How can I get two instances of info?
340 * Q5.0.18::     [This question intentionally left blank]
341 * Q5.0.19::     Is there something better than LaTeX mode?
342 * Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
343
344 Emacs Lisp Programming Techniques:
345 * Q5.1.1::      The difference in key sequences between XEmacs and GNU Emacs?
346 * Q5.1.2::      Can I generate "fake" keyboard events?
347 * Q5.1.3::      Could you explain @code{read-kbd-macro} in more detail?
348 * Q5.1.4::      What is the performance hit of @code{let}?
349 * Q5.1.5::      What is the recommended use of @code{setq}?
350 * Q5.1.6::      What is the typical misuse of @code{setq} ?
351 * Q5.1.7::      I like the @code{do} form of cl, does it slow things down?
352 * Q5.1.8::      I like recursion, does it slow things down?
353 * Q5.1.9::      How do I put a glyph as annotation in a buffer?
354 * Q5.1.10::     @code{map-extents} won't traverse all of my extents!
355 * Q5.1.11::     My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
356
357 Sound:
358 * Q5.2.1::      How do I turn off the sound?
359 * Q5.2.2::      How do I get funky sounds instead of a boring beep?
360 * Q5.2.3::      What's NAS, how do I get it?
361 * Q5.2.4::      Sunsite sounds don't play.
362
363 Miscellaneous:
364 * Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
365 * Q5.3.2::      [This question intentionally left blank]
366 * Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
367 * Q5.3.4::      Getting @kbd{M-x lpr} to work with postscript printer.
368 * Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
369 * Q5.3.6::      [This question intentionally left blank]
370 * Q5.3.7::      Can I have the end of the buffer delimited in some way?
371 * Q5.3.8::      How do I insert today's date into a buffer?
372 * Q5.3.9::      Are only certain syntactic character classes available for abbrevs?
373 * Q5.3.10::     How can I get those oh-so-neat X-Face lines?
374 * Q5.3.11::     How do I add new Info directories?
375 * Q5.3.12::     What do I need to change to make printing work?
376
377 XEmacs on MS Windows
378
379 General Info:
380 * Q6.0.1::      What is the status of the XEmacs port to Windows?
381 * Q6.0.2::      What flavors of MS Windows are supported?  The list name implies NT only.
382 * Q6.0.3::      Are binaries available?
383 * Q6.0.4::      Can I build XEmacs on MS Windows with X support?  Do I need to?
384 * Q6.0.5::      I'd like to help out.  What do I do?
385 * Q6.0.6::      What are Cygwin and MinGW, and do I need them to run XEmacs?
386 * Q6.0.7::      What exactly are all the different ways to build XEmacs under Windows?
387  
388 Building XEmacs on MS Windows:
389 * Q6.1.1::      What compiler/libraries do I need to compile XEmacs?
390 * Q6.1.2::      How do I compile the native port?
391 * Q6.1.3::      What do I need for Cygwin?
392 * Q6.1.4::      How do I compile under Cygwin?
393 * Q6.1.5::      How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
394 * Q6.1.6::      I decided to run with X.  Where do I get an X server?
395 * Q6.1.7::      How do I compile with X support?
396
397 Customization and User Interface:
398 * Q6.2.1::      How does the port cope with differences in the Windows user interface?
399 * Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
400 * Q6.2.3::      Where do I put my @file{init.el}/@file{.emacs} file?
401 * Q6.2.4::      How do I get Windows Explorer to associate a file type with XEmacs?
402 * Q6.2.5::      Is it possible to print from XEmacs?
403   
404
405 Miscellaneous:
406 * Q6.3.1::      Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
407 * Q6.3.2::      What are the differences between the various MS Windows emacsen?
408 * Q6.3.3::      XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
409 * Q6.3.4::      What is the porting team doing at the moment?
410
411 Troubleshooting:
412 * Q6.4.1::      XEmacs won't start on Windows.
413 * Q6.4.2::      Why do I get a blank toolbar on Windows 95?
414
415 Current Events:
416 * Q7.0.1::      What new features will be in XEmacs soon?
417 * Q7.0.2::      What's new in XEmacs 21.4?
418 * Q7.0.3::      What's new in XEmacs 21.1?
419 * Q7.0.4::      What's new in XEmacs 20.4?
420 * Q7.0.5::      What's new in XEmacs 20.3?
421 * Q7.0.6::      What's new in XEmacs 20.2?
422 @end detailmenu
423 @end menu
424
425 @node Introduction, Installation, Top, Top
426 @unnumbered 1 Introduction, Policy, Credits
427
428 Learning XEmacs is a lifelong activity.  Even people who have used Emacs
429 for years keep discovering new features.  Therefore this document cannot
430 be complete.  Instead it is aimed at the person who is either
431 considering XEmacs for their own use, or has just obtained it and is
432 wondering what to do next.  It is also useful as a reference to
433 available resources.
434
435 The previous maintainer of the FAQ was @email{rossini@@biostat.washington.edu,
436 Anthony Rossini}, who started it, after getting tired of hearing JWZ
437 complain about repeatedly having to answer questions.
438 @email{ben@@xemacs.org, Ben Wing} and @email{cthomp@@xemacs.org, Chuck
439 Thompson}, the principal authors of XEmacs, then took over and Ben did
440 a massive update reorganizing the whole thing.  At which point Anthony
441 took back over, but then had to give it up again.  Some of the other
442 contributors to this FAQ are listed later in this document.
443
444 The previous version was converted to hypertext format, and edited by
445 @email{steve@@xemacs.org, Steven L. Baur}.  It was converted back to
446 texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}.  The FAQ was then
447 maintained by @email{andreas@@sccon.com, Andreas Kaempf}, who passed it
448 on to ChristianNyb@o{}.
449
450 If you notice any errors or items which should be added or amended to
451 this FAQ please send email to @email{faq@@xemacs.org, Sandra
452 Wambold}.  Include @samp{XEmacs FAQ} on the Subject: line.
453
454 @menu
455 Introduction:
456 * Q1.0.1::      What is XEmacs?
457 * Q1.0.2::      What is the current version of XEmacs?
458 * Q1.0.3::      Where can I find it?
459 * Q1.0.4::      Why Another Version of Emacs?
460 * Q1.0.5::      Why Haven't XEmacs and GNU Emacs Merged?
461 * Q1.0.6::      Where can I get help?
462 * Q1.0.7::      Where are the mailing lists archived?
463 * Q1.0.8::      How do you pronounce XEmacs?
464 * Q1.0.9::      What does XEmacs look like?
465 * Q1.0.10::     Is there a port of XEmacs to Microsoft ('95 or NT)?
466 * Q1.0.11::     Is there a port of XEmacs to the Macintosh?
467 * Q1.0.12::     Is there a port of XEmacs to NextStep?
468 * Q1.0.13::     Is there a port of XEmacs to OS/2?
469 * Q1.0.14::     Where can I get a printed copy of the XEmacs users manual?
470
471 Policies:
472 * Q1.1.1::      What is the FAQ editorial policy?
473 * Q1.1.2::      How do I become a Beta Tester?
474 * Q1.1.3::      How do I contribute to XEmacs itself?
475
476 Credits:
477 * Q1.2.1::      Who wrote XEmacs?
478 * Q1.2.2::      Who contributed to this version of the FAQ?
479 * Q1.2.3::      Who contributed to the FAQ in the past?
480
481 Internationalization:
482 * Q1.3.1::      What is the status of internationalization support aka MULE (including Asian language support?
483 * Q1.3.2::      How can I help with internationalization?
484 * Q1.3.3::      How do I type non-ASCII characters?
485 * Q1.3.4::      Can XEmacs messages come out in a different language?
486 * Q1.3.5::      Please explain the various input methods in MULE/XEmacs
487 * Q1.3.6::      How do I portably code for MULE/XEmacs?
488 * Q1.3.7::      How about Cyrillic Modes?
489
490 Getting Started:
491 * Q1.4.1::      What is an @file{init.el} or @file{.emacs} and is there a sample one?
492 * Q1.4.2::      Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
493 * Q1.4.3::      Any good XEmacs tutorials around?
494 * Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
495 * Q1.4.5::      And how do I bind it to a key?
496 * Q1.4.6::      What's the difference between a macro and a function?
497 @end menu
498
499 @node Q1.0.1, Q1.0.2, Introduction, Introduction
500 @unnumberedsec 1.0: Introduction
501 @unnumberedsubsec Q1.0.1: What is XEmacs?
502
503
504 XEmacs is a powerful, highly customizable open source text editor and
505 application development system, with full GUI support.  It is protected
506 under the GNU Public License and related to other versions of Emacs, in
507 particular GNU Emacs.  Its emphasis is on modern graphical user
508 interface support and an open software development model, similar to
509 Linux.  XEmacs has an active development community numbering in the
510 hundreds (and thousands of active beta testers on top of this), and runs
511 on all versions of MS Windows, on Linux, and on nearly every other
512 version of Unix in existence.  Support for XEmacs has been supplied by
513 Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical
514 Laboratory, Amdahl Corporation, BeOpen, and others, as well as the
515 unpaid time of a great number of individual developers.
516
517 @node Q1.0.2, Q1.0.3, Q1.0.1, Introduction
518 @unnumberedsubsec Q1.0.2: What is the current version of XEmacs?
519
520 XEmacs versions 21.1.* are releases made from the current stable
521 sources.  XEmacs versions 21.2.* are releases made from the development
522 sources.  Check at @uref{http://www.xemacs.org} for the current minor
523 version.
524
525 XEmacs 19.16 was the last release of v19, released in November, 1997,
526 which was also the last version without international language support.
527
528 @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction
529 @unnumberedsubsec Q1.0.3: Where can I find it?
530
531 The canonical source and binaries can be found via anonymous FTP at:
532
533 @example
534 @uref{ftp://ftp.xemacs.org/pub/xemacs/}
535 @end example
536
537 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction
538 @unnumberedsubsec Q1.0.4: Why Another Version of Emacs?
539
540 For a detailed description of the differences between GNU Emacs and
541 XEmacs and a detailed history of XEmacs, check out the
542 @example
543 @uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file}
544 @end example
545
546 However, here is a list of some of the reasons why we think you might
547 consider using it:
548
549 @itemize @bullet
550 @item
551 It looks nicer.
552
553 @item
554 The XEmacs maintainers are generally more receptive to suggestions than
555 the GNU Emacs maintainers.
556
557 @item
558 Many more bundled packages than GNU Emacs.
559
560 @item
561 Binaries are available for many common operating systems.
562
563 @item
564 Face support on TTY's.
565
566 @item
567 A built-in toolbar.
568
569 @item
570 Better Motif compliance.
571
572 @item
573 Some internationalization support (including full MULE support, if
574 compiled with it).
575
576 @item
577 Variable-width fonts.
578
579 @item
580 Variable-height lines.
581
582 @item
583 Marginal annotations.
584
585 @item
586 ToolTalk support.
587
588 @item
589 XEmacs can be used as an Xt widget, and can be embedded within another
590 application.
591
592 @item
593 Horizontal and vertical scrollbars (using real toolkit scrollbars).
594
595 @item
596 Better APIs (and performance) for attaching fonts, colors, and other
597 properties to text.
598
599 @item
600 The ability to embed arbitrary graphics in a buffer.
601
602 @item
603 Completely compatible (at the C level) with the Xt-based toolkits.
604
605 @end itemize
606
607 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction
608 @unnumberedsubsec Q1.0.5: Why Haven't XEmacs and GNU Emacs Merged?
609
610 There are currently irreconcilable differences in the views about
611 technical, programming, design and organizational matters between RMS
612 and the XEmacs development team which provide little hope for a merge to
613 take place in the short-term future.
614
615 If you have a comment to add regarding the merge, it is a good idea to
616 avoid posting to the newsgroups,  because of the very heated flamewars
617 that often result.  Mail your questions to @email{xemacs-beta@@xemacs.org} and
618 @email{bug-gnu-emacs@@prep.ai.mit.edu}.
619
620 @node Q1.0.6, Q1.0.7, Q1.0.5, Introduction
621 @unnumberedsubsec Q1.0.6: Where can I get help?
622
623 Probably the easiest way, if everything is installed, is to use Info, by
624 pressing @kbd{C-h i}, or looking for an Info item on the
625 Help Menu.  @kbd{M-x apropos} can be used to look for particular commands.
626
627 For items not found in the manual, try reading this FAQ
628 @comment , examining the regular GNU Emacs FAQ (which can be
629 @comment found with the Emacs 19 distribution) as well as at
630 @comment @uref{http://www.eecs.nwu.edu/emacs/faq/}
631 and reading the Usenet group comp.emacs.xemacs.
632
633 If you choose to post to a newsgroup, @strong{please use
634 comp.emacs.xemacs}.  Please do not post XEmacs related questions to
635 gnu.emacs.help.
636
637 If you cannot post or read Usenet news, there is a corresponding mailing
638 list which is available.  It can be subscribed to by sending a message
639 to @email{xemacs-request@@xemacs.org} with @samp{subscribe} in the
640 body of the message.  Send to the list at @email{xemacs@@xemacs.org}.
641 list.  To cancel a subscription, you @strong{must} use the
642 xemacs-request address.  Send a message with a subject of
643 @samp{unsubscribe} to be removed.
644
645 @node Q1.0.7, Q1.0.8, Q1.0.6, Introduction
646 @unnumberedsubsec Q1.0.7: Where are the mailing lists archived?
647
648 The archives can be found at @uref{http://list-archive.xemacs.org}
649
650 @node Q1.0.8, Q1.0.9, Q1.0.7, Introduction
651 @unnumberedsubsec Q1.0.8: How do you pronounce XEmacs?
652
653 The most common pronounciation is @samp{Eks eemax}.
654
655 @node Q1.0.9, Q1.0.10, Q1.0.8, Introduction
656 @unnumberedsubsec Q1.0.9: What does XEmacs look like?
657
658 Screen snapshots are available in the WWW version of the FAQ.
659 @example
660 @uref{http://www.xemacs.org/faq/xemacs-faq.html}
661 @end example
662
663 @node Q1.0.10, Q1.0.11, Q1.0.9, Introduction
664 @unnumberedsubsec Q1.0.10: Is there a port of XEmacs to Microsoft ('95 or NT)?
665
666 Yes.  XEmacs can be built under MS Windows and is fully-featured and
667 actively developed.  See @ref{MS Windows}.
668
669 @node Q1.0.11, Q1.0.12, Q1.0.10, Introduction
670 @unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh?
671 @c changed
672
673 @c There has been a port to the MachTen environment of XEmacs 19.13, but no
674 @c patches have been submitted to the maintainers to get this in the
675 @c mainstream distribution.
676 @c
677 @c For the MacOS, there is a port of
678 @c @uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}.
679
680 Yes.
681
682 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
683 will not feel very much like a Mac application as it has no Mac-specific
684 code in it.
685
686 There is also a port of XEmacs 19.14 that works on all recent versions
687 of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com,
688 Pitts Jarvis}.  It runs in an equivalent of TTY mode only (one single
689 Macintosh window, 25 colors), but has a large number of Mac-specific
690 additions.  It's available at
691 @uref{http://homepage.mac.com/pjarvis/xemacs.html}.
692
693 @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction
694 @unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep?
695
696 Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did
697 the port of GNU Emacs to NeXTstep and expressed interest in doing the
698 XEmacs port, but never went any farther.
699
700 @node Q1.0.13, Q1.0.14, Q1.0.12, Introduction
701 @unnumberedsubsec Q1.0.13: Is there a port of XEmacs to OS/2?
702
703 No, but Alexander Nikolaev <avn_1251@@mail.ru> is working on it.
704
705 @node Q1.0.14, Q1.1.1, Q1.0.13, Introduction
706 @unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual?
707
708 Pre-printed manuals are not available.  If you are familiar with
709 TeX, you can generate your own manual from the XEmacs sources.
710
711 HTML and Postscript versions of XEmacs manuals are available from the
712 XEmacs web site at
713 @uref{http://www.xemacs.org/Documentation/index.html}.
714
715 @node Q1.1.1, Q1.1.2, Q1.0.14, Introduction
716 @unnumberedsec 1.1: Policies
717 @unnumberedsubsec Q1.1.1: What is the FAQ editorial policy?
718
719 The FAQ is actively maintained and modified regularly.  All links should
720 be up to date.  Unfortunately, some of the information is out of date --
721 a situation which the FAQ maintainer is working on.  All submissions are
722 welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ
723 maintainers}.
724
725 Please make sure that @samp{XEmacs FAQ} appears on the Subject: line.
726 If you think you have a better way of answering a question, or think a
727 question should be included, we'd like to hear about it.  Questions and
728 answers included into the FAQ will be edited for spelling and grammar
729 and will be attributed.  Answers appearing without attribution are
730 either from versions of the FAQ dated before May 1996 or are from
731 previous FAQ maintainers.  Answers quoted from Usenet news articles will
732 always be attributed, regardless of the author.
733
734 @node Q1.1.2, Q1.1.3, Q1.1.1, Introduction
735 @unnumberedsubsec Q1.1.2: How do I become a Beta Tester?
736
737 Send an email message to @email{xemacs-beta-request@@xemacs.org} with
738 the line @samp{subscribe} in the body of the message.
739
740 Be prepared to get your hands dirty, as beta testers are expected to
741 identify problems as best they can.
742
743 @node Q1.1.3, Q1.2.1, Q1.1.2, Introduction
744 @unnumberedsubsec Q1.1.3: How do I contribute to XEmacs itself?
745
746 Ben Wing @email{ben@@xemacs.org} writes:
747
748 @quotation
749 BTW if you have a wish list of things that you want added, you have to
750 speak up about it!  More specifically, you can do the following if you
751 want a feature added (in increasing order of usefulness):
752
753 @itemize @bullet
754 @item
755 Make a posting about a feature you want added.
756
757 @item
758 Become a beta tester and make more postings about those same features.
759
760 @item
761 Convince us that you're going to use the features in some cool and
762 useful way.
763
764 @item
765 Come up with a clear and well-thought-out API concerning the features.
766
767 @item
768 Write the code to implement a feature and send us a patch.
769 @end itemize
770
771 (not that we're necessarily requiring you to write the code, but we can
772 always hope :)
773 @end quotation
774
775 @node Q1.2.1, Q1.2.2, Q1.1.3, Introduction
776 @unnumberedsec 1.2: Credits
777 @unnumberedsubsec Q1.2.1: Who wrote XEmacs?
778
779 XEmacs is the result of the time and effort of many people.  The
780 developers responsible for recent releases are:
781
782 @itemize @bullet
783 @item @email{martin@@xemacs.org, Martin Buchholz}
784 @html
785 <br><img src="mrb.jpeg" alt="Portrait of Martin Buchholz"><br>
786 @end html
787
788
789 @item @email{turnbull@@sk.tsukuba.ac.jp, Steven Turnbull}
790
791
792 @item @email{ben@@xemacs.org, Ben Wing}
793 @html
794 <br><img src="wing.gif" alt="Portrait of Ben Wing"><br>
795 @end html
796
797
798 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
799
800 @html
801 <br><img src="hniksic.jpeg" alt="Portrait of Hrvoje Niksic"><br>
802 @end html
803
804 @end itemize
805
806 The developers responsible for older releases were:
807
808 @itemize @bullet
809 @item @email{steve@@xemacs.org, Steve Baur}
810
811 @html
812 <br><img src="steve.gif" alt="Portrait of Steve Baur"><br>
813 @end html
814
815 @item @email{cthomp@@xemacs.org, Chuck Thompson}
816 @html
817 <br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br>
818 @end html
819
820 @item @email{jwz@@jwz.org, Jamie Zawinski}
821 @html
822 <br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br>
823 @end html
824
825 @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
826
827 Steve Baur was the primary maintainer for 19.15 through 21.0.
828
829 Chuck Thompson and Ben Wing were the maintainers for 19.11 through 19.14
830 and heavy code contributors for 19.8 through 19.10.
831
832 Jamie Zawinski was the maintainer for 19.0 through 19.10 (the entire
833 history of Lucid Emacs).  Richard Mlynarik was a heavy code contributor
834 to 19.6 through 19.8.
835
836 @end itemize
837
838 Along with many other contributors, partially enumerated in the
839 @samp{About XEmacs} option in the Help menu.
840
841 @node Q1.2.2, Q1.2.3, Q1.2.1, Introduction
842 @unnumberedsubsec Q1.2.2: Who contributed to this version of the FAQ?
843
844 The following people contributed valuable suggestions to building this
845 version of the FAQ (listed in alphabetical order):
846
847 @itemize @bullet
848 @item @email{steve@@xemacs.org, SL Baur}
849
850 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
851
852 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
853
854 @end itemize
855
856 @node Q1.2.3, Q1.3.1, Q1.2.2, Introduction
857 @unnumberedsubsec Q1.2.3: Who contributed to the FAQ in the past?
858
859 This is only a partial list, as many names were lost in a hard disk
860 crash some time ago.
861
862 @itemize @bullet
863 @item @email{binge@@aloft.att.com, Curtis.N.Bingham}
864
865 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan}
866
867 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley}
868
869 @item @email{cognot@@ensg.u-nancy.fr, Richard Cognot}
870
871 @item @email{daku@@nortel.ca, Mark Daku}
872
873 @item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque}
874
875 @item @email{eeide@@cs.utah.edu, Eric Eide}
876
877 @item @email{af@@biomath.jussieu.fr, Alain Fauconnet}
878
879 @item @email{cflatter@@nrao.edu, Chris Flatters}
880
881 @item @email{ginsparg@@adra.com, Evelyn Ginsparg}
882
883 @item @email{hall@@aplcenmp.apl.jhu.edu, Marty Hall}
884
885 @item @email{dkindred@@cmu.edu, Darrell Kindred}
886
887 @item @email{dmoore@@ucsd.edu, David Moore}
888
889 @item @email{arup+@@cmu.edu, Arup Mukherjee}
890
891 @item @email{nickel@@prz.tu-berlin.de, Juergen Nickelsen}
892
893 @item @email{powell@@csl.ncsa.uiuc.edu, Kevin R. Powell}
894
895 @item @email{dworkin@@ccs.neu.edu, Justin Sheehy}
896
897 @item @email{stig@@hackvan.com, Stig}
898
899 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
900 @end itemize
901
902 @node Q1.3.1, Q1.3.2, Q1.2.3, Introduction
903 @unnumberedsec 1.3: Internationalization
904 @unnumberedsubsec Q1.3.1: What is the status of internationalization support aka MULE (including Asian language support?
905
906 Both the stable and development versions of XEmacs include
907 internationalization support (aka MULE).  MULE currently works on UNIX
908 and Linux systems; work for supporting MULE on Windows operating systems
909 is in progress.  Binaries compiled without MULE support run faster than
910 MULE capable XEmacsen.
911
912 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction
913 @unnumberedsubsec Q1.3.2: How can I help with internationalization?
914
915 If you would like to help, you may want to join the
916 @email{xemacs-mule@@xemacs.org} mailing list.  Especially needed are
917 people who speak/write languages other than English, who are willing to
918 use XEmacs/MULE regularly, and have some experience with Elisp.
919
920 @xref{Q1.1.2}.
921
922 @node Q1.3.3, Q1.3.4, Q1.3.2, Introduction
923 @unnumberedsubsec Q1.3.3: How do I type non-ASCII characters?
924
925 See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ.
926
927 @node Q1.3.4, Q1.3.5, Q1.3.3, Introduction
928 @unnumberedsubsec Q1.3.4: Can XEmacs messages come out in a different language?
929
930 The message-catalog support has mostly been written but doesn't
931 currently work.  The first release of XEmacs 20 will @emph{not} support
932 it.  However, menubar localization @emph{does} work.  To
933 enable it, add to your @file{Emacs} file entries like this:
934
935 @example
936 Emacs*XlwMenu.resourceLabels:                   True
937 Emacs*XlwMenu.file.labelString:                 Fichier
938 Emacs*XlwMenu.openInOtherWindow.labelString:    In anderem Fenster oeffnen
939 @end example
940
941 The name of the resource is derived from the non-localized entry by
942 removing punctuation and capitalizing as above.
943
944 @node Q1.3.5, Q1.3.6, Q1.3.4, Introduction
945 @unnumberedsubsec Q1.3.5: Please explain the various input methods in MULE/XEmacs
946
947 @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes:
948
949 @quotation
950 Original Mule supports the following input methods: Wnn4, Wnn6, Canna, SJ3
951 and XIM. Interfaces for Wnn and SJ3 uses the @code{egg} user
952 interface. Interface for Canna does not use @samp{egg}. I don't know
953 about XIM. It is to support ATOK, of course, it may work for another
954 servers.
955
956 Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Kyôto
957 university. It is a powerful and complex system.  Wnn4 is free and Wnn6
958 is not free.
959
960 Canna supports only Japanese. It is made by NEC. It is a simple and
961 powerful system. Canna uses only grammar (Wnn uses grammar and
962 probability between words), so I think Wnn is cleverer than Canna,
963 however Canna users made a good grammar and dictionary.  So for standard
964 modern Japanese, Canna seems cleverer than Wnn4. In addition, the UNIX
965 version of Canna is free (now there is a Microsoft Windows version).
966
967 SJ3 supports only Japanese. It is made by Sony.  XIM supports was made
968 to use ATOK (a major input method in personal computer world).  XIM is
969 the standard for accessing input methods bundled in Japanese versions of
970 Solaris.  (XEmacs 20 will support XIM input).
971
972 Egg consists of following parts:
973
974 @enumerate
975 @item
976 Input character Translation System (ITS) layer.
977 It translates ASCII inputs to Kana/PinYin/Hangul characters.
978
979 @item
980 Kana/PinYin/Hangul to Kanji transfer layer.
981 It is interface layer for network Kana-Kanji server (Wnn and Sj3).
982 @end enumerate
983
984 These input methods are modal, namely there are mode, alphabet mode and
985 Kana-Kanji transfer mode.  However there are mode-less input methods for
986 Egg and Canna.  @samp{Boiled-egg} is a mode-less input method running on
987 Egg.  For Canna, @samp{canna.el} has a tiny boiled-egg like command,
988 @code{(canna-boil)}, and there are some boiled-egg like utilities.  In
989 addition, it was planned to make an abstraction for all transfer type
990 input methods.  However authors of input methods are busy, so maybe this
991 plan is stopped.  Perhaps after Mule merged GNU Emacs will be released,
992 it will be continued.
993 @end quotation
994
995 @node Q1.3.6, Q1.3.7, Q1.3.5, Introduction
996 @unnumberedsubsec Q1.3.6: How do I portably code for MULE/XEmacs?
997
998 @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes:
999
1000 @quotation
1001 MULE and XEmacs are quite different. So the application
1002 implementor must write separate code for these mule variants.
1003
1004 MULE and the next version of Emacs are similar but the symbols are very
1005 different---requiring separate code as well.
1006
1007 Namely we must support 3 kinds of mule variants and 4 or 5 or 6 kinds of
1008 emacs variants... (;_;) I'm shocked, so I wrote a wrapper package called
1009 @code{emu} to provide a common interface.
1010
1011 I have the following suggestions about dealing with mule variants:
1012
1013 @itemize @bullet
1014 @item
1015 @code{(featurep 'mule)} @code{t} on all mule variants
1016
1017 @item
1018 @code{(boundp 'MULE)} is @code{t} on only MULE.  Maybe the next version
1019 of Emacs will not have this symbol.
1020
1021 @item
1022 MULE has a variable @code{mule-version}.  Perhaps the next version of
1023 Emacs will have this variable as well.
1024 @end itemize
1025
1026 Following is a sample to distinguish mule variants:
1027
1028 @lisp
1029 (if (featurep 'mule)
1030     (cond ((boundp 'MULE)
1031            ;; for original Mule
1032            )
1033           ((string-match "XEmacs" emacs-version)
1034            ;; for XEmacs with Mule
1035            )
1036           (t
1037            ;; for next version of Emacs
1038            ))
1039   ;; for old emacs variants
1040   )
1041 @end lisp
1042 @end quotation
1043
1044 @node Q1.3.7, Q1.4.1, Q1.3.6, Introduction
1045 @unnumberedsubsec Q1.3.7: How about Cyrillic Modes?
1046
1047 @email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes:
1048
1049 @quotation
1050 There is a cyrillic mode in the file @file{mysetup.zip} in
1051 @iftex
1052 @*
1053 @end iftex
1054 @uref{ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/}.  This is a
1055 modification to @email{ava@@math.jhu.ed, Valery Alexeev's} @file{russian.el}
1056 which can be obtained from
1057 @end quotation
1058
1059 @uref{http://ftpsearch.ntnu.no/?query=russian.el.Z}.
1060 @c dead link above
1061
1062 @email{d.barsky@@ee.surrey.ac.uk, Dima Barsky} writes:
1063
1064 @quotation
1065 There is another cyrillic mode for both GNU Emacs and XEmacs by
1066 @email{manin@@camelot.mssm.edu, Dmitrii
1067 (Mitya) Manin} at
1068 @iftex
1069
1070 @end iftex
1071 @uref{http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el}.
1072 @c Link above, <URL:http://camelot.mssm.edu/~manin/cyr.el> was dead.
1073 @c Changed to russian host instead
1074 @end quotation
1075
1076 @email{rebecca.ore@@op.net, Rebecca Ore} writes:
1077
1078 @quotation
1079 The fullest resource I found on Russian language use (in and out of
1080 XEmacs) is @uref{http://sunsite.oit.unc.edu/sergei/Software/Software.html}
1081 @end quotation
1082
1083 @node Q1.4.1, Q1.4.2, Q1.3.7, Introduction
1084 @unnumberedsec 1.4: Getting Started, Backing up & Recovery
1085 @unnumberedsubsec Q1.4.1: What is an @file{init.el} or @file{.emacs} and is there a sample one?
1086
1087 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to
1088 your tastes.  Starting in 21.4, the preferred location for the init file
1089 is @file{~/.xemacs/init.el}; in previous versions, it was
1090 @file{~/.emacs}.  21.4 still accepts the old location, but the first
1091 time you run it, it will ask to migrate your file to the new location.
1092 If you answer yes, the file will be moved, and a "compatibility"
1093 @file{.emacs} file will be placed in the old location so that you can
1094 still run older versions of XEmacs, and versions of GNU Emacs, which
1095 expect the old location.  The @file{.emacs} file present is just a stub
1096 that loads the real file in @file{~/.xemacs/init.el}.
1097
1098 No two init files are alike, nor are they expected to be alike, but
1099 that's the point.  The XEmacs distribution contains an excellent starter
1100 example in the @file{etc/} directory called @file{sample.init.el}
1101 (starting in 21.4) or @file{sample.emacs} in older versions.  Copy this
1102 file from there to @file{~/.xemacs/init.el} (starting in 21.4) or
1103 @file{~/.emacs} in older versions, where @samp{~} means your home
1104 directory, of course.  Then edit it to suit.
1105
1106 You may bring the @file{sample.init.el} or @file{sample.emacs} file into
1107 an XEmacs buffer from the menubar. (The menu entry for it is always
1108 under the @samp{Help} menu, but its location under that has changed in
1109 various versions.  Recently, look under the @samp{Samples} submenu.)  To
1110 determine the location of the @file{etc/} directory type the command
1111 @kbd{C-h v data-directory @key{RET}}.
1112
1113 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction
1114 @unnumberedsubsec Q1.4.2: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
1115
1116 Yes.  The sample @file{init.el}/@file{.emacs} included in the XEmacs
1117 distribution will show you how to handle different versions and flavors
1118 of Emacs.
1119
1120 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction
1121 @unnumberedsubsec Q1.4.3: Any good tutorials around?
1122
1123 There's the XEmacs tutorial available from the Help Menu under
1124 @samp{Basics->Tutorials}, or by typing @kbd{C-h t}. To check whether
1125 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type
1126 the first letters of your preferred language, then type @key{RET}.
1127
1128 @comment There's an Emacs Lisp tutorial at
1129 @comment
1130 @comment @example
1131 @comment @uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar.gz}.
1132 @comment @end example
1133 @comment
1134 @comment @email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tutorial web
1135 @comment page at
1136 @comment @iftex
1137 @comment @*
1138 @comment @end iftex
1139 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}.
1140
1141 @node Q1.4.4, Q1.4.5, Q1.4.3, Introduction
1142 @unnumberedsubsec Q1.4.4: May I see an example of a useful XEmacs Lisp function?
1143
1144 The following function does a little bit of everything useful.  It does
1145 something with the prefix argument, it examines the text around the
1146 cursor, and it's interactive so it may be bound to a key.  It inserts
1147 copies of the current word the cursor is sitting on at the cursor.  If
1148 you give it a prefix argument: @kbd{C-u 3 M-x double-word} then it will
1149 insert 3 copies.
1150
1151 @lisp
1152 (defun double-word (count)
1153   "Insert a copy of the current word underneath the cursor"
1154   (interactive "*p")
1155   (let (here there string)
1156     (save-excursion
1157       (forward-word -1)
1158       (setq here (point))
1159       (forward-word 1)
1160       (setq there (point))
1161       (setq string (buffer-substring here there)))
1162     (while (>= count 1)
1163       (insert string)
1164       (decf count))))
1165 @end lisp
1166
1167 The best way to see what is going on here is to let XEmacs tell you.
1168 Put the code into an XEmacs buffer, and do a @kbd{C-h f} with the cursor
1169 sitting just to the right of the function you want explained.  Eg.  move
1170 the cursor to the SPACE between @code{interactive} and @samp{"*p"} and
1171 hit @kbd{C-h f} to see what the function @code{interactive} does.  Doing
1172 this will tell you that the @code{*} requires a writable buffer, and
1173 @code{p} converts the prefix argument to a number, and
1174 @code{interactive} allows you to execute the command with @kbd{M-x}.
1175
1176 @node Q1.4.5, Q1.4.6, Q1.4.4, Introduction
1177 @unnumberedsubsec Q1.4.5: And how do I bind it to a key?
1178
1179 To bind to a key do:
1180
1181 @lisp
1182 (global-set-key "\C-cd" 'double-word)
1183 @end lisp
1184
1185 Or interactively, @kbd{M-x global-set-key} and follow the prompts.
1186
1187 @node Q1.4.6, , Q1.4.5, Introduction
1188 @unnumberedsubsec Q1.4.6: What's the difference between a macro and a function?
1189
1190 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual:
1191
1192 @dfn{Macros} enable you to define new control constructs and other
1193 language features.  A macro is defined much like a function, but instead
1194 of telling how to compute a value, it tells how to compute another Lisp
1195 expression which will in turn compute the value.  We call this
1196 expression the @dfn{expansion} of the macro.
1197
1198 Macros can do this because they operate on the unevaluated expressions
1199 for the arguments, not on the argument values as functions do.  They can
1200 therefore construct an expansion containing these argument expressions
1201 or parts of them.
1202
1203 Do not confuse the two terms with @dfn{keyboard macros}, which are
1204 another matter, entirely.  A keyboard macro is a key bound to several
1205 other keys.  Refer to manual for details.
1206
1207 @node Installation, Customization, Introduction, Top
1208 @unnumbered 2 Installation and Trouble Shooting
1209
1210 This is part 2 of the XEmacs Frequently Asked Questions list.  This
1211 section is devoted to Installation, Maintenance and Trouble Shooting.
1212
1213 @menu
1214 Installation:
1215 * Q2.0.1::      Running XEmacs without installing.
1216 * Q2.0.2::      XEmacs is too big.
1217 * Q2.0.3::      Compiling XEmacs with Netaudio.
1218 * Q2.0.4::      Problems with Linux and ncurses.
1219 * Q2.0.5::      Do I need X11 to run XEmacs?
1220 * Q2.0.6::      I'm having strange crashes.  What do I do?
1221 * Q2.0.7::      Libraries in non-standard locations.
1222 * Q2.0.8::      can't resolve symbol _h_errno
1223 * Q2.0.9::      Where do I find external libraries?
1224 * Q2.0.10::     After I run configure I find a coredump, is something wrong?
1225 * Q2.0.11::     XEmacs can't resolve host names.
1226 * Q2.0.12::     Why can't I strip XEmacs?
1227 * Q2.0.13::     I don't need no steenkin' packages.  Do I? (NEW)
1228 * Q2.0.14::     I don't want to install a million .els one at a time! (NEW)
1229
1230 Trouble Shooting:
1231 * Q2.1.1::      XEmacs just crashed on me!
1232 * Q2.1.2::      Cryptic Minibuffer messages.
1233 * Q2.1.3::      Translation Table Syntax messages at Startup.
1234 * Q2.1.4::      Startup warnings about deducing proper fonts?
1235 * Q2.1.5::      XEmacs cannot connect to my X Terminal.
1236 * Q2.1.6::      XEmacs just locked up my Linux X server.
1237 * Q2.1.7::      HP Alt key as Meta.
1238 * Q2.1.8::      got (wrong-type-argument color-instance-p nil)!
1239 * Q2.1.9::      XEmacs causes my OpenWindows 3.0 server to crash.
1240 * Q2.1.10::     Warnings from incorrect key modifiers.
1241 * Q2.1.11::     Can't instantiate image error... in toolbar
1242 * Q2.1.12::     Regular Expression Problems on DEC OSF1.
1243 * Q2.1.13::     HP/UX 10.10 and @code{create_process} failure
1244 * Q2.1.14::     @kbd{C-g} doesn't work for me.  Is it broken?
1245 * Q2.1.15::     How to debug an XEmacs problem with a debugger.
1246 * Q2.1.16::     XEmacs crashes in @code{strcat} on HP/UX 10.
1247 * Q2.1.17::     @samp{Marker does not point anywhere}.
1248 * Q2.1.18::     XEmacs is outputting lots of X errors.
1249 * Q2.1.19::     XEmacs does not follow the local timezone.
1250 * Q2.1.20::     @samp{Symbol's function definition is void: hkey-help-show.}
1251 * Q2.1.21::     [This question intentionally left blank]
1252 * Q2.1.22::     XEmacs seems to take a really long time to do some things.
1253 * Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
1254 * Q2.1.24::     XEmacs won't start without network. (NEW)
1255 * Q2.1.25::     After upgrading, XEmacs won't do `foo' any more! (NEW)
1256 @end menu
1257
1258 @node Q2.0.1, Q2.0.2, Installation, Installation
1259 @unnumberedsec 2.0: Installation
1260 @unnumberedsubsec Q2.0.1: Running XEmacs without installing
1261
1262 How can I just try XEmacs without installing it?
1263
1264 XEmacs will run in place without requiring installation and copying of
1265 the Lisp directories, and without having to specify a special build-time
1266 flag.  It's the copying of the Lisp directories that requires so much
1267 space.  XEmacs is largely written in Lisp.
1268
1269 A good method is to make a shell alias for xemacs:
1270
1271 @example
1272 alias xemacs=/i/xemacs-20.2/src/xemacs
1273 @end example
1274
1275 (You will obviously use whatever directory you downloaded the source
1276 tree to instead of @file{/i/xemacs-20.2}).
1277
1278 This will let you run XEmacs without massive copying.
1279
1280 @node Q2.0.2, Q2.0.3, Q2.0.1, Installation
1281 @unnumberedsubsec Q2.0.2: XEmacs is too big
1282
1283 The space required by the installation directories can be
1284 reduced dramatically if desired.  Gzip all the .el files.  Remove all
1285 the packages you'll never want to use.  Remove the TexInfo manuals.
1286 Remove the Info (and use just hardcopy versions of the manual).  Remove
1287 most of the stuff in etc.  Remove or gzip all the source code.  Gzip or
1288 remove the C source code.  Configure it so that copies are not made of
1289 the support lisp.  
1290
1291 These are all Emacs Lisp source code and bytecompiled object code.  You
1292 may safely gzip everything named *.el here.  You may remove any package
1293 you don't use.  @emph{Nothing bad will happen if you delete a package
1294 that you do not use}.  You must be sure you do not use it though, so be
1295 conservative at first.
1296
1297 Possible candidates for deletion include w3, games, hyperbole, mh-e,
1298 hm-html-menus, vm, viper, oobr, gnus, etc.  Ask yourself, @emph{Do I
1299 ever want to use this package?}  If the answer is no, then it is a
1300 candidate for removal.
1301
1302 First, gzip all the .el files.  Then go about package by package and
1303 start gzipping the .elc files.  Then run XEmacs and do whatever it is
1304 you normally do.  If nothing bad happens, then delete the directory.  Be
1305 conservative about deleting directories, and it would be handy to have a
1306 backup around in case you get too zealous.
1307
1308 @file{prim}, @file{modes}, @file{packages}, and @file{utils} are four
1309 directories you definitely do @strong{not} want to delete, although
1310 certain packages can be removed from them if you do not use them.
1311
1312 Online texinfo sources in the @file{info} can either be compressed them
1313 or remove them.  In either case, @kbd{C-h i} (info mode) will no longer
1314 work.
1315
1316 @node Q2.0.3, Q2.0.4, Q2.0.2, Installation
1317 @unnumberedsubsec Q2.0.3: Compiling XEmacs with Netaudio.
1318
1319 What is the best way to compile XEmacs with the netaudio system, since I
1320 have got the netaudio system compiled but installed at a weird place, I
1321 am not root.  Also in the READMEs it does not say anything about
1322 compiling with the audioserver?
1323
1324 You should only need to add some stuff to the configure command line.
1325 To tell it to compile in netaudio support: @samp{--with-sound=both}, or
1326 @samp{--with-sound=nas} if you don't want native sound support for some
1327 reason.) To tell it where to find the netaudio includes and libraries:
1328
1329 @example
1330 --site-libraries=WHATEVER
1331 --site-includes=WHATEVER
1332 @end example
1333
1334 Then (fingers crossed) it should compile and it will use netaudio if you
1335 have a server running corresponding to the X server. The netaudio server
1336 has to be there when XEmacs starts. If the netaudio server goes away and
1337 another is run, XEmacs should cope (fingers crossed, error handling in
1338 netaudio isn't perfect).
1339
1340 BTW, netaudio has been renamed as it has a name clash with something
1341 else, so if you see references to NAS or Network Audio System, it's the
1342 same thing.  It also might be found at
1343 @uref{ftp://ftp.x.org/contrib/audio/nas/}.
1344
1345 @node Q2.0.4, Q2.0.5, Q2.0.3, Installation
1346 @unnumberedsubsec Q2.0.4: Problems with Linux and ncurses.
1347
1348 On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc
1349 5.2.18, XEmacs 20.0b20 is unable to open a tty device:
1350
1351 @example
1352 src/xemacs -nw -q
1353 Initialization error:
1354 @iftex
1355 @*
1356 @end iftex
1357 Terminal type `xterm' undefined (or can't access database?)
1358 @end example
1359
1360 @email{ben@@xemacs.org, Ben Wing} writes:
1361
1362 @quotation
1363 Your ncurses configuration is messed up.  Your /usr/lib/terminfo is a
1364 bad pointer, perhaps to a CD-ROM that is not inserted.
1365 @end quotation
1366
1367 @node Q2.0.5, Q2.0.6, Q2.0.4, Installation
1368 @unnumberedsubsec Q2.0.5: Do I need X11 to run XEmacs?
1369
1370 No.  The name @dfn{XEmacs} is unfortunate in the sense that it is
1371 @strong{not} an X Window System-only version of Emacs.  XEmacs has
1372 full color support on a color-capable character terminal.
1373
1374 @node Q2.0.6, Q2.0.7, Q2.0.5, Installation
1375 @unnumberedsubsec Q2.0.6: I'm having strange crashes.  What do I do?
1376
1377 There have been a variety of reports of crashes due to compilers with
1378 buggy optimizers.  Please see the @file{PROBLEMS} file that comes with
1379 XEmacs to read what it says about your platform.
1380
1381 @node Q2.0.7, Q2.0.8, Q2.0.6, Installation
1382 @unnumberedsubsec Q2.0.7: Libraries in non-standard locations
1383
1384 I have x-faces, jpeg, xpm etc. all in different places.  I've tried
1385 space-separated, comma-separated, several --site-libraries, all to no
1386 avail.
1387
1388 @example
1389 --site-libraries='/path/one /path/two /path/etc'
1390 @end example
1391
1392 @node Q2.0.8, Q2.0.9, Q2.0.7, Installation
1393 @unnumberedsubsec Q2.0.8: can't resolve symbol _h_errno
1394
1395 You are using the Linux/ELF distribution of XEmacs 19.14, and your ELF
1396 libraries are out of date.  You have the following options:
1397
1398 @enumerate
1399 @item
1400 Upgrade your libc to at least 5.2.16 (better is 5.2.18, 5.3.12, or
1401 5.4.10).
1402
1403 @item
1404 Patch the XEmacs binary by replacing all occurrences of
1405 @samp{_h_errno^@@} with
1406 @iftex
1407 @*
1408 @end iftex
1409 @samp{h_errno^@@^@@}.  Any version of Emacs will
1410 suffice.  If you don't understand how to do this, don't do it.
1411
1412 @item
1413 Rebuild XEmacs yourself---any working ELF version of libc should be
1414 O.K.
1415 @end enumerate
1416
1417 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
1418
1419 @quotation
1420 Why not use a Perl one-liner for No. 2?
1421
1422 @example
1423 perl -pi -e 's/_h_errno\0/h_errno\0\0/g' \
1424 /usr/local/bin/xemacs-19.14
1425 @end example
1426
1427 NB: You @emph{must} patch @file{/usr/local/bin/xemacs-19.14}, and not
1428 @file{xemacs} because @file{xemacs} is a link to @file{xemacs-19.14};
1429 the Perl @samp{-i} option will cause unwanted side-effects if applied to
1430 a symbolic link.
1431 @end quotation
1432
1433 @email{steve@@xemacs.org, SL Baur} writes:
1434
1435 @quotation
1436 If you build against a recent libc-5.4 (late enough to have caused
1437 problems earlier in the beta cycle) and then run with an earlier version
1438 of libc, you get a
1439
1440 @example
1441 $ xemacs
1442 xemacs: can't resolve symbol '__malloc_hook'
1443 zsh: 7942 segmentation fault (core dumped)  xemacs
1444 @end example
1445
1446 (Example binary compiled against libc-5.4.23 and run with libc-5.4.16).
1447
1448 The solution is to upgrade to at least libc-5.4.23.  Sigh.  Drat.
1449 @end quotation
1450
1451 @node Q2.0.9, Q2.0.10, Q2.0.8, Installation
1452 @unnumberedsubsec Q2.0.9: Where do I find external libraries?
1453
1454 All external libraries used by XEmacs can be found at the XEmacs FTP
1455 site
1456 @iftex
1457 @*
1458 @end iftex
1459 @uref{ftp://ftp.xemacs.org/pub/xemacs/aux/}.
1460
1461 @c Changed June Link above, <URL:ftp://ftp.xemacs.org/pub/aux/> was dead.
1462 @c This list is a pain in the you-know-what to keep in synch with the
1463 @c world.
1464 The canonical locations (at the time of this writing) are as follows:
1465
1466 @table @asis
1467 @item JPEG
1468 @uref{ftp://ftp.uu.net/graphics/jpeg/}.  Version 6a is current.
1469 @c Check from host with legal IP address
1470 @item XPM
1471 @uref{ftp://ftp.x.org/contrib/libraries/}.  Version 3.4j is current.
1472 Older versions of this package are known to cause XEmacs crashes.
1473
1474 @item TIFF
1475 @uref{ftp://ftp.sgi.com/graphics/tiff/}.  v3.4 is current.  The latest
1476 beta is v3.4b035.  There is a HOWTO here.
1477
1478 @item PNG
1479 @uref{ftp://ftp.uu.net/graphics/png/}.  0.89c is current.  XEmacs
1480 requires a fairly recent version to avoid using temporary files.
1481 @c Check from host with legal IP address
1482
1483 @uref{ftp://swrinde.nde.swri.edu/pub/png/src/}
1484
1485 @item Compface
1486 @uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/}.  This library has
1487 been frozen for about 6 years, and is distributed without version
1488 numbers.  @emph{It should be compiled with the same options that X11 was
1489 compiled with on your system}.  The version of this library at
1490 XEmacs.org includes the @file{xbm2xface.pl} script, written by
1491 @email{stig@@hackvan.com}, which may be useful when generating your own xface.
1492
1493 @item NAS
1494 @uref{ftp://ftp.x.org/contrib/audio/nas/}.
1495 Version 1.2p5 is current.  There is a FAQ here.
1496 @end table
1497
1498 @node Q2.0.10, Q2.0.11, Q2.0.9, Installation
1499 @unnumberedsubsec Q2.0.10: After I run configure I find a core dump, is something wrong?
1500
1501 Not necessarily.  If you have GNU sed 3.0 you should downgrade it to
1502 2.05.  From the @file{README} at prep.ai.mit.edu:
1503
1504 @quotation
1505 sed 3.0 has been withdrawn from distribution.  It has major revisions,
1506 which mostly seem to be improvements; but it turns out to have bugs too
1507 which cause trouble in some common cases.
1508
1509 Tom Lord won't be able to work fixing the bugs until May.  So in the
1510 mean time, we've decided to withdraw sed 3.0 from distribution and make
1511 version 2.05 once again the recommended version.
1512 @end quotation
1513
1514 It has also been observed that the vfork test on Solaris will leave a
1515 core dump.
1516
1517 @node Q2.0.11, Q2.0.12, Q2.0.10, Installation
1518 @unnumberedsubsec Q2.0.11: XEmacs doesn't resolve hostnames.
1519
1520 This is the result of a long-standing problem with SunOS and the fact
1521 that stock SunOS systems do not ship with DNS resolver code in libc.
1522
1523 @email{ckd@@loiosh.kei.com, Christopher Davis} writes:
1524
1525 @quotation
1526 That's correct [The SunOS 4.1.3 precompiled binaries don't do name
1527 lookup].  Since Sun figured that everyone used NIS to do name lookups
1528 (that DNS thing was apparently only a passing fad, right?), the stock
1529 SunOS 4.x systems don't have DNS-based name lookups in libc.
1530
1531 This is also why Netscape ships two binaries for SunOS 4.1.x.
1532
1533 The best solution is to compile it yourself; the configure script will
1534 check to see if you've put DNS in the shared libc and will then proceed
1535 to link against the DNS resolver library code.
1536 @end quotation
1537
1538 @node Q2.0.12, Q2.0.13, Q2.0.11, Installation
1539 @unnumberedsubsec Q2.0.12: Why can't I strip XEmacs?
1540
1541 @email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes:
1542
1543 @quotation
1544 Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The
1545 link gives you a bare-boned emacs (called temacs). temacs is then run,
1546 preloading some of the lisp files. The result is then dumped into a new
1547 executable, named xemacs, which will contain all of the preloaded lisp
1548 functions and data.
1549
1550 Now, during the dump itself, the executable (code+data+symbols) is
1551 written on disk using a special unexec() function. This function is
1552 obviously heavily system dependent. And on some systems, it leads to an
1553 executable which, although valid, cannot be stripped without damage. If
1554 memory serves, this is especially the case for AIX binaries. On other
1555 architectures it might work OK.
1556
1557 The Right Way to strip the emacs binary is to strip temacs prior to
1558 dumping xemacs. This will always work, although you can do that only if
1559 you install from sources (as temacs is @file{not} part of the binary
1560 kits).
1561 @end quotation
1562
1563 @email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes:
1564
1565 @quotation
1566 Here is the trick:
1567
1568 @enumerate
1569 @item
1570 [ ./configure; make ]
1571
1572 @item
1573 rm src/xemacs
1574
1575 @item
1576 strip src/temacs
1577
1578 @item
1579 make
1580
1581 @item
1582 cp src/xemacs /usr/local/bin/xemacs
1583
1584 @item
1585 cp lib-src/DOC-19.16-XEmacs
1586 @iftex
1587 \ @*
1588 @end iftex
1589 /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
1590 @end enumerate
1591 @end quotation
1592
1593 @node Q2.0.13, Q2.0.14, Q2.0.12, Installation
1594 @unnumberedsubsec Q2.0.13: I don't need no steenkin' packages.  Do I? (NEW)
1595
1596 Strictly speaking, no.  XEmacs will build and install just fine without
1597 any packages installed.  However, only the most basic editing functions
1598 will be available with no packages installed, so installing packages is
1599 an essential part of making your installed XEmacs _useful_.
1600
1601 @node Q2.0.14, Q2.1.1, Q2.0.13, Installation
1602 @unnumberedsubsec Q2.0.12: How do I figure out which packages to install? (NEW)
1603
1604 Many people really liked the old way that packages were bundled and do
1605 not want to mess with packages at all.  You can grab all the packages at
1606 once like you used to with old XEmacs versions.  Download the file
1607
1608 @file{xemacs-sumo.tar.gz}
1609
1610 For an XEmacs compiled with Mule you also need
1611
1612 @file{xemacs-mule-sumo.tar.gz}
1613
1614 from the @file{packages} directory on your XEmacs mirror archive.
1615 N.B. They are called 'Sumo Tarballs' for good reason. They are
1616 currently about 15MB and 2.3MB (gzipped) respectively.
1617
1618 Install them by
1619
1620 @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -}
1621
1622 See README.packages for more detailed installation instructions.
1623
1624 As the Sumo tarballs are not regenerated as often as the individual
1625 packages, it is recommended that you use the automatic package tools
1626 afterwards to pick up any recent updates.
1627
1628 @node Q2.1.1, Q2.1.2, Q2.0.14, Installation
1629 @unnumberedsec 2.1: Trouble Shooting
1630 @unnumberedsubsec Q2.1.1: Help!  XEmacs just crashed on me!
1631
1632 First of all, don't panic.  Whenever XEmacs crashes, it tries extremely
1633 hard to auto-save all of your files before dying.  (The main time that
1634 this will not happen is if the machine physically lost power or if you
1635 killed the XEmacs process using @code{kill -9}).  The next time you try
1636 to edit those files, you will be informed that a more recent auto-save
1637 file exists.  You can use @kbd{M-x recover-file} to retrieve the
1638 auto-saved version of the file.
1639
1640 You can use the command @kbd{M-x recover-session} after a crash to pick
1641 up where you left off.
1642
1643 Now, XEmacs is not perfect, and there may occasionally be times, or
1644 particular sequences of actions, that cause it to crash.  If you can
1645 come up with a reproducible way of doing this (or even if you have a
1646 pretty good memory of exactly what you were doing at the time), the
1647 maintainers would be very interested in knowing about it.  Post a
1648 message to comp.emacs.xemacs or send mail to @email{crashes@@xemacs.org}.
1649 Please note that the @samp{crashes} address is exclusively for crash
1650 reports.
1651
1652 If at all possible, include a stack backtrace of the core dump that was
1653 produced.  This shows where exactly things went wrong, and makes it much
1654 easier to diagnose problems.  To do this, you need to locate the core
1655 file (it's called @file{core}, and is usually sitting in the directory
1656 that you started XEmacs from, or your home directory if that other
1657 directory was not writable).  Then, go to that directory and execute a
1658 command like:
1659
1660 @example
1661 gdb `which xemacs` core
1662 @end example
1663
1664 and then issue the command @samp{where} to get the stack backtrace.  You
1665 might have to use @code{dbx} or some similar debugger in place of
1666 @code{gdb}.  If you don't have any such debugger available, complain to
1667 your system administrator.
1668
1669 It's possible that a core file didn't get produced, in which case you're
1670 out of luck.  Go complain to your system administrator and tell him not
1671 to disable core files by default.  Also see @ref{Q2.1.15}, for tips and
1672 techniques for dealing with a debugger.
1673
1674 When making a problem report make sure that:
1675
1676 @enumerate
1677 @item
1678 Report @strong{all} of the information output by XEmacs during the
1679 crash.
1680
1681 @item
1682 You mention what O/S & Hardware you are running XEmacs on.
1683
1684 @item
1685 What version of XEmacs you are running.
1686
1687 @item
1688 What build options you are using.
1689
1690 @item
1691 If the problem is related to graphics, we will also need to know what
1692 version of the X Window System you are running, and what window manager
1693 you are using.
1694
1695 @item
1696 If the problem happened on a tty, please include the terminal type.
1697 @end enumerate
1698
1699 @node Q2.1.2, Q2.1.3, Q2.1.1, Installation
1700 @unnumberedsubsec Q2.1.2: Cryptic Minibuffer messages.
1701
1702 When I try to use some particular option of some particular package, I
1703 get a cryptic error in the minibuffer.
1704
1705 If you can't figure out what's going on, select Options/General
1706 Options/Debug on Error from the Menubar and then try and make the error
1707 happen again.  This will give you a backtrace that may be enlightening.
1708 If not, try reading through this FAQ; if that fails, you could try
1709 posting to comp.emacs.xemacs (making sure to include the backtrace) and
1710 someone may be able to help.  If you can identify which Emacs lisp
1711 source file the error is coming from you can get a more detailed stack
1712 backtrace by doing the following:
1713
1714 @enumerate
1715 @item
1716 Visit the .el file in an XEmacs buffer.
1717
1718 @item
1719 Issue the command @kbd{M-x eval-current-buffer}.
1720
1721 @item
1722 Reproduce the error.
1723 @end enumerate
1724
1725 Depending on the version of XEmacs, you may either select View->Show
1726 Message Log (recent versions), Edit->Show Messages (some earlier
1727 versions) or Help->Recent Keystrokes/Messages (other earlier versions)
1728 from the menubar to see the most recent messages.  This command is bound
1729 to @kbd{C-h l} by default.
1730
1731 @node Q2.1.3, Q2.1.4, Q2.1.2, Installation
1732 @unnumberedsubsec Q2.1.3: Translation Table Syntax messages at Startup
1733
1734 I get tons of translation table syntax error messages during startup.
1735 How do I get rid of them?
1736
1737 There are two causes of this problem.  The first usually only strikes
1738 people using the prebuilt binaries.  The culprit in both cases is the
1739 file @file{XKeysymDB}.
1740
1741 @itemize @bullet
1742 @item
1743 The binary cannot find the @file{XKeysymDB} file.  The location is
1744 hardcoded at compile time so if the system the binary was built on puts
1745 it a different place than your system does, you have problems.  To fix,
1746 set the environment variable @var{XKEYSYMDB} to the location of the
1747 @file{XKeysymDB} file on your system or to the location of the one
1748 included with XEmacs which should be at
1749 @iftex
1750 @*
1751 @end iftex
1752 @file{<xemacs_root_directory>/lib/xemacs-19.16/etc/XKeysymDB}.
1753
1754 @item
1755 The binary is finding the XKeysymDB but it is out-of-date on your system
1756 and does not contain the necessary lines.  Either ask your system
1757 administrator to replace it with the one which comes with XEmacs (which
1758 is the stock R6 version and is backwards compatible) or set your
1759 @var{XKEYSYMDB} variable to the location of XEmacs's described above.
1760 @end itemize
1761
1762 @node Q2.1.4, Q2.1.5, Q2.1.3, Installation
1763 @unnumberedsubsec Q2.1.4: Startup warnings about deducing proper fonts?
1764
1765 How can I avoid the startup warnings about deducing proper fonts?
1766
1767 This is highly dependent on your installation, but try with the
1768 following font as your base font for XEmacs and see what it does:
1769
1770 @format
1771 -adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
1772 @end format
1773
1774 More precisely, do the following in your resource file:
1775
1776 @format
1777 Emacs.default.attributeFont: \
1778 -adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
1779 @end format
1780
1781 If you just don't want to see the @samp{*Warnings*} buffer at startup
1782 time, you can set this:
1783
1784 @lisp
1785 (setq display-warning-minimum-level 'error)
1786 @end lisp
1787
1788 The buffer still exists; it just isn't in your face.
1789
1790 @node Q2.1.5, Q2.1.6, Q2.1.4, Installation
1791 @unnumberedsubsec Q2.1.5: XEmacs cannot connect to my X Terminal!
1792
1793 Help!  I can not get XEmacs to display on my Envizex X-terminal!
1794
1795 Try setting the @var{DISPLAY} variable using the numeric IP address of
1796 the host you are running XEmacs from.
1797
1798 @node Q2.1.6, Q2.1.7, Q2.1.5, Installation
1799 @unnumberedsubsec Q2.1.6: XEmacs just locked up my Linux X server!
1800
1801 There have been several reports of the X server locking up under Linux.
1802 In all reported cases removing speedo and scaled fonts from the font
1803 path corrected the problem.  This can be done with the command
1804 @code{xset}.
1805
1806 It is possible that using a font server may also solve the problem.
1807
1808 @node Q2.1.7, Q2.1.8, Q2.1.6, Installation
1809 @unnumberedsubsec Q2.1.7: HP Alt key as Meta.
1810
1811 How can I make XEmacs recognize the Alt key of my HP workstation as a
1812 Meta key?
1813
1814 Put the following line into a file and load it with xmodmap(1) before
1815 starting XEmacs:
1816
1817 @example
1818 remove Mod1 = Mode_switch
1819 @end example
1820
1821 @node Q2.1.8, Q2.1.9, Q2.1.7, Installation
1822 @unnumberedsubsec Q2.1.8: got (wrong-type-argument color-instance-p nil)
1823
1824 @email{nataliek@@rd.scitec.com.au, Natalie Kershaw} writes:
1825
1826 @quotation
1827 I am trying to run xemacs 19.13 under X11R4. Whenever I move the mouse I
1828 get the following error. Has anyone seen anything like this? This
1829 doesn't occur on X11R5.
1830
1831 @lisp
1832 Signalling:
1833 (error "got (wrong-type-argument color-instance-p nil)
1834 and I don't know why!")
1835 @end lisp
1836 @end quotation
1837
1838 @email{map01kd@@gold.ac.uk, dinos} writes:
1839
1840 @quotation
1841 I think this is due to undefined resources; You need to define color
1842 backgrounds and foregrounds into your @file{.../app-defaults/Emacs}
1843 like:
1844
1845 @example
1846 *Foreground:    Black   ;everything will be of black on grey95,
1847 *Background:    Grey95  ;unless otherwise specified.
1848 *cursorColor:   Red3    ;red3 cursor with grey95 border.
1849 *pointerColor:  Red3    ;red3 pointer with grey95 border.
1850 @end example
1851 @end quotation
1852
1853 Natalie Kershaw adds:
1854
1855 @quotation
1856 What fixed the problem was adding some more colors to the X color
1857 database (copying the X11R5 colors over), and also defining the
1858 following resources:
1859
1860 @example
1861 xemacs*cursorColor:    black
1862 xemacs*pointerColor:   black
1863 @end example
1864
1865 With the new colors installed the problem still occurs if the above
1866 resources are not defined.
1867
1868 If the new colors are not present then an additional error occurs on
1869 XEmacs startup, which says @samp{Color Red3} not defined.
1870 @end quotation
1871
1872 @node Q2.1.9, Q2.1.10, Q2.1.8, Installation
1873 @unnumberedsubsec Q2.1.9: XEmacs causes my OpenWindows 3.0 server to crash.
1874
1875 The OpenWindows 3.0 server is incredibly buggy.  Your best bet is to
1876 replace it with one from the generic MIT X11 release.  You might also
1877 try disabling parts of your @file{init.el}/@file{.emacs}, like those
1878 that enable background pixmaps.
1879
1880 @node Q2.1.10, Q2.1.11, Q2.1.9, Installation
1881 @unnumberedsubsec Q2.1.10: Warnings from incorrect key modifiers.
1882
1883 The following information comes from the @file{PROBLEMS} file that comes
1884 with XEmacs.
1885
1886 If you're having troubles with HP/UX it is because HP/UX defines the
1887 modifiers wrong in X.  Here is a shell script to fix the problem; be
1888 sure that it is run after VUE configures the X server.
1889
1890 @example
1891 #! /bin/sh
1892 xmodmap 2> /dev/null - << EOF
1893 keysym Alt_L = Meta_L
1894 keysym Alt_R = Meta_R
1895 EOF
1896
1897 xmodmap - << EOF
1898 clear mod1
1899 keysym Mode_switch = NoSymbol
1900 add mod1 = Meta_L
1901 keysym Meta_R = Mode_switch
1902 add mod2 = Mode_switch
1903 EOF
1904 @end example
1905
1906 @node Q2.1.11, Q2.1.12, Q2.1.10, Installation
1907 @unnumberedsubsec Q2.1.11: @samp{Can't instantiate image error...} in toolbar
1908 @c New
1909
1910 @email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes:
1911
1912 I just installed the XEmacs (20.4-2) RPMS that I downloaded from
1913 @uref{http://www.xemacs.org/}.  Everything works fine, except that when
1914 I place my mouse over the toolbar, it beeps and gives me this message:
1915
1916 @example
1917  Can't instantiate image (probably cached):
1918  [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
1919  (16 16 <strange control characters> ...
1920 @end example
1921
1922 @email{kyle_jones@@wonderworks.com, Kyle Jones} writes:
1923 @quotation
1924 This is problem specific to some Chips and Technologies video
1925 chips, when running XFree86.  Putting
1926
1927 @code{Option "sw_cursor"}
1928
1929 in @file{XF86Config} gets rid of the problem.
1930 @end quotation
1931
1932 @node Q2.1.12, Q2.1.13, Q2.1.11, Installation
1933 @unnumberedsubsec Q2.1.12: Problems with Regular Expressions on DEC OSF1.
1934
1935 I have xemacs 19.13 running on an alpha running OSF1 V3.2 148 and ispell
1936 would not run because it claimed the version number was incorrect
1937 although it was indeed OK. I traced the problem to the regular
1938 expression handler.
1939
1940 @email{douglask@@dstc.edu.au, Douglas Kosovic} writes:
1941
1942 @quotation
1943 Actually it's a DEC cc optimization bug that screws up the regexp
1944 handling in XEmacs.
1945
1946 Rebuilding using the @samp{-migrate} switch for DEC cc (which uses a
1947 different sort of optimization) works fine.
1948 @end quotation
1949
1950 See @file{xemacs-19_13-dunix-3_2c.patch} at the following URL on how to
1951 build with the @samp{-migrate} flag:
1952
1953 @example
1954 @uref{http://www-digital.cern.ch/carney/emacs/emacs.html}
1955 @c Link above, <URL:http://www-digital.cern.ch/carney/emacs/emacs.html> is
1956 @c dead. And the directory `carney' is empty.
1957
1958
1959
1960 @end example
1961
1962 NOTE: There have been a variety of other problems reported that are
1963 fixed in this fashion.
1964
1965 @node Q2.1.13, Q2.1.14, Q2.1.12, Installation
1966 @unnumberedsubsec Q2.1.13: HP/UX 10.10 and @code{create_process} failure.
1967
1968 @email{Dave.Carrigan@@ipl.ca, Dave Carrigan} writes:
1969
1970 @quotation
1971 With XEmacs 19.13 and HP/UX 10.10, anything that relies on the
1972 @code{create_process} function fails. This breaks a lot of things
1973 (shell-mode, compile, ange-ftp, to name a few).
1974 @end quotation
1975
1976 @email{johnson@@dtc.hp.com, Phil Johnson} writes:
1977
1978 @quotation
1979 This is a problem specific to HP-UX 10.10.  It only occurs when XEmacs
1980 is compiled for shared libraries (the default), so you can work around
1981 it by compiling a statically-linked binary (run configure with
1982 @samp{--dynamic=no}).
1983
1984 I'm not sure whether the problem is with a particular shared library or
1985 if it's a kernel problem which crept into 10.10.
1986 @end quotation
1987
1988 @email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes:
1989
1990 @quotation
1991 I had a few problems with 10.10. Apparently, some of them were solved by
1992 forcing a static link of libc (manually).
1993 @end quotation
1994
1995 @node Q2.1.14, Q2.1.15, Q2.1.13, Installation
1996 @unnumberedsubsec Q2.1.14: @kbd{C-g} doesn't work for me.  Is it broken?
1997
1998 @email{ben@@xemacs.org, Ben Wing} writes:
1999
2000 @quotation
2001 @kbd{C-g} does work for most people in most circumstances.  If it
2002 doesn't, there are only two explanations:
2003
2004 @enumerate
2005 @item
2006 The code is wrapped with a binding of @code{inhibit-quit} to
2007 @code{t}.  @kbd{Ctrl-Shift-G} should still work, I think.
2008
2009 @item
2010 SIGIO is broken on your system, but BROKEN_SIGIO isn't defined.
2011 @end enumerate
2012
2013 To test #2, try executing @code{(while t)} from the @samp{*scratch*}
2014 buffer.  If @kbd{C-g} doesn't interrupt, then you're seeing #2.
2015 @end quotation
2016
2017 @email{terra@@diku.dk, Morten Welinder} writes:
2018
2019 @quotation
2020 On some (but @emph{not} all) machines a hung XEmacs can be revived by
2021 @code{kill -FPE <pid>}.  This is a hack, of course, not a solution.
2022 This technique works on a Sun4 running 4.1.3_U1.  To see if it works for
2023 you, start another XEmacs and test with that first.  If you get a core
2024 dump the method doesn't work and if you get @samp{Arithmetic error} then
2025 it does.
2026 @end quotation
2027
2028 @node Q2.1.15, Q2.1.16, Q2.1.14, Installation
2029 @unnumberedsubsec Q2.1.15: How to Debug an XEmacs problem with a debugger
2030
2031 If XEmacs does crash on you, one of the most productive things you can
2032 do to help get the bug fixed is to poke around a bit with the debugger.
2033 Here are some hints:
2034
2035 @itemize @bullet
2036 @item
2037 First of all, if the crash is at all reproducible, consider very
2038 strongly recompiling your XEmacs with debugging symbols and with no
2039 optimization (e.g. with GCC use the compiler flags @samp{-g -O0} --
2040 that's an "oh" followed by a zero), and with the configure options
2041 @samp{--debug=yes} and @samp{--error-checking=all}.  This will make your
2042 XEmacs run somewhat slower but make it a lot more likely to catch the
2043 problem earlier (closer to its source), and a lot easier to determine
2044 what's going on with a debugger.
2045
2046 @item
2047 If you're able to run XEmacs under a debugger and reproduce the crash
2048 (if it's inconvenient to do this because XEmacs is already running or is
2049 running in batch mode as part of a bunch of scripts, consider attaching
2050 to the existing process with your debugger; most debuggers let you do
2051 this by substituting the process ID for the core file when you invoke
2052 the debugger from the command line, or by using the @code{attach}
2053 command or something similar), here are some things you can do:
2054
2055 @item
2056 If XEmacs is hitting an assertion failure, put a breakpoint on
2057 @code{assert_failed()}.
2058
2059 @item
2060 If XEmacs is hitting some weird Lisp error that's causing it to crash
2061 (e.g. during startup), put a breakpoint on @code{signal_1()}---this is
2062 declared static in eval.c.
2063
2064 @item
2065 If XEmacs is outputting lots of X errors, put a breakpoint on
2066 @code{x_error_handler()}; that will tell you which call is causing them.
2067
2068 @item
2069 Internally, you will probably see lots of variables that hold objects of
2070 type @code{Lisp_Object}.  These are exactly what they appear to be,
2071 i.e. references to Lisp objects.  Printing them out with the debugger
2072 probably won't be too useful---you'll likely just see a number.  To
2073 decode them, do this:
2074
2075 @example
2076 call debug_print (OBJECT)
2077 @end example
2078
2079 where @var{OBJECT} is whatever you want to decode (it can be a variable,
2080 a function call, etc.).  This will print out a readable representation
2081 on the TTY from which the xemacs process was invoked.
2082
2083 @item
2084 If you want to get a Lisp backtrace showing the Lisp call
2085 stack, do this:
2086
2087 @example
2088 call debug_backtrace ()
2089 @end example
2090
2091 @item
2092 Using @code{debug_print} and @code{debug_backtrace} has two
2093 disadvantages - it can only be used with a running xemacs process, and
2094 it cannot display the internal C structure of a Lisp Object.  Even if
2095 all you've got is a core dump, all is not lost.
2096
2097 If you're using GDB, there are some macros in the file
2098 @file{src/.gdbinit} in the XEmacs source distribution that should make
2099 it easier for you to decode Lisp objects.  This file is automatically
2100 read by gdb if gdb is run in the directory where xemacs was built, and
2101 contains these useful macros to inspect the state of xemacs:
2102
2103 @table @code
2104 @item pobj
2105 Usage: pobj lisp_object @*
2106 Print the internal C representation of a lisp object.
2107
2108 @item xtype
2109 Usage: xtype lisp_object @*
2110 Print the Lisp type of a lisp object.
2111
2112 @item lbt
2113 Usage: lbt @*
2114 Print the current Lisp stack trace.
2115 Requires a running xemacs process.
2116
2117 @item ldp
2118 Usage: ldp lisp_object @*
2119 Print a Lisp Object value using the Lisp printer.
2120 Requires a running xemacs process.
2121
2122 @item run-temacs
2123 Usage: run-temacs @*
2124 Run temacs interactively, like xemacs.
2125 Use this with debugging tools (like purify) that cannot deal with dumping,
2126 or when temacs builds successfully, but xemacs does not.
2127
2128 @item dump-temacs
2129 Usage: dump-temacs @*
2130 Run the dumping part of the build procedure.
2131 Use when debugging temacs, not xemacs!
2132 Use this when temacs builds successfully, but xemacs does not.
2133
2134 @item check-xemacs
2135 Usage: check-xemacs @*
2136 Run the test suite.  Equivalent to 'make check'.
2137
2138 @item check-temacs
2139 Usage: check-temacs @*
2140 Run the test suite on temacs.  Equivalent to 'make check-temacs'.
2141 Use this with debugging tools (like purify) that cannot deal with dumping,
2142 or when temacs builds successfully, but xemacs does not.
2143 @end table
2144
2145 If you are using Sun's @file{dbx} debugger, there is an equivalent file
2146 @file{src/.dbxrc}, which defines the same commands for dbx.
2147
2148 @item
2149 If you're using a debugger to get a C stack backtrace and you're seeing
2150 stack traces with some of the innermost frames mangled, it may be due to
2151 dynamic linking. (This happens especially under Linux.) Consider
2152 reconfiguring with @samp{--dynamic=no}.  Also, sometimes (again under
2153 Linux), stack backtraces of core dumps will have the frame where the
2154 fatal signal occurred mangled; if you can obtain a stack trace while
2155 running the XEmacs process under a debugger, the stack trace should be
2156 clean.
2157
2158 @email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so version 1.8
2159 if dynamic linking and debugging is a problem on Linux.
2160
2161 @item
2162 If you're using a debugger to get a C stack backtrace and you're
2163 getting a completely mangled and bogus stack trace, it's probably due to
2164 one of the following:
2165
2166 @enumerate a
2167 @item
2168 Your executable has been stripped.  Bad news.  Tell your sysadmin not to
2169 do this---it doesn't accomplish anything except to save a bit of disk
2170 space, and makes debugging much much harder.
2171
2172 @item
2173 Your stack is getting trashed.  Debugging this is hard; you have to do a
2174 binary-search type of narrowing down where the crash occurs, until you
2175 figure out exactly which line is causing the problem.  Of course, this
2176 only works if the bug is highly reproducible.
2177
2178 @item
2179 If your stack trace has exactly one frame in it, with address 0x0, this
2180 could simply mean that XEmacs attempted to execute code at that address,
2181 e.g. through jumping to a null function pointer.  Unfortunately, under
2182 those circumstances, GDB under Linux doesn't know how to get a stack
2183 trace. (Yes, this is the third Linux-related problem I've mentioned.  I
2184 have no idea why GDB under Linux is so bogus.  Complain to the GDB
2185 authors, or to comp.os.linux.development.system).  Again, you'll have to
2186 use the narrowing-down process described above.
2187
2188 @item
2189 You will get a Lisp backtrace output when XEmacs crashes, so you'll have
2190 something useful.
2191
2192 @end enumerate
2193
2194 @item
2195 If you compile with the newer gcc variants gcc-2.8 or egcs, you will
2196 also need gdb 4.17 or above.  Earlier releases of gdb can't handle the
2197 debug information generated by the newer compilers.
2198
2199 @item
2200 In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named
2201 @file{src/gdbinit}.  This had the disadvantage of not being sourced
2202 automatically by gdb, so you had to set that up yourself.
2203
2204 @end itemize
2205
2206 @node Q2.1.16, Q2.1.17, Q2.1.15, Installation
2207 @unnumberedsubsec Q2.1.16: XEmacs crashes in @code{strcat} on HP/UX 10
2208
2209 From the problems database (through
2210 the former address http://support.mayfield.hp.com/):
2211
2212 @example
2213 Problem Report: 5003302299
2214 Status:         Open
2215
2216 System/Model:   9000/700
2217 Product Name:   HPUX S800 10.0X
2218 Product Vers:   9245XB.10.00
2219
2220 Description: strcat(3C) may read beyond
2221 end of source string, can cause SIGSEGV
2222
2223
2224 *** PROBLEM TEXT ***
2225 strcat(3C) may read beyond the source string onto an unmapped page,
2226 causing a segmentation violation.
2227 @end example
2228
2229 @node Q2.1.17, Q2.1.18, Q2.1.16, Installation
2230 @unnumberedsubsec Q2.1.17: @samp{Marker does not point anywhere}
2231
2232 As with other errors, set @code{debug-on-error} to @code{t} to get the
2233 backtrace when the error occurs.  Specifically, two problems have been
2234 reported (and fixed).
2235
2236 @enumerate
2237 @item
2238 A problem with line-number-mode in XEmacs 19.14 affected a large number
2239 of other packages.  If you see this error message, turn off
2240 line-number-mode.
2241
2242 @item
2243 A problem with some early versions of Gnus 5.4 caused this error.
2244 Upgrade your Gnus.
2245 @end enumerate
2246
2247 @node Q2.1.18, Q2.1.19, Q2.1.17, Installation
2248 @unnumberedsubsec Q2.1.18: XEmacs is outputting lots of X errors.
2249
2250 If this is happening, we would very much like to know what's causing
2251 them.  To find this out, see @ref{Q2.1.15}.  Try to get both a C and Lisp
2252 backtrace, and send them to @email{xemacs-beta@@xemacs.org}.
2253
2254 @node Q2.1.19, Q2.1.20, Q2.1.18, Installation
2255 @unnumberedsubsec Q2.1.19: XEmacs does not follow the local timezone.
2256
2257 When using one of the prebuilt binaries many users have observed that
2258 XEmacs uses the timezone under which it was built, but not the timezone
2259 under which it is running.  The solution is to add:
2260
2261 @lisp
2262 (set-time-zone-rule "MET")
2263 @end lisp
2264
2265 to your @file{init.el}/@file{.emacs} or the @file{site-start.el} file if
2266 you can.  Replace @code{MET} with your local timezone.
2267
2268 @node Q2.1.20, Q2.1.21, Q2.1.19, Installation
2269 @unnumberedsubsec Q2.1.20: @samp{Symbol's function definition is void: hkey-help-show.}
2270
2271 This is a problem with a partially loaded hyperbole.  Try adding:
2272
2273 @lisp
2274 (require 'hmouse-drv)
2275 @end lisp
2276
2277 where you load hyperbole and the problem should go away.
2278
2279 @node Q2.1.21, Q2.1.22, Q2.1.20, Installation
2280 @unnumberedsubsec Q2.1.21: [This question intentionally left blank]
2281
2282 @node Q2.1.22, Q2.1.23, Q2.1.21, Installation
2283 @unnumberedsubsec Q2.1.22: XEmacs seems to take a really long time to do some things
2284
2285 @email{dmoore@@ucsd.edu, David Moore} writes:
2286
2287 @quotation
2288 Two things you can do:
2289
2290 1) C level:
2291
2292 When you see it going mad like this, you might want to use gdb from an
2293 'xterm' to attach to the running process and get a stack trace.  To do
2294 this just run:
2295
2296 @example
2297 gdb /path/to/xemacs/xemacs ####
2298 @end example
2299
2300 Where @code{####} is the process id of your xemacs, instead of
2301 specifying the core.  When gdb attaches, the xemacs will stop [1] and
2302 you can type `where' in gdb to get a stack trace as usual.  To get
2303 things moving again, you can just type `quit' in gdb.  It'll tell you
2304 the program is running and ask if you want to quit anyways.  Say 'y' and
2305 it'll quit and have your emacs continue from where it was at.
2306
2307 2) Lisp level:
2308
2309 Turn on debug-on-quit early on.  When you think things are going slow
2310 hit C-g and it may pop you in the debugger so you can see what routine
2311 is running.  Press `c' to get going again.
2312
2313 debug-on-quit doesn't work if something's turned on inhibit-quit or in
2314 some other strange cases.
2315 @end quotation
2316
2317 @node Q2.1.23, Q2.1.24, Q2.1.22, Installation
2318 @unnumberedsubsec Q2.1.23:  Movemail on Linux does not work for XEmacs 19.15 and later.
2319
2320 Movemail used to work fine in 19.14 but has stopped working in 19.15
2321 and 20.x.  I am using Linux.
2322
2323 @email{steve@@xemacs.org, SL Baur} writes:
2324
2325 @quotation
2326 Movemail on Linux used to default to using flock file locking.  With
2327 19.15 and later versions it now defaults to using @code{.lock} file
2328 locking.  If this is not appropriate for your system, edit src/s/linux.h
2329 and uncomment the line that reads:
2330
2331 @example
2332 #define MAIL_USE_FLOCK
2333 @end example
2334 @end quotation
2335
2336 @node Q2.1.24, Q2.1.25, Q2.1.23, Installation
2337 @unnumberedsubsec Q2.1.24:  XEmacs won't start without network. (NEW)
2338
2339 If XEmacs starts when you're on the network, but fails when you're not
2340 on the network, you may be missing a "localhost" entry in your
2341 @file{/etc/hosts} file.  The file should contain an entry like:
2342
2343 @example
2344 127.0.0.1        localhost
2345 @end example
2346
2347 Add that line, and XEmacs will be happy.
2348
2349 @node Q2.1.25,  , Q2.1.24, Installation
2350 @unnumberedsubsec Q2.1.25::  After upgrading, XEmacs won't do `foo' any more! (NEW)
2351
2352 You have been used to doing `foo', but now when you invoke it (or click
2353 the toolbar button or select the menu item), nothing (or an error)
2354 happens.  The simplest explanation is that you are missing a package
2355 that is essential to you.  You can either track it down and install it
2356 (there is a list of packages and brief descriptions of their contents in
2357 @file{etc/PACKAGES}), or install the `Sumo Tarball' (@pxref{Q2.0.14}).
2358
2359 @c #### should xref to XEmacs manual here
2360
2361 @node Customization, Subsystems, Installation, Top
2362 @unnumbered 3 Customization and Options
2363
2364 This is part 3 of the XEmacs Frequently Asked Questions list.  This
2365 section is devoted to Customization and screen settings.
2366
2367 @menu
2368 Customization---Emacs Lisp and @file{init.el}/@file{.emacs}:
2369 * Q3.0.1::      What version of Emacs am I running?
2370 * Q3.0.2::      How do I evaluate Elisp expressions?
2371 * Q3.0.3::      @code{(setq tab-width 6)} behaves oddly.
2372 * Q3.0.4::      How can I add directories to the @code{load-path}?
2373 * Q3.0.5::      How to check if a lisp function is defined?
2374 * Q3.0.6::      Can I force the output of @code{(face-list)} to a buffer?
2375 * Q3.0.7::      Font selections don't get saved after @code{Save Options}.
2376 * Q3.0.8::      How do I make a single minibuffer frame?
2377 * Q3.0.9::      What is @code{Customize}?
2378
2379 X Window System & Resources:
2380 * Q3.1.1::      Where is a list of X resources?
2381 * Q3.1.2::      How can I detect a color display?
2382 * Q3.1.3::      [This question intentionally left blank]
2383 * Q3.1.4::      [This question intentionally left blank]
2384 * Q3.1.5::      How can I get the icon to just say @samp{XEmacs}?
2385 * Q3.1.6::      How can I have the window title area display the full path?
2386 * Q3.1.7::      @samp{xemacs -name junk} doesn't work?
2387 * Q3.1.8::      @samp{-iconic} doesn't work.
2388
2389 Textual Fonts & Colors:
2390 * Q3.2.1::      How can I set color options from @file{init.el}/@file{.emacs}?
2391 * Q3.2.2::      How do I set the text, menu and modeline fonts?
2392 * Q3.2.3::      How can I set the colors when highlighting a region?
2393 * Q3.2.4::      How can I limit color map usage?
2394 * Q3.2.5::      My tty supports color, but XEmacs doesn't use them.
2395 * Q3.2.6::      Can I have pixmap backgrounds in XEmacs?
2396
2397 The Modeline:
2398 * Q3.3.1::      How can I make the modeline go away?
2399 * Q3.3.2::      How do you have XEmacs display the line number in the modeline?
2400 * Q3.3.3::      How do I get XEmacs to put the time of day on the modeline?
2401 * Q3.3.4::      How do I turn off current chapter from AUC TeX modeline?
2402 * Q3.3.5::      How can one change the modeline color based on the mode used?
2403
2404 3.4 Multiple Device Support:
2405 * Q3.4.1::      How do I open a frame on another screen of my multi-headed display?
2406 * Q3.4.2::      Can I really connect to a running XEmacs after calling up over a modem?  How?
2407
2408 3.5 The Keyboard:
2409 * Q3.5.1::      How can I bind complex functions (or macros) to keys?
2410 * Q3.5.2::      How can I stop down-arrow from adding empty lines to the bottom of my buffers?
2411 * Q3.5.3::      How do I bind C-. and C-; to scroll one line up and down?
2412 * Q3.5.4::      Globally binding @kbd{Delete}?
2413 * Q3.5.5::      Scrolling one line at a time.
2414 * Q3.5.6::      How to map @kbd{Help} key alone on Sun type4 keyboard?
2415 * Q3.5.7::      How can you type in special characters in XEmacs?
2416 * Q3.5.8::      [This question intentionally left blank]
2417 * Q3.5.9::      How do I make the Delete key delete forward?
2418 * Q3.5.10::     Can I turn on @dfn{sticky} modifier keys?
2419 * Q3.5.11::     How do I map the arrow keys?
2420
2421 The Cursor:
2422 * Q3.6.1::      Is there a way to make the bar cursor thicker?
2423 * 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?
2424 * Q3.6.3::      Can I make the cursor blink?
2425
2426 The Mouse and Highlighting:
2427 * Q3.7.1::      How can I turn off Mouse pasting?
2428 * Q3.7.2::      How do I set control/meta/etc modifiers on mouse buttons?
2429 * Q3.7.3::      Clicking the left button does not do anything in buffer list.
2430 * Q3.7.4::      How can I get a list of buffers when I hit mouse button 3?
2431 * Q3.7.5::      Why does cut-and-paste not work between XEmacs and a cmdtool?
2432 * Q3.7.6::      How I can set XEmacs up so that it pastes where the text cursor is?
2433 * Q3.7.7::      How do I select a rectangular region?
2434 * Q3.7.8::      Why does @kbd{M-w} take so long?
2435
2436 The Menubar and Toolbar:
2437 * Q3.8.1::      How do I get rid of the menu (or menubar)?
2438 * Q3.8.2::      Can I customize the basic menubar?
2439 * Q3.8.3::      How do I control how many buffers are listed in the menu @code{Buffers} list?
2440 * Q3.8.4::      Resources like @code{Emacs*menubar*font} are not working?
2441 * Q3.8.5::      How can I bind a key to a function to toggle the toolbar?
2442
2443 Scrollbars:
2444 * Q3.9.1::      How can I disable the scrollbar?
2445 * Q3.9.2::      How can one use resources to change scrollbar colors?
2446 * Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
2447 * Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
2448
2449 Text Selections:
2450 * Q3.10.1::     How can I turn off or change highlighted selections?
2451 * Q3.10.2::     How do I get that typing on an active region removes it?
2452 * Q3.10.3::     Can I turn off the highlight during isearch?
2453 * Q3.10.4::     How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
2454 * Q3.10.5::     The region disappears when I hit the end of buffer while scrolling.
2455 @end menu
2456
2457 @node Q3.0.1, Q3.0.2, Customization, Customization
2458 @unnumberedsec 3.0: Customization -- Emacs Lisp and @file{init.el}/@file{.emacs}
2459 @unnumberedsubsec Q3.0.1: What version of Emacs am I running?
2460
2461 How can @file{init.el}/@file{.emacs} determine which of the family of
2462 Emacsen I am using?
2463
2464 To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
2465 XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
2466 example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in
2467 XEmacs versions prior to 21.4).  There are other nifty things in there
2468 as well!
2469
2470 For all new code, all you really need to do is:
2471
2472 @lisp
2473 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
2474 @end lisp
2475
2476 @node Q3.0.2, Q3.0.3, Q3.0.1, Customization
2477 @unnumberedsubsec Q3.0.2: How can I evaluate Emacs-Lisp expressions?
2478
2479 I know I can evaluate Elisp expressions from @code{*scratch*} buffer
2480 with @kbd{C-j} after the expression.  How do I do it from another
2481 buffer?
2482
2483 Press @kbd{M-:} (the default binding of @code{eval-expression}), and
2484 enter the expression to the minibuffer.
2485
2486 @node Q3.0.3, Q3.0.4, Q3.0.2, Customization
2487 @unnumberedsubsec Q3.0.3: @code{(setq tab-width 6)} behaves oddly.
2488
2489 If you put @code{(setq tab-width 6)} in your
2490 @file{init.el}/@file{.emacs} file it does not work!  Is there a reason
2491 for this?  If you do it at the EVAL prompt it works fine!! How strange.
2492
2493 Use @code{setq-default} instead, since @code{tab-width} is
2494 all-buffer-local.
2495
2496 @node Q3.0.4, Q3.0.5, Q3.0.3, Customization
2497 @unnumberedsubsec Q3.0.4: How can I add directories to the @code{load-path}?
2498
2499 Here are two ways to do that, one that puts your directories at the
2500 front of the load-path, the other at the end:
2501
2502 @lisp
2503 ;;; Add things at the beginning of the load-path, do not add
2504 ;;; duplicate directories:
2505 (pushnew "bar" load-path :test 'equal)
2506
2507 (pushnew "foo" load-path :test 'equal)
2508
2509 ;;; Add things at the end, unconditionally
2510 (setq load-path (nconc load-path '("foo" "bar")))
2511 @end lisp
2512
2513 @email{keithh@@nortel.ca, keith (k.p.) hanlan} writes:
2514
2515 @quotation
2516 To add directories using Unix shell metacharacters use
2517 @file{expand-file-name} like this:
2518
2519 @lisp
2520 (push (expand-file-name "~keithh/.emacsdir") load-path)
2521 @end lisp
2522 @end quotation
2523
2524 @node Q3.0.5, Q3.0.6, Q3.0.4, Customization
2525 @unnumberedsubsec Q3.0.5: How to check if a lisp function is defined?
2526
2527 Use the following elisp:
2528
2529 @lisp
2530 (fboundp 'foo)
2531 @end lisp
2532
2533 It's almost always a mistake to test @code{emacs-version} or any similar
2534 variables.
2535
2536 Instead, use feature-tests, such as @code{featurep}, @code{boundp},
2537 @code{fboundp}, or even simple behavioral tests, eg.:
2538
2539 @lisp
2540 (defvar foo-old-losing-code-p
2541   (condition-case nil (progn (losing-code t) nil)
2542     (wrong-number-of-arguments t)))
2543 @end lisp
2544
2545 There is an incredible amount of broken code out there which could work
2546 much better more often in more places if it did the above instead of
2547 trying to divine its environment from the value of one variable.
2548
2549 @node Q3.0.6, Q3.0.7, Q3.0.5, Customization
2550 @unnumberedsubsec Q3.0.6: Can I force the output of @code{(face-list)} to a buffer?
2551
2552 It would be good having it in a buffer, as the output of
2553 @code{(face-list)} is too wide to fit to a minibuffer.
2554
2555 Evaluate the expression in the @samp{*scratch*} buffer with point after
2556 the rightmost paren and typing @kbd{C-j}.
2557
2558 If the minibuffer smallness is the only problem you encounter, you can
2559 simply press @kbd{C-h l} to get the former minibuffer contents in a
2560 buffer.
2561
2562 @node Q3.0.7, Q3.0.8, Q3.0.6, Customization
2563 @unnumberedsubsec Q3.0.7: Font selections in don't get saved after @code{Save Options}.
2564
2565 @email{mannj@@ll.mit.edu, John Mann} writes:
2566
2567 @quotation
2568 You have to go to Options->Frame Appearance and unselect
2569 @samp{Frame-Local Font Menu}.  If this option is selected, font changes
2570 are only applied to the @emph{current} frame and do @emph{not} get saved
2571 when you save options.
2572 @end quotation
2573
2574 Also, set the following in your @file{init.el}/@file{.emacs}:
2575
2576 @lisp
2577 (setq options-save-faces t)
2578 @end lisp
2579
2580 @node Q3.0.8, Q3.0.9, Q3.0.7, Customization
2581 @unnumberedsubsec Q3.0.8: How do I get a single minibuffer frame?
2582
2583 @email{acs@@acm.org, Vin Shelton} writes:
2584
2585 @lisp
2586 (setq initial-frame-plist '(minibuffer nil))
2587 (setq default-frame-plist '(minibuffer nil))
2588 (setq default-minibuffer-frame
2589       (make-frame
2590        '(minibuffer only
2591                     width 86
2592                     height 1
2593                     menubar-visible-p nil
2594                     default-toolbar-visible-p nil
2595                     name "minibuffer"
2596                     top -2
2597                     left -2
2598                     has-modeline-p nil)))
2599 (frame-notice-user-settings)
2600 @end lisp
2601
2602 @strong{Please note:} The single minibuffer frame may not be to everyone's
2603 taste, and there any number of other XEmacs options settings that may
2604 make it difficult or inconvenient to use.
2605
2606 @node Q3.0.9, Q3.1.1, Q3.0.8, Customization
2607 @unnumberedsubsec Q3.0.9: What is @code{Customize}?
2608
2609 Starting with XEmacs 20.2 there is new system 'Customize' for customizing
2610 XEmacs options.
2611
2612 You can access @code{Customize} from the @code{Options} menu
2613 or invoking one of customize commands by typing eg.
2614 @kbd{M-x customize}, @kbd{M-x customize-face},
2615 @kbd{M-x customize-variable} or @kbd{M-x customize-apropos}.
2616
2617 Starting with XEmacs 20.3 there is also new `browser' mode for Customize.
2618 Try it out with @kbd{M-x customize-browse}
2619
2620 @node Q3.1.1, Q3.1.2, Q3.0.9, Customization
2621 @unnumberedsec 3.1: X Window System & Resources
2622 @unnumberedsubsec Q3.1.1: Where is a list of X resources?
2623
2624 Search through the @file{NEWS} file for @samp{X Resources}.  A fairly
2625 comprehensive list is given after it.
2626
2627 In addition, an @file{app-defaults} file is supplied,
2628 @file{etc/Emacs.ad} listing the defaults.  The file
2629 @file{etc/sample.Xdefaults} gives a set of defaults that you might
2630 consider.  It is essentially the same as @file{etc/Emacs.ad} but some
2631 entries are slightly altered.  Be careful about installing the contents
2632 of this file into your @file{.Xdefaults} or @file{.Xresources} file if
2633 you use GNU Emacs under X11 as well.
2634
2635 @node Q3.1.2, Q3.1.3, Q3.1.1, Customization
2636 @unnumberedsubsec Q3.1.2: How can I detect a color display?
2637
2638 You can test the return value of the function @code{(device-class)}, as
2639 in:
2640
2641 @lisp
2642 (when (eq (device-class) 'color)
2643   (set-face-foreground  'font-lock-comment-face "Grey")
2644   (set-face-foreground  'font-lock-string-face  "Red")
2645   ....
2646   )
2647 @end lisp
2648
2649 @node Q3.1.3, Q3.1.4, Q3.1.2, Customization
2650 @unnumberedsubsec Q3.1.3: [This question intentionally left blank]
2651
2652 @node Q3.1.4, Q3.1.5, Q3.1.3, Customization
2653 @unnumberedsubsec Q3.1.4: [This question intentionally left blank]
2654
2655 @node Q3.1.5, Q3.1.6, Q3.1.4, Customization
2656 @unnumberedsubsec Q3.1.5: How can I get the icon to just say @samp{XEmacs}?
2657
2658 I'd like the icon to just say @samp{XEmacs}, and not include the name of
2659 the current file in it.
2660
2661 Add the following line to your @file{init.el}/@file{.emacs}:
2662
2663 @lisp
2664 (setq frame-icon-title-format "XEmacs")
2665 @end lisp
2666
2667 @node Q3.1.6, Q3.1.7, Q3.1.5, Customization
2668 @unnumberedsubsec Q3.1.6: How can I have the window title area display the full path?
2669
2670 I'd like to have the window title area display the full directory/name
2671 of the current buffer file and not just the name.
2672
2673 Add the following line to your @file{init.el}/@file{.emacs}:
2674
2675 @lisp
2676 (setq frame-title-format "%S: %f")
2677 @end lisp
2678
2679 A more sophisticated title might be:
2680
2681 @lisp
2682 (setq frame-title-format
2683       '("%S: " (buffer-file-name "%f"
2684                                  (dired-directory dired-directory "%b"))))
2685 @end lisp
2686
2687 That is, use the file name, or the dired-directory, or the buffer name.
2688
2689 @node Q3.1.7, Q3.1.8, Q3.1.6, Customization
2690 @unnumberedsubsec Q3.1.7: @samp{xemacs -name junk} doesn't work?
2691
2692 When I run @samp{xterm -name junk}, I get an xterm whose class name
2693 according to xprop, is @samp{junk}.  This is the way it's supposed to
2694 work, I think.  When I run @samp{xemacs -name junk} the class name is
2695 not set to @samp{junk}.  It's still @samp{emacs}.  What does
2696 @samp{xemacs -name} really do?  The reason I ask is that my window
2697 manager (fvwm) will make a window sticky and I use XEmacs to read my
2698 mail.  I want that XEmacs window to be sticky, without having to use the
2699 window manager's function to set the window sticky.  What gives?
2700
2701 @samp{xemacs -name} sets the application name for the program (that is,
2702 the thing which normally comes from @samp{argv[0]}).  Using @samp{-name}
2703 is the same as making a copy of the executable with that new name.  The
2704 @code{WM_CLASS} property on each frame is set to the frame-name, and the
2705 application-class.  So, if you did @samp{xemacs -name FOO} and then
2706 created a frame named @var{BAR}, you'd get an X window with WM_CLASS =
2707 @code{( "BAR", "Emacs")}.  However, the resource hierarchy for this
2708 widget would be:
2709
2710 @example
2711 Name:    FOO   .shell             .container   .BAR
2712 Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
2713 @end example
2714
2715 instead of the default
2716
2717 @example
2718 Name:    xemacs.shell             .container   .emacs
2719 Class:   Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
2720 @end example
2721
2722
2723 It is arguable that the first element of WM_CLASS should be set to the
2724 application-name instead of the frame-name, but I think that's less
2725 flexible, since it does not give you the ability to have multiple frames
2726 with different WM_CLASS properties.  Another possibility would be for
2727 the default frame name to come from the application name instead of
2728 simply being @samp{emacs}.  However, at this point, making that change
2729 would be troublesome: it would mean that many users would have to make
2730 yet another change to their resource files (since the default frame name
2731 would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever
2732 the executable happened to be named), so we'd rather avoid it.
2733
2734 To make a frame with a particular name use:
2735
2736 @lisp
2737 (make-frame '((name . "the-name")))
2738 @end lisp
2739
2740 @node Q3.1.8, Q3.2.1, Q3.1.7, Customization
2741 @unnumberedsubsec Q3.1.8: @samp{-iconic} doesn't work.
2742
2743 When I start up XEmacs using @samp{-iconic} it doesn't work right.
2744 Using @samp{-unmapped} on the command line, and setting the
2745 @code{initiallyUnmapped} X Resource don't seem to help much either...
2746
2747 @email{ben@@xemacs.org, Ben Wing} writes:
2748
2749 @quotation
2750 Ugh, this stuff is such an incredible mess that I've about given up
2751 getting it to work.  The principal problem is numerous window-manager
2752 bugs...
2753 @end quotation
2754
2755 @node Q3.2.1, Q3.2.2, Q3.1.8, Customization
2756 @unnumberedsec 3.2: Textual Fonts & Colors
2757 @unnumberedsubsec Q3.2.1: How can I set color options from @file{init.el}/@file{.emacs}?
2758
2759 How can I set the most commonly used color options from my
2760 @file{init.el}/@file{.emacs} instead of from my @file{.Xdefaults}?
2761
2762 Like this:
2763
2764 @lisp
2765 (set-face-background 'default      "bisque") ; frame background
2766 (set-face-foreground 'default      "black") ; normal text
2767 (set-face-background 'zmacs-region "red") ; When selecting w/
2768                                         ; mouse
2769 (set-face-foreground 'zmacs-region "yellow")
2770 (set-face-font       'default      "*courier-bold-r*120-100-100*")
2771 (set-face-background 'highlight    "blue") ; Ie when selecting
2772                                         ; buffers
2773 (set-face-foreground 'highlight    "yellow")
2774 (set-face-background 'modeline     "blue") ; Line at bottom
2775                                         ; of buffer
2776 (set-face-foreground 'modeline     "white")
2777 (set-face-font       'modeline     "*bold-r-normal*140-100-100*")
2778 (set-face-background 'isearch      "yellow") ; When highlighting
2779                                         ; while searching
2780 (set-face-foreground 'isearch      "red")
2781 (setq x-pointer-foreground-color   "black") ; Adds to bg color,
2782                                         ; so keep black
2783 (setq x-pointer-background-color   "blue") ; This is color
2784                                         ; you really
2785                                         ; want ptr/crsr
2786 @end lisp
2787
2788 @node Q3.2.2, Q3.2.3, Q3.2.1, Customization
2789 @unnumberedsubsec Q3.2.2: How do I set the text, menu and modeline fonts?
2790
2791 Note that you should use @samp{Emacs.} and not @samp{Emacs*} when
2792 setting face values.
2793
2794 In @file{.Xdefaults}:
2795
2796 @example
2797 Emacs.default.attributeFont:  -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
2798 Emacs*menubar*font:           fixed
2799 Emacs.modeline.attributeFont: fixed
2800 @end example
2801
2802 This is confusing because modeline is a face, and can be found listed
2803 with all faces in the current mode by using @kbd{M-x set-face-font
2804 (enter) ?}.  It uses the face specification of @code{attributeFont},
2805 while menubar is a normal X thing that uses the specification
2806 @code{font}.  With Motif it may be necessary to use @code{fontList}
2807 instead of @code{font}.
2808
2809 @node Q3.2.3, Q3.2.4, Q3.2.2, Customization
2810 @unnumberedsubsec Q3.2.3: How can I set the colors when highlighting a region?
2811
2812 How can I set the background/foreground colors when highlighting a
2813 region?
2814
2815 You can change the face @code{zmacs-region} either in your
2816 @file{.Xdefaults}:
2817
2818 @example
2819 Emacs.zmacs-region.attributeForeground: firebrick
2820 Emacs.zmacs-region.attributeBackground: lightseagreen
2821 @end example
2822
2823 or in your @file{init.el}/@file{.emacs}:
2824
2825 @lisp
2826 (set-face-background 'zmacs-region "red")
2827 (set-face-foreground 'zmacs-region "yellow")
2828 @end lisp
2829
2830 @node Q3.2.4, Q3.2.5, Q3.2.3, Customization
2831 @unnumberedsubsec Q3.2.4: How can I limit color map usage?
2832
2833 I'm using Netscape (or another color grabber like XEmacs);
2834 is there any way to limit the number of available colors in the color map?
2835
2836 Answer: No, but you can start Netscape before XEmacs, and it will use
2837 the closest available color if the colormap is full.  You can also limit
2838 the number of colors Netscape uses, using the flags -mono, -ncols <#> or
2839 -install (for mono, limiting to <#> colors, or for using a private color
2840 map).
2841
2842 If you have the money, another solution would be to use a truecolor or
2843 direct color video.
2844
2845 @node Q3.2.5, Q3.2.6, Q3.2.4, Customization
2846 @unnumberedsubsec Q3.2.5: My tty supports color, but XEmacs doesn't use them.
2847
2848 XEmacs tries to automatically determine whether your tty supports color,
2849 but sometimes guesses wrong.  In that case, you can make XEmacs Do The
2850 Right Thing using this Lisp code:
2851
2852 @lisp
2853 (if (eq 'tty (device-type))
2854     (set-device-class nil 'color))
2855 @end lisp
2856
2857 @node Q3.2.6, Q3.3.1, Q3.2.5, Customization
2858 @unnumberedsubsec Q3.2.6: Can I have pixmap backgrounds in XEmacs?
2859 @c New
2860 @email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes:
2861
2862 @quotation
2863 There are several ways to do it.  For example, you could specify a
2864 default pixmap image to use in your @file{~/.Xresources}, e.g.,
2865
2866
2867 @example
2868   Emacs*EmacsFrame.default.attributeBackgroundPixmap: /path/to/image.xpm
2869 @end example
2870
2871
2872 and then reload ~/.Xresources and restart XEmacs.  Alternatively,
2873 since each face can have its own pixmap background, a better way
2874 would be to set a face's pixmap within your XEmacs init file, e.g.,
2875
2876 @lisp
2877   (set-face-background-pixmap 'default "/path/to/image.xpm")
2878   (set-face-background-pixmap 'bold    "/path/to/another_image.xpm")
2879 @end lisp
2880
2881 and so on.  You can also do this interactively via @kbd{M-x edit-faces}.
2882
2883 @end quotation
2884
2885 @node Q3.3.1, Q3.3.2, Q3.2.6, Customization
2886 @unnumberedsec 3.3: The Modeline
2887 @unnumberedsubsec Q3.3.1: How can I make the modeline go away?
2888
2889 @lisp
2890 (set-specifier has-modeline-p nil)
2891 @end lisp
2892
2893 @c Starting with XEmacs 19.14 the modeline responds to mouse clicks, so if
2894 @c you haven't liked or used the modeline in the past, you might want to
2895 @c try the new version out.
2896 @c 
2897 @node Q3.3.2, Q3.3.3, Q3.3.1, Customization
2898 @unnumberedsubsec Q3.3.2: How do you have XEmacs display the line number in the modeline?
2899
2900 Add the following line to your @file{init.el}/@file{.emacs} file to
2901 display the line number:
2902
2903 @lisp
2904 (line-number-mode 1)
2905 @end lisp
2906
2907 Use the following to display the column number:
2908
2909 @lisp
2910 (column-number-mode 1)
2911 @end lisp
2912
2913 Or select from the @code{Options} menu
2914 @iftex
2915 @*
2916 @end iftex
2917 @code{Advanced (Customize)->Emacs->Editing->Basics->Line Number Mode}
2918 and/or
2919 @iftex
2920 @*
2921 @end iftex
2922 @code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode}
2923
2924 Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
2925
2926 @node Q3.3.3, Q3.3.4, Q3.3.2, Customization
2927 @unnumberedsubsec Q3.3.3: How do I get XEmacs to put the time of day on the modeline?
2928
2929 Add the following line to your @file{init.el}/@file{.emacs} file to
2930 display the time:
2931
2932 @lisp
2933 (display-time)
2934 @end lisp
2935
2936 See @code{Customize} from the @code{Options} menu for customization.
2937
2938 @node Q3.3.4, Q3.3.5, Q3.3.3, Customization
2939 @unnumberedsubsec Q3.3.4: How do I turn off current chapter from AUC TeX modeline?
2940
2941 With AUC TeX, fast typing is hard because the current chapter, section
2942 etc. are given in the modeline.  How can I turn this off?
2943
2944 It's not AUC TeX, it comes from @code{func-menu} in @file{func-menu.el}.
2945
2946 @c Add this code to your @file{init.el}/@file{.emacs} to turn it off:
2947 @c 
2948 @c @lisp
2949 @c (setq fume-display-in-modeline-p nil)
2950 @c @end lisp
2951 @c 
2952 @c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX
2953 @c mode:
2954 @c 
2955 @c @lisp
2956 @c (add-hook 'TeX-mode-hook
2957 @c           '(lambda () (setq fume-display-in-modeline-p nil)))
2958 @c @end lisp
2959 @c 
2960 @email{dhughes@@origin-at.co.uk, David Hughes} writes:
2961
2962 @quotation
2963 Try this; you'll still get the function name displayed in the modeline,
2964 but it won't attempt to keep track when you modify the file. To refresh
2965 when it gets out of synch, you simply need click on the @samp{Rescan
2966 Buffer} option in the function-menu.
2967
2968 @lisp
2969 (setq-default fume-auto-rescan-buffer-p nil)
2970 @end lisp
2971 @end quotation
2972
2973 @node Q3.3.5, Q3.4.1, Q3.3.4, Customization
2974 @unnumberedsubsec Q3.3.5: How can one change the modeline color based on the mode used?
2975
2976 You can use something like the following:
2977
2978 @lisp
2979 (add-hook 'lisp-mode-hook
2980           (lambda ()
2981             (set-face-background 'modeline "red" (current-buffer))))
2982 @end lisp
2983
2984 Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
2985 colors change from the default set in your @file{init.el}/@file{.emacs}.
2986 The change will only be made in the buffer you just entered (which
2987 contains the Lisp file you are editing) and will not affect the modeline
2988 colors anywhere else.
2989
2990 Notes:
2991
2992 @itemize @bullet
2993
2994 @item The hook is the mode name plus @code{-hook}.  eg. c-mode-hook,
2995 c++-mode-hook, emacs-lisp-mode-hook (used for your
2996 @file{init.el}/@file{.emacs} or a @file{xx.el} file),
2997 lisp-interaction-mode-hook (the @samp{*scratch*} buffer),
2998 text-mode-hook, etc.
2999
3000 @item
3001 Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)},
3002 otherwise you will erase anything that anybody has already put on the
3003 hook.
3004
3005 @item
3006 You can also do @code{(set-face-font 'modeline @var{font})},
3007 eg. @code{(set-face-font 'modeline "*bold-r-normal*140-100-100*"
3008 (current-buffer))} if you wish the modeline font to vary based on the
3009 current mode.
3010 @end itemize
3011
3012 There are additional modeline faces, @code{modeline-buffer-id},
3013 @code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which
3014 you may want to customize.
3015
3016 @node Q3.4.1, Q3.4.2, Q3.3.5, Customization
3017 @unnumberedsec 3.4: Multiple Device Support
3018 @unnumberedsubsec Q3.4.1: How do I open a frame on another screen of my multi-headed display?
3019
3020 Use the command @kbd{M-x make-frame-on-display}.  This command is also
3021 on the File menu in the menubar.
3022
3023 The command @code{make-frame-on-tty} also exists, which will establish a
3024 connection to any tty-like device.  Opening the TTY devices should be
3025 left to @code{gnuclient}, though.
3026
3027 @node Q3.4.2, Q3.5.1, Q3.4.1, Customization
3028 @unnumberedsubsec Q3.4.2: Can I really connect to a running XEmacs after calling up over a modem?  How?
3029
3030 Yes.  Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach}
3031 program supplied with XEmacs instead.)
3032
3033 Also see @ref{Q5.0.12}.
3034
3035 @node Q3.5.1, Q3.5.2, Q3.4.2, Customization
3036 @unnumberedsec 3.5: The Keyboard
3037 @unnumberedsubsec Q3.5.1: How can I bind complex functions (or macros) to keys?
3038
3039 As an example, say you want the @kbd{paste} key on a Sun keyboard to
3040 insert the current Primary X selection at point. You can accomplish this
3041 with:
3042
3043 @lisp
3044 (define-key global-map [f18] 'x-insert-selection)
3045 @end lisp
3046
3047 However, this only works if there is a current X selection (the
3048 selection will be highlighted).  The functionality I like is for the
3049 @kbd{paste} key to insert the current X selection if there is one,
3050 otherwise insert the contents of the clipboard.  To do this you need to
3051 pass arguments to @code{x-insert-selection}.  This is done by wrapping
3052 the call in a 'lambda form:
3053
3054 @lisp
3055 (global-set-key [f18]
3056   (lambda () (interactive) (x-insert-selection t nil)))
3057 @end lisp
3058
3059 This binds the f18 key to a @dfn{generic} functional object.  The
3060 interactive spec is required because only interactive functions can be
3061 bound to keys.
3062
3063 For the FAQ example you could use:
3064
3065 @lisp
3066 (global-set-key [(control ?.)]
3067   (lambda () (interactive) (scroll-up 1)))
3068 (global-set-key [(control ?;)]
3069   (lambda () (interactive) (scroll-up -1)))
3070 @end lisp
3071
3072 This is fine if you only need a few functions within the lambda body.
3073 If you're doing more it's cleaner to define a separate function as in
3074 question 3.5.3 (@pxref{Q3.5.3}).
3075
3076 @node Q3.5.2, Q3.5.3, Q3.5.1, Customization
3077 @unnumberedsubsec Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers?
3078
3079 Add the following line to your @file{init.el}/@file{.emacs} file:
3080
3081 @lisp
3082 (setq next-line-add-newlines nil)
3083 @end lisp
3084
3085 This has been the default setting in XEmacs for some time.
3086
3087 @node Q3.5.3, Q3.5.4, Q3.5.2, Customization
3088 @unnumberedsubsec Q3.5.3: How do I bind C-. and C-; to scroll one line up and down?
3089
3090 Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and
3091 @email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}:
3092
3093 @lisp
3094 (defun scroll-up-one-line ()
3095   (interactive)
3096   (scroll-up 1))
3097
3098 (defun scroll-down-one-line ()
3099   (interactive)
3100   (scroll-down 1))
3101
3102 (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
3103 (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
3104 @end lisp
3105
3106 The key point is that you can only bind simple functions to keys; you
3107 can not bind a key to a function that you're also passing arguments to.
3108 (@pxref{Q3.5.1} for a better answer).
3109
3110 @node Q3.5.4, Q3.5.5, Q3.5.3, Customization
3111 @unnumberedsubsec Q3.5.4: Globally binding @kbd{Delete}?
3112
3113 I cannot manage to globally bind my @kbd{Delete} key to something other
3114 than the default.  How does one do this?
3115
3116 Answer: The problem is that many modes explicitly bind @kbd{Delete}.  To
3117 get around this, try the following:
3118
3119 @lisp
3120 (defun foo ()
3121   (interactive)
3122   (message "You hit DELETE"))
3123
3124 (define-key key-translation-map 'delete 'redirected-delete)
3125 (global-set-key 'redirected-delete 'foo)
3126 @end lisp
3127
3128 Also see @ref{Q3.5.10}.
3129
3130 @node Q3.5.5, Q3.5.6, Q3.5.4, Customization
3131 @unnumberedsubsec Q3.5.5: Scrolling one line at a time.
3132
3133 Can the cursor keys scroll the screen a line at a time, rather than the
3134 default half page jump?  I tend it to find it disorienting.
3135
3136 Try this:
3137
3138 @lisp
3139 (defun scroll-one-line-up (&optional arg)
3140   "Scroll the selected window up (forward in the text) one line (or N lines)."
3141   (interactive "p")
3142   (scroll-up (or arg 1)))
3143
3144 (defun scroll-one-line-down (&optional arg)
3145   "Scroll the selected window down (backward in the text) one line (or N)."
3146   (interactive "p")
3147   (scroll-down (or arg 1)))
3148
3149 (global-set-key [up]   'scroll-one-line-up)
3150 (global-set-key [down] 'scroll-one-line-down)
3151 @end lisp
3152
3153 The following will also work but will affect more than just the cursor
3154 keys (i.e. @kbd{C-n} and @kbd{C-p}):
3155
3156 @lisp
3157 (setq scroll-step 1)
3158 @end lisp
3159
3160 Starting with XEmacs-20.3 you can also change this with Customize.
3161 Select from the @code{Options} menu
3162 @code{Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...} or type
3163 @kbd{M-x customize @key{RET} windows @key{RET}}.
3164
3165 @node Q3.5.6, Q3.5.7, Q3.5.5, Customization
3166 @unnumberedsubsec Q3.5.6: How to map @kbd{Help} key alone on Sun type4 keyboard?
3167
3168 The following works in GNU Emacs 19:
3169
3170 @lisp
3171 (global-set-key [help] 'help-command);; Help
3172 @end lisp
3173
3174 The following works in XEmacs with the addition of shift:
3175
3176 @lisp
3177 (global-set-key [(shift help)] 'help-command);; Help
3178 @end lisp
3179
3180 But it doesn't work alone.  This is in the file @file{PROBLEMS} which
3181 should have come with your XEmacs installation: @emph{Emacs ignores the
3182 @kbd{help} key when running OLWM}.
3183
3184 OLWM grabs the @kbd{help} key, and retransmits it to the appropriate
3185 client using
3186 @iftex
3187 @*
3188 @end iftex
3189 @code{XSendEvent}.  Allowing Emacs to react to synthetic
3190 events is a security hole, so this is turned off by default.  You can
3191 enable it by setting the variable @code{x-allow-sendevents} to t.  You
3192 can also cause fix this by telling OLWM to not grab the help key, with
3193 the null binding @code{OpenWindows.KeyboardCommand.Help:}.
3194
3195 @node Q3.5.7, Q3.5.8, Q3.5.6, Customization
3196 @unnumberedsubsec Q3.5.7: How can you type in special characters in XEmacs?
3197 @c Changed
3198 One way is to use the package @code{x-compose}.  Then you can use
3199 sequences like @kbd{Compose " a} to get Ã¤, etc.
3200
3201 Another way is to use the @code{iso-insert} package. Then you can use
3202 sequences like @kbd{C-x 8 " a} to get Ã¤, etc.
3203
3204 @email{glynn@@sensei.co.uk, Glynn Clements} writes:
3205
3206 @quotation
3207 It depends upon your X server.
3208
3209 Generally, the simplest way is to define a key as Multi_key with
3210 xmodmap, e.g.
3211 @c hey, show some respect, willya -- there's xkeycaps, isn't there? --
3212 @c chr ;)
3213 @example
3214         xmodmap -e 'keycode 0xff20 = Multi_key'
3215 @end example
3216
3217 You will need to pick an appropriate keycode. Use xev to find out the
3218 keycodes for each key.
3219
3220 [NB: On a `Windows' keyboard, recent versions of XFree86 automatically
3221 define the right `Windows' key as Multi_key'.]
3222
3223 Once you have Multi_key defined, you can use e.g.
3224 @example
3225         Multi a '       => Ã¡
3226         Multi e "       => Ã«
3227         Multi c ,       => Ã§
3228 @end example
3229
3230 etc.
3231
3232 Also, recent versions of XFree86 define various AltGr-<key>
3233 combinations as dead keys, i.e.
3234 @example
3235         AltGr [         => dead_diaeresis
3236         AltGr ]         => dead_tilde
3237         AltGr ;         => dead_acute
3238 @end example
3239 etc.
3240
3241 Running @samp{xmodmap -pk} will list all of the defined keysyms.
3242 @end quotation
3243
3244 @node Q3.5.8, Q3.5.9, Q3.5.7, Customization
3245 @unnumberedsubsec Q3.5.8: [This question intentionally left blank]
3246
3247 Obsolete question, left blank to avoid renumbering.
3248
3249 @node Q3.5.9, Q3.5.10, Q3.5.8, Customization
3250 @unnumberedsubsec Q3.5.9: How do I make the Delete key delete forward?
3251
3252 With XEmacs-20.2 use the @code{delbs} package:
3253
3254 @lisp
3255 (require 'delbs)
3256 @end lisp
3257
3258 This will give you the functions @code{delbs-enable-delete-forward} to
3259 set things up, and @code{delbs-disable-delete-forward} to revert to
3260 ``normal'' behavior.  Note that @code{delbackspace} package is obsolete.
3261
3262 Starting with XEmacs-20.3 better solution is to set variable
3263 @code{delete-key-deletes-forward} to t.  You can also change this with
3264 Customize. Select from the @code{Options} menu
3265 @code{Advanced (Customize)->Emacs->Editing->Basics->Delete Key Deletes Forward} or
3266 type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
3267
3268 Also see @ref{Q3.5.4}.
3269
3270 @node Q3.5.10, Q3.5.11, Q3.5.9, Customization
3271 @unnumberedsubsec Q3.5.10: Can I turn on @dfn{sticky} modifier keys?
3272
3273 Yes, with @code{(setq modifier-keys-are-sticky t)}.  This will give the
3274 effect of being able to press and release Shift and have the next
3275 character typed come out in upper case.  This will affect all the other
3276 modifier keys like Control and Meta as well.
3277
3278 @email{ben@@xemacs.org, Ben Wing} writes:
3279
3280 @quotation
3281 One thing about the sticky modifiers is that if you move the mouse out
3282 of the frame and back in, it cancels all currently ``stuck'' modifiers.
3283 @end quotation
3284
3285 @node Q3.5.11, Q3.6.1, Q3.5.10, Customization
3286 @unnumberedsubsec Q3.5.11: How do I map the arrow keys?
3287 @c New
3288 Say you want to map @kbd{C-@key{right}} to forward-word:
3289
3290 @email{sds@@usa.net, Sam Steingold} writes:
3291
3292 @quotation
3293 @lisp
3294 ; both XEmacs and Emacs
3295 (define-key global-map [(control right)] 'forward-word)
3296 @end lisp
3297 or
3298 @lisp
3299 ; Emacs only
3300 (define-key global-map [C-right] 'forward-word)
3301 @end lisp
3302 or
3303 @lisp
3304 ; ver > 20, both
3305 (define-key global-map (kbd "C-<right>") 'forward-word)
3306 @end lisp
3307 @end quotation
3308
3309
3310
3311 @node Q3.6.1, Q3.6.2, Q3.5.11, Customization
3312 @unnumberedsec 3.6: The Cursor
3313 @unnumberedsubsec Q3.6.1: Is there a way to make the bar cursor thicker?
3314
3315 I'd like to have the bar cursor a little thicker, as I tend to "lose" it
3316 often.
3317
3318 For a 1 pixel bar cursor, use:
3319
3320 @lisp
3321 (setq bar-cursor t)
3322 @end lisp
3323
3324 For a 2 pixel bar cursor, use:
3325
3326 @lisp
3327 (setq bar-cursor 'anything-else)
3328 @end lisp
3329
3330 Starting with XEmacs-20.3 you can also change these with Customize.
3331 Select from the @code{Options} menu
3332 @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
3333 @kbd{M-x customize @key{RET} display @key{RET}}.
3334
3335 You can use a color to make it stand out better:
3336
3337 @example
3338 Emacs*cursorColor:      Red
3339 @end example
3340
3341 @node Q3.6.2, Q3.6.3, Q3.6.1, Customization
3342 @unnumberedsubsec Q3.6.2: Is there a way to get back the block cursor?
3343
3344 @lisp
3345 (setq bar-cursor nil)
3346 @end lisp
3347
3348 Starting with XEmacs 20.3 you can also change this with Customize.
3349 Select from the @code{Options} menu
3350 @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
3351 @kbd{M-x customize @key{RET} display @key{RET}}.
3352
3353 @node Q3.6.3, Q3.7.1, Q3.6.2, Customization
3354 @unnumberedsubsec Q3.6.3: Can I make the cursor blink?
3355
3356 Yes, like this:
3357
3358 @lisp
3359 (blink-cursor-mode)
3360 @end lisp
3361
3362 This function toggles between a steady cursor and a blinking cursor.
3363 You may also set this mode from the menu bar by selecting @samp{Options
3364 => Frame Appearance => Blinking Cursor}.  Remember to save options.
3365
3366 @node Q3.7.1, Q3.7.2, Q3.6.3, Customization
3367 @unnumberedsec 3.7: The Mouse and Highlighting
3368 @unnumberedsubsec Q3.7.1: How can I turn off Mouse pasting?
3369
3370 I keep hitting the middle mouse button by accident and getting stuff
3371 pasted into my buffer so how can I turn this off?
3372
3373 Here is an alternative binding, whereby the middle mouse button selects
3374 (but does not cut) the expression under the mouse. Clicking middle on a
3375 left or right paren will select to the matching one.  Note that you can
3376 use @code{define-key} or @code{global-set-key}.
3377
3378 @lisp
3379 (defun mouse-set-point-and-select (event)
3380   "Sets the point at the mouse location, then marks following form"
3381   (interactive "@@e")
3382   (mouse-set-point event)
3383   (mark-sexp 1))
3384 (define-key global-map [button2] 'mouse-set-point-and-select)
3385 @end lisp
3386
3387 @node Q3.7.2, Q3.7.3, Q3.7.1, Customization
3388 @unnumberedsubsec Q3.7.2: How do I set control/meta/etc modifiers on mouse buttons?
3389
3390 Use, for instance, @code{[(meta button1)]}. For example, here is a common
3391 setting for Common Lisp programmers who use the bundled @code{ilisp}
3392 package, whereby meta-button1 on a function name will find the file where
3393 the function name was defined, and put you at that location in the source
3394 file.
3395
3396 [Inside a function that gets called by the lisp-mode-hook and
3397 ilisp-mode-hook]
3398
3399 @lisp
3400 (local-set-key [(meta button1)] 'edit-definitions-lisp)
3401 @end lisp
3402
3403 @node Q3.7.3, Q3.7.4, Q3.7.2, Customization
3404 @unnumberedsubsec Q3.7.3: Clicking the left button does not do anything in buffer list.
3405
3406 I do @kbd{C-x C-b} to get a list of buffers and the entries get
3407 highlighted when I move the mouse over them but clicking the left mouse
3408 does not do anything.
3409
3410 Use the middle mouse button.
3411
3412 @node Q3.7.4, Q3.7.5, Q3.7.3, Customization
3413 @unnumberedsubsec Q3.7.4: How can I get a list of buffers when I hit mouse button 3?
3414
3415 The following code will replace the default popup on button3:
3416
3417 @lisp
3418 (global-set-key [button3] 'popup-buffer-menu)
3419 @end lisp
3420
3421 @node Q3.7.5, Q3.7.6, Q3.7.4, Customization
3422 @unnumberedsubsec Q3.7.5: Why does cut-and-paste not work between XEmacs and a cmdtool?
3423
3424 We don't know.  It's a bug.  There does seem to be a work-around,
3425 however.  Try running xclipboard first.  It appears to fix the problem
3426 even if you exit it.  (This should be mostly fixed in 19.13, but we
3427 haven't yet verified that).
3428
3429 @node Q3.7.6, Q3.7.7, Q3.7.5, Customization
3430 @unnumberedsubsec Q3.7.6: How I can set XEmacs up so that it pastes where the text cursor is?
3431
3432 By default XEmacs pastes X selections where the mouse pointer is.  How
3433 do I disable this?
3434
3435 Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank
3436 @key{RET}}.
3437
3438 To get XEmacs to paste at the text cursor, add this your @file{init.el}/@file{.emacs}:
3439
3440 @lisp
3441 (setq mouse-yank-at-point t)
3442 @end lisp
3443
3444 Starting with XEmacs-20.2 you can also change this with Customize.
3445 Select from the @code{Options} menu
3446 @code{Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...} or type
3447 @kbd{M-x customize @key{RET} mouse @key{RET}}.
3448
3449 @node Q3.7.7, Q3.7.8, Q3.7.6, Customization
3450 @unnumberedsubsec Q3.7.7: How do I select a rectangular region?
3451
3452 Just select the region normally, then use the rectangle commands (e.g.
3453 @code{kill-rectangle} on it.  The region does not highlight as a
3454 rectangle, but the commands work just fine.
3455
3456 To actually sweep out rectangular regions with the mouse you can use
3457 @code{mouse-track-do-rectangle} which is assigned to @kbd{M-button1}.
3458 Then use rectangle commands.
3459
3460 You can also do the following to change default behavior to sweep out
3461 rectangular regions:
3462
3463 @lisp
3464 (setq mouse-track-rectangle-p t)
3465 @end lisp
3466
3467 Starting with XEmacs-20.2 you can also change this with Customize.
3468 Select from the @code{Options} menu
3469 @code{Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...} or type
3470 @kbd{M-x customize @key{RET} mouse @key{RET}}.
3471
3472
3473 @example
3474  mouse-track-do-rectangle: (event)
3475    -- an interactive compiled Lisp function.
3476  Like `mouse-track' but selects rectangles instead of regions.
3477 @end example
3478
3479 @node Q3.7.8, Q3.8.1, Q3.7.7, Customization
3480 @unnumberedsubsec Q3.7.8: Why does @kbd{M-w} take so long?
3481
3482 It actually doesn't.  It leaves the region visible for a second so that
3483 you can see what area is being yanked.  If you start working, though, it
3484 will immediately complete its operation.  In other words, it will only
3485 delay for a second if you let it.
3486
3487 @node Q3.8.1, Q3.8.2, Q3.7.8, Customization
3488 @unnumberedsec 3.8: The Menubar and Toolbar
3489 @unnumberedsubsec Q3.8.1: How do I get rid of the menu (or menubar)?
3490
3491 @c If you are running XEmacs 19.13 or earlier, add this command to your
3492 @c @file{init.el}/@file{.emacs}.
3493 @c 
3494 @c @lisp
3495 @c (set-menubar nil)
3496 @c @end lisp
3497 @c 
3498 @c Starting with XEmacs 19.14 the preferred method is:
3499 @c 
3500 @lisp
3501 (set-specifier menubar-visible-p nil)
3502 @end lisp
3503
3504 @node Q3.8.2, Q3.8.3, Q3.8.1, Customization
3505 @unnumberedsubsec Q3.8.2: Can I customize the basic menubar?
3506
3507 For an extensive menubar, add this line to your @file{init.el}/@file{.emacs}:
3508
3509 @lisp
3510 (load "big-menubar")
3511 @end lisp
3512
3513 If you'd like to write your own, this file provides as good a set of
3514 examples as any to start from.  The file is located in
3515 @file{lisp/packages/big-menubar.el} in the XEmacs installation
3516 directory.
3517
3518 @node Q3.8.3, Q3.8.4, Q3.8.2, Customization
3519 @unnumberedsubsec Q3.8.3: How do I control how many buffers are listed in the menu @code{Buffers List}?
3520
3521 Add the following to your @file{init.el}/@file{.emacs} (suit to fit):
3522
3523 @lisp
3524 (setq buffers-menu-max-size 20)
3525 @end lisp
3526
3527 For no limit, use an argument of @samp{nil}.
3528
3529 Starting with XEmacs-20.3 you can also change this with Customize.
3530 Select from the @code{Options} menu
3531 @code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...} or
3532 type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}.
3533
3534 @node Q3.8.4, Q3.8.5, Q3.8.3, Customization
3535 @unnumberedsubsec Q3.8.4: Resources like @code{Emacs*menubar*font} are not working?
3536
3537 I am trying to use a resource like @code{Emacs*menubar*font} to set the
3538 font of the menubar but it's not working.
3539
3540 If you are using the real Motif menubar, this resource is not
3541 recognized; you have to say:
3542
3543 @example
3544 Emacs*menubar*fontList: FONT
3545 @end example
3546
3547 If you are using the Lucid menubar, the former resource will be
3548 recognized only if the latter resource is unset.  This means that the
3549 resource
3550
3551 @example
3552 *fontList: FONT
3553 @end example
3554
3555 will override
3556
3557 @example
3558 Emacs*menubar*font: FONT
3559 @end example
3560
3561 even though the latter is more specific.
3562
3563 @node Q3.8.5, Q3.9.1, Q3.8.4, Customization
3564 @unnumberedsubsec Q3.8.5: How can I bind a key to a function to toggle the toolbar?
3565
3566 Try something like:
3567
3568 @lisp
3569 (defun my-toggle-toolbar ()
3570   (interactive)
3571   (set-specifier default-toolbar-visible-p
3572                  (not (specifier-instance default-toolbar-visible-p))))
3573 (global-set-key "\C-xT" 'my-toggle-toolbar)
3574 @end lisp
3575
3576 There are redisplay bugs in 19.14 that may make the preceding result in
3577 a messed-up display, especially for frames with multiple windows.  You
3578 may need to resize the frame before XEmacs completely realizes the
3579 toolbar is really gone.
3580
3581 Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct
3582 code.
3583
3584 @node Q3.9.1, Q3.9.2, Q3.8.5, Customization
3585 @unnumberedsec 3.9: Scrollbars
3586 @unnumberedsubsec Q3.9.1: How can I disable the scrollbar?
3587
3588 To disable them for all frames, add the following line to
3589 your @file{.Xdefaults}:
3590
3591 @example
3592 Emacs.scrollBarWidth:  0
3593 @end example
3594
3595 Or select from the @code{Options} menu @code{Frame Appearance->Scrollbars}.
3596 Remember to save options.
3597
3598 To turn the scrollbar off on a per-frame basis, use the following
3599 function:
3600
3601 @lisp
3602 (set-specifier scrollbar-width 0 (selected-frame))
3603 @end lisp
3604
3605 You can actually turn the scrollbars on at any level you want by
3606 substituting for (selected-frame) in the above command.  For example, to
3607 turn the scrollbars off only in a single buffer:
3608
3609 @lisp
3610 (set-specifier scrollbar-width 0 (current-buffer))
3611 @end lisp
3612 @c 
3613 @c In XEmacs versions prior to 19.14, you had to use the hairier construct:
3614 @c 
3615 @c @lisp
3616 @c (set-specifier scrollbar-width (cons (selected-frame) 0))
3617 @c @end lisp
3618
3619 @node Q3.9.2, Q3.9.3, Q3.9.1, Customization
3620 @unnumberedsubsec Q3.9.2: How can one use resources to change scrollbar colors?
3621
3622 Here's a recap of how to use resources to change your scrollbar colors:
3623
3624 @example
3625 ! Motif scrollbars
3626
3627 Emacs*XmScrollBar.Background: skyblue
3628 Emacs*XmScrollBar.troughColor: lightgray
3629
3630 ! Athena scrollbars
3631
3632 Emacs*Scrollbar.Foreground: skyblue
3633 Emacs*Scrollbar.Background: lightgray
3634 @end example
3635
3636 Note the capitalization of @code{Scrollbar} for the Athena widget.
3637
3638 @node Q3.9.3, Q3.9.4, Q3.9.2, Customization
3639 @unnumberedsubsec Q3.9.3: Moving the scrollbar can move the point; can I disable this?
3640
3641 When I move the scrollbar in an XEmacs window, it moves the point as
3642 well, which should not be the default behavior.  Is this a bug or a
3643 feature?  Can I disable it?
3644
3645 The current behavior is a feature, not a bug.  Point remains at the same
3646 buffer position as long as that position does not scroll off the screen.
3647 In that event, point will end up in either the upper-left or lower-left
3648 hand corner.
3649
3650 This cannot be changed.
3651
3652 @node Q3.9.4, Q3.10.1, Q3.9.3, Customization
3653 @unnumberedsubsec Q3.9.4: How can I turn off automatic horizontal scrolling in specific modes?
3654
3655 Do @code{(setq truncate-lines t)} in the mode-hooks for any modes
3656 in which you want lines truncated.
3657
3658 More precisely: If @code{truncate-lines} is nil, horizontal scrollbars
3659 will never appear.  Otherwise, they will appear only if the value of
3660 @code{scrollbar-height} for that buffer/window/etc. is non-zero.  If you
3661 do
3662
3663 @lisp
3664 (set-specifier scrollbar-height 0)
3665 @end lisp
3666
3667 then horizontal scrollbars will not appear in truncated buffers unless
3668 the package specifically asked for them.
3669
3670 @node Q3.10.1, Q3.10.2, Q3.9.4, Customization
3671 @unnumberedsec 3.10: Text Selections
3672 @unnumberedsubsec Q3.10.1: How can I turn off or change highlighted selections?
3673
3674 The @code{zmacs} mode allows for what some might call gratuitous
3675 highlighting for selected regions (either by setting mark or by using
3676 the mouse).  This is the default behavior.  To turn off, add the
3677 following line to your @file{init.el}/@file{.emacs} file:
3678
3679 @lisp
3680 (setq zmacs-regions nil)
3681 @end lisp
3682
3683 Starting with XEmacs-20.2 you can also change this with Customize. Select
3684 from the @code{Options} menu @code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs
3685 Regions} or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
3686
3687 To change the face for selection, look at @code{Options->Customize} on
3688 the menubar.
3689
3690 @node Q3.10.2, Q3.10.3, Q3.10.1, Customization
3691 @unnumberedsubsec Q3.10.2: How do I get that typing on an active region removes it?
3692
3693 I want to change things so that if I select some text and start typing,
3694 the typed text replaces the selected text, similar to Motif.
3695
3696 You want to use something called @dfn{pending delete}.  Pending delete
3697 is what happens when you select a region (with the mouse or keyboard)
3698 and you press a key to replace the selected region by the key you typed.
3699 Usually backspace kills the selected region.
3700
3701 To get this behavior, add the following lines to your @file{init.el}/@file{.emacs}:
3702
3703 @lisp
3704 (cond
3705  ((fboundp 'turn-on-pending-delete)
3706   (turn-on-pending-delete))
3707  ((fboundp 'pending-delete-on)
3708   (pending-delete-on t)))
3709 @end lisp
3710
3711 Note that this will work with both Backspace and Delete.  This code is a 
3712 tad more complicated than it has to be for XEmacs in order to make it
3713 more portable.
3714
3715 @node Q3.10.3, Q3.10.4, Q3.10.2, Customization
3716 @unnumberedsubsec Q3.10.3: Can I turn off the highlight during isearch?
3717
3718 I do not like my text highlighted while I am doing isearch as I am not
3719 able to see what's underneath.  How do I turn it off?
3720
3721 Put the following in your @file{init.el}/@file{.emacs}:
3722
3723 @lisp
3724 (setq isearch-highlight nil)
3725 @end lisp
3726
3727 Starting with XEmacs-20.2 you can also change this with Customize. Type
3728 @kbd{M-x customize-variable @key{RET} isearch-highlight @key{RET}}.
3729
3730 Note also that isearch-highlight affects query-replace and ispell.
3731 Instead of disabling isearch-highlight you may find that a better
3732 solution consists of customizing the @code{isearch} face.
3733
3734 @node Q3.10.4, Q3.10.5, Q3.10.3, Customization
3735 @unnumberedsubsec Q3.10.4: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
3736
3737 Put this in your @code{.emacs}:
3738
3739 @lisp
3740 (setq zmacs-regions nil)
3741 @end lisp
3742
3743 @strong{Warning: This command turns off all region highlighting.}
3744
3745 Also see @ref{Q3.10.1}.
3746
3747 @node Q3.10.5,  , Q3.10.4, Customization
3748 @unnumberedsubsec Q3.10.5: The region disappears when I hit the end of buffer while scrolling.
3749
3750 This has been fixed by default starting with XEmacs-20.3.
3751
3752 With older versions you can turn this feature (if it indeed is a feature)
3753 off like this:
3754
3755 @lisp
3756 (defadvice scroll-up (around scroll-up freeze)
3757   (interactive "_P")
3758   (let ((zmacs-region-stays t))
3759     (if (interactive-p)
3760         (condition-case nil
3761             ad-do-it
3762           (end-of-buffer (goto-char (point-max))))
3763       ad-do-it)))
3764
3765 (defadvice scroll-down (around scroll-down freeze)
3766   (interactive "_P")
3767   (let ((zmacs-region-stays t))
3768     (if (interactive-p)
3769         (condition-case nil
3770             ad-do-it
3771           (beginning-of-buffer (goto-char (point-min))))
3772       ad-do-it)))
3773 @end lisp
3774
3775 Thanks to @email{raman@@adobe.com, T. V. Raman} for assistance in deriving this
3776 answer.
3777
3778 @node Subsystems, Miscellaneous, Customization, Top
3779 @unnumbered 4 Major Subsystems
3780
3781 This is part 4 of the XEmacs Frequently Asked Questions list.  This
3782 section is devoted to major XEmacs subsystems.
3783
3784 @menu
3785 Reading Mail with VM:
3786 * Q4.0.1::      How do I set up VM to retrieve remote mail using POP?
3787 * Q4.0.2::      How do I get VM to filter mail for me?
3788 * Q4.0.3::      How can I get VM to automatically check for new mail?
3789 * Q4.0.4::      [This question intentionally left blank]
3790 * Q4.0.5::      How do I get my outgoing mail archived?
3791 * 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"?
3792 * Q4.0.7::      Is there a mailing list or FAQ for VM?
3793 * Q4.0.8::      Remote mail reading with VM.
3794 * Q4.0.9::      rmail or VM gets an error incorporating new mail.
3795 * Q4.0.10::     How do I make VM stay in a single frame?
3796 * Q4.0.11::     How do I make VM or mh-e display graphical smilies?
3797 * Q4.0.12::     Customization of VM not covered in the manual or here.
3798
3799 Web browsing with W3:
3800 * Q4.1.1::      What is W3?
3801 * Q4.1.2::      How do I run W3 from behind a firewall?
3802 * Q4.1.3::      Is it true that W3 supports style sheets and tables?
3803
3804 Reading Netnews and Mail with Gnus:
3805 * Q4.2.1::      GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus,argh!
3806 * Q4.2.2::      [This question intentionally left blank]
3807 * Q4.2.3::      How do I make Gnus stay within a single frame?
3808 * Q4.2.4::      How do I customize the From: line?
3809
3810 Other Mail & News:
3811 * Q4.3.1::      How can I read and/or compose MIME messages?
3812 * Q4.3.2::      What is TM and where do I get it?
3813 * Q4.3.3::      Why isn't this @code{movemail} program working?
3814 * Q4.3.4::      Movemail is also distributed by Netscape?  Can that cause problems?
3815 * Q4.3.5::      Where do I find pstogif (required by tm)?
3816
3817 Sparcworks, EOS, and WorkShop:
3818 * Q4.4.1::      What is SPARCworks, EOS, and WorkShop
3819 * Q4.4.2::      How do I start the Sun Workshop support in XEmacs 21?
3820
3821 Energize:
3822 * Q4.5.1::      What is/was Energize?
3823
3824 Infodock:
3825 * Q4.6.1::      What is Infodock?
3826
3827 Other Unbundled Packages:
3828 * Q4.7.1::      What is AUC TeX?  Where do you get it?
3829 * Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
3830 * Q4.7.3::      [This question intentionally left blank]
3831 * Q4.7.4::      Problems installing AUC TeX
3832 * Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
3833 * Q4.7.6::      Is there a MatLab mode?
3834 @end menu
3835
3836 @node Q4.0.1, Q4.0.2, Subsystems, Subsystems
3837 @unnumberedsec 4.0: Reading Mail with VM
3838 @unnumberedsubsec Q4.0.1: How do I set up VM to retrieve mail from a remote site using POP?
3839
3840 Use @code{vm-spool-files}, like this for example:
3841
3842 @lisp
3843 (setq vm-spool-files '("/var/spool/mail/wing"
3844                        "netcom23.netcom.com:110:pass:wing:MYPASS"))
3845 @end lisp
3846
3847 Of course substitute your actual password for MYPASS.
3848
3849 @node Q4.0.2, Q4.0.3, Q4.0.1, Subsystems
3850 @unnumberedsubsec Q4.0.2: How do I get VM to filter mail for me?
3851
3852 One possibility is to use procmail to split your mail before it gets to
3853 VM.  I prefer this personally, since there are many strange and
3854 wonderful things one can do with procmail.  Procmail may be found at
3855 @uref{ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/}.
3856
3857 Also see the Mail Filtering FAQ at:
3858 @iftex
3859 @*
3860 @end iftex
3861 @uref{ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq}.
3862 @c Link above,
3863 @c <URL:http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/filtering-faq/faq.html>
3864 @c was dead.
3865
3866 @node Q4.0.3, Q4.0.4, Q4.0.2, Subsystems
3867 @unnumberedsubsec Q4.0.3: How can I get VM to automatically check for new mail?
3868
3869 @email{turner@@lanl.gov, John Turner} writes:
3870
3871 @quotation
3872 Use the following:
3873
3874 @lisp
3875 (setq vm-auto-get-new-mail 60)
3876 @end lisp
3877 @end quotation
3878
3879 @node Q4.0.4, Q4.0.5, Q4.0.3, Subsystems
3880 @unnumberedsubsec Q4.0.4: [This question intentionally left blank]
3881
3882 Obsolete question, left blank to avoid renumbering.
3883
3884 @node Q4.0.5, Q4.0.6, Q4.0.4, Subsystems
3885 @unnumberedsubsec Q4.0.5: How do I get my outgoing mail archived?
3886
3887 @lisp
3888 (setq mail-archive-file-name "~/outbox")
3889 @end lisp
3890
3891 @node Q4.0.6, Q4.0.7, Q4.0.5, Subsystems
3892 @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"?
3893
3894 Set @code{vm-reply-ignored-addresses} to a list, like
3895
3896 @lisp
3897 (setq vm-reply-ignored-addresses
3898       '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
3899         "wing@@netcom.com" "wing@@xemacs.org"))
3900 @end lisp
3901
3902 Note that each string is a regular expression.
3903
3904 @node Q4.0.7, Q4.0.8, Q4.0.6, Subsystems
3905 @unnumberedsubsec Q4.0.7: Is there a mailing list or FAQ for VM?
3906
3907 A FAQ for VM exists at @uref{http://www.cyberpass.net/~gorkab/vmfaq.htm}.
3908
3909 VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
3910
3911 @node Q4.0.8, Q4.0.9, Q4.0.7,  Subsystems
3912 @unnumberedsubsec Q4.0.8: Remote mail reading with VM.
3913
3914 My mailbox lives at the office on a big honkin server.  My regular INBOX
3915 lives on my honkin desktop machine.  I now can PPP to the office from
3916 home which is far from honking...  I'd like to be able to read mail at
3917 home without storing it here and I'd like to use xemacs and VM at
3918 home...  Is there a recommended setup?
3919
3920 @email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes:
3921
3922 @quotation
3923 There are several ways to do this.
3924
3925 @enumerate
3926 @item
3927 Set your display to your home machine and run dxpc or one of the other X
3928 compressors.
3929
3930 @item
3931 NFS mount your desktop machine on your home machine and modify your pop
3932 command on your home machine to rsh to your desktop machine and actually
3933 do the pop get's.
3934
3935 @item
3936 Run a POP server on your desktop machine as well and do a sort of two
3937 tiered POP get.
3938 @end enumerate
3939 @end quotation
3940
3941         @email{wmperry@@monolith.spry.com, William Perry} adds:
3942
3943 @quotation
3944 Or you could run a pop script periodically on your desktop machine, and
3945 just use ange-ftp or NFS to get to your mailbox.  I used to do this all
3946 the time back at IU.
3947 @end quotation
3948
3949 @node Q4.0.9, Q4.0.10, Q4.0.8, Subsystems
3950 @unnumberedsubsec Q4.0.9: rmail or VM gets an error incorporating new mail.
3951
3952 Quoting the XEmacs PROBLEMS file:
3953
3954 @quotation
3955 rmail and VM get new mail from @file{/usr/spool/mail/$USER} using a
3956 program called @code{movemail}.  This program interlocks with
3957 @code{/bin/mail} using the protocol defined by @code{/bin/mail}.
3958
3959 There are two different protocols in general use.  One of them uses the
3960 @code{flock} system call.  The other involves creating a lock file;
3961 @code{movemail} must be able to write in @file{/usr/spool/mail} in order
3962 to do this.  You control which one is used by defining, or not defining,
3963 the macro @code{MAIL_USE_FLOCK} in @file{config.h} or the m- or s- file
3964 it includes.
3965
3966 @strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
3967 SYSTEM, YOU CAN LOSE MAIL!}
3968
3969 If your system uses the lock file protocol, and fascist restrictions
3970 prevent ordinary users from writing the lock files in
3971 @file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a
3972 suitable group such as @samp{mail}.  You can use these commands (as
3973 root):
3974
3975 @example
3976 chgrp mail movemail
3977 chmod 2755 movemail
3978 @end example
3979
3980 If your system uses the lock file protocol, and fascist restrictions
3981 prevent ordinary users from writing the lock files in
3982 @file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a
3983 suitable group such as @code{mail}.  To do this, use the following
3984 commands (as root) after doing the make install.
3985
3986 @example
3987 chgrp mail movemail
3988 chmod 2755 movemail
3989 @end example
3990
3991 Installation normally copies movemail from the build directory to an
3992 installation directory which is usually under @file{/usr/local/lib}.
3993 The installed copy of @code{movemail} is usually in the directory
3994 @file{/usr/local/lib/emacs/VERSION/TARGET}.  You must change the group
3995 and mode of the installed copy; changing the group and mode of the build
3996 directory copy is ineffective.
3997 @end quotation
3998
3999 @node Q4.0.10, Q4.0.11, Q4.0.9, Subsystems
4000 @unnumberedsubsec Q4.0.10: How do I make VM stay in a single frame?
4001
4002 John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes:
4003
4004 @quotation
4005 @lisp
4006                                         ; Don't use multiple frames
4007 (setq vm-frame-per-composition nil)
4008 (setq vm-frame-per-folder nil)
4009 (setq vm-frame-per-edit nil)
4010 (setq vm-frame-per-summary nil)
4011 @end lisp
4012 @end quotation
4013
4014 @node Q4.0.11, Q4.0.12, Q4.0.10, Subsystems
4015 @unnumberedsubsec Q4.0.11: How do I make VM or mh-e display graphical smilies?
4016 @c Changed June
4017 For mh-e use the following:
4018
4019 @lisp
4020 (add-hook 'mh-show-mode-hook '(lambda ()
4021                                 (smiley-region (point-min)
4022                                                (point-max))))
4023 @end lisp
4024
4025 @email{bill@@carpenter.ORG, WJCarpenter} writes:
4026 For VM use the following:
4027 @lisp
4028        (autoload 'smiley-region "smiley" nil t)
4029        (add-hook 'vm-select-message-hook
4030                  '(lambda ()
4031                     (smiley-region (point-min)
4032                                    (point-max))))
4033 @end lisp
4034
4035 For tm use the following:
4036 @lisp
4037 (autoload 'smiley-buffer "smiley" nil t)
4038 (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
4039 @end lisp
4040
4041 @node Q4.0.12, Q4.1.1, Q4.0.11, Subsystems
4042 @unnumberedsubsec Q4.0.12: Customization of VM not covered in the manual, or here.
4043
4044 @email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes:
4045
4046 @quotation
4047 The meta-answer is to look into the file @file{vm-vars.el}, in the vm
4048 directory of the lisp library.
4049
4050 @file{vm-vars.el} contains, initializes and carefully describes, with
4051 examples of usage, the plethora of user options that @emph{fully}
4052 control VM's behavior.
4053
4054 Enter vm-vars, @code{forward-search} for toolbar, find the variables
4055 that control the toolbar placement, appearance, existence, copy to your
4056 @file{init.el}/@file{.emacs} or @file{.vm} and modify according to the
4057 detailed instructions.
4058
4059 The above also applies to all the various features of VM: search for
4060 some keywords, maybe the first you conjure isn't appropriate, find the
4061 appropriate variables, copy and experiment.
4062 @end quotation
4063
4064 @node Q4.1.1, Q4.1.2, Q4.0.12, Subsystems
4065 @unnumberedsec 4.1: Web browsing with W3
4066 @unnumberedsubsec Q4.1.1: What is W3?
4067
4068 W3 is an advanced graphical browser written in Emacs lisp that runs on
4069 XEmacs.  It has full support for cascaded style sheets, and more...
4070
4071 It has a home web page at
4072 @uref{http://www.cs.indiana.edu/elisp/w3/docs.html}.
4073
4074 @node Q4.1.2, Q4.1.3, Q4.1.1, Subsystems
4075 @unnumberedsubsec Q4.1.2: How do I run W3 from behind a firewall?
4076
4077 There is a long, well-written, detailed section in the W3 manual that
4078 describes how to do this.  Look in the section entitled "Firewalls".
4079
4080 @node Q4.1.3, Q4.2.1, Q4.1.2, Subsystems
4081 @unnumberedsubsec Q4.1.3: Is it true that W3 supports style sheets and tables?
4082
4083 Yes, and much more.  W3, as distributed with the latest XEmacs is a
4084 full-featured web browser.
4085
4086 @node Q4.2.1, Q4.2.2, Q4.1.3, Subsystems
4087 @unnumberedsec 4.2: Reading Netnews and Mail with Gnus
4088 @unnumberedsubsec Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
4089
4090 The Gnus numbering issues are not meant for mere mortals to know them.
4091 If you feel you @emph{must} enter the muddy waters of Gnus, visit the
4092 excellent FAQ, maintained by Justin Sheehy, at:
4093
4094 @example
4095 @uref{http://www.ccs.neu.edu/software/contrib/gnus/}
4096 @end example
4097
4098 See also Gnus home page
4099 @example
4100 @uref{http://www.gnus.org/}
4101 @end example
4102
4103 @node Q4.2.2, Q4.2.3, Q4.2.1, Subsystems
4104 @unnumberedsubsec Q4.2.2: This question intentionally left blank.
4105
4106 Obsolete question, left blank to avoid renumbering.
4107
4108 @node Q4.2.3, Q4.2.4, Q4.2.2, Subsystems
4109 @unnumberedsubsec Q4.2.3: How do I make Gnus stay within a single frame?
4110
4111 The toolbar code to start Gnus opens the new frame---and it's a feature
4112 rather than a bug.  If you don't like it, but would still like to click
4113 on the seemly icon, use the following code:
4114
4115 @lisp
4116 (defun toolbar-news ()
4117   (gnus))
4118 @end lisp
4119
4120 It will redefine the callback function of the icon to just call
4121 @code{gnus}, without all the fancy frame stuff.
4122
4123 @node Q4.2.4, Q4.3.1, Q4.2.3, Subsystems
4124 @unnumberedsubsec Q4.2.4: How do I customize the From: line?
4125
4126 How do I change the @code{From:} line?  I have set gnus-user-from-line
4127 to
4128 @example
4129 Gail Gurman <gail.gurman@@sybase.com>
4130 @end example
4131 @noindent , but XEmacs Gnus doesn't use
4132 it. Instead it uses
4133 @example
4134 Gail Mara Gurman @email{gailg@@deall}
4135 @end example
4136 @noindent and then complains
4137 that it's incorrect. Also, as you perhaps can see, my Message-ID is
4138 screwy. How can I change that?
4139
4140 @email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes:
4141
4142 @quotation
4143 Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or
4144 @code{mail-host-address} to @samp{sybase.com}.
4145 @end quotation
4146
4147 @node Q4.3.1, Q4.3.2, Q4.2.4, Subsystems
4148 @unnumberedsec 4.3: Other Mail & News
4149 @unnumberedsubsec Q4.3.1: How can I read and/or compose MIME messages?
4150 @c Changed June
4151
4152 VM supports MIME natively.
4153
4154 You probably want to use the Tools for MIME (tm).  @xref{Q4.3.2}, for
4155 details.
4156
4157 @email{trey@@cs.berkeley.edu, Trey Jackson} has an Emacs & MIME web page at
4158 @iftex
4159 @*
4160 @end iftex
4161 @uref{http://bmrc.berkeley.edu/~trey/emacs/mime.html}.
4162
4163
4164 Another possibility is RMIME.  You may find RMIME at
4165 @iftex
4166 @*
4167 @end iftex
4168 @uref{http://www.cinti.net/~rmoody/rmime/index.html}.
4169
4170
4171 @node Q4.3.2, Q4.3.3, Q4.3.1, Subsystems
4172 @unnumberedsubsec Q4.3.2: What is TM and where do I get it?
4173
4174 TM stands for @dfn{Tools for MIME} and not Tiny MIME.  TM integrates
4175 with all major XEmacs packages like Gnus (all flavors), VM, MH-E, and
4176 mailcrypt.  It provides totally transparent and trouble-free MIME
4177 support.  When appropriate a message will be decoded in place in an
4178 XEmacs buffer.
4179
4180 TM now comes as a package with XEmacs 19.16 and XEmacs 20.2.
4181
4182 TM was written by @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} and
4183 @email{shuhei-k@@jaist.ac.jp, KOBAYASHI
4184 Shuhei}.
4185
4186 It is based on the work of @email{umerin@@mse.kyutech.ac.jp, UMEDA
4187 Masanobu}, the original writer of GNUS.
4188
4189 The following information is from the @file{README}:
4190
4191 @dfn{tm} is a MIME package for GNU Emacs.
4192 tm has following functions:
4193
4194 @itemize @bullet
4195 @item MIME style multilingual header.
4196 @item MIME message viewer (mime/viewer-mode).
4197 @item MIME message composer (mime/editor-mode).
4198 @item MIME extenders for mh-e, GNUS, RMAIL and VM.
4199 @end itemize
4200
4201 tm is available from following anonymous ftp sites:
4202 @itemize @bullet
4203 @comment @item @uref{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/mime/} (Japan).
4204 @comment @item @uref{ftp://ftp.nis.co.jp/pub/gnu/emacs-lisp/tm/} (Japan).
4205 @comment @c The host above is unknown.
4206 @comment @item @uref{ftp://ftp.nisiq.net/pub/gnu/emacs-lisp/tm/} (US).
4207 @comment @item @uref{ftp://ftp.miranova.com/pub/gnus/jaist.ac.jp/} (US).
4208 @item @uref{ftp://ftp.unicamp.br/pub/mail/mime/tm/} (Brasil).
4209 @item @uref{ftp://ftp.th-darmstadt.de/pub/editors/GNU-Emacs/lisp/mime/} (Germany).
4210 @item @uref{ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/} (Germany).
4211 @end itemize
4212
4213 Don't let the installation procedure & instructions stop you from trying
4214 this package out---it's much simpler than it looks, and once installed,
4215 trivial to use.
4216
4217 @node Q4.3.3, Q4.3.4, Q4.3.2, Subsystems
4218 @unnumberedsubsec Q4.3.3: Why isn't this @code{movemail} program working?
4219
4220 Ben Wing @email{ben@@xemacs.org} writes:
4221
4222 @quotation
4223 It wasn't chown'ed/chmod'd correctly.
4224 @end quotation
4225
4226 @node Q4.3.4, Q4.3.5, Q4.3.3, Subsystems
4227 @unnumberedsubsec Q4.3.4: Movemail is also distributed by Netscape?  Can that cause problems?
4228
4229 @email{steve@@xemacs.org, Steve Baur} writes:
4230
4231 @quotation
4232 Yes.  Always use the movemail installed with your XEmacs.  Failure to do
4233 so can result in lost mail.
4234 @end quotation
4235
4236 Please refer to @email{jwz@@jwz.org, Jamie Zawinski's} notes at
4237 @iftex
4238 @*
4239 @end iftex
4240 @uref{http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/movemail.html}.
4241 In particular, this document will show you how to make Netscape use the
4242 version of movemail configured for your system by the person who built
4243 XEmacs.
4244
4245 @node Q4.3.5, Q4.4.1, Q4.3.4, Subsystems
4246 @unnumberedsubsec Q4.3.5: Where do I find pstogif (required by tm)?
4247
4248 pstogif is part of the latex2html package.
4249
4250 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
4251
4252 latex2html is best found at the CTAN hosts and their mirrors
4253 in
4254 @iftex
4255 @*
4256 @end iftex
4257 @file{tex-archive/support/latex2html}.
4258
4259 CTAN hosts are:
4260
4261 @itemize @bullet
4262 @item @uref{ftp://ftp.tex.ac.uk/tex-archive/support/latex2html/}.
4263 @item @uref{ftp://ftp.dante.de/tex-archive/support/latex2html/}.
4264 @end itemize
4265
4266 There is a good mirror at ftp.cdrom.com;
4267 @iftex
4268 @*
4269 @end iftex
4270 @uref{ftp://ftp.cdrom.com/pub/tex/ctan/support/latex2html/}.
4271
4272 @node Q4.4.1, Q4.4.2, Q4.3.5, Subsystems
4273 @unnumberedsec 4.4: Sparcworks, EOS, and WorkShop
4274 @unnumberedsubsec Q4.4.1: What is SPARCworks, EOS, and WorkShop?
4275
4276 @email{turner@@lanl.gov, John Turner} writes:
4277
4278 @quotation
4279 SPARCworks is SunSoft's development environment, comprising compilers
4280 (C, C++, FORTRAN 77, Fortran 90, Ada, and Pascal), a debugger, and other
4281 tools such as TeamWare (for configuration management), MakeTool, etc.
4282 @end quotation
4283
4284 See @uref{http://www.sun.com/software/Developer-products/}
4285 for more info.
4286
4287 EOS stands for "Era on SPARCworks", but I don't know what Era stands
4288 for.
4289
4290 EOS is the integration of XEmacs with the SPARCworks debugger.  It
4291 allows one to use an XEmacs frame to view code (complete with
4292 fontification, etc.), set breakpoints, print variables, etc., while
4293 using the SPARCworks debugger.  It works very well and I use it all the
4294 time.
4295
4296 @email{cthomp@@xemacs.org, Chuck Thompson} writes:
4297
4298 @quotation
4299 Era stood for "Emacs Rewritten Again".  It was what we were calling the
4300 modified version of Lucid Emacs for Sun when I was dragged, er, allowed
4301 to work on this wonderful editor.
4302 @end quotation
4303
4304 @email{martin@@xemacs.org, Martin Buchholz} writes:
4305
4306 @quotation
4307 EOS is being replaced with a new graphical development environment
4308 called Sun WorkShop, which is currently (07/96) in Alpha Test.  For more
4309 details, check out
4310 @iftex
4311 @*
4312 @end iftex
4313 @uref{http://www.sun.com/software/Products/Developer-products}.
4314 @end quotation
4315
4316 @node Q4.4.2, Q4.5.1, Q4.4.1, Subsystems
4317 @unnumberedsubsec Q4.4.2: How do I start the Sun Workshop support in XEmacs 21?
4318
4319 Add the switch ---with-workshop to the configure command when building
4320 XEmacs and put the following in one of your startup files
4321 (e.g. site-start.el or .emacs):
4322
4323 @lisp
4324 (when (featurep 'tooltalk)
4325   (load "tooltalk-macros")
4326   (load "tooltalk-util")
4327   (load "tooltalk-init"))
4328 (when (featurep 'sparcworks)
4329   (load "sunpro-init")
4330   (load "ring")
4331   (load "comint")
4332   (load "annotations")
4333   (sunpro-startup))
4334 @end lisp
4335
4336 If you are not using the latest Workshop (5.0) you have to apply the
4337 following patch:
4338
4339 @format
4340 --- /opt/SUNWspro/lib/eserve.el.ORIG    Fri May 14 15:23:26 1999
4341 +++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999
4342 @@@@ -42,7 +42,7 @@@@
4343  (defvar running-xemacs nil "t if we're running XEmacs")
4344  (defvar running-emacs  nil "t if we're running GNU Emacs 19")
4345
4346 -(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
4347 +(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
4348      (setq running-xemacs t)
4349      (setq running-emacs  t))
4350 @end format
4351
4352
4353
4354 @node Q4.5.1, Q4.6.1, Q4.4.2, Subsystems
4355 @unnumberedsec 4.5: Energize
4356 @unnumberedsubsec Q4.5.1: What is/was Energize?
4357
4358 @email{gray@@meteor.harlequin.com, David N Gray} writes:
4359 @quotation
4360 The files in @file{lisp/energize} are to enable Emacs to interface with
4361 the "Energize Programming System", a C and C++ development environment,
4362 which was a product of Lucid, Inc.  Tragically, Lucid went out of
4363 business in 1994, so although Energize is still a great system, if you
4364 don't already have it, there isn't any way to get it now.  (Unless you
4365 happen to be in Japan; INS Engineering may still be selling it there.
4366 Tartan bought the rights to sell it in the rest of the world, but never
4367 did so.)
4368 @end quotation
4369
4370 @node Q4.6.1, Q4.7.1, Q4.5.1, Subsystems
4371 @unnumberedsec 4.6: Infodock
4372 @unnumberedsubsec Q4.6.1: What is Infodock?
4373
4374 InfoDock is an integrated productivity toolset, mainly aimed at
4375 technical people.  It is developed and supported by InfoDock
4376 Associates, a firm that offers custom support and development
4377 for InfoDock, XEmacs and GNU Emacs.  ( @uref{http://www.infodock.com},
4378 @email{info@@infodock.com}, +1 408 243 3300).
4379
4380 InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of
4381 the power of Emacs, but with an easier to use and more comprehensive
4382 menu-based user interface.  The bottom portion of this text describes
4383 how it differs from XEmacs and GNU Emacs from the Free Software
4384 Foundation.
4385
4386 InfoDock is aimed at people who want a free, turn-key productivity
4387 environment.  Although InfoDock is customizable, it is not intended for
4388 people who like basic versions of Emacs which need to be customized
4389 extensively for local use; standard Emacs distributions are better for
4390 such uses.  InfoDock is for those people who want a complete,
4391 pre-customized environment in one package, which they need not touch
4392 more than once or twice a year to update to new revisions.
4393
4394 InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX,
4395 and Intel Linux systems.  It is intended for use on a color display,
4396 although most features will work on monochrome monitors.  Simply unpack
4397 InfoDock according to the instructions in the ID-INSTALL file and you
4398 are ready to run.
4399
4400 The InfoDock Manual is concise, yet sufficient as a user guide for users
4401 who have never used an Emacs-type editor before.  For users who are
4402 already familiar with Emacs, it supplements the information in the GNU
4403 Emacs Manual.
4404
4405 InfoDock menus are much more extensive and more mature than standard
4406 Emacs menus.  Each menu offers a @samp{Manual} item which displays
4407 documentation associated with the menu's functions.
4408
4409 @noindent
4410 Four types of menubars are provided:
4411 @enumerate
4412 @item
4413 An extensive menubar providing access to global InfoDock commands.
4414 @item
4415 Mode-specific menubars tailored to the current major mode.
4416 @item
4417 A simple menubar for basic editing to help novices get started with InfoDock.
4418 @item
4419 The standard XEmacs menubar.
4420 @end enumerate
4421
4422 Most modes also include mode-specific popup menus.  Additionally, region and
4423 rectangle popup menus are included.
4424
4425 @samp{Hyperbole}, the everyday information manager, is a core part of
4426 InfoDock.  This provides context-sensitive mouse keys, a rolodex-type
4427 contact manager, programmable hypertext buttons, and an autonumbered
4428 outliner with embedded hyperlink anchors.
4429
4430 The @samp{OO-Browser}, a multi-language object-oriented code browser, is a
4431 standard part of InfoDock.
4432
4433 InfoDock saves a more extensive set of user options than other Emacs
4434 versions.
4435
4436 InfoDock inserts a useful file header in many file types, showing the
4437 author, summary, and last modification time of each file.  A summary
4438 program can then be used to summarize all of the files in a directory,
4439 for easy MANIFEST file creation.
4440
4441 Your working set of buffers is automatically saved and restored (if you
4442 answer yes to a prompt) between InfoDock sessions.
4443
4444 Refined color choices for code highlighting are provided for both dark and
4445 light background display frames.
4446
4447 The @kbd{C-z} key prefix performs frame-based commands which parallel the
4448 @kbd{C-x} key prefix for window-based commands.
4449
4450 The Smart Menu system is included for producing command menus on dumb
4451 terminals.
4452
4453 Lisp libraries are better categorized according to function.
4454
4455 Extensions and improvements to many areas of Emacs are included, such as:
4456 paragraph filling, mail reading with Rmail, shell handling, outlining, code
4457 highlighting and browsing, and man page browsing.
4458
4459 InfoDock questions, answers and discussion should go to the mail list
4460 @iftex
4461 @*
4462 @end iftex
4463 @email{infodock@@infodock.com}.  Use
4464 @email{infodock-request@@infodock.com} to be added or removed from the
4465 list.  Always include your InfoDock version number when sending help
4466 requests.
4467
4468 InfoDock is available across the Internet via anonymous FTP.  To get
4469 it, first move to a directory into which you want the InfoDock archive
4470 files placed.  We will call this <DIST-DIR>.
4471
4472 @example
4473    cd <DIST-DIR>
4474 @end example
4475
4476 Ftp to ftp.xemacs.org  (Internet Host ID = 128.174.252.16):
4477
4478 @example
4479    prompt> ftp ftp.xemacs.org
4480 @end example
4481
4482 Login as @samp{anonymous} with your own <user-id>@@<site-name> as a password.
4483
4484 @example
4485    Name (ftp.xemacs.org): anonymous
4486    331 Guest login ok, send your complete e-mail address as password.
4487    Password: -<your-user-id>@@<your-domain>
4488    230 Guest login ok, access restrictions apply.
4489 @end example
4490
4491 Move to the location of the InfoDock archives:
4492
4493 @example
4494    ftp> cd pub/infodock
4495 @end example
4496
4497 Set your transfer mode to binary:
4498
4499 @example
4500    ftp> bin
4501    200 Type set to I.
4502 @end example
4503
4504 Turn off prompting:
4505
4506 @example
4507    ftp> prompt
4508    Interactive mode off.
4509 @end example
4510
4511 Retrieve the InfoDock archives that you want, either by using a
4512 @samp{get <file>} for each file you want or by using the following to
4513 get a complete distribution, including all binaries:
4514
4515 @example
4516    ftp> mget ID-INSTALL
4517    ftp> mget id-*
4518 @end example
4519
4520 Close the FTP connection:
4521
4522 @example
4523    ftp> quit
4524    221 Goodbye.
4525 @end example
4526
4527 Read the @file{ID-INSTALL} file which you just retrieved for
4528 step-by-step installation instructions.
4529
4530 @node Q4.7.1, Q4.7.2, Q4.6.1, Subsystems
4531 @unnumberedsec 4.7: Other Unbundled Packages
4532 @unnumberedsubsec Q4.7.1: What is AUC TeX?  Where do you get it?
4533
4534 AUC TeX is a package written by @email{abraham@@dina.kvl.dk, Per Abrahamsen}.
4535 Starting with XEmacs 19.16, AUC TeX is bundled with XEmacs.  The
4536 following information is from the @file{README} and website.
4537
4538 AUC TeX is an extensible package that supports writing and formatting
4539 TeX files for most variants of GNU Emacs. Many different macro packages
4540 are supported, including AMS TeX, LaTeX, and TeXinfo.
4541
4542 The most recent version is always available by ftp at
4543 @iftex
4544 @*
4545 @end iftex
4546 @uref{ftp://sunsite.auc.dk/packages/auctex/auctex.tar.gz}.
4547
4548 In case you don't have access to anonymous ftp, you can get it by an
4549 email request to @email{ftpmail@@decwrl.dec.com}.
4550
4551 WWW users may want to check out the AUC TeX page at
4552 @iftex
4553 @*
4554 @end iftex
4555 @uref{http://sunsite.auc.dk/auctex/}.
4556
4557 @node Q4.7.2, Q4.7.3, Q4.7.1, Subsystems
4558 @unnumberedsubsec Q4.7.2: Are there any Emacs Lisp Spreadsheets?
4559
4560 Yes.  Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at
4561 @iftex
4562 @*
4563 @end iftex
4564 @uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}.
4565
4566 @node Q4.7.3, Q4.7.4, Q4.7.2, Subsystems
4567 @unnumberedsubsec Q4.7.3: [This question intentionally left blank]
4568
4569 @node Q4.7.4, Q4.7.5, Q4.7.3, Subsystems
4570 @unnumberedsubsec Q4.7.4: Problems installing AUC TeX.
4571
4572 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
4573
4574 @quotation
4575 AUC TeX works fine on both stock Emacs and XEmacs has been doing so for
4576 a very very long time. This is mostly due to the work of
4577 @email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu}
4578 package.  Which leads to what is probably the problem...
4579 @end quotation
4580
4581 Most problems with AUC TeX are one of two things:
4582
4583 @itemize @bullet
4584 @item
4585 The TeX-lisp-directory in @file{tex-site.el} and the makefile don't
4586 match.
4587
4588 Fix: make sure you configure AUC TeX properly @strong{before} installing.
4589
4590 @item
4591 You have an old version of easymenu.el in your path.
4592
4593 Fix: use @code{locate-library} and remove old versions to make sure it
4594 @strong{only} finds the one that came with XEmacs.
4595 @end itemize
4596
4597
4598 @node Q4.7.5, Q4.7.6, Q4.7.4, Subsystems
4599 @unnumberedsubsec Q4.7.5: Is there a reason for an Emacs package not to be included in XEmacs?
4600
4601 The reason for an Emacs package not to be included in XEmacs is
4602 usually one or more of the following:
4603
4604 @enumerate
4605 @item
4606 The package has not been ported to XEmacs.  This will typically happen
4607 when it uses GNU-Emacs-specific features, which make it fail under
4608 XEmacs.
4609
4610 Porting a package to XEmacs can range from a trivial amount of change to
4611 a partial or full rewrite.  Fortunately, the authors of modern packages
4612 usually choose to support both Emacsen themselves.
4613
4614 @item
4615 The package has been decided not to be appropriate for XEmacs.  It may
4616 have an equivalent or better replacement within XEmacs, in which case
4617 the developers may choose not to burden themselves with supporting an
4618 additional package.
4619
4620 Each package bundled with XEmacs means more work for the maintainers,
4621 whether they want it or not.  If you are ready to take over the
4622 maintenance responsibilities for the package you port, be sure to say
4623 so---we will more likely include it.
4624
4625 @item
4626 The package simply hasn't been noted by the XEmacs development.  If
4627 that's the case, the messages like yours are very useful for attracting
4628 our attention.
4629
4630 @item
4631 The package was noted by the developers, but they simply haven't yet
4632 gotten around to including/porting it.  Wait for the next release or,
4633 even better, offer your help.  It will be gladly accepted and
4634 appreciated.
4635 @end enumerate
4636
4637 @node Q4.7.6,  , Q4.7.5, Subsystems
4638 @unnumberedsubsec Q4.7.5: Is there a MatLab mode?
4639
4640 Yes, a matlab mode and other items are available at the
4641 @uref{ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons,
4642 MathWorks' emacs_add_ons ftp directory}.
4643
4644 @node Miscellaneous, MS Windows, Subsystems, Top
4645 @unnumbered 5 The Miscellaneous Stuff
4646
4647 This is part 5 of the XEmacs Frequently Asked Questions list.  This
4648 section is devoted to anything that doesn't fit neatly into the other
4649 sections.
4650
4651 @menu
4652 Major & Minor Modes:
4653 * Q5.0.1::      How can I do source code highlighting using font-lock?
4654 * Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
4655 * Q5.0.3::      How do I get @samp{More} Syntax Highlighting on by default?
4656 * Q5.0.4::      How can I enable auto-indent and/or Filladapt?
4657 * Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
4658 * Q5.0.6::      How do I start up a second shell buffer?
4659 * Q5.0.7::      Telnet from shell filters too much.
4660 * Q5.0.8::      Why does edt emulation not work?
4661 * Q5.0.9::      How can I emulate VI and use it as my default mode?
4662 * Q5.0.10::     [This question intentionally left blank]
4663 * Q5.0.11::     [This question intentionally left blank]
4664 * Q5.0.12::     How do I disable gnuserv from opening a new frame?
4665 * Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
4666 * Q5.0.14::     Strange things are happening in Shell Mode.
4667 * Q5.0.15::     Where do I get the latest CC Mode?
4668 * Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
4669 * Q5.0.17::     How can I get two instances of info?
4670 * Q5.0.18::     [This question intentionally left blank]
4671 * Q5.0.19::     Is there something better than LaTeX mode?
4672 * Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
4673
4674 Emacs Lisp Programming Techniques:
4675 * Q5.1.1::      The difference in key sequences between XEmacs and GNU Emacs?
4676 * Q5.1.2::      Can I generate "fake" keyboard events?
4677 * Q5.1.3::      Could you explain @code{read-kbd-macro} in more detail?
4678 * Q5.1.4::      What is the performance hit of @code{let}?
4679 * Q5.1.5::      What is the recommended use of @code{setq}?
4680 * Q5.1.6::      What is the typical misuse of @code{setq}?
4681 * Q5.1.7::      I like the @code{do} form of cl, does it slow things down?
4682 * Q5.1.8::      I like recursion, does it slow things down?
4683 * Q5.1.9::      How do I put a glyph as annotation in a buffer?
4684 * Q5.1.10::     @code{map-extents} won't traverse all of my extents!
4685 * Q5.1.11::     My elisp program is horribly slow.  Is there an easy way to find out where it spends time?
4686
4687 Sound:
4688 * Q5.2.1::      How do I turn off the sound?
4689 * Q5.2.2::      How do I get funky sounds instead of a boring beep?
4690 * Q5.2.3::      What's NAS, how do I get it?
4691 * Q5.2.4::      Sunsite sounds don't play.
4692
4693 Miscellaneous:
4694 * Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
4695 * Q5.3.2::      [This question intentionally left blank]
4696 * Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
4697 * Q5.3.4::      Getting @kbd{M-x lpr} to work with postscript printer.
4698 * Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
4699 * Q5.3.6::      [This question intentionally left blank]
4700 * Q5.3.7::      Can I have the end of the buffer delimited in some way?
4701 * Q5.3.8::      How do I insert today's date into a buffer?
4702 * Q5.3.9::      Are only certain syntactic character classes available for abbrevs?
4703 * Q5.3.10::     How can I get those oh-so-neat X-Face lines?
4704 * Q5.3.11::     How do I add new Info directories?
4705 * Q5.3.12::     What do I need to change to make printing work?
4706 @end menu
4707
4708 @node Q5.0.1, Q5.0.2, Miscellaneous, Miscellaneous
4709 @unnumberedsec 5.0: Major & Minor Modes
4710 @unnumberedsubsec Q5.0.1: How can I do source code highlighting using font-lock?
4711
4712 For most modes, font-lock is already set up and just needs to be turned
4713 on.  This can be done by adding the line:
4714
4715 @lisp
4716 (require 'font-lock)
4717 @end lisp
4718
4719 to your @file{init.el}/@file{.emacs}. (You can turn it on for the
4720 current buffer and session only by @kbd{M-x font-lock-mode}.) See the
4721 file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs
4722 versions prior to 21.4) for more information.
4723
4724 @c the old way:
4725 @c     (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
4726 @c     (add-hook 'dired-mode-hook      'turn-on-font-lock)
4727
4728 See also @code{Syntax Highlighting} from the @code{Options} menu.
4729 Remember to save options.
4730
4731 @node Q5.0.2, Q5.0.3, Q5.0.1, Miscellaneous
4732 @unnumberedsubsec Q5.0.2: I do not like cc-mode.  How do I use the old c-mode?
4733
4734 Well, first off, consider if you really want to do this.  cc-mode is
4735 much more powerful than the old c-mode.  If you're having trouble
4736 getting your old offsets to work, try using @code{c-set-offset} instead.
4737 You might also consider using the package @code{cc-compat}.
4738
4739 But, if you still insist, add the following lines to your @file{init.el}/@file{.emacs}:
4740
4741 @lisp
4742 (fmakunbound 'c-mode)
4743 (makunbound 'c-mode-map)
4744 (fmakunbound 'c++-mode)
4745 (makunbound 'c++-mode-map)
4746 (makunbound 'c-style-alist)
4747 (load-library "old-c-mode")
4748 (load-library "old-c++-mode")
4749 @end lisp
4750
4751 This must be done before any other reference is made to either c-mode or
4752 c++-mode.
4753
4754 @node Q5.0.3, Q5.0.4, Q5.0.2, Miscellaneous
4755 @unnumberedsubsec Q5.0.3: How do I get @samp{More} Syntax Highlighting on by default?
4756
4757 Use the following code in your @file{init.el}/@file{.emacs}:
4758
4759 @lisp
4760 (setq-default font-lock-maximum-decoration t)
4761 @end lisp
4762
4763 @c In versions of XEmacs prior to 19.14, you had to use a kludgy solution
4764 @c like this:
4765 @c 
4766 @c @lisp
4767 @c (setq c-font-lock-keywords c-font-lock-keywords-2
4768 @c       c++-font-lock-keywords c++-font-lock-keywords-2
4769 @c       lisp-font-lock-keywords lisp-font-lock-keywords-2)
4770 @c @end lisp
4771 @c 
4772 @c It will work for C, C++ and Lisp.
4773 @c 
4774 See also @code{Syntax Highlighting} from the @code{Options} menu.
4775 Remember to save options.
4776
4777 @node Q5.0.4, Q5.0.5, Q5.0.3, Miscellaneous
4778 @unnumberedsubsec Q5.0.4: How can I enable auto-indent and/or Filladapt?
4779
4780 Put the following line in your @file{init.el}/@file{.emacs}:
4781
4782 @lisp
4783 (setq indent-line-function 'indent-relative-maybe)
4784 @end lisp
4785
4786 If you want to get fancy, try the @code{filladapt} package available
4787 standard with XEmacs.  Put this into your @file{init.el}/@file{.emacs}:
4788
4789 @lisp
4790 (require 'filladapt)
4791 (setq-default filladapt-mode t)
4792 (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
4793 @end lisp
4794
4795 This will enable Filladapt for all modes except C mode, where it doesn't
4796 work well.  To turn Filladapt on only in particular major modes, remove
4797 the @code{(setq-default ...)} line and use
4798 @code{turn-on-filladapt-mode}, like this:
4799
4800 @lisp
4801 (add-hook 'text-mode-hook 'turn-on-filladapt-mode)
4802 @end lisp
4803
4804 You can customize filling and adaptive filling with Customize.
4805 Select from the @code{Options} menu
4806 @code{Advanced (Customize)->Emacs->Editing->Fill->Fill...}
4807 or type @kbd{M-x customize @key{RET} fill @key{RET}}.
4808
4809 Note that well-behaving text-lookalike modes will run
4810 @code{text-mode-hook} by default (e.g. that's what Message does).  For
4811 the nasty ones, you'll have to provide the @code{add-hook}s yourself.
4812
4813 Please note that the @code{fa-extras} package is no longer useful.
4814
4815 @node Q5.0.5, Q5.0.6, Q5.0.4, Miscellaneous
4816 @unnumberedsubsec Q5.0.5: How can I get XEmacs to come up in text/auto-fill mode by default?
4817
4818 Try the following lisp in your @file{init.el}/@file{.emacs}:
4819
4820 @lisp
4821 (setq default-major-mode 'text-mode)
4822 (setq text-mode-hook 'turn-on-auto-fill)
4823 @end lisp
4824
4825 @strong{WARNING}: note that changing the value of
4826 @code{default-major-mode} from @code{fundamental-mode} can break a large
4827 amount of built-in code that expects newly created buffers to be in
4828 @code{fundamental-mode}.  (Changing from @code{fundamental-mode} to
4829 @code{text-mode} might not wreak too much havoc, but changing to
4830 something more exotic like a lisp-mode would break many Emacs packages).
4831
4832 Note that Emacs by default starts up in buffer @code{*scratch*} in
4833 @code{initial-major-mode}, which defaults to
4834 @code{lisp-interaction-mode}. Thus adding the following form to your
4835 Emacs init file will cause the initial @code{*scratch*} buffer to be put
4836 into auto-fill'ed @code{text-mode}:
4837
4838 @lisp
4839 (setq initial-major-mode
4840       (lambda ()
4841         (text-mode)
4842         (turn-on-auto-fill)))
4843 @end lisp
4844
4845 Note that after your init file is loaded, if
4846 @code{inhibit-startup-message} is @code{nil} (the default) and the
4847 startup buffer is @code{*scratch*} then the startup message will be
4848 inserted into @code{*scratch*}; it will be removed after a timeout by
4849 erasing the entire @code{*scratch*} buffer.  Keep in mind this default
4850 usage of @code{*scratch*} if you desire any prior manipulation of
4851 @code{*scratch*} from within your Emacs init file. In particular,
4852 anything you insert into @code{*scratch*} from your init file will be
4853 later erased. Also, if you change the mode of the @code{*scratch*}
4854 buffer, be sure that this will not interfere with possible later
4855 insertion of the startup message (e.g. if you put @code{*scratch*} into
4856 a nonstandard mode that has automatic font lock rules, then the startup
4857 message might get fontified in a strange foreign manner, e.g. as code in
4858 some programming language).
4859
4860 @node Q5.0.6, Q5.0.7, Q5.0.5, Miscellaneous
4861 @unnumberedsubsec Q5.0.6: How do I start up a second shell buffer?
4862
4863 In the @code{*shell*} buffer:
4864
4865 @lisp
4866 M-x rename-buffer @key{RET} *shell-1* @key{RET}
4867 M-x shell RET
4868 @end lisp
4869
4870 This will then start a second shell.  The key is that no buffer named
4871 @samp{*shell*} can exist.  It might be preferable to use @kbd{M-x
4872 rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x
4873 rename-buffer}.
4874
4875 Alternately, you can set the variable @code{shell-multiple-shells}.
4876 If the value of this variable is non-nil, each time shell mode is invoked,
4877 a new shell is made
4878
4879 @node Q5.0.7, Q5.0.8, Q5.0.6, Miscellaneous
4880 @unnumberedsubsec Q5.0.7: Telnet from shell filters too much
4881
4882 I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke
4883 and use a telnet session within it.  Everything works fine except that
4884 now all @samp{^M}'s are filtered out by Emacs.  Fixes?
4885
4886 Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather
4887 than doing rsh or telnet within the local shell buffer.  Starting with
4888 XEmacs-20.3 you can also use @kbd{M-x ssh} to open secure remote session
4889 if you have @code{ssh} installed.
4890
4891 @node Q5.0.8, Q5.0.9, Q5.0.7, Miscellaneous
4892 @unnumberedsubsec Q5.0.8: Why does edt emulation not work?
4893
4894 We don't know, but you can use tpu-edt emulation instead, which works
4895 fine and is a little fancier than the standard edt emulation.  To do
4896 this, add the following line to your @file{init.el}/@file{.emacs}:
4897
4898 @lisp
4899 (tpu-edt)
4900 @end lisp
4901
4902 If you don't want it to replace @kbd{C-h} with an edt-style help menu
4903 add this as well:
4904
4905 @lisp
4906 (global-set-key [(control h)] 'help-for-help)
4907 @end lisp
4908
4909 @node Q5.0.9, Q5.0.10, Q5.0.8, Miscellaneous
4910 @unnumberedsubsec Q5.0.9: How can I emulate VI and use it as my default mode?
4911
4912 Our recommended VI emulator is viper. To make viper-mode the default,
4913 add this to your @file{init.el}/@file{.emacs}:
4914
4915 @lisp
4916 (viper-mode)
4917 @end lisp
4918
4919 @email{kifer@@CS.SunySB.EDU, Michael Kifer} writes:
4920
4921 @quotation
4922 This should be added as close to the top of @file{init.el}/@file{.emacs} as you can get
4923 it, otherwise some minor modes may not get viper-ized.
4924 @end quotation
4925
4926 @node Q5.0.10, Q5.0.11, Q5.0.9, Miscellaneous
4927 @unnumberedsubsec Q5.0.10: [This question intentionally left blank]
4928
4929 Obsolete question, left blank to avoid renumbering
4930
4931 @node Q5.0.11, Q5.0.12, Q5.0.10, Miscellaneous
4932 @unnumberedsubsec Q5.0.11: [This question intentionally left blank]
4933
4934 Obsolete question, left blank to avoid renumbering
4935
4936 @node Q5.0.12, Q5.0.13, Q5.0.11, Miscellaneous
4937 @unnumberedsubsec Q5.0.12: How do I disable gnuserv from opening a new frame?
4938
4939 If you set the @code{gnuserv-frame} variable to the frame that should be
4940 used to display buffers that are pulled up, a new frame will not be
4941 created. For example, you could put
4942
4943 @lisp
4944 (setq gnuserv-frame (selected-frame))
4945 @end lisp
4946
4947 early on in your @file{init.el}/@file{.emacs}, to ensure that the first frame created
4948 is the one used for your gnuserv buffers.
4949
4950 There is an option to set the gnuserv target to the current frame.  See
4951 @code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target}
4952
4953 Starting with XEmacs-20.3 you can also change this with Customize.
4954 Select from the @code{Options} menu
4955 @code{Advanced (Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...}
4956 or type @kbd{M-x customize @key{RET} gnuserv @key{RET}}.
4957
4958
4959 @node Q5.0.13, Q5.0.14, Q5.0.12, Miscellaneous
4960 @unnumberedsubsec Q5.0.13: How do I start gnuserv so that each subsequent XEmacs is a client?
4961
4962 Put the following in your @file{init.el}/@file{.emacs} file to start the server:
4963
4964 @lisp
4965 (gnuserv-start)
4966 @end lisp
4967
4968 Start your first XEmacs as usual.  After that, you can do:
4969
4970 @example
4971 gnuclient randomfilename
4972 @end example
4973
4974 from the command line to get your existing XEmacs process to open a new
4975 frame and visit randomfilename in that window. When you're done editing
4976 randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the
4977 frame.
4978
4979 See also man page of gnuclient.
4980
4981 @node Q5.0.14, Q5.0.15, Q5.0.13, Miscellaneous
4982 @unnumberedsubsec Q5.0.14: Strange things are happening in Shell Mode.
4983
4984 Sometimes (i.e. it's not repeatable, and I can't work out why it
4985 happens) when I'm typing into shell mode, I hit return and only a
4986 portion of the command is given to the shell, and a blank prompt is
4987 returned.  If I hit return again, the rest of the previous command is
4988 given to the shell.
4989
4990 @email{martin@@xemacs.org, Martin Buchholz} writes:
4991
4992 @quotation
4993 There is a known problem with interaction between @code{csh} and the
4994 @code{filec} option and XEmacs.  You should add the following to your
4995 @file{.cshrc}:
4996
4997 @example
4998 if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
4999 @end example
5000 @end quotation
5001
5002 @node Q5.0.15, Q5.0.16, Q5.0.14, Miscellaneous
5003 @unnumberedsubsec Q5.0.15: Where do I get the latest CC Mode?
5004
5005 @email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} writes:
5006
5007 @quotation
5008 This can be had from @uref{http://www.python.org/emacs/}.
5009 @end quotation
5010
5011 @node Q5.0.16, Q5.0.17, Q5.0.15, Miscellaneous
5012 @unnumberedsubsec Q5.0.16: I find auto-show-mode disconcerting.  How do I turn it off?
5013
5014 @code{auto-show-mode} controls whether or not a horizontal scrollbar
5015 magically appears when a line is too long to be displayed.  This is
5016 enabled by default.  To turn it off, put the following in your
5017 @file{init.el}/@file{.emacs}:
5018
5019 @lisp
5020 (setq auto-show-mode nil)
5021 (setq-default auto-show-mode nil)
5022 @end lisp
5023
5024 @node Q5.0.17, Q5.0.18, Q5.0.16, Miscellaneous
5025 @unnumberedsubsec Q5.0.17: How can I get two instances of info?
5026
5027 Before 21.4, you can't.  The @code{info} package does not provide for
5028 multiple info buffers.  In 21.4, this should be fixed. #### how?
5029
5030 @node Q5.0.18, Q5.0.19, Q5.0.17, Miscellaneous
5031 @unnumberedsubsec Q5.0.18: [This question intentionally left blank]
5032
5033 @node Q5.0.19, Q5.0.20, Q5.0.18, Miscellaneous
5034 @unnumberedsubsec Q5.0.19: Is there something better than LaTeX mode?
5035
5036 @email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes:
5037
5038 @quotation
5039 The standard TeX modes leave much to be desired, and are somewhat
5040 leniently maintained.  Serious TeX users use AUC TeX (@pxref{Q4.7.1}).
5041 @end quotation
5042
5043 @node Q5.0.20, Q5.1.1, Q5.0.19, Miscellaneous
5044 @unnumberedsubsec Q5.0.20: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
5045
5046 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
5047 @quotation
5048 Here is one of the solutions, we have this in a script called
5049 @file{etc/editclient.sh}.
5050 @example
5051  #!/bin/sh
5052  if gnuclient -batch -eval t >/dev/null 2>&1
5053  then
5054    exec gnuclient $@{1+"$@@"@}
5055  else
5056    xemacs -unmapped -f gnuserv-start &
5057    until gnuclient -batch -eval t >/dev/null 2>&1
5058    do
5059       sleep 1
5060    done
5061    exec gnuclient $@{1+"$@@"@}
5062  fi
5063 @end example
5064
5065 Note that there is a known problem when running XEmacs and 'gnuclient
5066 -nw' on the same TTY.
5067 @end quotation
5068
5069 @node Q5.1.1, Q5.1.2, Q5.0.20, Miscellaneous
5070 @unnumberedsec 5.1: Emacs Lisp Programming Techniques
5071 @unnumberedsubsec Q5.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
5072
5073 @email{clerik@@naggum.no, Erik Naggum} writes;
5074
5075 @quotation
5076 Emacs has a legacy of keyboards that produced characters with modifier
5077 bits, and therefore map a variety of input systems into this scheme even
5078 today.  XEmacs is instead optimized for X events.  This causes an
5079 incompatibility in the way key sequences are specified, but both Emacs
5080 and XEmacs will accept a key sequence as a vector of lists of modifiers
5081 that ends with a key, e.g., to bind @kbd{M-C-a}, you would say
5082 @code{[(meta control a)]} in both Emacsen.  XEmacs has an abbreviated
5083 form for a single key, just (meta control a).  Emacs has an abbreviated
5084 form for the Control and the Meta modifiers to string-characters (the
5085 ASCII characters), as in @samp{\M-\C-a}.  XEmacs users need to be aware
5086 that the abbreviated form works only for one-character key sequences,
5087 while Emacs users need to be aware that the string-character is rather
5088 limited.  Specifically, the string-character can accommodate only 256
5089 different values, 128 of which have the Meta modifier and 128 of which
5090 have not.  In each of these blocks, only 32 characters have the Control
5091 modifier.  Whereas @code{[(meta control A)]} differs from @code{[(meta
5092 control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A}
5093 do not.  Programmers are advised to use the full common form, both
5094 because it is more readable and less error-prone, and because it is
5095 supported by both Emacsen.
5096 @end quotation
5097
5098 Another (even safer) way to be sure of the key-sequences is to use the
5099 @code{read-kbd-macro} function, which takes a string like @samp{C-c
5100 <up>}, and converts it to the internal key representation of the Emacs
5101 you use.  The function is available both on XEmacs and GNU Emacs.
5102
5103 @node Q5.1.2, Q5.1.3, Q5.1.1, Miscellaneous
5104 @unnumberedsubsec Q5.1.2: Can I generate "fake" keyboard events?
5105
5106 I wonder if there is an interactive function that can generate
5107 @dfn{fake} keyboard events.  This way, I could simply map them inside
5108 XEmacs.
5109
5110 This seems to work:
5111
5112 @lisp
5113 (defun cg--generate-char-event (ch)
5114   "Generate an event, as if ch has been typed"
5115   (dispatch-event (character-to-event ch)))
5116
5117 ;;  Backspace and Delete stuff
5118 (global-set-key [backspace]
5119   (lambda () (interactive) (cg--generate-char-event 127)))
5120 (global-set-key [unknown_keysym_0x4]
5121   (lambda () (interactive) (cg--generate-char-event 4)))
5122 @end lisp
5123
5124 @node Q5.1.3, Q5.1.4, Q5.1.2, Miscellaneous
5125 @unnumberedsubsec Q5.1.3: Could you explain @code{read-kbd-macro} in more detail?
5126
5127 The @code{read-kbd-macro} function returns the internal Emacs
5128 representation of a human-readable string (which is its argument).
5129 Thus:
5130
5131 @lisp
5132 (read-kbd-macro "C-c C-a")
5133 @result{} [(control ?c) (control ?a)]
5134
5135 (read-kbd-macro "C-c C-. <up>")
5136 @result{} [(control ?c) (control ?.) up]
5137 @end lisp
5138
5139 In GNU Emacs the same forms will be evaluated to what GNU Emacs
5140 understands internally---the sequences @code{"\C-x\C-c"} and @code{[3
5141 67108910 up]}, respectively.
5142
5143 The exact @dfn{human-readable} syntax is defined in the docstring of
5144 @code{edmacro-mode}.  I'll repeat it here, for completeness.
5145
5146 @quotation
5147 Format of keyboard macros during editing:
5148
5149 Text is divided into @dfn{words} separated by whitespace.  Except for
5150 the words described below, the characters of each word go directly as
5151 characters of the macro.  The whitespace that separates words is
5152 ignored.  Whitespace in the macro must be written explicitly, as in
5153 @kbd{foo @key{SPC} bar @key{RET}}.
5154
5155 @itemize @bullet
5156 @item
5157 The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD},
5158 @kbd{ESC}, and @kbd{NUL} represent special control characters.  The
5159 words must be written in uppercase.
5160
5161 @item
5162 A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or
5163 @code{<f1>}, represents a function key.  (Note that in the standard
5164 configuration, the function key @code{<return>} and the control key
5165 @key{RET} are synonymous.)  You can use angle brackets on the words
5166 @key{RET}, @key{SPC}, etc., but they are not required there.
5167
5168 @item
5169 Keys can be written by their @sc{ascii} code, using a backslash followed
5170 by up to six octal digits.  This is the only way to represent keys with
5171 codes above \377.
5172
5173 @item
5174 One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-}
5175 (shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may
5176 precede a character or key notation.  For function keys, the prefixes
5177 may go inside or outside of the brackets: @code{C-<down>} @equiv{}
5178 @code{<C-down>}.  The prefixes may be written in any order: @kbd{M-C-x}
5179 @equiv{} @kbd{C-M-x}.
5180
5181 Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except
5182 that the Meta prefix is allowed on a sequence of digits and optional
5183 minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}.
5184
5185 @item
5186 The @code{^} notation for control characters also works: @kbd{^M}
5187 @equiv{} @kbd{C-m}.
5188
5189 @item
5190 Double angle brackets enclose command names: @code{<<next-line>>} is
5191 shorthand for @kbd{M-x next-line @key{RET}}.
5192
5193 @item
5194 Finally, @code{REM} or @code{;;} causes the rest of the line to be
5195 ignored as a comment.
5196 @end itemize
5197
5198 Any word may be prefixed by a multiplier in the form of a decimal number
5199 and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>},
5200 and @code{10*foo} @equiv{}
5201 @iftex
5202 @*
5203 @end iftex
5204 @code{foofoofoofoofoofoofoofoofoofoo}.
5205
5206 Multiple text keys can normally be strung together to form a word, but
5207 you may need to add whitespace if the word would look like one of the
5208 above notations: @code{; ; ;} is a keyboard macro with three semicolons,
5209 but @code{;;;} is a comment.  Likewise, @code{\ 1 2 3} is four keys but
5210 @code{\123} is a single key written in octal, and @code{< right >} is
5211 seven keys but @code{<right>} is a single function key.  When in doubt,
5212 use whitespace.
5213 @end quotation
5214
5215 @node Q5.1.4, Q5.1.5, Q5.1.3, Miscellaneous
5216 @unnumberedsubsec Q5.1.4: What is the performance hit of @code{let}?
5217
5218 In most cases, not noticeable.  Besides, there's no avoiding
5219 @code{let}---you have to bind your local variables, after all.  Some
5220 pose a question whether to nest @code{let}s, or use one @code{let} per
5221 function.  I think because of clarity and maintenance (and possible
5222 future implementation), @code{let}-s should be used (nested) in a way to
5223 provide the clearest code.
5224
5225 @node Q5.1.5, Q5.1.6, Q5.1.4, Miscellaneous
5226 @unnumberedsubsec Q5.1.5: What is the recommended use of @code{setq}?
5227
5228 @itemize @bullet
5229 @item Global variables
5230
5231 You will typically @code{defvar} your global variable to a default
5232 value, and use @code{setq} to set it later.
5233
5234 It is never a good practice to @code{setq} user variables (like
5235 @code{case-fold-search}, etc.), as it ignores the user's choice
5236 unconditionally.  Note that @code{defvar} doesn't change the value of a
5237 variable if it was bound previously.  If you wish to change a
5238 user-variable temporarily, use @code{let}:
5239
5240 @lisp
5241 (let ((case-fold-search nil))
5242   ...                                   ; code with searches that must be case-sensitive
5243   ...)
5244 @end lisp
5245
5246 You will notice the user-variables by their docstrings beginning with an
5247 asterisk (a convention).
5248
5249 @item Local variables
5250
5251 Bind them with @code{let}, which will unbind them (or restore their
5252 previous value, if they were bound) after exiting from the @code{let}
5253 form.  Change the value of local variables with @code{setq} or whatever
5254 you like (e.g. @code{incf}, @code{setf} and such).  The @code{let} form
5255 can even return one of its local variables.
5256
5257 Typical usage:
5258
5259 @lisp
5260 ;; iterate through the elements of the list returned by
5261 ;; `hairy-function-that-returns-list'
5262 (let ((l (hairy-function-that-returns-list)))
5263   (while l
5264     ... do something with (car l) ...
5265     (setq l (cdr l))))
5266 @end lisp
5267
5268 Another typical usage includes building a value simply to work with it.
5269
5270 @lisp
5271 ;; Build the mode keymap out of the key-translation-alist
5272 (let ((inbox (file-truename (expand-file-name box)))
5273       (i 0))
5274   ... code dealing with inbox ...
5275   inbox)
5276 @end lisp
5277
5278 This piece of code uses the local variable @code{inbox}, which becomes
5279 unbound (or regains old value) after exiting the form.  The form also
5280 returns the value of @code{inbox}, which can be reused, for instance:
5281
5282 @lisp
5283 (setq foo-processed-inbox
5284       (let .....))
5285 @end lisp
5286 @end itemize
5287
5288 @node Q5.1.6, Q5.1.7, Q5.1.5, Miscellaneous
5289 @unnumberedsubsec Q5.1.6: What is the typical misuse of @code{setq} ?
5290
5291 A typical misuse is probably @code{setq}ing a variable that was meant to
5292 be local.  Such a variable will remain bound forever, never to be
5293 garbage-collected.  For example, the code doing:
5294
5295 @lisp
5296 (defun my-function (whatever)
5297   (setq a nil)
5298   ... build a large list ...
5299   ... and exit ...)
5300 @end lisp
5301
5302 does a bad thing, as @code{a} will keep consuming memory, never to be
5303 unbound.  The correct thing is to do it like this:
5304
5305 @lisp
5306 (defun my-function (whatever)
5307   (let (a)                              ; default initialization is to nil
5308     ... build a large list ...
5309     ... and exit, unbinding `a' in the process  ...)
5310 @end lisp
5311
5312 Not only is this prettier syntactically, but it makes it possible for
5313 Emacs to garbage-collect the objects which @code{a} used to reference.
5314
5315 Note that even global variables should not be @code{setq}ed without
5316 @code{defvar}ing them first, because the byte-compiler issues warnings.
5317 The reason for the warning is the following:
5318
5319 @lisp
5320 (defun flurgoze nil)                    ; ok, global internal variable
5321 ...
5322
5323 (setq flurghoze t)                      ; ops!  a typo, but semantically correct.
5324                                         ; however, the byte-compiler warns.
5325
5326 While compiling toplevel forms:
5327 ** assignment to free variable flurghoze
5328 @end lisp
5329
5330 @node Q5.1.7, Q5.1.8, Q5.1.6, Miscellaneous
5331 @unnumberedsubsec Q5.1.7: I like the @code{do} form of cl, does it slow things down?
5332
5333 It shouldn't.  Here is what Dave Gillespie has to say about cl.el
5334 performance:
5335
5336 @quotation
5337 Many of the advanced features of this package, such as @code{defun*},
5338 @code{loop}, and @code{setf}, are implemented as Lisp macros.  In
5339 byte-compiled code, these complex notations will be expanded into
5340 equivalent Lisp code which is simple and efficient.  For example, the
5341 forms
5342
5343 @lisp
5344 (incf i n)
5345 (push x (car p))
5346 @end lisp
5347
5348 are expanded at compile-time to the Lisp forms
5349
5350 @lisp
5351 (setq i (+ i n))
5352 (setcar p (cons x (car p)))
5353 @end lisp
5354
5355 which are the most efficient ways of doing these respective operations
5356 in Lisp.  Thus, there is no performance penalty for using the more
5357 readable @code{incf} and @code{push} forms in your compiled code.
5358
5359 @emph{Interpreted} code, on the other hand, must expand these macros
5360 every time they are executed.  For this reason it is strongly
5361 recommended that code making heavy use of macros be compiled.  (The
5362 features labelled @dfn{Special Form} instead of @dfn{Function} in this
5363 manual are macros.)  A loop using @code{incf} a hundred times will
5364 execute considerably faster if compiled, and will also garbage-collect
5365 less because the macro expansion will not have to be generated, used,
5366 and thrown away a hundred times.
5367
5368 You can find out how a macro expands by using the @code{cl-prettyexpand}
5369 function.
5370 @end quotation
5371
5372 @node Q5.1.8, Q5.1.9, Q5.1.7, Miscellaneous
5373 @unnumberedsubsec Q5.1.8: I like recursion, does it slow things down?
5374
5375 Yes.  Emacs byte-compiler cannot do much to optimize recursion.  But
5376 think well whether this is a real concern in Emacs.  Much of the Emacs
5377 slowness comes from internal mechanisms such as redisplay, or from the
5378 fact that it is an interpreter.
5379
5380 Please try not to make your code much uglier to gain a very small speed
5381 gain.  It's not usually worth it.
5382
5383 @node Q5.1.9, Q5.1.10, Q5.1.8, Miscellaneous
5384 @unnumberedsubsec Q5.1.9: How do I put a glyph as annotation in a buffer?
5385
5386 Here is a solution that will insert the glyph annotation at the
5387 beginning of buffer:
5388
5389 @lisp
5390 (make-annotation (make-glyph '([FORMAT :file FILE]
5391                                [string :data "fallback-text"]))
5392                  (point-min)
5393                  'text
5394                  (current-buffer))
5395 @end lisp
5396
5397 Replace @samp{FORMAT} with an unquoted symbol representing the format of
5398 the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.)
5399 Instead of @samp{FILE}, use the image file name
5400 (e.g.
5401 @iftex
5402 @*
5403 @end iftex
5404 @file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}).
5405
5406 You can turn this to a function (that optionally prompts you for a file
5407 name), and inserts the glyph at @code{(point)} instead of
5408 @code{(point-min)}.
5409
5410 @node Q5.1.10, Q5.1.11, Q5.1.9, Miscellaneous
5411 @unnumberedsubsec Q5.1.10: @code{map-extents} won't traverse all of my extents!
5412
5413 I tried to use @code{map-extents} to do an operation on all the extents
5414 in a region.  However, it seems to quit after processing a random number
5415 of extents.  Is it buggy?
5416
5417 No.  The documentation of @code{map-extents} states that it will iterate
5418 across the extents as long as @var{function} returns @code{nil}.
5419 Unexperienced programmers often forget to return @code{nil} explicitly,
5420 which results in buggy code.  For instance, the following code is
5421 supposed to delete all the extents in a buffer, and issue as many
5422 @samp{fubar!} messages.
5423
5424 @lisp
5425 (map-extents (lambda (ext ignore)
5426                (delete-extent ext)
5427                (message "fubar!")))
5428 @end lisp
5429
5430 Instead, it will delete only the first extent, and stop right there --
5431 because @code{message} will return a non-nil value.  The correct code
5432 is:
5433
5434 @lisp
5435 (map-extents (lambda (ext ignore)
5436                (delete-extent ext)
5437                (message "fubar!")
5438                nil))
5439 @end lisp
5440
5441 @node Q5.1.11, Q5.2.1, Q5.1.10, Miscellaneous
5442 @unnumberedsubsec Q5.1.11: My elisp program is horribly slow.  Is there
5443 an easy way to find out where it spends time?
5444 @c New
5445
5446 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
5447 @quotation
5448 Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence},
5449 press a key (say @key{RET} in the Gnus Group buffer), and get the
5450 results using @kbd{M-x profile-results}.  It should give you an idea of
5451 where the time is being spent.
5452 @end quotation
5453
5454 @node Q5.2.1, Q5.2.2, Q5.1.11, Miscellaneous
5455 @unnumberedsubsec Q5.2.1: How do I turn off the sound?
5456
5457 Add the following line to your @file{init.el}/@file{.emacs}:
5458
5459 @lisp
5460 (setq bell-volume 0)
5461 (setq sound-alist nil)
5462 @end lisp
5463
5464 That will make your XEmacs totally silent---even the default ding sound
5465 (TTY beep on TTY-s) will be gone.
5466
5467 Starting with XEmacs 20.2 you can also change these with Customize.
5468 Select from the @code{Options} menu
5469 @code{Advanced (Customize)->Emacs->Environment->Sound->Sound...} or type
5470 @kbd{M-x customize @key{RET} sound @key{RET}}.
5471
5472
5473 @node Q5.2.2, Q5.2.3, Q5.2.1, Miscellaneous
5474 @unnumberedsubsec Q5.2.2: How do I get funky sounds instead of a boring beep?
5475
5476 Make sure your XEmacs was compiled with sound support, and then put this
5477 in your @file{init.el}/@file{.emacs}:
5478
5479 @lisp
5480 (load-default-sounds)
5481 @end lisp
5482
5483 @c The sound support in XEmacs 19.14 was greatly improved over previous
5484 @c versions.
5485 @c 
5486 @node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous
5487 @unnumberedsubsec Q5.2.3: What's NAS, how do I get it?
5488
5489 @xref{Q2.0.3}, for an explanation of the @dfn{Network Audio System}.
5490
5491 @node Q5.2.4, Q5.3.1, Q5.2.3, Miscellaneous
5492 @unnumberedsubsec Q5.2.4: Sunsite sounds don't play.
5493
5494 I'm having some trouble with sounds I've downloaded from sunsite.  They
5495 play when I run them through @code{showaudio} or cat them directly to
5496 @file{/dev/audio}, but XEmacs refuses to play them.
5497
5498 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
5499
5500 @quotation
5501 [Many of] These files have an (erroneous) 24byte header that tells about
5502 the format that they have been recorded in. If you cat them to
5503 @file{/dev/audio}, the header will be ignored and the default behavior
5504 for /dev/audio will be used. This happens to be 8kHz uLaw. It is
5505 probably possible to fix the header by piping through @code{sox} and
5506 passing explicit parameters for specifying the sampling format; you then
5507 need to perform a 'null' conversion from SunAudio to SunAudio.
5508 @end quotation
5509
5510 @node Q5.3.1, Q5.3.2, Q5.2.4, Miscellaneous
5511 @unnumberedsec 5.3: Miscellaneous
5512 @unnumberedsubsec Q5.3.1: How do you make XEmacs indent CL if-clauses correctly?
5513
5514 I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the
5515 same amount instead of indenting the 3rd clause differently from the
5516 first two.
5517
5518 One way is to add, to @file{init.el}/@file{.emacs}:
5519
5520 @lisp
5521 (put 'if 'lisp-indent-function nil)
5522 @end lisp
5523
5524 However, note that the package @code{cl-indent} that comes with
5525 XEmacs sets up this kind of indentation by default.  @code{cl-indent}
5526 also knows about many other CL-specific forms.  To use @code{cl-indent},
5527 one can do this:
5528
5529 @lisp
5530 (load "cl-indent")
5531 (setq lisp-indent-function (function common-lisp-indent-function))
5532 @end lisp
5533
5534 One can also customize @file{cl-indent.el} so it mimics the default
5535 @code{if} indentation @code{then} indented more than the @code{else}.
5536 Here's how:
5537
5538 @lisp
5539 (put 'if 'common-lisp-indent-function '(nil nil &body))
5540 @end lisp
5541
5542 Also, a new version (1.2) of @file{cl-indent.el} was posted to
5543 comp.emacs.xemacs on 12/9/94.  This version includes more documentation
5544 than previous versions.  This may prove useful if you need to customize
5545 any indent-functions.
5546
5547 @node Q5.3.2, Q5.3.3, Q5.3.1, Miscellaneous
5548 @unnumberedsubsec Q5.3.2: [This question intentionally left blank]
5549
5550 Obsolete question, left blank to avoid renumbering.
5551
5552 @node Q5.3.3, Q5.3.4, Q5.3.2, Miscellaneous
5553 @unnumberedsubsec Q5.3.3: How can I print WYSIWYG a font-locked buffer?
5554
5555 Font-lock looks nice.  How can I print (WYSIWYG) the highlighted
5556 document?
5557
5558 The package @code{ps-print}, which is now included with XEmacs, provides
5559 the ability to do this.  The source code contains complete instructions
5560 on its use, in @file{<xemacs_src_root>/lisp/packages/ps-print.el}.
5561
5562 @node Q5.3.4, Q5.3.5, Q5.3.3, Miscellaneous
5563 @unnumberedsubsec Q5.3.4: Getting @kbd{M-x lpr} to work with postscript printer.
5564
5565 My printer is a Postscript printer and @code{lpr} only works for
5566 Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x
5567 lpr-buffer} to work?
5568
5569 Put something like this in your @file{init.el}/@file{.emacs}:
5570
5571 @lisp
5572 (setq lpr-command "a2ps")
5573 (setq lpr-switches '("-p" "-1"))
5574 @end lisp
5575
5576 If you don't use a2ps to convert ASCII to postscript (why not, it's
5577 free?), replace with the command you do use.  Note also that some
5578 versions of a2ps require a @samp{-Pprinter} to ensure spooling.
5579
5580 @node Q5.3.5, Q5.3.6, Q5.3.4, Miscellaneous
5581 @unnumberedsubsec Q5.3.5: How do I specify the paths that XEmacs uses for finding files?
5582
5583 You can specify what paths to use by using a number of different flags
5584 when running configure.  See the section MAKE VARIABLES in the top-level
5585 file INSTALL in the XEmacs distribution for a listing of those flags.
5586
5587 Most of the time, however, the simplest fix is: @strong{do not} specify
5588 paths as you might for GNU Emacs.  XEmacs can generally determine the
5589 necessary paths dynamically at run time.  The only path that generally
5590 needs to be specified is the root directory to install into.  That can
5591 be specified by passing the @code{--prefix} flag to configure.  For a
5592 description of the XEmacs install tree, please consult the @file{NEWS}
5593 file.
5594
5595 @node Q5.3.6, Q5.3.7, Q5.3.5, Miscellaneous
5596 @unnumberedsubsec Q5.3.6: [This question intentionally left blank]
5597
5598 Obsolete question, left blank to avoid renumbering.
5599
5600 @node Q5.3.7, Q5.3.8, Q5.3.6, Miscellaneous
5601 @unnumberedsubsec Q5.3.7: Can I have the end of the buffer delimited in some way?
5602
5603 Say, with: @samp{[END]}?
5604
5605 Try this:
5606
5607 @lisp
5608 (let ((ext (make-extent (point-min) (point-max))))
5609   (set-extent-property ext 'start-closed t)
5610   (set-extent-property ext 'end-closed t)
5611   (set-extent-property ext 'detachable nil)
5612   (set-extent-end-glyph ext (make-glyph [string :data "[END]"])))
5613 @end lisp
5614
5615 Since this is XEmacs, you can specify an icon to be shown on
5616 window-system devices.  To do so, change the @code{make-glyph} call to
5617 something like this:
5618
5619 @lisp
5620 (make-glyph '([xpm :file "~/something.xpm"]
5621               [string :data "[END]"]))
5622 @end lisp
5623
5624 You can inline the @sc{xpm} definition yourself by specifying
5625 @code{:data} instead of @code{:file}.  Here is such a full-featured
5626 version that works on both X and TTY devices:
5627
5628 @lisp
5629 (let ((ext (make-extent (point-min) (point-max))))
5630   (set-extent-property ext 'start-closed t)
5631   (set-extent-property ext 'end-closed t)
5632   (set-extent-property ext 'detachable nil)
5633   (set-extent-end-glyph ext (make-glyph '([xpm :data "\
5634 /* XPM */
5635 static char* eye = @{
5636 \"20 11 7 2\",
5637 \"__ c None\"
5638 \"_` c #7f7f7f\",
5639 \"_a c #fefefe\",
5640 \"_b c #7f0000\",
5641 \"_c c #fefe00\",
5642 \"_d c #fe0000\",
5643 \"_e c #bfbfbf\",
5644 \"___________`_`_`___b_b_b_b_________`____\",
5645 \"_________`_`_`___b_c_c_c_b_b____________\",
5646 \"_____`_`_`_e___b_b_c_c_c___b___b_______`\",
5647 \"___`_`_e_a___b_b_d___b___b___b___b______\",
5648 \"_`_`_e_a_e___b_b_d_b___b___b___b___b____\",
5649 \"_`_`_a_e_a___b_b_d___b___b___b___b___b__\",
5650 \"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\",
5651 \"___`_`_e_a___b_b_b_d_c___b___b___d_b____\",
5652 \"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\",
5653 \"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\",
5654 \"___`_____`_`_`_`___b_b_b_b_b_b__________\",
5655 @} ;"]
5656                                           [string :data "[END]"]))))
5657 @end lisp
5658
5659 Note that you might want to make this a function, and put it to a hook.
5660 We leave that as an exercise for the reader.
5661
5662 @node Q5.3.8, Q5.3.9, Q5.3.7, Miscellaneous
5663 @unnumberedsubsec Q5.3.8: How do I insert today's date into a buffer?
5664
5665 Like this:
5666
5667 @lisp
5668 (insert (current-time-string))
5669 @end lisp
5670
5671 @node Q5.3.9, Q5.3.10, Q5.3.8, Miscellaneous
5672 @unnumberedsubsec Q5.3.9: Are only certain syntactic character classes available for abbrevs?
5673
5674 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
5675
5676 @quotation
5677 Yes, abbrevs only expands word-syntax strings. While XEmacs does not
5678 prevent you from defining (e.g. with @kbd{C-x a g} or @kbd{C-x a l})
5679 abbrevs that contain special characters, it will refuse to expand
5680 them. So you need to ensure, that the abbreviation contains letters and
5681 digits only. This means that @samp{xd}, @samp{d5}, and @samp{5d} are
5682 valid abbrevs, but @samp{&d}, and @samp{x d} are not.
5683
5684 If this sounds confusing to you, (re-)read the online documentation for
5685 abbrevs (@kbd{C-h i m XEmacs @key{RET} m Abbrevs @key{RET}}), and then come back and
5686 read this question/answer again.
5687 @end quotation
5688
5689 Starting with XEmacs 20.3 this restriction has been lifted.
5690
5691 @node Q5.3.10, Q5.3.11, Q5.3.9, Miscellaneous
5692 @unnumberedsubsec Q5.3.10: How can I get those oh-so-neat X-Face lines?
5693
5694 Firstly there is an ftp site which describes X-faces and has the
5695 associated tools mentioned below, at
5696 @uref{ftp://ftp.cs.indiana.edu:/pub/faces/}.
5697
5698 Then the steps are
5699
5700 @enumerate
5701 @item
5702 Create 48x48x1 bitmap with your favorite tool
5703
5704 @item
5705 Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc.,
5706 and then compile the face.
5707
5708 @item
5709 @example
5710 cat file.xbm | xbm2ikon |compface > file.face
5711 @end example
5712
5713 @item
5714 Then be sure to quote things that are necessary for emacs strings:
5715
5716 @example
5717 cat ./file.face | sed 's/\\/\\\\/g'
5718 @iftex
5719 \ @*
5720 @end iftex
5721 | sed 's/\"/\\\"/g' > ./file.face.quoted
5722 @end example
5723
5724 @item
5725 Then set up emacs to include the file as a mail header - there were a
5726 couple of suggestions here---either something like:
5727
5728 @lisp
5729 (setq  mail-default-headers
5730        "X-Face:  @email{Ugly looking text string here}")
5731 @end lisp
5732
5733 Or, alternatively, as:
5734
5735 @lisp
5736 (defun mail-insert-x-face ()
5737   (save-excursion
5738     (goto-char (point-min))
5739     (search-forward mail-header-separator)
5740     (beginning-of-line)
5741     (insert "X-Face:")
5742     (insert-file-contents "~/.face")))
5743
5744 (add-hook 'mail-setup-hook 'mail-insert-x-face)
5745 @end lisp
5746 @end enumerate
5747
5748 However, 2 things might be wrong:
5749
5750 Some versions of pbmtoicon produces some header lines that is not
5751 expected by the version of compface that I grabbed. So I found I had to
5752 include a @code{tail +3} in the pipeline like this:
5753
5754 @example
5755 cat file.xbm | xbm2ikon | tail +3 |compface > file.face
5756 @end example
5757
5758 Some people have also found that if one uses the @code{(insert-file)}
5759 method, one should NOT quote the face string using the sed script .
5760
5761 It might also be helpful to use @email{stig@@hackvan.com, Stig's} script
5762 (included in the compface distribution at XEmacs.org) to do the
5763 conversion.
5764 @comment For convenience xbm2xface is available for anonymous FTP at
5765 @comment @uref{ftp://ftp.miranova.com/pub/xemacs/xbm2xface.pl}.
5766
5767 Contributors for this item:
5768
5769 Paul Emsley,
5770 Ricardo Marek,
5771 Amir J. Katz,
5772 Glen McCort,
5773 Heinz Uphoff,
5774 Peter Arius,
5775 Paul Harrison, and
5776 Vegard Vesterheim
5777
5778 @node Q5.3.11, Q5.3.12, Q5.3.10, Miscellaneous
5779 @unnumberedsubsec Q5.3.11: How do I add new Info directories?
5780
5781 You use something like:
5782
5783 @lisp
5784 (setq Info-directory-list (cons
5785                            (expand-file-name "~/info")
5786                            Info-default-directory-list))
5787 @end lisp
5788
5789 @email{davidm@@prism.kla.com, David Masterson} writes:
5790
5791 @quotation
5792 Emacs Info and XEmacs Info do many things differently.  If you're trying to
5793 support a number of versions of Emacs, here are some notes to remember:
5794
5795 @enumerate
5796 @item
5797 Emacs Info scans @code{Info-directory-list} from right-to-left while
5798 XEmacs Info reads it from left-to-right, so append to the @emph{correct}
5799 end of the list.
5800
5801 @item
5802 Use @code{Info-default-directory-list} to initialize
5803 @code{Info-directory-list} @emph{if} it is available at startup, but not
5804 all Emacsen define it.
5805
5806 @item
5807 Emacs Info looks for a standard @file{dir} file in each of the
5808 directories scanned from #1 and magically concatenates them together.
5809
5810 @item
5811 XEmacs Info looks for a @file{localdir} file (which consists of just the
5812 menu entries from a @file{dir} file) in each of the directories scanned
5813 from #1 (except the first), does a simple concatenation of them, and
5814 magically attaches the resulting list to the end of the menu in the
5815 @file{dir} file in the first directory.
5816 @end enumerate
5817
5818 Another alternative is to convert the documentation to HTML with
5819 texi2html and read it from a web browser like Lynx or W3.
5820 @end quotation
5821
5822 @node Q5.3.12,  , Q5.3.11, Miscellaneous
5823 @unnumberedsubsec Q5.3.12: What do I need to change to make printing work?
5824
5825 For regular printing there are two variables that can be customized.
5826
5827 @table @code
5828 @item lpr-command
5829 This should be set to a command that takes standard input and sends
5830 it to a printer.  Something like:
5831
5832 @lisp
5833 (setq lpr-command "lp")
5834 @end lisp
5835
5836 @item lpr-switches
5837 This should be set to a list that contains whatever the print command
5838 requires to do its job.  Something like:
5839
5840 @lisp
5841 (setq lpr-switches '("-depson"))
5842 @end lisp
5843 @end table
5844
5845 For postscript printing there are three analogous variables to
5846 customize.
5847
5848 @table @code
5849 @item ps-lpr-command
5850 This should be set to a command that takes postscript on standard input
5851 and directs it to a postscript printer.
5852
5853 @item ps-lpr-switches
5854 This should be set to a list of switches required for
5855 @code{ps-lpr-command} to do its job.
5856
5857 @item ps-print-color-p
5858 This boolean variable should be set @code{t} if printing will be done in
5859 color, otherwise it should be set to @code{nil}.
5860 @end table
5861
5862 NOTE: It is an undocumented limitation in XEmacs that postscript
5863 printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a
5864 window system environment.  It cannot be used outside of X11.
5865
5866 @node MS Windows, Current Events, Miscellaneous, Top
5867 @unnumbered 6 XEmacs on MS Windows
5868
5869 This is part 6 of the XEmacs Frequently Asked Questions list, written by
5870 Hrvoje Niksic and others.  This section is devoted to the MS Windows
5871 port of XEmacs.
5872
5873 @menu
5874
5875 General Info:
5876 * Q6.0.1::      What is the status of the XEmacs port to Windows?
5877 * Q6.0.2::      What flavors of MS Windows are supported?
5878 * Q6.0.3::      Where are the XEmacs on MS Windows binaries?
5879 * Q6.0.4::      Can I build XEmacs on MS Windows with X support?  Do I need to?
5880 * Q6.0.5::      I'd like to help out.  What do I do?
5881 * Q6.0.6::      What are Cygwin and MinGW, and do I need them to run XEmacs?
5882 * Q6.0.7::      What exactly are all the different ways to build XEmacs under Windows?
5883   
5884 Building XEmacs on MS Windows
5885 * Q6.1.1::      What compiler/libraries do I need to compile XEmacs?
5886 * Q6.1.2::      How do I compile the native port?
5887 * Q6.1.3::      What do I need for Cygwin?
5888 * Q6.1.4::      How do I compile under Cygwin?
5889 * Q6.1.5::      How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
5890 * Q6.1.6::      I decided to run with X.  Where do I get an X server?
5891 * Q6.1.7::      How do I compile with X support?
5892   
5893 Customization and User Interface
5894 * Q6.2.1::      How does the port cope with differences in the Windows user interface?
5895 * Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
5896 * Q6.2.3::      Where do I put my @file{init.el}/@file{.emacs} file?
5897 * Q6.2.4::      How do I get Windows Explorer to associate a file type with XEmacs?
5898 * Q6.2.5::      Is it possible to print from XEmacs?
5899   
5900 Miscellaneous
5901 * Q6.3.1::      Does XEmacs rename all the win32-* symbols to w32-*?
5902 * Q6.3.2::      What are the differences between the various MS Windows emacsen?
5903 * Q6.3.3::      XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
5904 * Q6.3.4::      What is the porting team doing at the moment?
5905
5906 Troubleshooting:
5907 * Q6.4.1::      XEmacs won't start on Windows.
5908 * Q6.4.2::      Why do I get a blank toolbar on Windows 95?
5909 @end menu
5910
5911 @node Q6.0.1, Q6.0.2, MS Windows, MS Windows
5912 @unnumberedsec 6.0: General Info
5913 @unnumberedsubsec Q6.0.1: What is the status of the XEmacs port to Windows?
5914
5915 Is XEmacs really ported to MS Windows?  What is the status of the port?
5916
5917 Beginning with release 21.0, XEmacs has worked under MS Windows.  A
5918 group of dedicated developers actively maintains and improves the
5919 Windows-specific portions of the code.  The mailing list at
5920 @email{xemacs-nt@@xemacs.org} is dedicated to that effort (please use
5921 the -request address to subscribe). (Despite its name, XEmacs actually
5922 works on all versions of Windows.)
5923
5924 As of May 2001, XEmacs on MS Windows is stable and full-featured, and
5925 has been so for a year or more -- in fact, some features, such as
5926 printing, actually work better on Windows than native Unix.  However,
5927 the internationalization (Mule) support does not work -- although this
5928 is being actively worked on.
5929
5930
5931 @node Q6.0.2, Q6.0.3, Q6.0.1, MS Windows
5932 @unnumberedsubsec Q6.0.2: What flavors of MS Windows are supported?  The list name implies NT only.
5933
5934 The list name is misleading, as XEmacs supports and has been compiled on
5935 Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
5936 XP, and all newer versions of Windows.  The MS Windows-specific code is
5937 based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
5938 MS-DOS.
5939
5940 XEmacs also supports the Cygwin and MinGW development and runtime
5941 environments, where it also uses native Windows code for graphical
5942 features.
5943
5944
5945 @node Q6.0.3, Q6.0.4, Q6.0.2, MS Windows
5946 @unnumberedsubsec Q6.0.3: Are binaries available?
5947
5948 Binaries are available at @uref{http://www.xemacs.org/Download/win32/}
5949 for the native and Cygwin MS Windows versions of 21.4, and the native
5950 version of 21.1.
5951
5952 The 21.4 binaries use a modified version of the Cygwin installer.  Run
5953 the provided @file{setup.exe}, and follow the instructions.
5954
5955
5956 @node Q6.0.4, Q6.0.5, Q6.0.3, MS Windows
5957 @unnumberedsubsec Q6.0.4: Can I build XEmacs on MS Windows with X support?  Do I need to?
5958
5959 Yes, you can, but no you do not need to.  In fact, we recommend that you
5960 use a native-GUI version unless you have a specific need for an X
5961 version.
5962
5963 @node Q6.0.5, Q6.0.6, Q6.0.4, MS Windows
5964 @unnumberedsubsec Q6.0.5: I'd like to help out.  What do I do?
5965
5966 It depends on the knowledge and time you possess.  If you are a
5967 programmer, try to build XEmacs and see if you can improve it.
5968 Windows-specific improvements like integration with established
5969 Windows environments are especially sought after.
5970
5971 Otherwise, you can still help by downloading the binaries, using
5972 XEmacs as your everyday editor and reporting bugs you find to the
5973 mailing list.
5974
5975 Another area where we need help is the documentation: We need good
5976 documentation for building XEmacs and for using it.  This FAQ is a
5977 small step in that direction.
5978
5979 @node Q6.0.6, Q6.0.7, Q6.0.5, MS Windows
5980 @unnumberedsubsec Q6.0.6: What are Cygwin and MinGW, and do I need them to run XEmacs?
5981
5982 To answer the second part of the question: No, you, you don't need
5983 Cygwin or MinGW to build or to run XEmacs.  But if you have them and
5984 want to use them, XEmacs supports these environments.
5985
5986 (One important reason to support Cygwin is that it lets the MS Windows
5987 developers test out their code in a Unix environment without actually
5988 having to have a Unix machine around.  For this reason alone, Cygwin
5989 support is likely to remain supported for a long time in XEmacs.  Same
5990 goes for the X support under Cygwin, for the same reasons.  MinGW
5991 support, on the other hand, depends on volunteers to keep it up to date;
5992 but this is generally not hard.)
5993
5994 Cygwin is a set of tools providing Unix-like API on top of Win32.
5995 It makes it easy to port large Unix programs without significant
5996 changes to their source code.  It is a development environment as well
5997 as a runtime environment.
5998
5999 When built with Cygwin, XEmacs supports all display types -- TTY, X &
6000 Win32 GUI, and can be built with support for all three simultaneously.
6001 If you build with Win32 GUI support then the Cygwin version uses the
6002 majority of the Windows-specific code, which is mostly related to
6003 display.  If you want to build with X support you need X libraries (and
6004 an X server to display XEmacs on); see @ref{Q6.1.4}.  TTY and Win32 GUI
6005 require no additional libraries beyond what comes standard with Cygwin.
6006
6007 The advantages of the Cygwin version are that it integrates well with
6008 the Cygwin environment for existing Cygwin users; uses configure so
6009 building with different features is very easy; and actively supports X &
6010 TTY.  Furthermore, the entire Cygwin environment and compiler are free,
6011 whereas Visual C++ costs money.
6012
6013 The disadvantage is that it requires the whole Cygwin environment,
6014 whereas the native port requires only a suitable MS Windows compiler.
6015 Also, it follows the Unix filesystem and process model very closely
6016 (some will undoubtedly view this as an advantage).
6017
6018 See @uref{http://sources.redhat.com/cygwin/} for more information on
6019 Cygwin.
6020
6021 MinGW is a collection of header files and import libraries that allow
6022 one to use GCC under the Cygwin environment to compile and produce
6023 exactly the same native Win32 programs that you can using Visual C++.
6024 Programs compiled with MinGW make use of the standard Microsoft runtime
6025 library @file{MSVCRT.DLL}, present on all Windows systems, and look,
6026 feel, and act like a standard Visual-C-produced application. (The only
6027 difference is the compiler.) This means that, unlike a
6028 standardly-compiled Cygwin application, no extra runtime support
6029 (e.g. Cygwin's @file{cygwin1.dll}) is required.  This, along with the
6030 fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
6031 environment, for those die-hard Unix hackers out there), is the main
6032 advantage of MinGW.  It is also potentially faster than Cygwin because
6033 it has less overhead when calling Windows, but you lose the POSIX
6034 emulation layer, which makes Unix programs harder to port. (But this is
6035 irrelevant for XEmacs since it's already ported to Win32.)
6036
6037 See @uref{http://www.mingw.org/} for more information on MinGW.
6038
6039 @node Q6.0.7, Q6.1.1, Q6.0.6, MS Windows
6040 @unnumberedsubsec Q6.0.7: What exactly are all the different ways to build XEmacs under Windows?
6041
6042 XEmacs can be built in several ways in the MS Windows environment.
6043
6044 The standard way is what we call the "native" port.  It uses the Win32
6045 API and has no connection with X whatsoever -- it does not require X
6046 libraries to build, nor does it require an X server to run.  The native
6047 port is the most reliable version and provides the best graphical
6048 support.  Almost all development is geared towards this version, and
6049 there is little reason not to use it.
6050
6051 The second way to build is the Cygwin port.  It takes advantage of
6052 Cygnus emulation library under Win32.  @xref{Q6.0.6}, for more
6053 information.
6054
6055 A third way is the MinGW port.  It uses the Cygwin environment to build
6056 but does not require it at runtime.  @xref{Q6.0.6}, for more
6057 information.
6058
6059 Finally, you might also be able to build the non-Cygwin, non-MinGW "X"
6060 port.  This was actually the first version of XEmacs that ran under MS
6061 Windows, and although the code is still in XEmacs, it's essentially
6062 orphaned and it's unlikely it will compile without a lot of work.  If
6063 you want an MS Windows versin of XEmacs that supports X, use the Cygwin
6064 version. (The X support there is actively maintained, so that Windows
6065 developers can test the X support in XEmacs.)
6066
6067
6068 @node Q6.1.1, Q6.1.2, Q6.0.7, MS Windows
6069 @unnumberedsec 6.1: Building XEmacs on MS Windows
6070 @unnumberedsubsec Q6.1.1: What compiler/libraries do I need to compile XEmacs?
6071
6072 You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
6073 some beta testers currently trying to compile with VC.NET, aka version
6074 7.0, but we can't yet report complete success.) For the Cygwin and MinGW
6075 versions, you need the Cygwin environment, which comes with GCC, the
6076 compiler used for those versions.  @xref{Q6.0.6}, for more information
6077 on Cygwin and MinGW.
6078
6079 @node Q6.1.2, Q6.1.3, Q6.1.1, MS Windows
6080 @unnumberedsubsec Q6.1.2: How do I compile the native port?
6081
6082 Please read the file @file{nt/README} in the XEmacs distribution, which
6083 contains the full description.
6084
6085 @node Q6.1.3, Q6.1.4, Q6.1.2, MS Windows
6086 @unnumberedsubsec Q6.1.3: What do I need for Cygwin?
6087
6088 You can find the Cygwin tools and compiler at:
6089
6090 @uref{http://sources.redhat.com/cygwin/}
6091
6092 Click on the @samp{Install now!} link, which will download a file
6093 @file{setup.exe}, which you can use to download everything else. (You
6094 will need to pick a mirror site; @samp{mirrors.rcn.net} is probably the
6095 best.) You should go ahead and install everything -- you'll get various
6096 ancillary libraries that XEmacs needs or likes, e.g. XPM, PNG, JPEG,
6097 TIFF, etc.
6098
6099 If you want to compile under X, you will also need the X libraries; see
6100 @ref{Q6.1.6}.
6101
6102
6103 @node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows
6104 @unnumberedsubsec Q6.1.4: How do I compile under Cygwin?
6105
6106 Similar as on Unix; use the usual `configure' and `make' process.
6107 Some problems to watch out for:
6108
6109 @itemize @bullet
6110 @item
6111 make sure HOME is set. This controls where you
6112 @file{init.el}/@file{.emacs} file comes from;
6113
6114 @item
6115 CYGWIN needs to be set to tty for process support to work, e.g. CYGWIN=tty;
6116
6117 @item
6118 picking up some other grep or other UNIX-like tools can kill configure;
6119
6120 @item
6121 static heap too small, adjust @file{src/sheap-adjust.h} to a more positive
6122 number;
6123
6124 @item
6125 (Unconfirmed) The Cygwin version doesn't understand
6126 @file{//machine/path} type paths so you will need to manually mount a
6127 directory of this form under a unix style directory for a build to work
6128 on the directory;
6129
6130 @item
6131 If you're building @strong{WITHOUT} X11, don't forget to change symlinks
6132 @file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to
6133 the non-X versions of these libraries.  By default they point to the X
6134 versions.  So:
6135
6136 @example
6137 /usr/lib/libXpm.a     -> /usr/lib/libXpm-noX.a
6138 /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
6139 @end example
6140
6141
6142 @item
6143 Other problems are listed in the @file{PROBLEMS} file, in the top-level
6144 directory of the XEmacs sources.
6145
6146 @end itemize
6147
6148
6149 @node Q6.1.5, Q6.1.6, Q6.1.4, MS Windows
6150 @unnumberedsubsec Q6.1.5: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
6151
6152 Similar to the method for Unix.  Things to remember:
6153
6154 @itemize @bullet
6155 @item
6156 Specify the target host on the command line for @file{./configure}, e.g.
6157 @samp{./configure i586-pc-mingw32}.
6158
6159 @item
6160 Be sure that your build directory is mounted such that it has the
6161 same path either as a cygwin path (@file{/build/xemacs}) or as a Windows
6162 path (@file{c:\build\xemacs}).
6163
6164 @item
6165 Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng},
6166 @file{compface}, etc.
6167
6168 @item
6169 Specify the target location of the extra libs on the command line
6170 to @file{configure}, e.g.
6171 @samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}.
6172 @end itemize
6173
6174
6175 @node Q6.1.6, Q6.1.7, Q6.1.5, MS Windows
6176 @unnumberedsubsec Q6.1.6: I decided to run with X.  Where do I get an X server?
6177
6178 As of May 2001, we are recommending that you use the port of XFree86 to
6179 Cygwin.  This has recently stabilized, and will undoubtedly soon make
6180 most other MS Windows X servers obsolete.  It is what the Windows
6181 developers use to test the MS Windows X support.
6182
6183 To install, go to @uref{http://xfree86.cygwin.com/}.  There is a
6184 detailed description on that site of exactly how to install it.  This
6185 installation also provides the libraries, include files, and other stuff
6186 needed for development; a large collection of internationalized fonts;
6187 the standard X utilities (xterm, twm, etc.) -- in a word, the works.
6188
6189 NOTE: As of late May 2001, there is a bug in the file
6190 @file{startxwin.bat}, used to start X Windows.  It passes the option
6191 @samp{-engine -4} to the X server, which is bogus -- you need to edit
6192 the file and change it to @samp{-engine 4}.
6193
6194
6195 @node Q6.1.7, Q6.2.1, Q6.1.6, MS Windows
6196 @unnumberedsubsec Q6.1.7: How do I compile with X support?
6197
6198 To compile under Cygwin, all you need to do is install XFree86
6199 (@pxref{Q6.1.6}).  Once installed, @file{configure} should automatically
6200 find the X libraries and compile with X support.
6201
6202 As noted above, the non-Cygwin X support is basically orphaned, and
6203 probably won't work.  But if it want to try, it's described in
6204 @file{nt/README} in some detail.  Basically, you need to get X11
6205 libraries from ftp.x.org, and compile them.  If the precompiled versions
6206 are available somewhere, we don't know of it.
6207
6208
6209 @node Q6.2.1, Q6.2.2, Q6.1.7, MS Windows
6210 @unnumberedsec 6.2: Customization and User Interface
6211 @unnumberedsubsec Q6.2.1: How does the port cope with differences in the Windows user interface?
6212
6213 XEmacs (and Emacs in general) UI is pretty different from what is
6214 expected of a typical MS Windows program.  How does the MS Windows port
6215 cope with it?
6216
6217 As a general rule, we follow native MS Windows conventions as much as
6218 possible.  In cases where there's a clear UI conflict, we currently use
6219 normal Unix XEmacs behavior by default, but make sure the MS Windows
6220 "look and feel" (mark via shift-arrow, self-inserting deletes region,
6221 Alt selects menu items, etc.) is easily configurable (respectively:
6222 using the variable @code{shifted-motion-keys-select-region} in 21.4 and
6223 above [it's in fact the default in these versions], or the
6224 @file{pc-select} package; using the @file{pending-del} package; and
6225 setting the variable @code{menu-accelerator-enabled} to
6226 @code{menu-force} in 21.4 and above).  In fact, if you use the sample
6227 @file{init.el} file as your init file, you will get all these behaviors
6228 automatically turned on.
6229
6230 In future versions, some of these features might be turned on by
6231 default in the MS Windows environment.
6232
6233
6234 @node Q6.2.2, Q6.2.3, Q6.2.1, MS Windows
6235 @unnumberedsubsec Q6.2.2: How do I change fonts in XEmacs on MS Windows?
6236
6237 In 21.4 and above, use the font menu.  In all versions, you can change
6238 font manually. For example:
6239
6240 @display
6241     (set-face-font 'default "Lucida Console:Regular:10")
6242     (set-face-font 'modeline "MS Sans Serif:Regular:10")
6243 @end display
6244
6245
6246 @node Q6.2.3, Q6.2.4, Q6.2.2, MS Windows
6247 @unnumberedsubsec Q6.2.3: Where do I put my @file{init.el}/@file{.emacs} file?
6248
6249 @file{init.el} is the name of the init file starting with 21.4, and is
6250 located in the subdirectory @file{.xemacs/} of your home directory.  In
6251 prior versions, the init file is called @file{.emacs} and is located in
6252 your home directory.  Your home directory under Windows is determined by
6253 the @samp{HOME} environment variable.  If this is not set, it defaults to
6254 @samp{C:\}.
6255
6256 To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
6257 select @samp{Control Panel->System->Advanced->Environment Variables...}
6258 under Windows NT/2000.
6259
6260
6261 @node Q6.2.4, Q6.2.5, Q6.2.3, MS Windows
6262 @unnumberedsubsec Q6.2.4: How do I get Windows Explorer to associate a file type with XEmacs?
6263
6264 @unnumberedsubsubsec Associating a new file type with XEmacs.
6265
6266 In Explorer select @samp{View/Options/File Types}, press @samp{[New
6267 Type...]} and fill in the dialog box, e.g.:
6268
6269 @example
6270         Description of type:    Emacs Lisp source
6271         Associated extension:   el
6272         Content Type (MIME):    text/plain
6273 @end example
6274
6275 then press @samp{[New...]} and fill in the @samp{Action} dialog box as
6276 follows:
6277
6278 @example
6279         Action:
6280         Open
6281
6282         Application used to perform action:
6283         D:\Full\path\for\xemacs.exe "%1"
6284
6285         [x] Use DDE
6286
6287         DDE Message:
6288         open("%1")
6289
6290         Application:
6291         <leave blank>
6292
6293         DDE Application Not Running:
6294         <leave blank>
6295
6296         Topic:
6297         <leave blank>
6298 @end example
6299
6300 @unnumberedsubsubsec Associating an existing file type with XEmacs.
6301
6302 In Explorer select @samp{View/Options/File Types}.  Click on the file
6303 type in the list and press @samp{[Edit...]}.  If the file type already
6304 has an @samp{Open} action, double click on it and fill in the
6305 @samp{Action} dialog box as described above; otherwise create a new
6306 action.
6307
6308 If the file type has more than one action listed, you probably want to
6309 make the @samp{Open} action that you just edited the default by clicking on
6310 it and pressing @samp{Set Default}.
6311
6312 Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types}
6313 using @samp{Control Panel->Folder Options->File Types}.
6314
6315
6316 @node Q6.2.5, Q6.3.1, Q6.2.4, MS Windows
6317 @unnumberedsubsec Q6.2.5: Is it possible to print from XEmacs?
6318
6319 As of 21.4, printing works on Windows, using simply @samp{File->Print},
6320 and can be configured with @samp{File->Page Setup}.
6321
6322 Prior to 21.4, there is no built-in support, but there are some clever
6323 hacks out there.  If you know how, please let us know and we'll put it
6324 here.
6325
6326
6327 @node Q6.3.1, Q6.3.2, Q6.2.5, MS Windows
6328 @unnumberedsec 6.3: Miscellaneous
6329 @unnumberedsubsec Q6.3.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
6330
6331 In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*}
6332 symbols to @samp{w32-*}.  Does XEmacs do the same?
6333
6334 We consider such a move counter-productive, thus we do not use the
6335 @samp{w32} prefix. (His rather questionable justification was that he
6336 did not consider Windows to be a "winning" platform.) However, the name
6337 @samp{Win32} is not particularly descriptive outside the Windows world,
6338 and using just @samp{windows-} would be too generic.  So we chose a
6339 compromise, the prefix @samp{mswindows-} for Windows-related variables
6340 and functions.
6341
6342 Thus all the XEmacs variables and functions directly related to either
6343 the Windows GUI or OS are prefixed @samp{mswindows-} (except for a
6344 couple of debugging variables, prefixed @samp{debug-mswindows-}).  From
6345 an architectural perspective, however, we believe that this is mostly a
6346 non-issue because there should be a very small number of
6347 window-systems-specific variables anyway.  Whenever possible, we try to
6348 provide generic interfaces that apply to all window systems.
6349
6350 @c not true:
6351 @c The user variables
6352 @c that share functionality with existing NT Emacs variables are be named
6353 @c with our convention, but we provide the GNU Emacs names as
6354 @c compatibility aliases.
6355
6356 @node Q6.3.2, Q6.3.3, Q6.3.1, MS Windows
6357 @unnumberedsubsec Q6.3.2: What are the differences between the various MS Windows emacsen?
6358
6359 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
6360 Could you briefly explain the differences between them?
6361
6362 Here is a recount of various Emacs versions running on MS Windows:
6363
6364 @itemize @bullet
6365
6366 @item
6367 XEmacs
6368
6369 @itemize @minus
6370
6371 @item
6372 Beginning with XEmacs 19.12, XEmacs' architecture was redesigned
6373 in such a way to allow clean support of multiple window systems.  At
6374 this time the TTY support was added, making X and TTY the first two
6375 "window systems" XEmacs supported.  The 19.12 design is the basis for
6376 the current native MS Windows code.
6377
6378 @item
6379 Some time during 1997, David Hobley (soon joined by Marc Paquette)
6380 imported some of the NT-specific portions of GNU Emacs, making XEmacs
6381 with X support compile under Windows NT, and creating the "X" port.
6382
6383 @item
6384 Several months later, Jonathan Harris sent out initial patches to use
6385 the Win32 API, thus creating the native port.  Since then, various
6386 people have contributed, including Kirill M. Katsnelson (contributed
6387 support for menubars, subprocesses and network, as well as loads of
6388 other code), Andy Piper (ported XEmacs to Cygwin environment,
6389 contributed Windows unexec, Windows-specific glyphs and toolbars code,
6390 and more), Ben Wing (loads of improvements; currently the most active MS
6391 Windows developer), Jeff Sparkes (contributed scrollbars support) and
6392 many others.
6393 @end itemize
6394
6395 @item
6396 U Emacs for DOS
6397
6398 @itemize @minus
6399
6400 @item
6401 GNU Emacs features support for MS-DOS and DJGPP (D. J. Delorie's DOS
6402 port of GCC).  Such an Emacs is heavily underfeatured, because it does
6403 not supports long file names, lacks proper subprocesses support, and
6404 is far too big compared with typical DOS editors.
6405 @end itemize
6406
6407 @item
6408 GNU Emacs compiled with Win32
6409
6410 @itemize @minus
6411
6412 @item
6413 Starting with version 19.30, it has been possible to compile GNU Emacs
6414 under MS Windows using the DJGPP compiler and X libraries.  The result
6415 is very similar to GNU Emacs compiled under MS DOS, except that it
6416 supports longer file names, etc.  This "port" is similar to the "X"
6417 flavor of XEmacs on MS Windows.
6418 @end itemize
6419
6420 @item
6421 NT Emacs
6422
6423 @itemize @minus
6424
6425 @item
6426 NT Emacs is a version of GNU Emacs modified to compile and run under MS
6427 Windows 95 and NT using the native Win32 API.  As such, it is close in
6428 spirit to the XEmacs "native" port.
6429
6430 @item
6431 NT Emacs has been written by Geoff Voelker, and more information can be
6432 found at
6433 @iftex
6434 @*
6435 @end iftex
6436 @uref{http://www.cs.washington.edu/homes/voelker/ntemacs.html}.
6437 @end itemize
6438
6439 @item
6440 Win-Emacs
6441
6442 @itemize @minus
6443
6444 @item
6445 Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
6446 compatibility libraries.  Win-Emacs was written by Ben Wing.  The MS
6447 Windows code never made it back to Lucid Emacs, and its creator (Pearl
6448 Software) has long since gone out of business.
6449 @end itemize
6450
6451 @item
6452 GNU Emacs for DOS
6453
6454 @itemize @minus
6455
6456 @item
6457 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
6458 port of Gcc).  Such an Emacs is heavily underfeatured, because it does
6459 not support long file names, lacks proper subprocesses support, and
6460 is far too big compared to typical DOS editors.
6461 @end itemize
6462
6463 @item
6464 GNU Emacs compiled with Win32
6465
6466 @itemize @minus
6467
6468 @item
6469 Starting with version 19.30, it has been possible to compile GNU Emacs
6470 under MS Windows using the DJGPP compiler and X libraries.  The result
6471 is is very similar to GNU Emacs compiled under MS DOS, only it
6472 supports longer file names, etc.  This "port" is similar to the "X"
6473 flavor of XEmacs on MS Windows.
6474 @end itemize
6475
6476 @end itemize
6477
6478
6479 @node Q6.3.3, Q6.3.4, Q6.3.2, MS Windows
6480 @unnumberedsubsec Q6.3.3: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup.  Has that been fixed?
6481
6482 Yes.
6483
6484 The console was there because @file{temacs} (and in turn, @file{xemacs})
6485 was a console application, and Windows typically creates a new
6486 console for a console process unless the creating process requests that
6487 one isn't created.  This used to be fixed with @file{runemacs}, a small
6488 Windows application that existed merely to start @file{xemacs}, stating
6489 that it didn't want a console.
6490
6491 XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
6492 application.  The explanation of what that means is included for
6493 educational value.
6494
6495 When building an application to be run in a Win32 environment, you must
6496 state which sub-system it is to run in.  Valid subsystems include
6497 "console" and "gui".  The subsystem you use affects the run time
6498 libraries linked into your application, the start up function that is
6499 run before control is handed over to your application, the entry point
6500 to your program, and how Windows normally invokes your program. (Console
6501 programs automatically get a console created for them at startup if
6502 their stdin/stdout don't point anywhere useful, which is the case when
6503 run from the GUI.  This is a stupid design, of course -- instead, the
6504 console should get created only when the first I/O actually occurs!
6505 GUI programs have an equally stupid design: When called from
6506 @file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to
6507 point nowhere useful, even though the command shell has its own
6508 stdin/stdout.  It's as if someone who had learned a bit about stdio but
6509 had no actual knowledge of interprocess communication designed the
6510 scheme; unfortunately, the whole process-communication aspect of the
6511 Win32 API is equally badly designed.) For example, the entry point for a
6512 console app is "main" (which is what you'd expect for a C/C++ program),
6513 but the entry point for a "gui" app is "WinMain".  This confuses and
6514 annoys a lot of programmers who've grown up on Unix systems, where the
6515 kernel doesn't really care whether your application is a gui program or
6516 not.
6517
6518 For reasons not altogether clear, and are lost in the mists of time and
6519 tradition, XEmacs on Win32 started out as a console application, and
6520 therefore a console was automatically created for it. (It may have been
6521 made a console application partly because a console is needed in some
6522 circumstances, especially under Win95, to interrupt, terminate, or send
6523 signals to a child process, and because of the bogosity mentioned above
6524 with GUI programs and the standard command shell.  Currently, XEmacs
6525 just creates and immediately hides a console when necessary, and
6526 works around the "no useful stdio" problem by creating its own console
6527 window as necessary to display messages in.)
6528
6529
6530 @node Q6.3.4, Q6.4.1, Q6.3.3, MS Windows
6531 @unnumberedsubsec Q6.3.4: What is the porting team doing at the moment?
6532
6533 (as of June 2001)
6534
6535 The porting team is continuing work on the MS Windows-specific code.
6536 Major projects are the development of Mule (internationalization)
6537 support for Windows and the improvement of the widget support (better
6538 support for dialog boxes, buttons, edit fields, and similar UI
6539 elements).
6540
6541
6542 @node Q6.4.1, Q6.4.2, Q6.3.4, MS Windows
6543 @unnumberedsec 6.3: Troubleshooting
6544 @unnumberedsubsec Q6.4.1 XEmacs won't start on Windows.
6545
6546 XEmacs relies on a process called "dumping" to generate a working
6547 executable. Under MS-Windows this process effectively fixes the memory
6548 addresses of information in the executable. When XEmacs starts up it tries
6549 to reserve these memory addresses so that the dumping process can be
6550 reversed -- putting the information back at the correct addresses.
6551 Unfortunately some .DLLs (for instance the soundblaster driver) occupy
6552 memory addresses that can conflict with those needed by the dumped XEmacs
6553 executable. In this instance XEmacs will fail to start without any
6554 explanation. Note that this is extremely machine specific.
6555
6556 21.1.10 includes a fix for this that makes more intelligent guesses
6557 about which memory addresses will be free, and this should cure the
6558 problem for most people.  21.4 implements "portable dumping", which
6559 eliminates the problem altogether.  We recommend you use the 21.4
6560 binaries, but you can use the 21.1 binaries if you are very paranoid
6561 about stability.  @xref{Q6.0.3}.
6562
6563 @node Q6.4.2, , Q6.4.1, MS Windows
6564 @unnumberedsubsec Q6.4.2 Why do I get a blank toolbar on Windows 95?
6565
6566 You need at least version 4.71 of the system file @file{comctl32.dll}.
6567 The updated version is supplied with Internet Explorer 4 and later but if
6568 you are avoiding IE you can also download it from the Microsoft web
6569 site.  Go into support and search for @file{comctl32.dll}.  The download
6570 is a self-installing executable.
6571
6572
6573 @node Current Events,  , MS Windows, Top
6574 @unnumbered 7 What the Future Holds
6575
6576 This is part 7 of the XEmacs Frequently Asked Questions list.  This
6577 section will change frequently, and (in theory) should contain any
6578 interesting items that have transpired recently. (But in practice it's
6579 not getting updated like this.)
6580
6581 This section also contains descriptions of the new features in all the
6582 recent releases of XEmacs.  For the most part, the information below is
6583 a synopsis of the more complete information that can be found in the
6584 file @file{NEWS} in the @file{etc} directory of the XEmacs distribution.
6585 You can view this file in XEmacs using @kbd{C-h n} or the @samp{Help}
6586 menu.
6587
6588 Information on older versions of XEmacs can be find in @file{ONEWS} in
6589 the same directory, or @file{OONEWS} for really old versions.
6590
6591
6592 @menu
6593 * Q7.0.1::      What new features will be in XEmacs soon?
6594 * Q7.0.2::      What's new in XEmacs 21.4?
6595 * Q7.0.3::      What's new in XEmacs 21.1?
6596 * Q7.0.4::      What's new in XEmacs 20.4?
6597 * Q7.0.5::      What's new in XEmacs 20.3?
6598 * Q7.0.6::      What's new in XEmacs 20.2?
6599 @end menu
6600
6601 @node Q7.0.1, Q7.0.2, Current Events, Current Events
6602 @unnumberedsec 7.0: Changes
6603 @unnumberedsubsec Q7.0.1: What new features will be in XEmacs soon?
6604
6605 Not yet written.
6606
6607 @node Q7.0.2, Q7.0.3, Q7.0.1, Current Events
6608 @unnumberedsubsec Q7.0.2: What's new in XEmacs 21.4?
6609
6610 21.4 was the "stable" version of the 21.2 series, which was considered
6611 "experimental" throughout its life; thus there were no "official"
6612 releases at all.  In essence, XEmacs is now following the "alternating"
6613 scheme of Linux, where at any point there are at least two different
6614 development branches, one "stable" and one "experimental".  Periodic
6615 releases happen in both branches, but those in the experimental branch
6616 are not tested as well, and there's no guarantee they will work at all.
6617 The experiemental branch is open to any and all code that's acceptable
6618 to the developers; the stable branch, however, is in general limited
6619 only to bug fixes, and all contributions are carefully reviewed to make
6620 sure they will increase and not decrease stability.
6621
6622 21.3 never existed at all; it was decided to follow the Linux scheme
6623 exactly, where odd-numbered series are experimental and even-numbered
6624 ones stable.
6625
6626 The following lists summarizes the essential changes made in this
6627 version.  For a fuller list, see the @file{NEWS} in the @file{etc}
6628 directory of the XEmacs distribution, or use @kbd{C-h n} or the
6629 @samp{Help} menu to view this file inside of XEmacs.
6630
6631 @unnumberedsubsubsec User-visible changes
6632
6633 @itemize @bullet
6634
6635 @item
6636 The delete key now deletes forward by default.
6637 @item
6638 Shifted motion keys now select text by default.
6639 @item
6640 You can now build XEmacs with support for GTK+ widget set.
6641 @item
6642 ~/.xemacs/init.el is now the preferred location for the init
6643 file. (XEmacs now supports a `~/.xemacs/init.el' startup file. Custom
6644 file will move to ~/.xemacs/custom.el.)
6645 @item
6646 Much-improved sample init.el, showing how to use many useful features.
6647 @item
6648 XEmacs support for menu accelerators has been much improved.
6649 @item
6650 Default menubar improvements. (Default menubar has many new commands and
6651 better organization.  The font-menu is now available under MS Windows.)
6652 @item
6653 Dialog box improvements, including a real file dialog box. (XEmacs now has a proper file dialog box under MS Windows (and GTK)!  The old clunky file dialog box is improved.  Keyboard traversal now works correctly in MS Windows dialog boxes.  There is a Search dialog box available from Edit->Find...)
6654 @item
6655 New buffer tabs.
6656 @item
6657 There is a new MS Windows installer, netinstall, ported from Cygwin.
6658 @item
6659 The subprocess quote-handling mechanism under Windows is much improved.
6660 @item
6661 Printing support now available under MS Windows.
6662 @item
6663 Selection improvements. (Kill and yank now interact with the clipboard under Windows.  MS Windows support for selection is now much more robust.  Motif selection support is now more correct (but slower).)
6664 @item
6665 Mail spool locking now works correctly.
6666 @item
6667 International support changes. (The default coding-priority-list is now
6668 safer.  International keysyms are now supported under X.  MS Windows
6669 1251 code page now supported.  Czech, Thai, Cyrillic-KOI8, Vietnamese,
6670 Ethiopic now supported.  Proper support for words in Latin 3 and Latin
6671 4.)
6672 @item
6673 Help buffers contain hyperlinks, and other changes.
6674 @item
6675 The modeline's text is now scrollable.
6676 @item
6677 The mouse wheel under MS Windows now functions correctly.
6678 @item
6679 Interactive searching and matching case improvements. (Incremental search will now highlight all visible matches.  Interactive searches always respect uppercase characters.)
6680 @item
6681 Rectangle functions rewritten to avoid inserting extra spaces.
6682 @item
6683 New command `kill-entire-line' that always kills the entire line.
6684 @item
6685 Default values correctly stored in minibuffer histories.
6686 @item
6687 You can now create "indirect buffers", like in GNU Emacs.
6688 @item
6689 Pixel-based scrolling has been implemented.
6690 @item
6691 Operation progress can be displayed using graphical widgets.
6692 @item
6693 User names following a tilde can now be completed at file name prompts.
6694 @item
6695 XEmacs can now play sound using Enlightenment Sound Daemon (ESD).
6696 @item
6697 X-Face support is now available under MS Windows.
6698 @item
6699 The PostgreSQL Relational Database Management System is now supported.
6700 @item
6701 Indentation no longer indents comments that begin at column zero.
6702 @item
6703 Face and variable settings can have comments in Customize.
6704 @item
6705 New locations for early package hierarchies.
6706 @item
6707 The `auto-save' library has been greatly improved.
6708 @item
6709 New variable `mswindows-alt-by-itself-activates-menu'.
6710 @item
6711 Other init-file-related changes. (Init file in your home directory may be called `.emacs.el'.  New command-line switches -user-init-file and -user-init-directory.)
6712 @item
6713 Etags changes.  See @file{NEWS} for full details.
6714 @end itemize
6715
6716 @unnumberedsubsubsec Lisp and internal changes
6717
6718 Not yet written.
6719
6720 @itemize @bullet
6721 @end itemize
6722
6723 @node Q7.0.3, Q7.0.4, Q7.0.2, Current Events
6724 @unnumberedsubsec Q7.0.3: What's new in XEmacs 21.1?
6725
6726 21.1 was the "stable" version of "experimental" 21.0 series.
6727 @xref{Q7.0.2}.
6728
6729 The following lists summarizes the essential changes made in this
6730 version.  For a fuller list, see the @file{NEWS} in the @file{etc}
6731 directory of the XEmacs distribution, or use @kbd{C-h n} or the
6732 @samp{Help} menu to view this file inside of XEmacs.
6733
6734 @unnumberedsubsubsec User-visible changes
6735
6736 @itemize @bullet
6737
6738 @item
6739 XEmacs is now supported under Microsoft Windows 95/98 and Windows NT
6740 operating systems.  To discuss Windows-specific issues, subscribe to the
6741 mailing list at @email{xemacs-nt-request@@xemacs.org}.
6742
6743 @item
6744 XEmacs has been unbundled into constituent installable packages.
6745
6746 @item
6747 @strong{Other notable changes}: The @samp{Options} menu has been ported to
6748 Custom; XEmacs now is able to choose X visuals and use private
6749 colormaps; You can drag the vertical divider of "horizontally"
6750 (side-by-side) split windows.
6751
6752 @item
6753 @strong{Building changes}: XEmacs can be built with support for 31-bit Lisp
6754 integers and 32-bit pointers (previously, it was 28-bit integers and
6755 pointers); XEmacs can be built with LDAP support; @file{dir} files can be
6756 removed in the Info subsystem, and will be regenerated on-the-fly.
6757
6758 @item
6759 @strong{New packages}: @file{imenu}, @file{popper}, @file{gdb-highlight}
6760
6761 @item
6762 @strong{Package changes}: Many changes to @file{cc-mode}, @file{gnus},
6763 @file{gnuclient}.  See @file{NEWS} for full details.
6764
6765 @item
6766 @strong{New commands, variables and functions}:
6767 @code{center-to-window-line} (like @code{recenter} but doesn't force a
6768 redisplay); variable @code{user-full-name} (customize what your full
6769 name looks like in mail); @kbd{M-x customize-changed-options} (customize
6770 options whose default values changes because you upgraded your XEmacs);
6771 @kbd{M-x add-log-convert} (converts an old-style ChangeLog buffer to
6772 new-style); @kbd{M-x zap-up-to-char} (like @code{zap-to-char} but
6773 doesn't delete the char searched for); commands to store, retrieve and
6774 increment numbers in registers, useful for macros.
6775
6776 @item
6777 @strong{Changes to commands, variables, and functions}: @kbd{M-x
6778 query-replace} and friends operate only on the region when it's active;
6779 @code{echo-keystrokes} can now be a floating-point number; @kbd{M-.}
6780 searches exact tag matches before inexact ones; function
6781 @code{user-full-name} with no arguments returns the var
6782 @code{user-full-name}; a prefix arg to @kbd{M-:} and @kbd{C-h c} inserts
6783 the result in the current buffer.
6784  
6785 @item
6786 @strong{Other changes}: Under X, new application class @samp{XEmacs};
6787 byte-compilation of user-specs now works.
6788
6789 @item
6790 @strong{XEmacs/Mule (internationalization) changes}: Mule support now
6791 works on TTY's; Egg/SJ3 input method now officially supported (Quail and
6792 Egg/Skk already available through LEIM since 20.3); localized Japanese
6793 menubars if XEmacs is built with the right support.
6794
6795 @end itemize
6796
6797 @unnumberedsubsubsec Lisp and internal changes
6798
6799 @itemize @bullet
6800
6801 @item
6802 @strong{Specifier changes}: The window locale now has a higher
6803 precedence than the buffer locale when instantiating; new macro
6804 @code{let-specifier}; new specifiers
6805 @code{vertical-scrollbar-visible-p}, horizontal-scrollbar-visible-p',
6806 @code{scrollbar-on-left-p}, @code{scrollbar-on-top-p},
6807 @code{vertical-divider-always-visible-p},
6808 @code{vertical-divider-shadow-thickness},
6809 @code{vertical-divider-line-width}, @code{vertical-divider-spacing};
6810 specifiers and symbols whose value is a specifier allowed as modeline
6811 specifications.
6812
6813 @item
6814 @strong{Frame focus changes}: @code{focus-follows-mouse} works like FSF,
6815 prevents any attempt to permanently change the selected frame; new
6816 function @code{focus-frame} sets the window system focus a frame; new
6817 special forms @code{save-selected-frame} and @code{with-selected-frame}.
6818
6819 @item
6820 @strong{Window function changes}: @code{select-window} now has optional
6821 argument @var{NORECORD} to inhibit recording a buffer change;
6822 @code{vertical-motion} now correctly handles optional @var{WINDOW}
6823 argument and has new optional argument @var{PIXELS}, to have the
6824 returned values be in pixels; new function
6825 @code{vertical-motion-pixels}; new functions
6826 @code{window-text-area-pixel-@{width,height,edges@}}; new functions
6827 @code{shrink-window-pixels} and @code{enlarge-window-pixels}; new
6828 function @code{window-displayed-text-pixel-height}.
6829
6830 @item
6831 @strong{Other function changes}: Arithmetic comparison functions
6832 @code{<}, @code{>}, @code{=}, @code{/=} now accept a variable number of
6833 arguments; hashtables now have a consistent read/print syntax; keyword
6834 symbols cannot be set to a value other than themselves; @code{concat} no
6835 longer accepts integer arguments; new function @code{string}, like
6836 @code{list}, @code{vector}, etc.; new function @code{temp-directory}
6837 (OS-independent way to get a temp directory); @code{load-average} has
6838 optional argument @var{USE-FLOATS}; @code{make-event} implemented
6839 completely; new function @code{function-interactive} (returns a
6840 function's interactive spec); new functions @code{lmessage},
6841 @code{lwarn} (printf-like versions of @code{display-wessage},
6842 @code{display-warning}); new keyword @code{:version} to
6843 @code{defcustom}.
6844
6845 @item
6846 @strong{Performance}: when the new GNU Malloc aka Doug Lea Malloc is
6847 available, it will be used (better performance on libc6 Linux systems);
6848 tracking line-numbers in modeline is now efficient; profiling records a
6849 call-count of all called functions, retrievable through
6850 @code{profile-call-count-results}.
6851
6852 @item
6853 @strong{Startup and path searching}: code to assemble paths at startup
6854 rewritten for new package system; new function @code{split-path} (splits
6855 by @code{path-separator}); @code{Info-default-directory-list} obsolete,
6856 use @code{Info-directory-list} instead; site-lisp is deprecated and no
6857 longer on the load-path by default.
6858
6859 @end itemize
6860
6861 @node Q7.0.4, Q7.0.5, Q7.0.3, Current Events
6862 @unnumberedsubsec Q7.0.4: What's new in XEmacs 20.4?
6863
6864 XEmacs 20.4 is a bugfix release with no user-visible changes.
6865 @c Filled in from NEWS file of 20.5-b33
6866
6867 @node Q7.0.5, Q7.0.6, Q7.0.4, Current Events
6868 @unnumberedsubsec Q7.0.5: What's new in XEmacs 20.3?
6869
6870 XEmacs 20.3 was released in November 1997. It contains many bugfixes,
6871 and a number of new features, including Autoconf 2 based configuration,
6872 additional support for Mule (Multi-language extensions to Emacs), many
6873 more customizations, multiple frames on TTY-s, support for multiple info
6874 directories, an enhanced gnuclient, improvements to regexp matching,
6875 increased MIME support, and many, many synches with GNU Emacs 20.
6876
6877 The XEmacs/Mule support has been only seriously tested in a Japanese
6878 locale, and no doubt many problems still remain.  The support for
6879 ISO-Latin-1 and Japanese is fairly strong.  MULE support comes at a
6880 price---about a 30% slowdown from 19.16.  We're making progress on
6881 improving performance and XEmacs 20.3 compiled without Mule (which is
6882 the default) is definitely faster than XEmacs 19.16.
6883
6884 XEmacs 20.3 is the first non-beta v20 release, and will be the
6885 basis for all further development.
6886
6887 @node Q7.0.6, , Q7.0.5, Current Events
6888 @unnumberedsubsec Q7.0.6: What's new in XEmacs 20.2?
6889
6890 The biggest changes in 20.2 include integration of EFS (the next
6891 generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a
6892 major mode for editing Tex and LaTeX, and a lot of other stuff).  Many
6893 bugs from 20.0 have been fixed for this release.  20.2 also contains a
6894 new system for customizing XEmacs options, invoked via @kbd{M-x
6895 customize}.
6896
6897 XEmacs 20.2 is the development release (20.0 was beta), and is no longer
6898 considered unstable.
6899
6900 For older news, see the file @file{ONEWS} in the @file{etc} directory of
6901 the XEmacs distribution.
6902
6903 @bye