comparison man/xemacs-faq.texi @ 2417:8b907450718f

[xemacs-hg @ 2004-12-05 08:48:12 by ben] The section on Troubleshooting (now 2.3) has been completely written and includes a lot of stuff that is not properly documented anywhere else. A fair amount of obsolete info has been deleted and I've incorporated the comments that people (mostly Stephen T) made. Former chapter 3 has been split up in two, one pertaining to basic I/O and the other to external I/O. What were formerly chapters 5 and 6 no longer exist as such; the info in them has been distributed across various other chapters. Old chapter 4 got split up, part going to the new chapter 4 on external I/O and part going to the new chapter 5 on the Internet. In this new chapter, stuff not pertaining to a specific package (e.g. VM or GNUS) was taken out of package-specific sections and a general mail section was constituted. Part of old chapter 5 remains in a new chapter 6 devoted to Emacs Lisp and other advanced stuff, and a section from old chapter 3 on basic init-file Lisp and some stuff from old chapter 5 on Info. The rest of chapter 5 was just misc and has gotten scattered to the winds (mostly in chapters 3 and 4). Old chapter 6 has also gotten quite scattered; there is no longer any section specifically devoted to Windows except one of the Installation sections (along with a section specfically devoted to Unix), and the rest has moved to join the appropriate non-Windows-specific section elsewhere. A lot of chapters had their sections rearranged and likewise for sections having entries rearranged, with the intention that the new arrangement should be more natural. In general I hope that stuff should be much easier to locate. I also rewrote the entries on the relation between XEmacs and GNU Emacs on the authors of XEmacs, including lots of info on who wrote specific subsections. However, this history is certainly not complete; I hope people will look over this and fix it up as necessary.
author ben
date Sun, 05 Dec 2004 08:48:12 +0000
parents e0dc83407d58
children e19aeba465d6
comparison
equal deleted inserted replaced
2416:515786aa760a 2417:8b907450718f
5 @setchapternewpage off 5 @setchapternewpage off
6 @c %**end of header 6 @c %**end of header
7 @finalout 7 @finalout
8 @titlepage 8 @titlepage
9 @title XEmacs FAQ 9 @title XEmacs FAQ
10 @subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2004/07/05 10:42:30 $ 10 @subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2004/12/05 08:48:12 $
11 @sp 1 11 @sp 1
12 @author Ben Wing <ben@@xemacs.org>
12 @author Tony Rossini <rossini@@u.washington.edu> 13 @author Tony Rossini <rossini@@u.washington.edu>
13 @author Ben Wing <ben@@xemacs.org>
14 @author Chuck Thompson <cthomp@@xemacs.org> 14 @author Chuck Thompson <cthomp@@xemacs.org>
15 @author Steve Baur <steve@@xemacs.org> 15 @author Steve Baur <steve@@xemacs.org>
16 @author Andreas Kaempf <andreas@@sccon.com> 16 @author Andreas Kaempf <andreas@@sccon.com>
17 @author Christian Nyb@o{} <chr@@mediascience.no> 17 @author Christian Nyb@o{} <chr@@mediascience.no>
18 @author Sandra Wambold <wambold@@xemacs.org> 18 @author Sandra Wambold <wambold@@xemacs.org>
24 @direntry 24 @direntry
25 * FAQ: (xemacs-faq). XEmacs FAQ. 25 * FAQ: (xemacs-faq). XEmacs FAQ.
26 @end direntry 26 @end direntry
27 @end ifinfo 27 @end ifinfo
28 28
29 @ignore
30 *****************************************
31 ***** To update the menus and nodes *****
32 *****************************************
33
34 First, the first argument to @node (the name itself) needs to be correct.
35 Use a macro if necessary to update the @node names from the
36 @unnumberedsubsec commands. Also note that the command we're about to
37 run will not correctly fix up the part of the menu to the right of a ::.
38 It will leave existing text in place but not change anything. If you
39 make a lot of changes and want to update this semi-automatically, use
40 M-x occur to pick out all @unnumberedsubsec lines then do some editing
41 magic to coerce them into the right format and cut and paste as necessary:
42
43 1. M-x occur @unnumberedsubsec
44 2. <select a rectangle including all text before the Q#.#.#>
45 3. C-x r t *<space>
46 4. go to the top and use the following macro to get the indentation right.
47
48 (setq last-kbd-macro (read-kbd-macro
49 "C-s : RET : <right> M-x indent- to- column RET 14 RET <home> <down>"))
50
51 5. Cut and paste the menus into the detailmenu at the top and
52 individual menus at the top of the appropriate chapters. (#### I
53 wonder, does texinfo-master-menu generate the detailmenu from the
54 individual menus or vice-versa or neither?)
55
56 Then,
57
58 1. Use the Lisp line below to get the spacing correct for the Q#.#.#
59 menu entries.
60
61 (set (make-local-variable 'texinfo-column-for-description) 14)
62
63 2. C-u C-c C-u m (C-u M-x texinfo-master-menu) will update the menus
64 and nodes. However, it appears that even though it tries to
65 preserve the existing menu structure as much as possible, it
66 doesn't do a perfect job. It messes up in at least two ways: The
67 indentation in the part of the main menu above the detailmenu will
68 be screwed up, and the #.0 titles will be removed from both the
69 detailmenu and the individual chapter menus. In addition,
70 sometimes random things get screwed up in individual parts of the
71 menus. Therefore:
72
73 1. Copy the whole detailmenu beforehand.
74 2. Run C-u C-C C-u m to fix up the nodes.
75 3. Run `fix-main-menu' and `fix-omitted-menu-lines'.
76 4. Check the new detailmenu carefully to see if anything is screwed up
77 compared to the old detailmenu you copied.
78 5. If so, paste back the appropriate sections and fix up the corresponding
79 part of the chapter-specific menu.
80
81 (defun fix-main-menu ()
82 (interactive)
83 (save-restriction
84 (let (p q)
85 (search-forward "@menu")
86 (setq p (match-beginning 0))
87 (re-search-forward "^$")
88 (setq q (match-end 0))
89 (narrow-to-region p q)
90 (goto-char p)
91 (while (search-forward ":: " nil t)
92 (indent-to-column 26)))))
93
94 (defun fix-omitted-menu-lines ()
95 (interactive)
96 (save-excursion
97 (loop for x from 1 to 7 do
98 (goto-char (point-min))
99 (re-search-forward (format "@unnumberedsec \\(%d.0: .*\\)" x))
100 (let ((line (match-string 1)))
101 (search-backward "@menu")
102 (forward-line 1)
103 (unless (looking-at "[0-9].0:")
104 (insert line)
105 (insert "\n"))
106 (goto-char (point-min))
107 (search-forward "@menu")
108 (search-forward (format "Q%d.0.1:" x))
109 (forward-line -1)
110 (unless (looking-at "[0-9].0:")
111 (insert line)
112 (insert "\n"))))))
113
114 *****************************************
115 ***** Other work *****
116 *****************************************
117
118 When you've rearranged and renumbered a bunch of nodes, you can get
119 the numbers agreeing again. The macro below assumes that the
120 unnumberedsubsec number is correct, and fixes up the node to agree.
121 Only the first part of the node is fixed and the other parts may still
122 be wrong; but they will be fixed as part of
123 @code{texinfo-master-menu}.
124
125 (setq last-kbd-macro (read-kbd-macro
126 "<f1> unnumberedsubsec SPC RET C-s : RET <left> C-x C-x <f3> <home> <up> <C-right> <right> C-s , RET <left> C-x C-x <f4> <home> 2*<down>"))
127 @end ignore
128
129
29 @node Top, Introduction, (dir), (dir) 130 @node Top, Introduction, (dir), (dir)
30 @top XEmacs FAQ 131 @top XEmacs FAQ
31 132
32 This is the guide to the XEmacs Frequently Asked Questions list---a 133 This is the guide to the XEmacs Frequently Asked Questions list---a
33 compendium of questions and answers pertaining to one of the finest 134 compendium of questions and answers pertaining to one of the finest
75 @end ifset 176 @end ifset
76 177
77 @c end ifset points to CANONICAL 178 @c end ifset points to CANONICAL
78 179
79 @menu 180 @menu
80 * Introduction:: Introduction, Policy, Credits. 181 * Introduction:: Introduction, Policy, Credits.
81 * Installation:: Installation and Trouble Shooting. 182 * Installation:: Installation and Troubleshooting.
82 * Customization:: Customization and Options. 183 * Display Subsystems:: Basic Display-Related Subsystems.
83 * Subsystems:: Major Subsystems. 184 * External Subsystems:: Interfacing with the OS and External Devices.
84 * Miscellaneous:: The Miscellaneous Stuff. 185 * Internet:: Connecting to the Internet.
85 * MS Windows:: XEmacs on Microsoft Windows. 186 * Advanced:: Advanced Customization Using XEmacs Lisp.
86 * Current Events:: What the Future Holds. 187 * Current Events:: What the Future Holds.
87 * Legacy Versions:: New information about old XEmacsen. 188 * Legacy Versions:: New information about old XEmacsen.
88 189
89 @detailmenu 190 @detailmenu
90
91 --- The Detailed Node Listing --- 191 --- The Detailed Node Listing ---
92 192
93 Introduction, Policy, Credits 193 1 Introduction, Policy, Credits
94 194
95 * Q1.0.1:: What is XEmacs? 195 1.0: Introduction
96 * Q1.0.2:: What is the current version of XEmacs? 196 * Q1.0.1:: What is XEmacs?
97 * Q1.0.3:: Where can I find it? 197 * Q1.0.2:: What is the current version of XEmacs?
98 * Q1.0.4:: Why Another Version of Emacs? 198 * Q1.0.3:: Where can I find it?
99 * Q1.0.5:: Why Haven't XEmacs and GNU Emacs Merged? 199 * Q1.0.4:: Are binaries available?
100 * Q1.0.6:: Where can I get help? 200 * Q1.0.5:: How does XEmacs differ from GNU Emacs?
101 * Q1.0.7:: Where are the mailing lists archived? 201 * Q1.0.6:: How much does XEmacs differ?
102 * Q1.0.8:: How do you pronounce XEmacs? 202 * Q1.0.7:: Is XEmacs "GNU"?
103 * Q1.0.9:: What does XEmacs look like? 203 * Q1.0.8:: What is the correct way to refer to XEmacs and GNU Emacs?
104 * Q1.0.10:: Is there a port of XEmacs to Microsoft ('95 or NT)? 204 * Q1.0.9:: Why haven't XEmacs and GNU Emacs merged?
105 * Q1.0.11:: Is there a port of XEmacs to the Macintosh? 205 * Q1.0.10:: Where can I get help?
106 * Q1.0.12:: Is there a port of XEmacs to NextStep? 206 * Q1.0.11:: Where are the mailing lists archived?
107 * Q1.0.13:: Is there a port of XEmacs to OS/2? 207 * Q1.0.12:: How do you pronounce XEmacs?
108 * Q1.0.14:: Where can I get a printed copy of the XEmacs users manual? 208 * Q1.0.13:: What does XEmacs look like?
109 209 * Q1.0.14:: Where can I obtain a printed copy of the XEmacs User's Manual?
110 Policies: 210
111 * Q1.1.1:: What is the FAQ editorial policy? 211 1.1: Versions for Different Operating Systems
112 * Q1.1.2:: How do I become a Beta Tester? 212 * Q1.1.1:: Do I need X11 to run XEmacs?
113 * Q1.1.3:: How do I contribute to XEmacs itself? 213 * Q1.1.2:: Is there a port of XEmacs to Microsoft Windows?
114 214 * Q1.1.3:: Can I build XEmacs on MS Windows with X support? Do I need to?
115 Credits: 215 * Q1.1.4:: What are Cygwin and MinGW, and do I need them to run XEmacs?
116 * Q1.2.1:: Who wrote XEmacs? 216 * Q1.1.5:: What are the differences between the various MS Windows emacsen?
117 * Q1.2.2:: Who contributed to this version of the FAQ? 217 * Q1.1.6:: Is there a port of XEmacs to the Macintosh?
118 * Q1.2.3:: Who contributed to the FAQ in the past? 218 * Q1.1.7:: Is there a port of XEmacs to NextStep?
119 219 * Q1.1.8:: Is there a port of XEmacs to OS/2?
120 Internationalization: 220 * Q1.1.9:: How does the port cope with differences in the Windows user interface?
121 * Q1.3.1:: What is the status of internationalization support aka MULE (including Asian language support? 221
122 * Q1.3.2:: How can I help with internationalization? 222 1.2: Policies
123 * Q1.3.3:: How do I type non-ASCII characters? 223 * Q1.2.1:: What is the FAQ editorial policy?
124 * Q1.3.4:: Can XEmacs messages come out in a different language? 224 * Q1.2.2:: How do I become a beta tester?
125 * Q1.3.5:: Please explain the various input methods in MULE/XEmacs 225 * Q1.2.3:: How do I contribute to XEmacs itself?
126 * Q1.3.6:: How do I portably code for MULE/XEmacs? 226
127 * Q1.3.7:: How about Cyrillic Modes? 227 1.3: Credits
128 * Q1.3.8:: Does XEmacs support Unicode? 228 * Q1.3.1:: Who wrote XEmacs?
129 * Q1.3.9:: How does XEmacs display Unicode? 229 * Q1.3.2:: Who contributed to this version of the FAQ?
130 230 * Q1.3.3:: Who contributed to the FAQ in the past?
131 Getting Started: 231
132 * Q1.4.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one? 232 1.4: Internationalization
133 * Q1.4.2:: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs? 233 * Q1.4.1:: What is the status of internationalization support aka MULE (including Asian language support?
134 * Q1.4.3:: Any good XEmacs tutorials around? 234 * Q1.4.2:: How can I help with internationalization?
135 * Q1.4.4:: May I see an example of a useful XEmacs Lisp function? 235 * Q1.4.3:: How do I type non-ASCII characters?
136 * Q1.4.5:: And how do I bind it to a key? 236 * Q1.4.4:: Can XEmacs messages come out in a different language?
137 * Q1.4.6:: What's the difference between a macro and a function? 237 * Q1.4.5:: Please explain the various input methods in MULE/XEmacs
138 238 * Q1.4.6:: How do I portably code for MULE/XEmacs?
139 Installation and Trouble Shooting 239 * Q1.4.7:: How about Cyrillic modes?
140 240 * Q1.4.8:: Does XEmacs support Unicode?
141 * Q2.0.1:: Running XEmacs without installing. 241 * Q1.4.9:: How does XEmacs display Unicode?
142 * Q2.0.2:: XEmacs is too big. 242
143 * Q2.0.3:: Compiling XEmacs with Netaudio. 243 1.5: Getting Started
144 * Q2.0.4:: Problems with Linux and ncurses. 244 * Q1.5.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one?
145 * Q2.0.5:: Do I need X11 to run XEmacs? 245 * Q1.5.2:: Where do I put my @file{init.el} file?
146 * Q2.0.6:: I'm having strange crashes. What do I do? 246 * Q1.5.3:: Can I use the same @file{init.el} with the other Emacs?
147 * Q2.0.7:: Libraries in non-standard locations. 247 * Q1.5.4:: Any good XEmacs tutorials around?
148 * Q2.0.8:: can't resolve symbol _h_errno 248 * Q1.5.5:: May I see an example of a useful XEmacs Lisp function?
149 * Q2.0.9:: Where do I find external libraries? 249 * Q1.5.6:: And how do I bind it to a key?
150 * Q2.0.10:: After I run configure I find a coredump, is something wrong? 250 * Q1.5.7:: What's the difference between a macro and a function?
151 * Q2.0.11:: XEmacs can't resolve host names. 251 * Q1.5.8:: What is @code{Custom}?
152 * Q2.0.12:: Why can't I strip XEmacs? 252
153 * Q2.0.13:: I don't need no steenkin' packages. Do I? 253 2 Installation and Troubleshooting
154 * Q2.0.14:: How do I figure out which packages to install? 254
155 * Q2.0.15:: EFS fails with "500 AUTH not understood" (NEW) 255 2.0: Installation (General), Packages
156 * Q2.0.16:: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW) 256 * Q2.0.1:: How do I install the packages?
157 257 * Q2.0.2:: I don't need no steenkin' packages. Do I?
158 Trouble Shooting: 258 * Q2.0.3:: Where do I find external libraries?
159 * Q2.1.1:: XEmacs just crashed on me! 259 * Q2.0.4:: How do I specify the paths that XEmacs uses for finding files?
160 * Q2.1.2:: Cryptic Minibuffer messages. 260 * Q2.0.5:: Running XEmacs without installing
161 * Q2.1.3:: Translation Table Syntax messages at Startup. 261 * Q2.0.6:: XEmacs is too big
162 * Q2.1.4:: Startup warnings about deducing proper fonts? 262 * Q2.0.7:: EFS fails with "500 AUTH not understood" (NEW)
163 * Q2.1.5:: XEmacs cannot connect to my X Terminal. 263
164 * Q2.1.6:: XEmacs just locked up my Linux X server. 264 2.1: Unix/Mac OS Installation (Also Relevant to Cygwin, MinGW)
165 * Q2.1.7:: HP Alt key as Meta. 265 * Q2.1.1:: Libraries in non-standard locations
166 * Q2.1.8:: got (wrong-type-argument color-instance-p nil)! 266 * Q2.1.2:: Why can't I strip XEmacs?
167 * Q2.1.9:: XEmacs causes my OpenWindows 3.0 server to crash. 267 * Q2.1.3:: Compiling XEmacs with Netaudio.
168 * Q2.1.10:: Warnings from incorrect key modifiers. 268 * Q2.1.4:: Problems with Linux and ncurses.
169 * Q2.1.11:: Can't instantiate image error... in toolbar 269
170 * Q2.1.12:: Regular Expression Problems on DEC OSF1. 270 2.2: Windows Installation (Windows, Cygwin, MinGW)
171 * Q2.1.13:: HP/UX 10.10 and @code{create_process} failure 271 * Q2.2.1:: What exactly are all the different ways to build XEmacs under Windows?
172 * Q2.1.14:: @kbd{C-g} doesn't work for me. Is it broken? 272 * Q2.2.2:: What compiler/libraries do I need to compile XEmacs?
173 * Q2.1.15:: How to debug an XEmacs problem with a debugger. 273 * Q2.2.3:: How do I compile the native port?
174 * Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. 274 * Q2.2.4:: What do I need for Cygwin?
175 * Q2.1.17:: @samp{Marker does not point anywhere}. 275 * Q2.2.5:: How do I compile under Cygwin?
176 * Q2.1.18:: XEmacs is outputting lots of X errors. 276 * Q2.2.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
177 * Q2.1.19:: XEmacs does not follow the local timezone. 277 * Q2.2.7:: How do I compile with X support?
178 * Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} 278 * Q2.2.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
179 * Q2.1.21:: [This question intentionally left blank] 279
180 * Q2.1.22:: XEmacs seems to take a really long time to do some things. 280 2.3: General Troubleshooting
181 * Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. 281 * Q2.3.1:: Help! XEmacs just crashed on me!
182 * Q2.1.24:: XEmacs won't start without network. 282 * Q2.3.2:: XEmacs crashes and I compiled it myself.
183 * Q2.1.25:: After upgrading, XEmacs won't do `foo' any more! 283 * Q2.3.3:: How to debug an XEmacs problem with a debugger
184 284 * Q2.3.4:: I get a cryptic error message when trying to do something.
185 Customization and Options 285 * Q2.3.5:: XEmacs hangs when I try to do something.
186 286 * Q2.3.6:: I get an error message when XEmacs is running in batch mode.
187 * Q3.0.1:: What version of Emacs am I running? 287 * Q2.3.7:: The keyboard or mouse is not working properly, or I have some other event-related problem.
188 * Q3.0.2:: How do I evaluate Elisp expressions? 288 * Q2.3.8:: @kbd{C-g} doesn't work for me. Is it broken?
189 * Q3.0.3:: @code{(setq tab-width 6)} behaves oddly. 289 * Q2.3.9:: How do I debug process-related problems?
190 * Q3.0.4:: How can I add directories to the @code{load-path}? 290 * Q2.3.10:: XEmacs is outputting lots of X errors.
191 * Q3.0.5:: How to check if a lisp function is defined? 291 * Q2.3.11:: After upgrading, XEmacs won't do `foo' any more!
192 * Q3.0.6:: Can I force the output of @code{(face-list)} to a buffer? 292
193 * Q3.0.7:: Font selections don't get saved after @code{Save Options}. 293 2.4: Startup-Related Problems
194 * Q3.0.8:: How do I make a single minibuffer frame? 294 * Q2.4.1:: XEmacs cannot connect to my X Terminal!
195 * Q3.0.9:: What is @code{Customize}? 295 * Q2.4.2:: XEmacs won't start on Windows.
196 296 * Q2.4.3:: XEmacs won't start without network.
197 X Window System & Resources: 297 * Q2.4.4:: Startup warnings about deducing proper fonts?
198 * Q3.1.1:: Where is a list of X resources? 298 * Q2.4.5:: Warnings from incorrect key modifiers.
199 * Q3.1.2:: How can I detect a color display? 299 * Q2.4.6:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
200 * Q3.1.3:: [This question intentionally left blank] 300
201 * Q3.1.4:: [This question intentionally left blank] 301 3 Basic Display-Related Subsystems
202 * Q3.1.5:: How can I get the icon to just say @samp{XEmacs}? 302
203 * Q3.1.6:: How can I have the window title area display the full path? 303 3.0: The Keyboard
204 * Q3.1.7:: @samp{xemacs -name junk} doesn't work? 304 * Q3.0.1:: How can I bind complex functions (or macros) to keys?
205 * Q3.1.8:: @samp{-iconic} doesn't work. 305 * Q3.0.2:: How do I bind C-. and C-; to scroll one line up and down?
206 306 * Q3.0.3:: Globally binding @kbd{Delete}?
207 Textual Fonts & Colors: 307 * Q3.0.4:: How to map @kbd{Help} key alone on Sun type4 keyboard?
208 * Q3.2.1:: How can I set color options from @file{init.el}/@file{.emacs}? 308 * Q3.0.5:: How can you type in special characters in XEmacs?
209 * Q3.2.2:: How do I set the text, menu and modeline fonts? 309 * Q3.0.6:: Can I turn on @dfn{sticky} modifier keys?
210 * Q3.2.3:: How can I set the colors when highlighting a region? 310 * Q3.0.7:: How do I map the arrow keys?
211 * Q3.2.4:: How can I limit color map usage? 311 * Q3.0.8:: HP Alt key as Meta.
212 * Q3.2.5:: My tty supports color, but XEmacs doesn't use them. 312 * Q3.0.9:: Why does edt emulation not work?
213 * Q3.2.6:: Can I have pixmap backgrounds in XEmacs? 313 * Q3.0.10:: How can I emulate VI and use it as my default mode?
214 314
215 The Modeline: 315 3.1: The Mouse
216 * Q3.3.1:: How can I make the modeline go away? 316 * Q3.1.1:: How can I turn off Mouse pasting?
217 * Q3.3.2:: How do you have XEmacs display the line number in the modeline? 317 * Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons?
218 * Q3.3.3:: How do I get XEmacs to put the time of day on the modeline? 318 * Q3.1.3:: Clicking the left button does not do anything in buffer list.
219 * Q3.3.4:: How do I turn off current chapter from AUC TeX modeline? 319 * Q3.1.4:: How can I get a list of buffers when I hit mouse button 3?
220 * Q3.3.5:: How can one change the modeline color based on the mode used? 320 * Q3.1.5:: How I can set XEmacs up so that it pastes where the text cursor is?
221 321
222 Multiple Device Support: 322 3.2: Textual Fonts and Colors
223 * Q3.4.1:: How do I open a frame on another screen of my multi-headed display? 323 * Q3.2.1:: How do I specify a font?
224 * Q3.4.2:: Can I really connect to a running XEmacs after calling up over a modem? How? 324 * Q3.2.2:: How do I set the text, menu and modeline fonts?
225 325 * Q3.2.3:: How can I set color options from @file{init.el}?
226 The Keyboard: 326 * Q3.2.4:: How can I set the colors when highlighting a region?
227 * Q3.5.1:: How can I bind complex functions (or macros) to keys? 327 * Q3.2.5:: How can I limit color map usage?
228 * Q3.5.2:: How can I stop down-arrow from adding empty lines to the bottom of my buffers? 328 * Q3.2.6:: My tty supports color, but XEmacs doesn't use them.
229 * Q3.5.3:: How do I bind C-. and C-; to scroll one line up and down? 329 * Q3.2.7:: Can I have pixmap backgrounds in XEmacs?
230 * Q3.5.4:: Globally binding @kbd{Delete}? 330 * Q3.2.8:: How do I display non-ASCII characters?
231 * Q3.5.5:: Scrolling one line at a time. 331 * Q3.2.9:: Font selections in don't get saved after @code{Save Options}.
232 * Q3.5.6:: How to map @kbd{Help} key alone on Sun type4 keyboard? 332
233 * Q3.5.7:: How can you type in special characters in XEmacs? 333 3.3: The Menubar and Toolbar
234 * Q3.5.8:: [This question intentionally left blank] 334 * Q3.3.1:: How do I get rid of the menu (or menubar)?
235 * Q3.5.9:: How do I make the Delete key delete forward? 335 * Q3.3.2:: Can I customize the basic menubar?
236 * Q3.5.10:: Can I turn on @dfn{sticky} modifier keys? 336 * Q3.3.3:: How do I control how many buffers are listed in the menu @code{Buffers List}?
237 * Q3.5.11:: How do I map the arrow keys? 337 * Q3.3.4:: Resources like @code{Emacs*menubar*font} are not working?
238 338 * Q3.3.5:: How can I bind a key to a function to toggle the toolbar?
239 The Cursor: 339 * Q3.3.6:: @samp{Can't instantiate image error...} in toolbar
240 * Q3.6.1:: Is there a way to make the bar cursor thicker? 340
241 * 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? 341 3.4: Scrollbars and Scrolling
242 * Q3.6.3:: Can I make the cursor blink? 342 * Q3.4.1:: How can I disable the scrollbar?
243 343 * Q3.4.2:: How can one use resources to change scrollbar colors?
244 The Mouse and Highlighting: 344 * Q3.4.3:: Moving the scrollbar can move the point; can I disable this?
245 * Q3.7.1:: How can I turn off Mouse pasting? 345 * Q3.4.4:: Scrolling one line at a time.
246 * Q3.7.2:: How do I set control/meta/etc modifiers on mouse buttons? 346 * Q3.4.5:: How can I turn off automatic horizontal scrolling in specific modes?
247 * Q3.7.3:: Clicking the left button does not do anything in buffer list. 347 * Q3.4.6:: I find auto-show-mode disconcerting. How do I turn it off?
248 * Q3.7.4:: How can I get a list of buffers when I hit mouse button 3? 348
249 * Q3.7.5:: Why does cut-and-paste not work between XEmacs and a cmdtool? 349 3.5: The Modeline
250 * Q3.7.6:: How I can set XEmacs up so that it pastes where the text cursor is? 350 * Q3.5.1:: How can I make the modeline go away?
251 * Q3.7.7:: How do I select a rectangular region? 351 * Q3.5.2:: How do you have XEmacs display the line number in the modeline?
252 * Q3.7.8:: Why does @kbd{M-w} take so long? 352 * Q3.5.3:: How do I get XEmacs to put the time of day on the modeline?
253 353 * Q3.5.4:: How can one change the modeline color based on the mode used?
254 The Menubar and Toolbar: 354
255 * Q3.8.1:: How do I get rid of the menu (or menubar)? 355 3.6: The Cursor
256 * Q3.8.2:: Can I customize the basic menubar? 356 * Q3.6.1:: Is there a way to make the bar cursor thicker?
257 * Q3.8.3:: How do I control how many buffers are listed in the menu @code{Buffers} list? 357 * Q3.6.2:: Is there a way to get back the block cursor?
258 * Q3.8.4:: Resources like @code{Emacs*menubar*font} are not working? 358 * Q3.6.3:: Can I make the cursor blink?
259 * Q3.8.5:: How can I bind a key to a function to toggle the toolbar? 359
260 360 3.7: Text Selections
261 Scrollbars: 361 * Q3.7.1:: How do I select a rectangular region?
262 * Q3.9.1:: How can I disable the scrollbar? 362 * Q3.7.2:: How can I turn off or change highlighted selections?
263 * Q3.9.2:: How can one use resources to change scrollbar colors? 363 * Q3.7.3:: How do I get that typing on an active region removes it?
264 * Q3.9.3:: Moving the scrollbar can move the point; can I disable this? 364 * Q3.7.4:: Can I turn off the highlight during isearch?
265 * Q3.9.4:: How can I turn off automatic horizontal scrolling in specific modes? 365 * Q3.7.5:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
266 366 * Q3.7.6:: The region disappears when I hit the end of buffer while scrolling.
267 Text Selections: 367 * Q3.7.7:: Why is killing so slow?
268 * Q3.10.1:: How can I turn off or change highlighted selections? 368 * Q3.7.8:: Why does @kbd{M-w} take so long?
269 * Q3.10.2:: How do I get that typing on an active region removes it? 369
270 * Q3.10.3:: Can I turn off the highlight during isearch? 370 3.8: Buffers, Text Editing
271 * Q3.10.4:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? 371 * Q3.8.1:: Can I have the end of the buffer delimited in some way?
272 * Q3.10.5:: The region disappears when I hit the end of buffer while scrolling. 372 * Q3.8.2:: How do I insert today's date into a buffer?
273 * Q3.10.6:: Why is killing so slow? 373 * Q3.8.3:: How do I get a single minibuffer frame?
274 374 * Q3.8.4:: How can I enable auto-indent and/or Filladapt?
275 Major Subsystems 375 * Q3.8.5:: How can I get XEmacs to come up in text/auto-fill mode by default?
276 376
277 * Q4.0.1:: How do I set up VM to retrieve remote mail using POP? 377 3.9: Editing Source Code
278 * Q4.0.2:: How do I get VM to filter mail for me? 378 * Q3.9.1:: How can I do source code highlighting using font-lock?
279 * Q4.0.3:: How can I get VM to automatically check for new mail? 379 * Q3.9.2:: How do I get @samp{More} Syntax Highlighting on by default?
280 * Q4.0.4:: [This question intentionally left blank] 380 * Q3.9.3:: Where do I get the latest CC Mode?
281 * Q4.0.5:: How do I get my outgoing mail archived? 381 * Q3.9.4:: I do not like cc-mode. How do I use the old c-mode?
282 * 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"? 382 * Q3.9.5:: How do you make XEmacs indent CL if-clauses correctly?
283 * Q4.0.7:: Is there a mailing list or FAQ for VM? 383
284 * Q4.0.8:: Remote mail reading with VM. 384 4 Interfacing with the Operating System and External Devices
285 * Q4.0.9:: rmail or VM gets an error incorporating new mail. 385
286 * Q4.0.10:: How do I make VM stay in a single frame? 386 4.0: X Window System and Resources
287 * Q4.0.11:: How do I make VM or mh-e display graphical smilies? 387 * Q4.0.1:: Where is a list of X resources?
288 * Q4.0.12:: Customization of VM not covered in the manual or here. 388 * Q4.0.2:: How can I detect a color display?
289 389 * Q4.0.3:: How can I get the icon to just say @samp{XEmacs}?
290 Web browsing with W3: 390 * Q4.0.4:: How can I have the window title area display the full path?
291 * Q4.1.1:: What is W3? 391 * Q4.0.5:: @samp{xemacs -name junk} doesn't work?
292 * Q4.1.2:: How do I run W3 from behind a firewall? 392 * Q4.0.6:: @samp{-iconic} doesn't work.
293 * Q4.1.3:: Is it true that W3 supports style sheets and tables? 393
294 394 4.1: Microsoft Windows
295 Reading Netnews and Mail with Gnus: 395 * Q4.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
296 * Q4.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh! 396 * Q4.1.2:: How do I get Windows Explorer to associate a file type with XEmacs?
297 * Q4.2.2:: [This question intentionally left blank] 397
298 * Q4.2.3:: How do I make Gnus stay within a single frame? 398 4.2: Printing
299 * Q4.2.4:: How do I customize the From: line? 399 * Q4.2.1:: What do I need to change to make printing work?
300 400 * Q4.2.2:: How can I print WYSIWYG a font-locked buffer?
301 Other Mail & News: 401 * Q4.2.3:: Getting @kbd{M-x lpr} to work with postscript printer.
302 * Q4.3.1:: How can I read and/or compose MIME messages? 402 * Q4.2.4:: Can you print under MS Windows?
303 * Q4.3.2:: What is TM and where do I get it? 403
304 * Q4.3.3:: Why isn't this @code{movemail} program working? 404 4.3: Sound
305 * Q4.3.4:: Movemail is also distributed by Netscape? Can that cause problems? 405 * Q4.3.1:: How do I turn off the sound?
306 * Q4.3.5:: Where do I find pstogif (required by tm)? 406 * Q4.3.2:: How do I get funky sounds instead of a boring beep?
307 407 * Q4.3.3:: What's NAS, how do I get it?
308 Sparcworks, EOS, and WorkShop: 408 * Q4.3.4:: Sunsite sounds don't play.
309 * Q4.4.1:: What is SPARCworks, EOS, and WorkShop 409
310 * Q4.4.2:: How do I start the Sun Workshop support in XEmacs 21? 410 4.4: Running an Interior Shell, Invoking Subprocesses
311 411 * Q4.4.1:: What is an interior shell?
312 Energize: 412 * Q4.4.2:: How do I start up a second shell buffer?
313 * Q4.5.1:: What is/was Energize? 413 * Q4.4.3:: Telnet from shell filters too much
314 414 * Q4.4.4:: Strange things are happening in Shell Mode.
315 Infodock: 415 * Q4.4.5:: XEmacs complains "No such file or directory, diff"
316 * Q4.6.1:: What is Infodock? 416
317 417 4.5: Multiple Device Support
318 Other Unbundled Packages: 418 * Q4.5.1:: How do I open a frame on another screen of my multi-headed display?
319 * Q4.7.1:: What is AUC TeX? Where do you get it? 419 * Q4.5.2:: Can I really connect to a running XEmacs after calling up over a modem? How?
320 * Q4.7.2:: Are there any Emacs Lisp Spreadsheets? 420 * Q4.5.3:: How do I disable gnuserv from opening a new frame?
321 * Q4.7.3:: [This question intentionally left blank] 421 * Q4.5.4:: How do I start gnuserv so that each subsequent XEmacs is a client?
322 * Q4.7.4:: Problems installing AUC TeX 422 * Q4.5.5:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
323 * Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs? 423
324 * Q4.7.6:: Is there a MatLab mode? 424 4.6: TeX
325 * Q4.7.7:: Can I edit files on other hosts? 425 * Q4.6.1:: Is there something better than LaTeX mode?
326 426 * Q4.6.2:: What is AUCTeX? Where do you get it?
327 The Miscellaneous Stuff 427 * Q4.6.3:: Problems installing AUCTeX.
328 428 * Q4.6.4:: How do I turn off current chapter from AUCTeX modeline?
329 * Q5.0.1:: How can I do source code highlighting using font-lock? 429
330 * Q5.0.2:: I do not like cc-mode. How do I use the old c-mode? 430 4.7: Other Unbundled Packages
331 * Q5.0.3:: How do I get @samp{More} Syntax Highlighting on by default? 431 * Q4.7.1:: Is there a reason for an Emacs package not to be included in XEmacs?
332 * Q5.0.4:: How can I enable auto-indent and/or Filladapt? 432 * Q4.7.2:: Are there any Emacs Lisp Spreadsheets?
333 * Q5.0.5:: How can I get XEmacs to come up in text/auto-fill mode by default? 433 * Q4.7.3:: Is there a MatLab mode?
334 * Q5.0.6:: How do I start up a second shell buffer? 434
335 * Q5.0.7:: Telnet from shell filters too much. 435 4.8: Environments Built Around XEmacs
336 * Q5.0.8:: Why does edt emulation not work? 436 * Q4.8.1:: What are SPARCworks, EOS, and WorkShop?
337 * Q5.0.9:: How can I emulate VI and use it as my default mode? 437 * Q4.8.2:: How do I start the Sun Workshop support in XEmacs 21?
338 * Q5.0.10:: [This question intentionally left blank] 438 * Q4.8.3:: What is/was Energize?
339 * Q5.0.11:: [This question intentionally left blank] 439 * Q4.8.4:: What is Infodock?
340 * Q5.0.12:: How do I disable gnuserv from opening a new frame? 440
341 * Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client? 441 5 Connecting to the Internet
342 * Q5.0.14:: Strange things are happening in Shell Mode. 442
343 * Q5.0.15:: Where do I get the latest CC Mode? 443 5.0: General Mail and News
344 * Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off? 444 * Q5.0.1:: What are the various packages for reading mail?
345 * Q5.0.17:: How can I get two instances of info? 445 * Q5.0.2:: How can I send mail?
346 * Q5.0.18:: [This question intentionally left blank] 446 * Q5.0.3:: How do I get my outgoing mail archived?
347 * Q5.0.19:: Is there something better than LaTeX mode? 447 * Q5.0.4:: How can I read and/or compose MIME messages?
348 * Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? 448 * Q5.0.5:: How do I customize the From line?
349 449 * Q5.0.6:: How do I get my MUA to filter mail for me?
350 Emacs Lisp Programming Techniques: 450 * Q5.0.7:: Remote mail reading with an MUA.
351 * Q5.1.1:: The difference in key sequences between XEmacs and GNU Emacs? 451 * Q5.0.8:: An MUA gets an error incorporating new mail.
352 * Q5.1.2:: Can I generate "fake" keyboard events? 452 * Q5.0.9:: Why isn't @file{movemail} working?
353 * Q5.1.3:: Could you explain @code{read-kbd-macro} in more detail? 453 * Q5.0.10:: How do I make my MUA display graphical smilies?
354 * Q5.1.4:: What is the performance hit of @code{let}? 454 * Q5.0.11:: How can I get those oh-so-neat X-Face lines?
355 * Q5.1.5:: What is the recommended use of @code{setq}? 455
356 * Q5.1.6:: What is the typical misuse of @code{setq} ? 456 5.1: Reading Mail with VM
357 * Q5.1.7:: I like the @code{do} form of cl, does it slow things down? 457 * Q5.1.1:: How do I set up VM to retrieve mail from a remote site using POP?
358 * Q5.1.8:: I like recursion, does it slow things down? 458 * Q5.1.2:: How can I get VM to automatically check for new mail?
359 * Q5.1.9:: How do I put a glyph as annotation in a buffer? 459 * Q5.1.3:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
360 * Q5.1.10:: @code{map-extents} won't traverse all of my extents! 460 * Q5.1.4:: Is there a mailing list or FAQ for VM?
361 * Q5.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time? 461 * Q5.1.5:: How do I make VM stay in a single frame?
362 462 * Q5.1.6:: Customization of VM not covered in the manual, or here.
363 Sound: 463
364 * Q5.2.1:: How do I turn off the sound? 464 5.2: Reading Netnews and Mail with Gnus
365 * Q5.2.2:: How do I get funky sounds instead of a boring beep? 465 * Q5.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
366 * Q5.2.3:: What's NAS, how do I get it? 466 * Q5.2.2:: How do I make Gnus stay within a single frame?
367 * Q5.2.4:: Sunsite sounds don't play. 467
368 468 5.3: FTP Access
369 Miscellaneous: 469 * Q5.3.1:: Can I edit files on other hosts?
370 * Q5.3.1:: How do you make XEmacs indent CL if-clauses correctly? 470 * Q5.3.2:: What is EFS?
371 * Q5.3.2:: [This question intentionally left blank] 471
372 * Q5.3.3:: How can I print WYSIWYG a font-locked buffer? 472 5.4: Web Browsing with W3
373 * Q5.3.4:: Getting @kbd{M-x lpr} to work with postscript printer. 473 * Q5.4.1:: What is W3?
374 * Q5.3.5:: How do I specify the paths that XEmacs uses for finding files? 474 * Q5.4.2:: How do I run W3 from behind a firewall?
375 * Q5.3.6:: [This question intentionally left blank] 475 * Q5.4.3:: Is it true that W3 supports style sheets and tables?
376 * Q5.3.7:: Can I have the end of the buffer delimited in some way? 476
377 * Q5.3.8:: How do I insert today's date into a buffer? 477 6 Advanced Customization Using XEmacs Lisp
378 * Q5.3.9:: Are only certain syntactic character classes available for abbrevs? 478
379 * Q5.3.10:: How can I get those oh-so-neat X-Face lines? 479 6.0: Online Help
380 * Q5.3.11:: How do I add new Info directories? 480 * Q6.0.1:: How can I get two instances of info?
381 * Q5.3.12:: What do I need to change to make printing work? 481 * Q6.0.2:: How do I add new Info directories?
382 482
383 Mathematics: 483 6.1: Emacs Lisp and @file{init.el}
384 * Q5.4.1:: What are bignums, ratios, and bigfloats in Lisp? 484 * Q6.1.1:: What version of Emacs am I running?
385 * Q5.4.2:: XEmacs segfaults when I use very big numbers! 485 * Q6.1.2:: How can I evaluate Emacs-Lisp expressions?
386 * Q5.4.3:: Bignums are really slow! 486 * Q6.1.3:: @code{(setq tab-width 6)} behaves oddly.
387 * Q5.4.4:: Equal bignums don't compare as equal! What's going on? 487 * Q6.1.4:: How can I add directories to the @code{load-path}?
388 488 * Q6.1.5:: How to check if a lisp function is defined?
389 XEmacs on MS Windows 489 * Q6.1.6:: Can I force the output of @code{(face-list)} to a buffer?
390 490
391 General Info: 491 6.2: Emacs Lisp Programming Techniques
392 * Q6.0.1:: What is the status of the XEmacs port to Windows? 492 * Q6.2.1:: What is the difference in key sequences between XEmacs and GNU Emacs?
393 * Q6.0.2:: What flavors of MS Windows are supported? The list name implies NT only. 493 * Q6.2.2:: Can I generate "fake" keyboard events?
394 * Q6.0.3:: Are binaries available? 494 * Q6.2.3:: Could you explain @code{read-kbd-macro} in more detail?
395 * Q6.0.4:: Can I build XEmacs on MS Windows with X support? Do I need to? 495 * Q6.2.4:: What is the performance hit of @code{let}?
396 * Q6.0.5:: I'd like to help out. What do I do? 496 * Q6.2.5:: What is the recommended use of @code{setq}?
397 * Q6.0.6:: What are Cygwin and MinGW, and do I need them to run XEmacs? 497 * Q6.2.6:: What is the typical misuse of @code{setq}?
398 * Q6.0.7:: What exactly are all the different ways to build XEmacs under Windows? 498 * Q6.2.7:: I like the @code{do} form of cl, does it slow things down?
399 499 * Q6.2.8:: I like recursion, does it slow things down?
400 Building XEmacs on MS Windows: 500 * Q6.2.9:: How do I put a glyph as annotation in a buffer?
401 * Q6.1.1:: What compiler/libraries do I need to compile XEmacs? 501 * Q6.2.10:: @code{map-extents} won't traverse all of my extents!
402 * Q6.1.2:: How do I compile the native port? 502 * Q6.2.11:: My elisp program is horribly slow. Is there
403 * Q6.1.3:: What do I need for Cygwin? 503
404 * Q6.1.4:: How do I compile under Cygwin? 504 6.3: Mathematics
405 * Q6.1.5:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? 505 * Q6.3.1:: What are bignums, ratios, and bigfloats in Lisp?
406 * Q6.1.6:: I decided to run with X. Where do I get an X server? 506 * Q6.3.2:: XEmacs segfaults when I use very big numbers!
407 * Q6.1.7:: How do I compile with X support? 507 * Q6.3.3:: Bignums are really slow!
408 508 * Q6.3.4:: Equal bignums don't compare as equal! What gives?
409 Customization and User Interface: 509
410 * Q6.2.1:: How does the port cope with differences in the Windows user interface? 510 7 What the Future Holds
411 * Q6.2.2:: How do I change fonts in XEmacs on MS Windows? 511
412 * Q6.2.3:: Where do I put my @file{init.el}/@file{.emacs} file? 512 7.0: Changes
413 * Q6.2.4:: How do I get Windows Explorer to associate a file type with XEmacs? 513 * Q7.0.1:: What new features will be in XEmacs soon?
414 * Q6.2.5:: Is it possible to print from XEmacs? 514 * Q7.0.2:: What's new in XEmacs 21.4?
415 515 * Q7.0.3:: What's new in XEmacs 21.1?
416 Miscellaneous: 516 * Q7.0.4:: What's new in XEmacs 20.4?
417 * Q6.3.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? 517 * Q7.0.5:: What's new in XEmacs 20.3?
418 * Q6.3.2:: What are the differences between the various MS Windows emacsen? 518 * Q7.0.6:: What's new in XEmacs 20.2?
419 * Q6.3.3:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? 519
420 * Q6.3.4:: What is the porting team doing at the moment? 520 8 New information about old XEmacsen
421 521
422 Troubleshooting: 522 8.0: XEmacs 21.1
423 * Q6.4.1:: XEmacs won't start on Windows. 523 * Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1.
424 * Q6.4.2:: Why do I get a blank toolbar on Windows 95?
425 * Q6.4.3:: XEmacs complains "No such file or directory, diff"
426
427 What the Future Holds
428
429 * Q7.0.1:: What new features will be in XEmacs soon?
430 * Q7.0.2:: What's new in XEmacs 21.4?
431 * Q7.0.3:: What's new in XEmacs 21.1?
432 * Q7.0.4:: What's new in XEmacs 20.4?
433 * Q7.0.5:: What's new in XEmacs 20.3?
434 * Q7.0.6:: What's new in XEmacs 20.2?
435
436 New information about old XEmacsen.
437
438 XEmacs 21.1:
439 * Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1.
440 524
441 @end detailmenu 525 @end detailmenu
442 @end menu 526 @end menu
443 527
444 @node Introduction, Installation, Top, Top 528 @node Introduction, Installation, Top, Top
449 be complete. Instead it is aimed at the person who is either 533 be complete. Instead it is aimed at the person who is either
450 considering XEmacs for their own use, or has just obtained it and is 534 considering XEmacs for their own use, or has just obtained it and is
451 wondering what to do next. It is also useful as a reference to 535 wondering what to do next. It is also useful as a reference to
452 available resources. 536 available resources.
453 537
454 The previous maintainer of the FAQ was @email{rossini@@biostat.washington.edu, 538 The previous maintainer of the FAQ was
455 Anthony Rossini}, who started it, after getting tired of hearing JWZ 539 @email{rossini@@biostat.washington.edu, Anthony Rossini}, who started
456 complain about repeatedly having to answer questions. 540 it, after getting tired of hearing JWZ complain about repeatedly
457 @email{ben@@xemacs.org, Ben Wing} and @email{cthomp@@xemacs.org, Chuck 541 having to answer questions. @email{ben@@xemacs.org, Ben Wing} then
458 Thompson}, the principal authors of XEmacs, then took over and Ben did 542 took over and did a massive update reorganizing the whole thing. At
459 a massive update reorganizing the whole thing. At which point Anthony 543 this point Anthony took back over, but then had to give it up again.
460 took back over, but then had to give it up again. Some of the other 544 Some of the other contributors to this FAQ are listed later in this
461 contributors to this FAQ are listed later in this document. 545 document.
462 546
463 The previous version was converted to hypertext format, and edited by 547 The previous version was converted to hypertext format, and edited by
464 @email{steve@@xemacs.org, Steven L. Baur}. It was converted back to 548 @email{steve@@xemacs.org, Steven L. Baur}. It was converted back to
465 texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}. The FAQ was then 549 texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}. The FAQ was then
466 maintained by @email{andreas@@sccon.com, Andreas Kaempf}, who passed it 550 maintained by @email{andreas@@sccon.com, Andreas Kaempf}, who passed it
467 on to ChristianNyb@o{}. 551 on to ChristianNyb@o{}, and then to @email{wambold@@xemacs.org,Sandra Wambold}.
552
553 The current version of the FAQ has been heavily redone by
554 @email{ben@@xemacs.org, Ben Wing}.
468 555
469 If you notice any errors or items which should be added or amended to 556 If you notice any errors or items which should be added or amended to
470 this FAQ please send email to @email{faq@@xemacs.org, Sandra 557 this FAQ please send email to @email{xemacs-beta@@xemacs.org}.
471 Wambold}. Include @samp{XEmacs FAQ} on the Subject: line. 558 Include @samp{XEmacs FAQ} on the Subject: line.
472 559
473 @menu 560 @menu
474 Introduction: 561 1.0: Introduction
475 * Q1.0.1:: What is XEmacs? 562 * Q1.0.1:: What is XEmacs?
476 * Q1.0.2:: What is the current version of XEmacs? 563 * Q1.0.2:: What is the current version of XEmacs?
477 * Q1.0.3:: Where can I find it? 564 * Q1.0.3:: Where can I find it?
478 * Q1.0.4:: Why Another Version of Emacs? 565 * Q1.0.4:: Are binaries available?
479 * Q1.0.5:: Why Haven't XEmacs and GNU Emacs Merged? 566 * Q1.0.5:: How does XEmacs differ from GNU Emacs?
480 * Q1.0.6:: Where can I get help? 567 * Q1.0.6:: How much does XEmacs differ?
481 * Q1.0.7:: Where are the mailing lists archived? 568 * Q1.0.7:: Is XEmacs "GNU"?
482 * Q1.0.8:: How do you pronounce XEmacs? 569 * Q1.0.8:: What is the correct way to refer to XEmacs and GNU Emacs?
483 * Q1.0.9:: What does XEmacs look like? 570 * Q1.0.9:: Why haven't XEmacs and GNU Emacs merged?
484 * Q1.0.10:: Is there a port of XEmacs to Microsoft ('95 or NT)? 571 * Q1.0.10:: Where can I get help?
485 * Q1.0.11:: Is there a port of XEmacs to the Macintosh? 572 * Q1.0.11:: Where are the mailing lists archived?
486 * Q1.0.12:: Is there a port of XEmacs to NextStep? 573 * Q1.0.12:: How do you pronounce XEmacs?
487 * Q1.0.13:: Is there a port of XEmacs to OS/2? 574 * Q1.0.13:: What does XEmacs look like?
488 * Q1.0.14:: Where can I get a printed copy of the XEmacs users manual? 575 * Q1.0.14:: Where can I obtain a printed copy of the XEmacs User's Manual?
489 576
490 Policies: 577 1.1: Versions for Different Operating Systems
491 * Q1.1.1:: What is the FAQ editorial policy? 578 * Q1.1.1:: Do I need X11 to run XEmacs?
492 * Q1.1.2:: How do I become a Beta Tester? 579 * Q1.1.2:: Is there a port of XEmacs to Microsoft Windows?
493 * Q1.1.3:: How do I contribute to XEmacs itself? 580 * Q1.1.3:: Can I build XEmacs on MS Windows with X support? Do I need to?
494 581 * Q1.1.4:: What are Cygwin and MinGW, and do I need them to run XEmacs?
495 Credits: 582 * Q1.1.5:: What are the differences between the various MS Windows emacsen?
496 * Q1.2.1:: Who wrote XEmacs? 583 * Q1.1.6:: Is there a port of XEmacs to the Macintosh?
497 * Q1.2.2:: Who contributed to this version of the FAQ? 584 * Q1.1.7:: Is there a port of XEmacs to NextStep?
498 * Q1.2.3:: Who contributed to the FAQ in the past? 585 * Q1.1.8:: Is there a port of XEmacs to OS/2?
499 586 * Q1.1.9:: How does the port cope with differences in the Windows user interface?
500 Internationalization: 587
501 * Q1.3.1:: What is the status of internationalization support aka MULE (including Asian language support? 588 1.2: Policies
502 * Q1.3.2:: How can I help with internationalization? 589 * Q1.2.1:: What is the FAQ editorial policy?
503 * Q1.3.3:: How do I type non-ASCII characters? 590 * Q1.2.2:: How do I become a beta tester?
504 * Q1.3.4:: Can XEmacs messages come out in a different language? 591 * Q1.2.3:: How do I contribute to XEmacs itself?
505 * Q1.3.5:: Please explain the various input methods in MULE/XEmacs 592
506 * Q1.3.6:: How do I portably code for MULE/XEmacs? 593 1.3: Credits
507 * Q1.3.7:: How about Cyrillic Modes? 594 * Q1.3.1:: Who wrote XEmacs?
508 * Q1.3.8:: Does XEmacs support Unicode? 595 * Q1.3.2:: Who contributed to this version of the FAQ?
509 * Q1.3.9:: How does XEmacs display Unicode? 596 * Q1.3.3:: Who contributed to the FAQ in the past?
510 597
511 Getting Started: 598 1.4: Internationalization
512 * Q1.4.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one? 599 * Q1.4.1:: What is the status of internationalization support aka MULE (including Asian language support?
513 * Q1.4.2:: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs? 600 * Q1.4.2:: How can I help with internationalization?
514 * Q1.4.3:: Any good XEmacs tutorials around? 601 * Q1.4.3:: How do I type non-ASCII characters?
515 * Q1.4.4:: May I see an example of a useful XEmacs Lisp function? 602 * Q1.4.4:: Can XEmacs messages come out in a different language?
516 * Q1.4.5:: And how do I bind it to a key? 603 * Q1.4.5:: Please explain the various input methods in MULE/XEmacs
517 * Q1.4.6:: What's the difference between a macro and a function? 604 * Q1.4.6:: How do I portably code for MULE/XEmacs?
605 * Q1.4.7:: How about Cyrillic modes?
606 * Q1.4.8:: Does XEmacs support Unicode?
607 * Q1.4.9:: How does XEmacs display Unicode?
608
609 1.5: Getting Started
610 * Q1.5.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one?
611 * Q1.5.2:: Where do I put my @file{init.el} file?
612 * Q1.5.3:: Can I use the same @file{init.el} with the other Emacs?
613 * Q1.5.4:: Any good XEmacs tutorials around?
614 * Q1.5.5:: May I see an example of a useful XEmacs Lisp function?
615 * Q1.5.6:: And how do I bind it to a key?
616 * Q1.5.7:: What's the difference between a macro and a function?
617 * Q1.5.8:: What is @code{Custom}?
518 @end menu 618 @end menu
519 619
620 @unnumberedsec 1.0: Introduction
621
520 @node Q1.0.1, Q1.0.2, Introduction, Introduction 622 @node Q1.0.1, Q1.0.2, Introduction, Introduction
521 @unnumberedsec 1.0: Introduction
522 @unnumberedsubsec Q1.0.1: What is XEmacs? 623 @unnumberedsubsec Q1.0.1: What is XEmacs?
523 624
524
525 XEmacs is a powerful, highly customizable open source text editor and 625 XEmacs is a powerful, highly customizable open source text editor and
526 application development system, with full GUI support. It is protected 626 application development system, with full GUI support. It is
527 under the GNU Public License and related to other versions of Emacs, in 627 protected under the GNU Public License and related to other versions
528 particular GNU Emacs. Its emphasis is on modern graphical user 628 of Emacs, in particular GNU Emacs. Its emphasis is on modern
529 interface support and an open software development model, similar to 629 graphical user interface support and an open software development
530 Linux. XEmacs has an active development community numbering in the 630 model, similar to Linux. XEmacs has an active development community
531 hundreds (and thousands of active beta testers on top of this), and runs 631 numbering in the hundreds (and thousands of active beta testers on top
532 on all versions of MS Windows, on Linux, and on nearly every other 632 of this), and runs on all versions of MS Windows, on Mac OS X, on
533 version of Unix in existence. Support for XEmacs has been supplied by 633 Linux, and on nearly every other version of Unix in existence.
534 Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical 634 Support for XEmacs has been supplied by Sun Microsystems, University
535 Laboratory, Amdahl Corporation, BeOpen, and others, as well as the 635 of Illinois, Lucid, ETL/Electrotechnical Laboratory, Amdahl
536 unpaid time of a great number of individual developers. 636 Corporation, BeOpen, and others, as well as the unpaid time of a great
637 number of individual developers.
537 638
538 @node Q1.0.2, Q1.0.3, Q1.0.1, Introduction 639 @node Q1.0.2, Q1.0.3, Q1.0.1, Introduction
539 @unnumberedsubsec Q1.0.2: What is the current version of XEmacs? 640 @unnumberedsubsec Q1.0.2: What is the current version of XEmacs?
540 641
541 XEmacs versions 21.1.* are releases made from the current stable 642 XEmacs versions 21.4.* are releases made from the current stable
542 sources. XEmacs versions 21.2.* are releases made from the development 643 sources. XEmacs versions 21.5.* (which will be released as 22.0) are
543 sources. Check at @uref{http://www.xemacs.org} for the current minor 644 releases made from the development sources. Check at
544 version. 645 @uref{http://www.xemacs.org} for the current minor version. XEmacs
545 646 versions 21.1.* were the previous stable releases, now retired.
546 XEmacs 19.16 was the last release of v19, released in November, 1997, 647
547 which was also the last version without international language support. 648 XEmacs 20.4, released in February 1998, was the last release of v20.
649
650 XEmacs 19.16, released in November, 1997. was the last release of v19,
651 and was also the last version without international language support.
548 652
549 @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction 653 @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction
550 @unnumberedsubsec Q1.0.3: Where can I find it? 654 @unnumberedsubsec Q1.0.3: Where can I find it?
551 655
552 The canonical source and binaries can be found via anonymous FTP at: 656 The canonical source and binaries can be found via anonymous FTP at:
554 @example 658 @example
555 @uref{ftp://ftp.xemacs.org/pub/xemacs/} 659 @uref{ftp://ftp.xemacs.org/pub/xemacs/}
556 @end example 660 @end example
557 661
558 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction 662 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction
559 @unnumberedsubsec Q1.0.4: Why Another Version of Emacs? 663 @unnumberedsubsec Q1.0.4: Are binaries available?
664
665 MS Windows binaries are available at
666 @uref{http://www.xemacs.org/Download/win32/} for the native versions
667 of 21.4 and 21.1. Cygwin binaries are now available as part of the
668 standard Cygwin installation process. XEmacs also comes pre-built as
669 part of many Linux distributions, such as Red Hat and SuSE.
670
671 Otherwise, you will need to build XEmacs yourself or get your system
672 administrator to do it. Generally, this is not a difficult process
673 under Unix and Mac OS X, as XEmacs has been tested under all of the
674 common Unix versions and under Mac OS X and comes with an extensive
675 configure script that is able to automatically detect most aspects of
676 the configuration of your particular system.
677
678 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction
679 @unnumberedsubsec Q1.0.5: How does XEmacs differ from GNU Emacs?
560 680
561 For a detailed description of the differences between GNU Emacs and 681 For a detailed description of the differences between GNU Emacs and
562 XEmacs and a detailed history of XEmacs, check out the 682 XEmacs and a detailed history of XEmacs, check out the
563 @example 683 @example
564 @uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file} 684 @uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file}
565 @end example 685 @end example
566 686
567 However, here is a list of some of the reasons why we think you might 687 @table @strong
568 consider using it: 688 @item User-Visible Editing Features
689 XEmacs in general tries hard to conform to exist user-interface
690 standards, and to work "out-of-the-box" without the need for obscure
691 customization changes. GNU Emacs, particularly version 21, has gotten
692 better about this (in many cases by copying the XEmacs behavior!), but
693 still has some weirdnesses. For example, the standard method of
694 selecting text using the Shift key works out-of-the-box in XEmacs.
695
696 XEmacs has a built-in toolbar. Four toolbars can actually be configured
697 simultaneously: top, bottom, left, and right toolbars.
698
699 XEmacs has vertical and horizontal scrollbars. Unlike in GNU Emacs 19
700 (which provides a primitive form of vertical scrollbar), these are true
701 toolkit scrollbars. A look-alike Motif scrollbar is provided for those
702 who don't have Motif. (Even for those who do, the look-alike may be
703 preferable as it is faster.)
704
705 XEmacs has buffer tabs along the top of the frame (although the
706 position can be changed) that make it very easy to switch buffers.
707
708 The menubar under XEmacs is better-designed, with more thought put into
709 it.
710
711 XEmacs can ask questions using popup dialog boxes. Any command executed
712 from a menu will ask yes/no questions with dialog boxes, while commands
713 executed via the keyboard will use the minibuffer.
714
715 XEmacs under MS Windows provides uses the standard file-dialog box for
716 opening and saving files. Standard menu-accelerator behavior can easily
717 be enabled using the Options menu, and integrates well into the existing
718 keymap.
719
720 XEmacs has (still experimental) support for widgets of various sorts --
721 buttons, text boxes, sliders, progress bars, etc. A progress bar is
722 used in font lock to show the progress.
723
724 Experimental support for drag-and-drop protocols is provided from
725 XEmacs 21.
726
727 @item General Platform Support
728 If you're running on a machine with audio hardware, you can specify
729 sound files for XEmacs to play instead of the default X beep. See the
730 documentation of the function load-sound-file and the variable
731 sound-alist. XEmacs also supports the network sound protocols NAS and
732 EsounD.
733
734 XEmacs 21 supports database protocols with LISP bindings, currently
735 including Berkeley DB, LDAP, and PostgreSQL (21.2 only).
736
737 XEmacs 20 and 21 support the Canna, Wnn, and SJ3 Japanese input method
738 servers directly, as well as through the X Input Method (XIM)
739 protocol. GNU Emacs 20 supports only the XIM protocol. Both Emacsen
740 support the Quail family of input methods (implemented in LISP) for many
741 languages.
742
743 XEmacs provides support for ToolTalk on systems that have
744 it.
745
746 @item Packaged LISP Libraries
747 Many more packages are provided standard with XEmacs than with GNU Emacs
748 19 or 20.
749
750 XEmacs 21 supports an integrated package management system which uses
751 EFS to download, then automatically install prebuilt LISP
752 libraries. This allows XEmacs users much more straightforward access to
753 the "latest and greatest" version of any given library.
754
755 We are working on a standard method for enabling, disabling and
756 otherwise controlling packages, which should make them very easy to use.
757
758 @item LISP Programming
759 From XEmacs 20 on, characters are a separate type. Characters can be
760 converted to integers (and many integers can be converted to
761 characters), but characters are not integers. GNU Emacs 19, XEmacs 19,
762 Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and GNU Emacs
763 20 (incorporating Mule 3 and later Mule 4) represent them as integers.
764
765 From XEmacs 20 on, the buffer is treated as an array of characters, and
766 the representation of buffer text is not exposed to LISP. The GNU Emacs
767 20 functions like buffer-as-multibyte are not supported.
768
769 In XEmacs, events are first-class objects. GNU Emacs 19 represents them
770 as integers, which obscures the differences between a key gesture and
771 the ancient ASCII code used to represent a particular overlapping subset
772 of them.
773
774 In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19
775 represents them as complicated combinations of association lists and
776 vectors. If you use the advertised functional interface to manipulation
777 of keymaps, the same code will work in XEmacs, GNU Emacs 18, and GNU
778 Emacs 19; if your code depends on the underlying implementation of
779 keymaps, it will not.
780
781 XEmacs uses "extents" to represent all non-textual aspects of buffers;
782 GNU Emacs 19 uses two distinct objects, "text properties" and
783 "overlays", which divide up the functionality between them. Extents are
784 a superset of the union of the functionality of the two GNU Emacs data
785 types. The full GNU Emacs 19 interface to text properties and overlays
786 is supported in XEmacs (with extents being the underlying
787 representation).
788
789 Extents can be made to be copied into strings, and then restored, by
790 kill and yank. Thus, one can specify this behavior on either "extents"
791 or "text properties", whereas in GNU Emacs 19 text properties always
792 have this behavior and overlays never do.
793
794 @item Window System Programming Interface
795 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which makes
796 it be a more well-behaved X citizen (and also improves portability). A
797 result of this is that it is possible to include other Xt "Widgets" in
798 the XEmacs window. Also, XEmacs understands the standard Xt command-line
799 arguments.
800
801 XEmacs supports Motif applications, generic Xt (e.g. Athena)
802 applications, and raw Xlib applications. An XEmacs variant which
803 supports GTK+ is available (integration as an option in the XEmacs
804 mainline is planned for XEmacs 22), although code to take advantage of
805 the support is as yet scarce.
806
807 An XEmacs frame can be placed within an "external client widget" managed
808 by another application. This allows an application to use an XEmacs
809 frame as its text pane rather than the standard Text widget that is
810 provided with Motif or Athena.
811
812 @item Community Participation
813 Starting with XEmacs 20, joining the XEmacs development team is
814 simple. Mail to @email{xemacs-beta@@xemacs.org, XEmacs Developers}, and
815 you're in! (If you want to be, of course. You're also welcome to just
816 post development-related questions and bug reports.) The GNU Emacs
817 development team and internal mailing lists are still by invitation
818 only.
819
820 The "bleeding edge" of mainline XEmacs development is available by
821 anonymous CVS as are some subsidiary branches (check out the xemacs-gtk
822 module for the latest in GUI features!)
823
824 Development and maintenance of Lisp libraries is separated from the core
825 editor development at a fairly low level. This provides better
826 modularization and a better division of responsibility between external
827 library maintainers and the XEmacs core development team. Even for
828 packages the size of Gnus, XEmacs users normally have access to a
829 pre-built version within a few weeks of a major release, and minor
830 updates often within days.
831
832 CVS commit authority is broadly dispersed. Recognized maintainers of
833 LISP libraries who are willing to maintain XEmacs packaged versions
834 automatically qualify for CVS accounts for their packages.
835 @end table
836
837 @node Q1.0.6, Q1.0.7, Q1.0.5, Introduction
838 @unnumberedsubsec Q1.0.6: How much does XEmacs differ?
839
840 RMS has asserted at times that XEmacs is merely a "patch" on top of
841 GNU Emacs (@pxref{Q1.0.7}). In fact, probably not more than 5% of the
842 code, if that, remains unchanged, and nearly 14 years of work has gone
843 into XEmacs at this point. (GNU Emacs itself is only than 20 years
844 old, and thus XEmacs has existed as a separate product for over 2/3 of
845 the lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has
846 perhaps 65,000 more lines of C code than GNU Emacs 21.2.
847
848 However, the XEmacs developers strive to keep their code compatible with
849 GNU Emacs, especially on the Lisp level. Much effort goes into
850 "synching" the XEmacs Elisp code with recent GNU Emacs releases so as to
851 benefit from GNU Emacs development work. (In contrast, almost no code
852 from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs
853 developers are instructed by RMS not to even look at XEmacs source code!
854 This stems from self-imposed licensing restrictions on the part of GNU
855 Emacs -- and almost certainly out of hostility, as well.)
856
857 @node Q1.0.7, Q1.0.8, Q1.0.6, Introduction
858 @unnumberedsubsec Q1.0.7: Is XEmacs "GNU"?
859
860 RMS insists on the term "GNU XEmacs" and maintains that
861
862 @quotation
863 XEmacs is GNU software because it's a modified version of a
864 GNU program. And it is GNU software because the FSF is the copyright
865 holder for most of it, and therefore the legal responsibility for
866 protecting its free status falls on us whether we want it or not. This
867 is why the term "GNU XEmacs" is legitimate.
868 @end quotation
869
870 In fact, FSF is @emph{not} the copyright holder for most of the code,
871 as very little unmodified FSF code remains (@pxref{Q1.0.6}).
872
873 Furthermore, RMS's assertion that XEmacs is "GNU" seems rather bizarre
874 to the XEmacs developers given RMS's hostility and general lack of
875 interest in cooperation. "GNU" software in general is part of the GNU
876 Project, is distributed by it on their FTP site, and receives support
877 (or at least cooperation), as well as implicit endorsement, from it.
878 The GNU Project, however, has never supported XEmacs and never
879 distributed XEmacs, and RMS's hostility is the farthest thing possible
880 from an endorsement. In fact, the GNU Project distributes a number of
881 non-GNU software projects on the FSF web site, but again XEmacs is not
882 one of them.
883
884 @node Q1.0.8, Q1.0.9, Q1.0.7, Introduction
885 @unnumberedsubsec Q1.0.8: What is the correct way to refer to XEmacs and GNU Emacs?
886
887 Unfortunately even the naming of these two applications has become
888 politicized. Much of this stems from RMS, who has a history of
889 politicizing similar issues. (Compare the controversy over "Lignux"
890 and "GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU
891 Emacs" be used, which are neutral and acceptable to most people. RMS,
892 however, is not willing to accept these terms. He insists that, if
893 his product is called "GNU Emacs", then ours must be called "GNU
894 XEmacs". (For our opinion of this term, @xref{Q1.0.7}.) On the other
895 hand, if our product is to be called "XEmacs", as we prefer, then his
896 product must simply be called "Emacs". The intent of this seems
897 clear: RMS wants to make sure the names reflect his view that his
898 version is the "real" Emacs and ours is merely a derivative,
899 second-class product (@pxref{Q1.0.6}).
900
901 The XEmacs developers hope that you will use the neutral terms
902 "XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on
903 the other hand, is a generic term for a class of programmable text
904 editors with a similar look-and-feel, and usually a Lisp-based
905 extension language. These trace themselves back to early editors such
906 as EINE, ZWEI, ZMACS and Multics Emacs. @xref{A History of Emacs,,,
907 internals, XEmacs Internals Manual}.
908
909 We also call upon RMS, in the spirit of furthering cooperation, to
910 stop politicizing this issue and use the neutral terms "XEmacs" and
911 "GNU Emacs". We have already acceded to RMS' wishes in this respect,
912 and we expect him to do the same. (In the past, the XEmacs developers
913 often used the terms "FSF Emacs" or "FSFmacs" or "RMSmacs" in
914 reference to GNU Emacs; these terms were apparently modeled after RMS'
915 own usage of "Gosmacs" and "Gosling Emacs" in reference to Unipress
916 Emacs, produced by James Gosling. RMS, however, considers such terms
917 to be insulting, so we refrain from using them as much as possible in
918 preference to GNU Emacs.)
919
920 @node Q1.0.9, Q1.0.10, Q1.0.8, Introduction
921 @unnumberedsubsec Q1.0.9: Why haven't XEmacs and GNU Emacs merged?
922
923 There are currently irreconcilable differences in the views about
924 technical, programming, design, organizational and legal matters
925 between Richard Stallman (RMS), the author and leader of the GNU Emacs
926 project, and the XEmacs development team which provide little hope for
927 a merge to take place in the short-term future. There have been
928 repeated attempts at merging by all of the major XEmacs developers,
929 starting from the early days of Lucid Emacs (in 1991), but they have
930 all failed. RMS has very strong views about how GNU Emacs should be
931 structured and how his project should be run, and during the repeated
932 merge efforts has never demonstrated any realistic interest in
933 sufficiently compromising or ceding control to allow a middle ground
934 to be found. The basic problem seems to be the very different goals
935 of RMS and the XEmacs project. The primary goals of the XEmacs
936 project are technical and organizational -- we want to create the best
937 editor possible, and to make it as easy as possible for people around
938 the world to contribute. The primary goals of RMS, on the other hand,
939 are political, and GNU Emacs, and any potential merge efforts with
940 XEmacs, are strictly subservient to these goals. In fact, in many
941 ways RMS sees GNU Emacs as the "poster child" of his aims, the one
942 program in the GNU project that above all others must set an example
943 to the world. (This has to do with the fact that GNU Emacs was the
944 first program in the GNU project, and the only one that he is still
945 personally involved with on a day-to-day basis.) Given his goals, his
946 position is completely reasonable -- but unfortunately, makes any
947 merge impossible.
948
949 From the XEmacs perspective, the most intractable issues appear to be
950 legal and organizational, specifically:
569 951
570 @itemize @bullet 952 @itemize @bullet
571 @item 953 @item
572 It looks nicer. 954 RMS requires "legal papers" to be signed for all contributions of code
573 955 to GNU Emacs over 10 lines or so, transferring the copyright and all
574 @item 956 legal rights to the code to the Free Software Foundation. XEmacs does
575 The XEmacs maintainers are generally more receptive to suggestions than 957 not and has never required this, since it has the practical effect of
576 the GNU Emacs maintainers. 958 discouraging individual and in particular corporate contributions --
577 959 corporations will almost never sign away their legal rights to code
578 @item 960 since it makes it impossible to reuse the code in any product that
579 Many more bundled packages than GNU Emacs. 961 whose license is not compatible with the GNU General Public License.
580 962 Since RMS has shown no inclination to compromise on this issue, a
581 @item 963 merge would require that most of the existing XEmacs code would need
582 Binaries are available for many common operating systems. 964 to be thrown away and rewritten -- something the XEmacs developers are
583 965 understandably reluctant to do.
584 @item 966
585 Face support on TTY's. 967 @item
586 968 A repeated stumbling block in the merge talks has been the issue of
587 @item 969 organizational control over the resulting product. RMS has made it
588 A built-in toolbar. 970 clear that he intends to have final say over design issues in a merged
589 971 Emacs. Unfortunately, RMS and the XEmacs developers have repeatedly
590 @item 972 clashed over design decisions, and RMS' insistence on getting his way
591 Better Motif compliance. 973 in such disagreements was the very reason for the split in the first
592 974 place. This same issue has come up again and again in merge talks and
593 @item 975 we have never been able to come to a satisfactory resolution. To the
594 Some internationalization support (including full MULE support, if 976 extent that RMS is willing to compromise at all, it appears to be of a
595 compiled with it). 977 purely political rather than technical nature -- "If we support this
596 978 feature of yours, we also get to support this other feature of mine."
597 @item 979 The XEmacs developers cannot see how such a process would lead to
598 Variable-width fonts. 980 anything but a mess of incompatible things hodgepodged together.
599 981
600 @item 982 @item
601 Variable-height lines. 983 Because of the years of separate development, distinct and
602 984 incompatible interfaces have developed and merging would be extremely
603 @item 985 difficult even with the above non-technical issues resolved. The
604 Marginal annotations. 986 problem has been exacerbated by the issue of legal papers -- because
605 987 XEmacs code is not "kosher" from RMS' perspective, he discourages
606 @item 988 developers from even looking at it out of legal concerns. Although it
607 ToolTalk support. 989 is still possible to read the XEmacs documentation and run the
608 990 program, the practical effect of this prohibition has been to strongly
609 @item 991 discourage code-sharing and cooperative development -- although a
610 XEmacs can be used as an Xt widget, and can be embedded within another 992 great deal of GNU Emacs code has been incorporated into XEmacs,
611 application. 993 practically none has gone the other direction.
612
613 @item
614 Horizontal and vertical scrollbars (using real toolkit scrollbars).
615
616 @item
617 Better APIs (and performance) for attaching fonts, colors, and other
618 properties to text.
619
620 @item
621 The ability to embed arbitrary graphics in a buffer.
622
623 @item
624 Completely compatible (at the C level) with the Xt-based toolkits.
625
626 @end itemize 994 @end itemize
627 995
628 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction
629 @unnumberedsubsec Q1.0.5: Why Haven't XEmacs and GNU Emacs Merged?
630
631 There are currently irreconcilable differences in the views about
632 technical, programming, design and organizational matters between RMS
633 and the XEmacs development team which provide little hope for a merge to
634 take place in the short-term future.
635
636 If you have a comment to add regarding the merge, it is a good idea to 996 If you have a comment to add regarding the merge, it is a good idea to
637 avoid posting to the newsgroups, because of the very heated flamewars 997 avoid posting to the newsgroups, because of the very heated flamewars
638 that often result. Mail your questions to @email{xemacs-beta@@xemacs.org} and 998 that often result. Mail your questions to
639 @email{bug-gnu-emacs@@prep.ai.mit.edu}. 999 @email{xemacs-beta@@xemacs.org} and @email{emacs-devel@@gnu.org}.
640 1000
641 @node Q1.0.6, Q1.0.7, Q1.0.5, Introduction 1001 @node Q1.0.10, Q1.0.11, Q1.0.9, Introduction
642 @unnumberedsubsec Q1.0.6: Where can I get help? 1002 @unnumberedsubsec Q1.0.10: Where can I get help?
643 1003
644 Probably the easiest way, if everything is installed, is to use Info, by 1004 Probably the easiest way, if everything is installed, is to use Info, by
645 pressing @kbd{C-h i}, or looking for an Info item on the 1005 pressing @kbd{C-h i}, or looking for an Info item on the
646 Help Menu. @kbd{M-x apropos} can be used to look for particular commands. 1006 Help Menu. @kbd{M-x apropos} can be used to look for particular commands.
647 1007
663 @uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a 1023 @uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a
664 subscription, you may use the @email{xemacs-news-request@@xemacs.org} 1024 subscription, you may use the @email{xemacs-news-request@@xemacs.org}
665 address or the Web interface. Send a message with a subject of 1025 address or the Web interface. Send a message with a subject of
666 @samp{unsubscribe} to be removed. 1026 @samp{unsubscribe} to be removed.
667 1027
668 @node Q1.0.7, Q1.0.8, Q1.0.6, Introduction 1028 @node Q1.0.11, Q1.0.12, Q1.0.10, Introduction
669 @unnumberedsubsec Q1.0.7: Where are the mailing lists archived? 1029 @unnumberedsubsec Q1.0.11: Where are the mailing lists archived?
670 1030
671 The archives can be found at @uref{http://list-archive.xemacs.org} 1031 The archives can be found at @uref{http://list-archive.xemacs.org}
672 1032
673 @node Q1.0.8, Q1.0.9, Q1.0.7, Introduction 1033 @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction
674 @unnumberedsubsec Q1.0.8: How do you pronounce XEmacs? 1034 @unnumberedsubsec Q1.0.12: How do you pronounce XEmacs?
675 1035
676 The most common pronounciation is @samp{Eks eemax}. 1036 The most common pronounciation is @samp{Eks eemax}.
677 1037
678 @node Q1.0.9, Q1.0.10, Q1.0.8, Introduction 1038 @node Q1.0.13, Q1.0.14, Q1.0.12, Introduction
679 @unnumberedsubsec Q1.0.9: What does XEmacs look like? 1039 @unnumberedsubsec Q1.0.13: What does XEmacs look like?
680 1040
681 Screen snapshots are available at 1041 Screen snapshots are available at
682 @uref{http://www.xemacs.org/About/Screenshots/index.html} 1042 @uref{http://www.xemacs.org/About/Screenshots/index.html}
683 as part of the XEmacs website. 1043 as part of the XEmacs website.
684 1044
685 @node Q1.0.10, Q1.0.11, Q1.0.9, Introduction 1045 @node Q1.0.14, Q1.1.1, Q1.0.13, Introduction
686 @unnumberedsubsec Q1.0.10: Is there a port of XEmacs to Microsoft ('95 or NT)? 1046 @unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual?
687 1047
688 Yes. XEmacs can be built under MS Windows and is fully-featured and 1048 Pre-printed manuals are not available. If you are familiar with
689 actively developed. See @ref{MS Windows}. 1049 TeX, you can generate your own manual from the XEmacs sources.
690 1050
691 @node Q1.0.11, Q1.0.12, Q1.0.10, Introduction 1051 HTML and Postscript versions of XEmacs manuals are available from the
692 @unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh? 1052 XEmacs web site at
693 @c changed 1053 @uref{http://www.xemacs.org/Documentation/index.html}.
694 1054
695 @c There has been a port to the MachTen environment of XEmacs 19.13, but no 1055 @unnumberedsec 1.1: Versions for Different Operating Systems
696 @c patches have been submitted to the maintainers to get this in the 1056
697 @c mainstream distribution. 1057 @node Q1.1.1, Q1.1.2, Q1.0.14, Introduction
698 @c 1058 @unnumberedsubsec Q1.1.1: Do I need X11 to run XEmacs?
699 @c For the MacOS, there is a port of 1059
700 @c @uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}. 1060 No. The name @dfn{XEmacs} is unfortunate in the sense that it is
1061 @strong{not} an X Window System-only version of Emacs. XEmacs has
1062 full color support on a color-capable character terminal.
1063
1064 @node Q1.1.2, Q1.1.3, Q1.1.1, Introduction
1065 @unnumberedsubsec Q1.1.2: Is there a port of XEmacs to Microsoft Windows?
1066
1067 Yes. Beginning with release 21.0, XEmacs has worked under MS Windows
1068 and is fully-featured and actively developed. A group of dedicated
1069 developers actively maintains and improves the Windows-specific
1070 portions of the code. Some of the core developers, in fact, use
1071 Windows as their only development environment, and some features, such
1072 as printing, actually work better on Windows than native Unix and Mac
1073 OS X. The mailing list at @email{xemacs-winnt@@xemacs.org} is dedicated
1074 to that effort (please use the -request address to
1075 subscribe). (Despite its name, XEmacs actually works on all versions
1076 of Windows.)
1077
1078 The list name is misleading, as XEmacs supports and has been compiled on
1079 Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
1080 XP, and all newer versions of Windows. The MS Windows-specific code is
1081 based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
1082 MS-DOS.
1083
1084 XEmacs also supports the Cygwin and MinGW development and runtime
1085 environments, where it also uses native Windows code for graphical
1086 features. In addition, under Cygwin it is possible to compile XEmacs
1087 to use an X server (and XFree86 is available as part of the standard
1088 Cygwin installation).
1089
1090 @node Q1.1.3, Q1.1.4, Q1.1.2, Introduction
1091 @unnumberedsubsec Q1.1.3: Can I build XEmacs on MS Windows with X support? Do I need to?
1092
1093 Yes, you can, but no you do not need to. In fact, we recommend that you
1094 use a native-GUI version unless you have a specific need for an X
1095 version.
1096
1097 @node Q1.1.4, Q1.1.5, Q1.1.3, Introduction
1098 @unnumberedsubsec Q1.1.4: What are Cygwin and MinGW, and do I need them to run XEmacs?
1099
1100 To answer the second part of the question: No, you, you don't need
1101 Cygwin or MinGW to build or to run XEmacs. But if you have them and
1102 want to use them, XEmacs supports these environments.
1103
1104 (One important reason to support Cygwin is that it lets the MS Windows
1105 developers test out their code in a Unix environment without actually
1106 having to have a Unix machine around. For this reason alone, Cygwin
1107 support is likely to remain supported for a long time in XEmacs. Same
1108 goes for the X support under Cygwin, for the same reasons. MinGW
1109 support, on the other hand, depends on volunteers to keep it up to date;
1110 but this is generally not hard.)
1111
1112 Cygwin is a set of tools providing Unix-like API on top of Win32.
1113 It makes it easy to port large Unix programs without significant
1114 changes to their source code. It is a development environment as well
1115 as a runtime environment.
1116
1117 When built with Cygwin, XEmacs supports all display types -- TTY, X &
1118 Win32 GUI, and can be built with support for all three simultaneously.
1119 If you build with Win32 GUI support then the Cygwin version uses the
1120 majority of the Windows-specific code, which is mostly related to
1121 display. If you want to build with X support you need X libraries (and
1122 an X server to display XEmacs on); see @ref{Q2.2.7}. TTY and Win32 GUI
1123 require no additional libraries beyond what comes standard with Cygwin.
1124
1125 The advantages of the Cygwin version are that it integrates well with
1126 the Cygwin environment for existing Cygwin users; uses configure so
1127 building with different features is very easy; and actively supports X &
1128 TTY. Furthermore, the entire Cygwin environment and compiler are free,
1129 whereas Visual C++ costs money.
1130
1131 The disadvantage is that it requires the whole Cygwin environment,
1132 whereas the native port requires only a suitable MS Windows compiler.
1133 Also, it follows the Unix filesystem and process model very closely
1134 (some will undoubtedly view this as an advantage).
1135
1136 See @uref{http://sources.redhat.com/cygwin/} for more information on
1137 Cygwin.
1138
1139 MinGW is a collection of header files and import libraries that allow
1140 one to use GCC under the Cygwin environment to compile and produce
1141 exactly the same native Win32 programs that you can using Visual C++.
1142 Programs compiled with MinGW make use of the standard Microsoft runtime
1143 library @file{MSVCRT.DLL}, present on all Windows systems, and look,
1144 feel, and act like a standard Visual-C-produced application. (The only
1145 difference is the compiler.) This means that, unlike a
1146 standardly-compiled Cygwin application, no extra runtime support
1147 (e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the
1148 fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
1149 environment, for those die-hard Unix hackers out there), is the main
1150 advantage of MinGW. It is also potentially faster than Cygwin because
1151 it has less overhead when calling Windows, but you lose the POSIX
1152 emulation layer, which makes Unix programs harder to port. (But this is
1153 irrelevant for XEmacs since it's already ported to Win32.)
1154
1155 See @uref{http://www.mingw.org/} for more information on MinGW.
1156
1157 @node Q1.1.5, Q1.1.6, Q1.1.4, Introduction
1158 @unnumberedsubsec Q1.1.5: What are the differences between the various MS Windows emacsen?
1159
1160 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
1161 Could you briefly explain the differences between them?
1162
1163 Here is a recount of various Emacs versions running on MS Windows:
1164
1165 @itemize @bullet
1166
1167 @item
1168 XEmacs
1169
1170 @itemize @minus
1171
1172 @item
1173 Beginning with XEmacs 19.12, XEmacs' architecture was redesigned
1174 in such a way to allow clean support of multiple window systems. At
1175 this time the TTY support was added, making X and TTY the first two
1176 "window systems" supported by XEmacs. The 19.12 design is the basis for
1177 the current native MS Windows code.
1178
1179 @item
1180 Some time during 1997, David Hobley (soon joined by Marc Paquette)
1181 imported some of the NT-specific portions of GNU Emacs, making XEmacs
1182 with X support compile under Windows NT, and creating the "X" port.
1183
1184 @item
1185 Several months later, Jonathan Harris sent out initial patches to use
1186 the Win32 API, thus creating the native port. Since then, various
1187 people have contributed, including Kirill M. Katsnelson (contributed
1188 support for menubars, subprocesses and network, as well as loads of
1189 other code), Andy Piper (ported XEmacs to Cygwin environment,
1190 contributed Windows unexec, Windows-specific glyphs and toolbars code,
1191 and more), Ben Wing (loads of improvements; primary MS Windows developer
1192 since 2000), Jeff Sparkes (contributed scrollbars support) and many
1193 others.
1194 @end itemize
1195
1196 @item
1197 NT Emacs
1198
1199 @itemize @minus
1200
1201 @item
1202 NT Emacs was an early version of GNU Emacs 19 modified to compile and
1203 run under MS Windows 95 and NT using the native Win32 API. It was
1204 written by Geoff Voelker, and has long since been incorporated into
1205 the mainline GNU Emacs distribution.
1206 @end itemize
1207
1208 @item
1209 Win-Emacs
1210
1211 @itemize @minus
1212
1213 @item
1214 Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
1215 compatibility libraries. Win-Emacs was written by Ben Wing. The MS
1216 Windows code never made it back to Lucid Emacs, and its creator (Pearl
1217 Software) has long since gone out of business.
1218 @end itemize
1219
1220 @item
1221 GNU Emacs for DOS
1222
1223 @itemize @minus
1224
1225 @item
1226 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
1227 port of GCC). Such an Emacs is heavily underfeatured, because it does
1228 not support long file names, lacks proper subprocesses support, and
1229 is far too big compared with typical DOS editors.
1230 @end itemize
1231
1232 @item
1233 GNU Emacs compiled with Win32
1234
1235 @itemize @minus
1236
1237 @item
1238 Starting with version 19.30, it has been possible to compile GNU Emacs
1239 under MS Windows using the DJGPP compiler and X libraries. The result
1240 is very similar to GNU Emacs compiled under MS DOS, only it works
1241 somewhat better because it runs in 32-bit mode, makes use of all the
1242 system memory, supports long file names, etc.
1243 @end itemize
1244
1245 @end itemize
1246
1247 @node Q1.1.6, Q1.1.7, Q1.1.5, Introduction
1248 @unnumberedsubsec Q1.1.6: Is there a port of XEmacs to the Macintosh?
701 1249
702 Yes. 1250 Yes.
703 1251
704 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly 1252 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
705 will not feel very much like a Mac application as it has no Mac-specific 1253 will not feel very much like a Mac application as it has no Mac-specific
710 Pitts Jarvis}. It runs in an equivalent of TTY mode only (one single 1258 Pitts Jarvis}. It runs in an equivalent of TTY mode only (one single
711 Macintosh window, 25 colors), but has a large number of Mac-specific 1259 Macintosh window, 25 colors), but has a large number of Mac-specific
712 additions. It's available at 1260 additions. It's available at
713 @uref{http://homepage.mac.com/pjarvis/xemacs.html}. 1261 @uref{http://homepage.mac.com/pjarvis/xemacs.html}.
714 1262
715 @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction 1263 @node Q1.1.7, Q1.1.8, Q1.1.6, Introduction
716 @unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep? 1264 @unnumberedsubsec Q1.1.7: Is there a port of XEmacs to NextStep?
717 1265
718 Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did 1266 Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did
719 the port of GNU Emacs to NeXTstep and expressed interest in doing the 1267 the port of GNU Emacs to NeXTstep and expressed interest in doing the
720 XEmacs port, but never went any farther. 1268 XEmacs port, but never went any farther.
721 1269
722 @node Q1.0.13, Q1.0.14, Q1.0.12, Introduction 1270 @node Q1.1.8, Q1.1.9, Q1.1.7, Introduction
723 @unnumberedsubsec Q1.0.13: Is there a port of XEmacs to OS/2? 1271 @unnumberedsubsec Q1.1.8: Is there a port of XEmacs to OS/2?
724 1272
725 No, but Alexander Nikolaev <avn_1251@@mail.ru> is working on it. 1273 No, but Alexander Nikolaev <avn_1251@@mail.ru> is working on it.
726 1274
727 @node Q1.0.14, Q1.1.1, Q1.0.13, Introduction 1275 @node Q1.1.9, Q1.2.1, Q1.1.8, Introduction
728 @unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual? 1276 @unnumberedsubsec Q1.1.9: How does the port cope with differences in the Windows user interface?
729 1277
730 Pre-printed manuals are not available. If you are familiar with 1278 The XEmacs (and Emacs in general) user interface is pretty different
731 TeX, you can generate your own manual from the XEmacs sources. 1279 from what is expected of a typical MS Windows program. How does the MS
732 1280 Windows port cope with it?
733 HTML and Postscript versions of XEmacs manuals are available from the 1281
734 XEmacs web site at 1282 As a general rule, we follow native MS Windows conventions as much as
735 @uref{http://www.xemacs.org/Documentation/index.html}. 1283 possible. 21.4 is a fairly complete Windows application, supporting
736 1284 native printing, system file dialog boxes, tool tips, etc. In cases
737 @node Q1.1.1, Q1.1.2, Q1.0.14, Introduction 1285 where there's a clear UI conflict, we currently use normal Unix XEmacs
738 @unnumberedsec 1.1: Policies 1286 behavior by default, but make sure the MS Windows "look and feel" (mark
739 @unnumberedsubsec Q1.1.1: What is the FAQ editorial policy? 1287 via shift-arrow, self-inserting deletes region, Alt selects menu items,
1288 etc.) is easily configurable (respectively: using the variable
1289 @code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact
1290 the default in these versions], or the @file{pc-select} package; using
1291 the @file{pending-del} package; and setting the variable
1292 @code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above).
1293 In fact, if you use the sample @file{init.el} file as your init file,
1294 you will get all these behaviors automatically turned on.
1295
1296 In future versions, some of these features might be turned on by
1297 default in the MS Windows environment.
1298
1299 @unnumberedsec 1.2: Policies
1300
1301 @node Q1.2.1, Q1.2.2, Q1.1.9, Introduction
1302 @unnumberedsubsec Q1.2.1: What is the FAQ editorial policy?
740 1303
741 The FAQ is actively maintained and modified regularly. All links should 1304 The FAQ is actively maintained and modified regularly. All links should
742 be up to date. Unfortunately, some of the information is out of date -- 1305 be up to date. Unfortunately, some of the information is out of date --
743 a situation which the FAQ maintainer is working on. All submissions are 1306 a situation which the FAQ maintainer is working on. All submissions are
744 welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ 1307 welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ
751 and will be attributed. Answers appearing without attribution are 1314 and will be attributed. Answers appearing without attribution are
752 either from versions of the FAQ dated before May 1996 or are from 1315 either from versions of the FAQ dated before May 1996 or are from
753 previous FAQ maintainers. Answers quoted from Usenet news articles will 1316 previous FAQ maintainers. Answers quoted from Usenet news articles will
754 always be attributed, regardless of the author. 1317 always be attributed, regardless of the author.
755 1318
756 @node Q1.1.2, Q1.1.3, Q1.1.1, Introduction 1319 @node Q1.2.2, Q1.2.3, Q1.2.1, Introduction
757 @unnumberedsubsec Q1.1.2: How do I become a Beta Tester? 1320 @unnumberedsubsec Q1.2.2: How do I become a beta tester?
758 1321
759 Send an email message to @email{xemacs-beta-request@@xemacs.org} with 1322 Send an email message to @email{xemacs-beta-request@@xemacs.org} with
760 the line @samp{subscribe} in the body of the message. 1323 the line @samp{subscribe} in the body of the message.
761 1324
762 Be prepared to get your hands dirty, as beta testers are expected to 1325 Be prepared to get your hands dirty, as beta testers are expected to
763 identify problems as best they can. 1326 identify problems as best they can.
764 1327
765 @node Q1.1.3, Q1.2.1, Q1.1.2, Introduction 1328 @node Q1.2.3, Q1.3.1, Q1.2.2, Introduction
766 @unnumberedsubsec Q1.1.3: How do I contribute to XEmacs itself? 1329 @unnumberedsubsec Q1.2.3: How do I contribute to XEmacs itself?
1330
1331 It depends on the knowledge and time you possess. If you are able, by
1332 all means become a beta tester (@pxref{Q1.2.2}). If you are a
1333 programmer, try to build XEmacs and see if you can improve it.
1334
1335 Otherwise, you can still help by using XEmacs as your everyday editor
1336 (for pre-built binary versions, @pxref{Q1.0.4}) and reporting bugs you
1337 find to the mailing list.
1338
1339 Another area where we need help is the documentation: We need good
1340 documentation for building XEmacs and for using it. This FAQ is a
1341 small step in that direction.
767 1342
768 Ben Wing @email{ben@@xemacs.org} writes: 1343 Ben Wing @email{ben@@xemacs.org} writes:
769 1344
770 @quotation 1345 @quotation
771 BTW if you have a wish list of things that you want added, you have to 1346 BTW if you have a wish list of things that you want added, you have to
792 1367
793 (not that we're necessarily requiring you to write the code, but we can 1368 (not that we're necessarily requiring you to write the code, but we can
794 always hope :) 1369 always hope :)
795 @end quotation 1370 @end quotation
796 1371
797 @node Q1.2.1, Q1.2.2, Q1.1.3, Introduction 1372 @unnumberedsec 1.3: Credits
798 @unnumberedsec 1.2: Credits 1373
799 @unnumberedsubsec Q1.2.1: Who wrote XEmacs? 1374 @node Q1.3.1, Q1.3.2, Q1.2.3, Introduction
800 1375 @unnumberedsubsec Q1.3.1: Who wrote XEmacs?
801 XEmacs is the result of the time and effort of many people. The 1376
802 developers responsible for recent releases are: 1377 XEmacs is the result of the time and effort of many people, and the
1378 active developers have changed over time. There are two major
1379 components of the XEmacs effort -- writing the code itself and providing
1380 all the support work (testing the code, releasing beta and final
1381 versions, handling patches, reading bug reports, maintaining the web
1382 site, managing the mailing lists, etc. etc.). Neither component would
1383 work without the other.
1384
1385 @subheading CODING
1386
1387 The primary code contributor over the years has been Ben Wing (active
1388 since late 1992). Between 1991 and 1995, large amounts of coding was
1389 contributed by Jamie Zawinski and Chuck Thompson. Many other people
1390 have authored major subsystems or otherwise contributed large amounts of
1391 code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris,
1392 Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard
1393 Mlynarik, Stig, William Perry and plenty of others.
1394
1395 Primary XEmacs-specific subsystems and their authors:
1396
1397 @table @asis
1398 @item Objects
1399 @itemize @minus
1400 @item
1401 Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcrecords: Richard Mlynarik, 1994
1402 @item
1403 Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Buchholz
1404 @item
1405 Portable dumper, object descriptions: Olivier Galibert
1406 @item
1407 KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber and students
1408 @item
1409 Random object work (object equal and hash methods, weak lists, lcrecord lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing
1410 @item
1411 Profiling: Ben Wing
1412 @item
1413 Some byte-compilation and hash-table improvements: Martin Buchholz
1414 @item
1415 Bignum: Jerry James
1416 @end itemize
1417
1418 @item Internationalization/Mule
1419 @itemize @minus
1420 @item
1421 mostly Ben Wing; many ideas for future work, Stephen Turnbull
1422 @end itemize
1423
1424 @item I/O
1425 @itemize @minus
1426 @item
1427 Basic event/event-stream implementation: Jamie Zawinski
1428 @item
1429 Most event work since 1994: Ben Wing
1430 @item
1431 Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing
1432 @item
1433 Process method abstraction, Windows process work: Kirill Katsnelson
1434 @item
1435 Misc-user events, async timeouts, most quit-checking and signal code, most other work since 1994: Ben Wing
1436 @item
1437 Lstreams: Ben Wing
1438 @end itemize
1439
1440 @item Display
1441 @itemize @minus
1442 @item
1443 Redisplay mechanism: implementation, Chuck Thompson; additional work, lots of people
1444 @item
1445 Glyphs: mostly Ben Wing
1446 @item
1447 Specifiers: Ben Wing
1448 @item
1449 Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wing
1450 @item
1451 Widgets: Andy Piper
1452 @item
1453 JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, others (see comment in @file{glyphs-eimage.c})
1454 @item
1455 Menus: Jamie Zawinski, someone at Lucid (Lucid menus)
1456 @item
1457 Scrollbars: Chuck Thompson, ??? (Lucid scrollbar)
1458 @item
1459 Multi-device/device-independence work (console/device/etc methods): Ben Wing, prototype by chuck thompson
1460 @item
1461 Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben Wing
1462 @item
1463 Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wing
1464 @item
1465 Toolbars: implementation, chuck, much interface work, Ben Wing
1466 @item
1467 Gutters, tabs: andy piper
1468 @end itemize
1469
1470 @item Device subsystems
1471 @itemize @minus
1472 @item
1473 X Windows: Jamie Zawinksi, Ben Wing, others
1474 @item
1475 GTK: William Perry, Malcolm Purvis
1476 @item
1477 MS Windows: initial implementation, Jonathan Harris; some more work, Andy Piper, Ben Wing
1478 @item
1479 TTY: Chuck Thompson, Ben Wing
1480 @item
1481 Cygwin: Andy Piper
1482 @end itemize
1483
1484 @item Misc
1485 @itemize @minus
1486 @item
1487 Configure: initial porting from fsf, Chuck Thompson; conversion to autoconf 2, much rewriting, Martin Buchholz
1488 @item
1489 Most initialization-related code: Ben Wing
1490 @item
1491 Internals manual, much of Lisp manual: Ben Wing
1492 @item
1493 FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, Ben Wing
1494 @end itemize
1495 @end table
1496
1497 @subheading SUPPORT
1498
1499 Currently, support duties are handled by many different people.
1500
1501 Release managers have been
1502
1503 @itemize @minus
1504 @item
1505 Stephen Turnbull (April 2001 - present, 21.x - 21.x?)
1506 @item
1507 Vin Shelton?
1508 @item
1509 Steve Youngs (July 2002 - present??, 21.x - 21.x?)
1510 @item
1511 Martin Buchholz (December 1998 - May 2001, 21.x - 21.x?)
1512 @item
1513 Steve Baur (early 1997 - November 1998, 19.15 - 21.0)
1514 @item
1515 Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14)
1516 @item
1517 Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10)
1518 @end itemize
1519
1520 The recent overlapping dates are intentional, since two or three trees
1521 are maintained simultaneously at any point.
1522
1523 Other major support work:
1524
1525 @itemize @minus
1526 @item
1527 Adrian Aichner wrote and maintains the web site.
1528 @item
1529 Stephen Turnbull has produced many of the beta and semi-stable releases
1530 and has attempted to be the "face" of XEmacs on the newsgroups and
1531 mailing lists.
1532 @item
1533 Steve Youngs currently produces the beta releases (???).
1534 @item
1535 Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns
1536 maintaining the packages.
1537 @item
1538 Vin Shelton maintains the stable releases.
1539 @item
1540 Testing - #### Norbert, Adrian, ???
1541 @end itemize
1542
1543 Portraits and email of some of the major developers:
803 1544
804 @itemize @bullet 1545 @itemize @bullet
1546 @item @email{andy@@xemacs.org, Andy Piper}
1547 @html
1548 <br><img src="wing.gif" alt="Portrait of Ben Wing"><br>
1549 @end html
1550
1551 @item @email{ben@@xemacs.org, Ben Wing}
1552 @html
1553 <br><img src="wing.gif" alt="Portrait of Ben Wing"><br>
1554 @end html
1555
1556 @item @email{cthomp@@xemacs.org, Chuck Thompson}
1557 @html
1558 <br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br>
1559 @end html
1560
1561 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
1562
1563 @html
1564 <br><img src="hniksic.jpeg" alt="Portrait of Hrvoje Niksic"><br>
1565 @end html
1566
1567 @item @email{jwz@@jwz.org, Jamie Zawinski}
1568 @html
1569 <br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br>
1570 @end html
1571
805 @item @email{martin@@xemacs.org, Martin Buchholz} 1572 @item @email{martin@@xemacs.org, Martin Buchholz}
806 @html 1573 @html
807 <br><img src="mrb.jpeg" alt="Portrait of Martin Buchholz"><br> 1574 <br><img src="mrb.jpeg" alt="Portrait of Martin Buchholz"><br>
808 @end html 1575 @end html
809 1576
1577 @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
810 1578
811 @item @email{stephen@@xemacs.org, Stephen Turnbull} 1579 @item @email{stephen@@xemacs.org, Stephen Turnbull}
812 1580
813
814 @item @email{ben@@xemacs.org, Ben Wing}
815 @html
816 <br><img src="wing.gif" alt="Portrait of Ben Wing"><br>
817 @end html
818
819
820 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
821
822 @html
823 <br><img src="hniksic.jpeg" alt="Portrait of Hrvoje Niksic"><br>
824 @end html
825
826 @end itemize
827
828 The developers responsible for older releases were:
829
830 @itemize @bullet
831 @item @email{steve@@xemacs.org, Steve Baur} 1581 @item @email{steve@@xemacs.org, Steve Baur}
832
833 @html 1582 @html
834 <br><img src="steve.gif" alt="Portrait of Steve Baur"><br> 1583 <br><img src="steve.gif" alt="Portrait of Steve Baur"><br>
835 @end html 1584 @end html
836
837 @item @email{cthomp@@xemacs.org, Chuck Thompson}
838 @html
839 <br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br>
840 @end html
841
842 @item @email{jwz@@jwz.org, Jamie Zawinski}
843 @html
844 <br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br>
845 @end html
846
847 @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
848
849 Steve Baur was the primary maintainer for 19.15 through 21.0.
850
851 Chuck Thompson and Ben Wing were the maintainers for 19.11 through 19.14
852 and heavy code contributors for 19.8 through 19.10.
853
854 Jamie Zawinski was the maintainer for 19.0 through 19.10 (the entire
855 history of Lucid Emacs). Richard Mlynarik was a heavy code contributor
856 to 19.6 through 19.8.
857
858 @end itemize 1585 @end itemize
859 1586
860 Along with many other contributors, partially enumerated in the 1587 Many other people have contributed to XEmacs; this is partially
861 @samp{About XEmacs} option in the Help menu. 1588 enumerated in the @samp{About XEmacs} option in the Help menu.
862 1589
863 @node Q1.2.2, Q1.2.3, Q1.2.1, Introduction 1590 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction
864 @unnumberedsubsec Q1.2.2: Who contributed to this version of the FAQ? 1591 @unnumberedsubsec Q1.3.2: Who contributed to this version of the FAQ?
865 1592
866 The following people contributed valuable suggestions to building this 1593 The current version of this FAQ was created by @email{ben@@xemacs.org,
867 version of the FAQ (listed in alphabetical order): 1594 Ben Wing}.
1595
1596 @node Q1.3.3, Q1.4.1, Q1.3.2, Introduction
1597 @unnumberedsubsec Q1.3.3: Who contributed to the FAQ in the past?
1598
1599 This is only a partial list, as many names were lost in a hard disk
1600 crash some time ago.
868 1601
869 @itemize @bullet 1602 @itemize @bullet
870 @item @email{steve@@xemacs.org, SL Baur} 1603 @item @email{steve@@xemacs.org, SL Baur}
871 1604
872 @item @email{hniksic@@xemacs.org, Hrvoje Niksic} 1605 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
873 1606
874 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
875
876 @end itemize
877
878 @node Q1.2.3, Q1.3.1, Q1.2.2, Introduction
879 @unnumberedsubsec Q1.2.3: Who contributed to the FAQ in the past?
880
881 This is only a partial list, as many names were lost in a hard disk
882 crash some time ago.
883
884 @itemize @bullet
885 @item @email{binge@@aloft.att.com, Curtis.N.Bingham} 1607 @item @email{binge@@aloft.att.com, Curtis.N.Bingham}
886 1608
887 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} 1609 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan}
888 1610
889 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley} 1611 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley}
919 @item @email{stig@@hackvan.com, Stig} 1641 @item @email{stig@@hackvan.com, Stig}
920 1642
921 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari} 1643 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
922 @end itemize 1644 @end itemize
923 1645
924 @node Q1.3.1, Q1.3.2, Q1.2.3, Introduction 1646 @unnumberedsec 1.4: Internationalization
925 @unnumberedsec 1.3: Internationalization 1647
926 @unnumberedsubsec Q1.3.1: What is the status of internationalization support aka MULE (including Asian language support? 1648 @node Q1.4.1, Q1.4.2, Q1.3.3, Introduction
1649 @unnumberedsubsec Q1.4.1: What is the status of internationalization support aka MULE (including Asian language support?
927 1650
928 Both the stable and development versions of XEmacs include 1651 Both the stable and development versions of XEmacs include
929 internationalization support (aka MULE). MULE currently (21.4) works on 1652 internationalization support (aka MULE). MULE currently (21.4) works on
930 UNIX and Linux systems. It is possible to build with MULE on Windows 1653 UNIX and Linux systems. It is possible to build with MULE on Windows
931 systems, but if you really need MULE on Windows, it is recommended that 1654 systems, but if you really need MULE on Windows, it is recommended that
932 you build and use the development (21.5) version, and deal with the 1655 you build and use the development (21.5) version, and deal with the
933 instability of the development tree. Binaries compiled without MULE 1656 instability of the development tree. Binaries compiled without MULE
934 support run faster than MULE capable XEmacsen. 1657 support run faster than MULE capable XEmacsen.
935 1658
936 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction 1659 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction
937 @unnumberedsubsec Q1.3.2: How can I help with internationalization? 1660 @unnumberedsubsec Q1.4.2: How can I help with internationalization?
938 1661
939 If you would like to help, you may want to join the 1662 If you would like to help, you may want to join the
940 @email{xemacs-mule@@xemacs.org} mailing list. Especially needed are 1663 @email{xemacs-mule@@xemacs.org} mailing list. Especially needed are
941 people who speak/write languages other than English, who are willing to 1664 people who speak/write languages other than English, who are willing to
942 use XEmacs/MULE regularly, and have some experience with Elisp. 1665 use XEmacs/MULE regularly, and have some experience with Elisp.
943 1666
944 Translations of the TUTORIAL and man page are welcome, and XEmacs does 1667 Translations of the TUTORIAL and man page are welcome, and XEmacs does
945 support multilingual menus, but we have few current translations. 1668 support multilingual menus, but we have few current translations.
946 1669
947 @xref{Q1.1.2}. 1670 @xref{Q1.2.2, How do I become a Beta Tester?}.
948 1671
949 @node Q1.3.3, Q1.3.4, Q1.3.2, Introduction 1672 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction
950 @unnumberedsubsec Q1.3.3: How do I type non-ASCII characters? 1673 @unnumberedsubsec Q1.4.3: How do I type non-ASCII characters?
951 1674
952 See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ for some 1675 @xref{Q3.0.5, How can you type in special characters in XEmacs?}, in
953 simple methods that also work in non-MULE builds of XEmacs (but only for 1676 part 3 of this FAQ, for some simple methods that also work in non-MULE
954 one-octet coded character sets, and mostly for ISO 8859/1). Many of the 1677 builds of XEmacs (but only for one-octet coded character sets, and
955 methods available for Cyrillic (@pxref{Q1.3.7}) work without MULE. 1678 mostly for ISO 8859/1). Many of the methods available for Cyrillic
956 MULE has more general capabilities. @xref{Q1.3.5}. 1679 (@pxref{Q1.4.7, How about Cyrillic modes?}) work without MULE. MULE
957 1680 has more general capabilities. @xref{Q1.4.5, Please explain the
958 @xref{Q3.2.7}, which covers display of non-ASCII characters. 1681 various input methods in MULE/XEmacs}.
959 1682
960 @node Q1.3.4, Q1.3.5, Q1.3.3, Introduction 1683 @xref{Q3.2.8, How do I display non-ASCII characters?}, which covers
961 @unnumberedsubsec Q1.3.4: Can XEmacs messages come out in a different language? 1684 display of non-ASCII characters.
1685
1686 @node Q1.4.4, Q1.4.5, Q1.4.3, Introduction
1687 @unnumberedsubsec Q1.4.4: Can XEmacs messages come out in a different language?
962 1688
963 The message-catalog support was written but is badly bit-rotted. XEmacs 1689 The message-catalog support was written but is badly bit-rotted. XEmacs
964 20 and 21 did @emph{not} support it, and early releases of XEmacs 22 1690 20 and 21 did @emph{not} support it, and early releases of XEmacs 22
965 will not either. 1691 will not either.
966 1692
974 @end example 1700 @end example
975 1701
976 The name of the resource is derived from the non-localized entry by 1702 The name of the resource is derived from the non-localized entry by
977 removing punctuation and capitalizing as above. 1703 removing punctuation and capitalizing as above.
978 1704
979 @node Q1.3.5, Q1.3.6, Q1.3.4, Introduction 1705 @node Q1.4.5, Q1.4.6, Q1.4.4, Introduction
980 @unnumberedsubsec Q1.3.5: Please explain the various input methods in MULE/XEmacs 1706 @unnumberedsubsec Q1.4.5: Please explain the various input methods in MULE/XEmacs
981 1707
982 Mule supports a wide variety of input methods. There are three basic 1708 Mule supports a wide variety of input methods. There are three basic
983 classes: Lisp implementations, generic platform support, and library 1709 classes: Lisp implementations, generic platform support, and library
984 interfaces. 1710 interfaces.
985 1711
1067 boiled-egg-like utilities. 1793 boiled-egg-like utilities.
1068 1794
1069 Much of this information was provided by @email{morioka@@jaist.ac.jp, 1795 Much of this information was provided by @email{morioka@@jaist.ac.jp,
1070 MORIOKA Tomohiko}. 1796 MORIOKA Tomohiko}.
1071 1797
1072 @node Q1.3.6, Q1.3.7, Q1.3.5, Introduction 1798 @node Q1.4.6, Q1.4.7, Q1.4.5, Introduction
1073 @unnumberedsubsec Q1.3.6: How do I portably code for MULE/XEmacs? 1799 @unnumberedsubsec Q1.4.6: How do I portably code for MULE/XEmacs?
1074 1800
1075 MULE has evolved rapidly over the last few years, and the original third 1801 MULE has evolved rapidly over the last few years, and the original third
1076 party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite 1802 party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite
1077 different implementations. The APIs also vary although recent versions 1803 different implementations. The APIs also vary although recent versions
1078 of XEmacs have tended to converge to the GNU Emacs standard. 1804 of XEmacs have tended to converge to the GNU Emacs standard.
1132 ;; for old emacs variants 1858 ;; for old emacs variants
1133 ) 1859 )
1134 @end lisp 1860 @end lisp
1135 @end quotation 1861 @end quotation
1136 1862
1137 @node Q1.3.7, Q1.3.8, Q1.3.6, Introduction 1863 @node Q1.4.7, Q1.4.8, Q1.4.6, Introduction
1138 @unnumberedsubsec Q1.3.7: How about Cyrillic Modes? 1864 @unnumberedsubsec Q1.4.7: How about Cyrillic modes?
1139 1865
1140 @email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes: 1866 @email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes:
1141 1867
1142 @quotation 1868 @quotation
1143 There is a cyrillic mode in the file @file{mysetup.zip} in 1869 There is a cyrillic mode in the file @file{mysetup.zip} in
1170 @quotation 1896 @quotation
1171 The fullest resource I found on Russian language use (in and out of 1897 The fullest resource I found on Russian language use (in and out of
1172 XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html} 1898 XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html}
1173 @end quotation 1899 @end quotation
1174 1900
1175 @node Q1.3.8, Q1.3.9, Q1.3.7, Introduction 1901 @node Q1.4.8, Q1.4.9, Q1.4.7, Introduction
1176 @unnumberedsubsec Q1.3.8: Does XEmacs support Unicode? 1902 @unnumberedsubsec Q1.4.8: Does XEmacs support Unicode?
1177 1903
1178 Partially, as an external encoding for files, processes, and terminals. 1904 To get Unicode support, you need a Mule-enabled XEmacs.
1179 It does not yet support Unicode fonts @ref{Q1.3.9, Does XEmacs support 1905
1180 Unicode Fonts?} 1906 21.5 has internal support for Unicode and supports it fully, although we
1181 1907 don't yet use it as the internal encoding.
1182 To get Unicode support, you need a Mule-enabled XEmacs. Install 1908
1183 Mule-UCS from packages in the usual way. Put 1909 21.4 supports Unicode partially -- as an external encoding for files,
1910 processes, and terminals, but without font support. @xref{Q1.4.9, How
1911 does XEmacs display Unicode?}. To get Unicode support in 21.4,
1912 install Mule-UCS from packages in the usual way, and put
1184 1913
1185 @example 1914 @example
1186 (require 'un-define) 1915 (require 'un-define)
1187 (set-coding-priority-list '(utf-8)) 1916 (set-coding-priority-list '(utf-8))
1188 (set-coding-category-system 'utf-8 'utf-8) 1917 (set-coding-category-system 'utf-8 'utf-8)
1190 1919
1191 in your init file to enable the UTF-8 coding system. You may wish to 1920 in your init file to enable the UTF-8 coding system. You may wish to
1192 view the documentation of @code{set-coding-priority-list} if you find 1921 view the documentation of @code{set-coding-priority-list} if you find
1193 that files that are not UTF-8 are being mis-recognized as UTF-8. 1922 that files that are not UTF-8 are being mis-recognized as UTF-8.
1194 1923
1195 Install standard national fonts (not Unicode fonts) for all 1924 Install standard national fonts (not Unicode fonts) for all character
1196 character sets you use. See @ref{Q1.3.9}. 1925 sets you use. @xref{Q1.4.9, How does XEmacs display Unicode??}.
1197 1926
1198 Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not 1927 Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not
1199 support 31-bit forms of Unicode (UTF-32 or UCS-4). 1928 support 31-bit forms of Unicode (UTF-32 or UCS-4).
1200 1929
1201 @node Q1.3.9, Q1.4.1, Q1.3.8, Introduction 1930 @node Q1.4.9, Q1.5.1, Q1.4.8, Introduction
1202 @unnumberedsubsec Q1.3.9: How does XEmacs display Unicode? 1931 @unnumberedsubsec Q1.4.9: How does XEmacs display Unicode?
1203 1932
1204 Mule doesn't have a Unicode charset internally, so there's nothing to 1933 Mule doesn't have a Unicode charset internally, so there's nothing to
1205 bind a Unicode registry to. It would not be straightforward to create, 1934 bind a Unicode registry to. It would not be straightforward to create,
1206 either, because Unicode is not ISO 2022-compatible. You'd have to 1935 either, because Unicode is not ISO 2022-compatible. You'd have to
1207 translate it to multiple 96x96 pages. 1936 translate it to multiple 96x96 pages.
1218 extreme hackery. You can run -nw with (set-terminal-coding-system 1947 extreme hackery. You can run -nw with (set-terminal-coding-system
1219 'utf-8) if you really want a Unicode font for some reason. 1948 'utf-8) if you really want a Unicode font for some reason.
1220 1949
1221 Real Unicode support will be introduced in XEmacs 22.0. 1950 Real Unicode support will be introduced in XEmacs 22.0.
1222 1951
1223 @node Q1.4.1, Q1.4.2, Q1.3.9, Introduction 1952 @unnumberedsec 1.5: Getting Started
1224 @unnumberedsec 1.4: Getting Started, Backing up & Recovery 1953
1225 @unnumberedsubsec Q1.4.1: What is an @file{init.el} or @file{.emacs} and is there a sample one? 1954 @node Q1.5.1, Q1.5.2, Q1.4.9, Introduction
1955 @unnumberedsubsec Q1.5.1: What is an @file{init.el} or @file{.emacs} and is there a sample one?
1226 1956
1227 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to 1957 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to
1228 your tastes. Starting in 21.4, the preferred location for the init file 1958 your tastes. Starting in 21.4, the preferred location for the init file
1229 is @file{~/.xemacs/init.el}; in previous versions, it was 1959 is @file{~/.xemacs/init.el}; in previous versions, it was
1230 @file{~/.emacs}. 21.4 still accepts the old location, but the first 1960 @file{~/.emacs}. 21.4 still accepts the old location, but the first
1248 under the @samp{Help} menu, but its location under that has changed in 1978 under the @samp{Help} menu, but its location under that has changed in
1249 various versions. Recently, look under the @samp{Samples} submenu.) To 1979 various versions. Recently, look under the @samp{Samples} submenu.) To
1250 determine the location of the @file{etc/} directory type the command 1980 determine the location of the @file{etc/} directory type the command
1251 @kbd{C-h v data-directory @key{RET}}. 1981 @kbd{C-h v data-directory @key{RET}}.
1252 1982
1253 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction 1983 @node Q1.5.2, Q1.5.3, Q1.5.1, Introduction
1254 @unnumberedsubsec Q1.4.2: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs? 1984 @unnumberedsubsec Q1.5.2: Where do I put my @file{init.el} file?
1255 1985
1256 Yes. The sample @file{init.el}/@file{.emacs} included in the XEmacs 1986 @file{init.el} is the name of the init file starting with 21.4, and is
1987 located in the subdirectory @file{.xemacs/} of your home directory. In
1988 prior versions, the init file is called @file{.emacs} and is located in
1989 your home directory.
1990
1991 Your home directory under Windows is determined by the @samp{HOME}
1992 environment variable. If this is not set, it defaults to @samp{C:\}.
1993 To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
1994 select @samp{Control Panel->System->Advanced->Environment Variables...}
1995 under Windows NT/2000.
1996
1997 @node Q1.5.3, Q1.5.4, Q1.5.2, Introduction
1998 @unnumberedsubsec Q1.5.3: Can I use the same @file{init.el} with the other Emacs?
1999
2000 Yes. The sample @file{init.el} included in the XEmacs
1257 distribution will show you how to handle different versions and flavors 2001 distribution will show you how to handle different versions and flavors
1258 of Emacs. 2002 of Emacs.
1259 2003
1260 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction 2004 @node Q1.5.4, Q1.5.5, Q1.5.3, Introduction
1261 @unnumberedsubsec Q1.4.3: Any good tutorials around? 2005 @unnumberedsubsec Q1.5.4: Any good XEmacs tutorials around?
1262 2006
1263 There's the XEmacs tutorial available from the Help Menu under 2007 There's the XEmacs tutorial available from the Help Menu under
1264 @samp{Basics->Tutorials}, or by typing @kbd{C-h t}. To check whether 2008 @samp{Help->Tutorials}, or by typing @kbd{C-h t}. To check whether
1265 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type 2009 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type
1266 the first letters of your preferred language, then type @key{RET}. 2010 the first letters of your preferred language, then type @key{RET}.
1267 2011
1268 @comment There's an Emacs Lisp tutorial at 2012 @comment There's an Emacs Lisp tutorial at
1269 @comment 2013 @comment
1276 @comment @iftex 2020 @comment @iftex
1277 @comment @* 2021 @comment @*
1278 @comment @end iftex 2022 @comment @end iftex
1279 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}. 2023 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}.
1280 2024
1281 @node Q1.4.4, Q1.4.5, Q1.4.3, Introduction 2025 @node Q1.5.5, Q1.5.6, Q1.5.4, Introduction
1282 @unnumberedsubsec Q1.4.4: May I see an example of a useful XEmacs Lisp function? 2026 @unnumberedsubsec Q1.5.5: May I see an example of a useful XEmacs Lisp function?
1283 2027
1284 The following function does a little bit of everything useful. It does 2028 The following function does a little bit of everything useful. It does
1285 something with the prefix argument, it examines the text around the 2029 something with the prefix argument, it examines the text around the
1286 cursor, and it's interactive so it may be bound to a key. It inserts 2030 cursor, and it's interactive so it may be bound to a key. It inserts
1287 copies of the current word the cursor is sitting on at the cursor. If 2031 copies of the current word the cursor is sitting on at the cursor. If
1311 hit @kbd{C-h f} to see what the function @code{interactive} does. Doing 2055 hit @kbd{C-h f} to see what the function @code{interactive} does. Doing
1312 this will tell you that the @code{*} requires a writable buffer, and 2056 this will tell you that the @code{*} requires a writable buffer, and
1313 @code{p} converts the prefix argument to a number, and 2057 @code{p} converts the prefix argument to a number, and
1314 @code{interactive} allows you to execute the command with @kbd{M-x}. 2058 @code{interactive} allows you to execute the command with @kbd{M-x}.
1315 2059
1316 @node Q1.4.5, Q1.4.6, Q1.4.4, Introduction 2060 @node Q1.5.6, Q1.5.7, Q1.5.5, Introduction
1317 @unnumberedsubsec Q1.4.5: And how do I bind it to a key? 2061 @unnumberedsubsec Q1.5.6: And how do I bind it to a key?
1318 2062
1319 To bind to a key do: 2063 To bind to a key do:
1320 2064
1321 @lisp 2065 @lisp
1322 (global-set-key "\C-cd" 'double-word) 2066 (global-set-key "\C-cd" 'double-word)
1323 @end lisp 2067 @end lisp
1324 2068
1325 Or interactively, @kbd{M-x global-set-key} and follow the prompts. 2069 Or interactively, @kbd{M-x global-set-key} and follow the prompts.
1326 2070
1327 @node Q1.4.6, , Q1.4.5, Introduction 2071 @node Q1.5.7, Q1.5.8, Q1.5.6, Introduction
1328 @unnumberedsubsec Q1.4.6: What's the difference between a macro and a function? 2072 @unnumberedsubsec Q1.5.7: What's the difference between a macro and a function?
1329 2073
1330 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual: 2074 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual:
1331 2075
1332 @dfn{Macros} enable you to define new control constructs and other 2076 @dfn{Macros} enable you to define new control constructs and other
1333 language features. A macro is defined much like a function, but instead 2077 language features. A macro is defined much like a function, but instead
1342 2086
1343 Do not confuse the two terms with @dfn{keyboard macros}, which are 2087 Do not confuse the two terms with @dfn{keyboard macros}, which are
1344 another matter, entirely. A keyboard macro is a key bound to several 2088 another matter, entirely. A keyboard macro is a key bound to several
1345 other keys. Refer to manual for details. 2089 other keys. Refer to manual for details.
1346 2090
1347 @node Installation, Customization, Introduction, Top 2091 @node Q1.5.8, , Q1.5.7, Introduction
1348 @unnumbered 2 Installation and Trouble Shooting 2092 @unnumberedsubsec Q1.5.8: What is @code{Custom}?
2093
2094 @code{Custom} is a system for customizing XEmacs options.
2095
2096 You can access @code{Advanced (Customize)} from the @code{Options} menu
2097 or invoking one of customize commands by typing eg.
2098 @kbd{M-x customize}, @kbd{M-x customize-face},
2099 @kbd{M-x customize-variable} or @kbd{M-x customize-apropos}.
2100
2101 There is also new @samp{browser} mode for Customize.
2102 Try it out with @kbd{M-x customize-browse}
2103
2104 @node Installation, Display Subsystems, Introduction, Top
2105 @unnumbered 2 Installation and Troubleshooting
1349 2106
1350 This is part 2 of the XEmacs Frequently Asked Questions list. This 2107 This is part 2 of the XEmacs Frequently Asked Questions list. This
1351 section is devoted to Installation, Maintenance and Trouble Shooting. 2108 section is devoted to Installation, Maintenance and Troubleshooting.
1352 2109
1353 @menu 2110 @menu
1354 Installation: 2111 2.0: Installation (General), Packages
1355 * Q2.0.1:: Running XEmacs without installing. 2112 * Q2.0.1:: How do I install the packages?
1356 * Q2.0.2:: XEmacs is too big. 2113 * Q2.0.2:: I don't need no steenkin' packages. Do I?
1357 * Q2.0.3:: Compiling XEmacs with Netaudio. 2114 * Q2.0.3:: Where do I find external libraries?
1358 * Q2.0.4:: Problems with Linux and ncurses. 2115 * Q2.0.4:: How do I specify the paths that XEmacs uses for finding files?
1359 * Q2.0.5:: Do I need X11 to run XEmacs? 2116 * Q2.0.5:: Running XEmacs without installing
1360 * Q2.0.6:: I'm having strange crashes. What do I do? 2117 * Q2.0.6:: XEmacs is too big
1361 * Q2.0.7:: Libraries in non-standard locations. 2118 * Q2.0.7:: EFS fails with "500 AUTH not understood" (NEW)
1362 * Q2.0.8:: can't resolve symbol _h_errno 2119
1363 * Q2.0.9:: Where do I find external libraries? 2120 2.1: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
1364 * Q2.0.10:: After I run configure I find a coredump, is something wrong? 2121 * Q2.1.1:: Libraries in non-standard locations
1365 * Q2.0.11:: XEmacs can't resolve host names. 2122 * Q2.1.2:: Why can't I strip XEmacs?
1366 * Q2.0.12:: Why can't I strip XEmacs? 2123 * Q2.1.3:: Compiling XEmacs with Netaudio.
1367 * Q2.0.13:: I don't need no steenkin' packages. Do I? 2124 * Q2.1.4:: Problems with Linux and ncurses.
1368 * Q2.0.14:: I don't want to install a million .els one at a time! 2125
1369 * Q2.0.15:: EFS fails with "500 AUTH not understood" (NEW) 2126 2.2: Windows Installation (Windows, Cygwin, MinGW)
1370 * Q2.0.16:: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW) 2127 * Q2.2.1:: What exactly are all the different ways to build XEmacs under Windows?
1371 2128 * Q2.2.2:: What compiler/libraries do I need to compile XEmacs?
1372 Trouble Shooting: 2129 * Q2.2.3:: How do I compile the native port?
1373 * Q2.1.1:: XEmacs just crashed on me! 2130 * Q2.2.4:: What do I need for Cygwin?
1374 * Q2.1.2:: Cryptic Minibuffer messages. 2131 * Q2.2.5:: How do I compile under Cygwin?
1375 * Q2.1.3:: Translation Table Syntax messages at Startup. 2132 * Q2.2.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
1376 * Q2.1.4:: Startup warnings about deducing proper fonts? 2133 * Q2.2.7:: How do I compile with X support?
1377 * Q2.1.5:: XEmacs cannot connect to my X Terminal. 2134 * Q2.2.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
1378 * Q2.1.6:: XEmacs just locked up my Linux X server. 2135
1379 * Q2.1.7:: HP Alt key as Meta. 2136 2.3: General Troubleshooting
1380 * Q2.1.8:: got (wrong-type-argument color-instance-p nil)! 2137 * Q2.3.1:: Help! XEmacs just crashed on me!
1381 * Q2.1.9:: XEmacs causes my OpenWindows 3.0 server to crash. 2138 * Q2.3.2:: XEmacs crashes and I compiled it myself.
1382 * Q2.1.10:: Warnings from incorrect key modifiers. 2139 * Q2.3.3:: How to debug an XEmacs problem with a debugger
1383 * Q2.1.11:: Can't instantiate image error... in toolbar 2140 * Q2.3.4:: I get a cryptic error message when trying to do something.
1384 * Q2.1.12:: Regular Expression Problems on DEC OSF1. 2141 * Q2.3.5:: XEmacs hangs when I try to do something.
1385 * Q2.1.13:: HP/UX 10.10 and @code{create_process} failure 2142 * Q2.3.6:: I get an error message when XEmacs is running in batch mode.
1386 * Q2.1.14:: @kbd{C-g} doesn't work for me. Is it broken? 2143 * Q2.3.7:: The keyboard or mouse is not working properly, or I have some other event-related problem.
1387 * Q2.1.15:: How to debug an XEmacs problem with a debugger. 2144 * Q2.3.8:: @kbd{C-g} doesn't work for me. Is it broken?
1388 * Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. 2145 * Q2.3.9:: How do I debug process-related problems?
1389 * Q2.1.17:: @samp{Marker does not point anywhere}. 2146 * Q2.3.10:: XEmacs is outputting lots of X errors.
1390 * Q2.1.18:: XEmacs is outputting lots of X errors. 2147 * Q2.3.11:: After upgrading, XEmacs won't do `foo' any more!
1391 * Q2.1.19:: XEmacs does not follow the local timezone. 2148
1392 * Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} 2149 2.4: Startup-Related Problems
1393 * Q2.1.21:: [This question intentionally left blank] 2150 * Q2.4.1:: XEmacs cannot connect to my X Terminal!
1394 * Q2.1.22:: XEmacs seems to take a really long time to do some things. 2151 * Q2.4.2:: XEmacs won't start on Windows.
1395 * Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. 2152 * Q2.4.3:: XEmacs won't start without network.
1396 * Q2.1.24:: XEmacs won't start without network. 2153 * Q2.4.4:: Startup warnings about deducing proper fonts?
1397 * Q2.1.25:: After upgrading, XEmacs won't do `foo' any more! 2154 * Q2.4.5:: Warnings from incorrect key modifiers.
2155 * Q2.4.6:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
1398 @end menu 2156 @end menu
1399 2157
2158 @unnumberedsec 2.0: Installation (General), Packages
2159
1400 @node Q2.0.1, Q2.0.2, Installation, Installation 2160 @node Q2.0.1, Q2.0.2, Installation, Installation
1401 @unnumberedsec 2.0: Installation 2161 @unnumberedsubsec Q2.0.1: How do I install the packages?
1402 @unnumberedsubsec Q2.0.1: Running XEmacs without installing 2162
2163 Many people really liked the old way that packages were bundled and do
2164 not want to mess with packages at all. You can grab all the packages at
2165 once like you used to with old XEmacs versions. Download the file
2166
2167 @file{xemacs-sumo.tar.gz}
2168
2169 For an XEmacs compiled with Mule you also need
2170
2171 @file{xemacs-mule-sumo.tar.gz}
2172
2173 These are in the @file{packages} directory on your XEmacs mirror
2174 archive. N.B. They are called 'Sumo Tarballs' for good reason. They
2175 are currently about 15MB and 2.3MB (gzipped) respectively.
2176
2177 Install them on Unix and Mac OS X using the shell/Terminal command
2178
2179 @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -}
2180
2181 Where @samp{$prefix} is what you gave to the @samp{--prefix} flag to
2182 @file{configure}, and defaults to @file{/usr/local}.
2183
2184 If you have the packages somewhere nonstandard and don't want to
2185 bother with @samp{$prefix} (for example, you're a developer and are
2186 compiling the packages yourself, and want your own private copy of
2187 everything), you can also directly specify this using @file{configure}.
2188 To do this under 21.5 and above use the @samp{--package-prefix} parameter
2189 to specify the directory under which you untarred the above tarballs.
2190 Under 21.4 and previous you need to use @samp{--package-path},
2191 something like this:
2192
2193 @example
2194 configure --package-path="~/.xemacs::/src/xemacs/site-packages:/src/xemacs/xemacs-packages:/src/xemacs/mule-packages" ...
2195 @end example
2196
2197 Under Windows, you need to place the above @samp{tar.gz} files in the
2198 directory specified using the @samp{PACKAGE_PREFIX} value in
2199 @file{nt/config.inc} and by default is @file{\Program Files\XEmacs}.
2200 (To untar a @samp{tar.gz} file you will need to use a utility such as
2201 WinZip, unless you have Cygwin or a similar environment installed, in
2202 which case the above Unix shell command should work fine.) If you want
2203 the packages somewhere else, just change @samp{PACKAGE_PREFIX}.
2204
2205 Note that XEmacs finds the packages automatically anywhere underneath
2206 the directory tree where it expects to find the packages. All you
2207 need to do is put stuff there; you don't need to run any program to
2208 tell XEmacs to find the packges, or do anything of that sort.
2209
2210 See @file{README.packages} in the top-level source directory for more
2211 detailed installation instructions.
2212
2213 As the Sumo tarballs are not regenerated as often as the individual
2214 packages, it is recommended that you use the automatic package tools
2215 afterwards to pick up any recent updates.
2216
2217 @emph{More detailed info}: If the package path is not explicitly
2218 specified, XEmacs looks for the package directory
2219 @file{xemacs-packages} (and @file{mule-packages}, etc.) first under
2220 @samp{~/.xemacs}, then for a sister directory
2221 @file{lib/xemacs-VERSION} of the directory in which the XEmacs
2222 executable is located, then for a sister directory @file{lib/xemacs}.
2223 The XEmacs executable (under Unix at least) is installed by default in
2224 @file{/usr/local/bin}; this explains why XEmacs in its default
2225 installation will find packages that you put under
2226 @file{/usr/local/lib/xemacs}.
2227
2228 #### I'm not sure what exactly happens when the package path is
2229 specifically given, as is the case when the @samp{--package-prefix} or
2230 @samp{--package-path} options are given to @file{configure}, and
2231 always under Microsoft Windows.
2232
2233 @emph{NOTE}: For detailed information about how the package
2234 hierarchies work, @xref{Package Overview,,,lispref, the XEmacs Lisp
2235 Reference Manual}.
2236
2237 @node Q2.0.2, Q2.0.3, Q2.0.1, Installation
2238 @unnumberedsubsec Q2.0.2: I don't need no steenkin' packages. Do I?
2239
2240 Strictly speaking, no. XEmacs will build and install just fine without
2241 any packages installed. However, only the most basic editing functions
2242 will be available with no packages installed, so installing packages is
2243 an essential part of making your installed XEmacs _useful_.
2244
2245 @node Q2.0.3, Q2.0.4, Q2.0.2, Installation
2246 @unnumberedsubsec Q2.0.3: Where do I find external libraries?
2247
2248 All external libraries used by XEmacs can be found at the XEmacs FTP
2249 site
2250 @iftex
2251 @*
2252 @end iftex
2253 @uref{http://ftp.xemacs.org/pub/aux/}.
2254
2255 The library versions available here are known to work with XEmacs.
2256 (Newer versions will probably work as well but we can't guarantee it.)
2257 We try to keep the libraries up-to-date but may not always succeed.
2258 If you want to make sure of getting the latest version, check the
2259 canonical locations below.
2260
2261 The canonical locations (at the time of this writing) are as follows:
2262
2263 @subheading Databases:
2264
2265 These DBM implementations are supported by XEmacs:
2266 native dbm (provided by OS), GDBM, and Berkeley DB version 1, 2 and 3.
2267
2268 @example
2269 GDBM is the GNU DBM library, compatible with the Unix dbm library.
2270 gdbm-1.8.3.tar.gz
2271 ftp://ftp.gnu.org/pub/gnu/gdbm/
2272 http://www.gnu.org/software/gdbm/gdbm.html
2273 configure flag: --with-database=gnudbm
2274
2275 Berkeley DB is provided by Sleepycat Software.
2276 db-4.1.25.tar.gz
2277 http://www.sleepycat.com/
2278 configure flag: --with-database=berkdb
2279
2280 OpenLDAP is an implementation of the LDAP X.500 Directory protocol.
2281 openldap-2.1.12.tgz
2282 http://www.openldap.org/
2283 configure flag: --with-ldap
2284 @end example
2285
2286 @subheading Image Format Libraries:
2287
2288 @example
2289 `compface' is an old library for viewing X-Faces in messages.
2290 It is no longer being maintained and has been frozen for 10 years or
2291 so, but still works. It should be compiled with the same options that
2292 X11 was compiled with on your system. The version of this library at
2293 xemacs.org includes the `xbm2xface.pl' script, written by
2294 @email{stig@@hackvan.com, Stig}, which may be useful when generating
2295 your own xface.
2296 compface.tar.gz
2297 ftp://ftp.cs.indiana.edu/pub/faces/compface/
2298 configure flag: --with-xface
2299
2300 The JPEG image format library
2301 jpegsrc.v6b.tar.gz
2302 ftp://ftp.uu.net/graphics/jpeg/
2303 http://www.ijg.org/
2304 configure flag: --with-jpeg
2305
2306 The TIFF image format library
2307 tiff-v3.4-tar.gz
2308 ftp://ftp.sgi.com/graphics/tiff/
2309 configure flag: --with-tiff
2310
2311 The XPM image format library
2312 xpm-3.4k.tar.gz
2313 ftp://koala.inria.fr/pub/xpm/
2314 http://www.inria.fr/koala/lehors/xpm.html
2315 configure flag: --with-xpm
2316
2317 The PNG image format library
2318 libpng-1.2.15.tar.gz
2319 http://www.libpng.org/pub/png/
2320 configure flag: --with-png
2321
2322 The ZLIB compression library is used by the PNG library.
2323 A GZIP coding system is also available, in XEmacs 21.5 and onward.
2324 zlib-1.1.4.tar.gz
2325 http://www.gzip.org/zlib/
2326 @end example
2327
2328 @subheading Other Multimedia:
2329
2330 @example
2331 Network Audio System (NAS) is a client-server sound library for X.
2332 nas-1.6.src.tar.gz
2333 ftp://ftp.x.org/contrib/audio/nas/
2334 http://radscan.com/nas.html
2335 configure flag: --with-nas
2336
2337 Enlightened Sound Daemon (ESD) is yet another sound system.
2338 esound-0.2.8.tar.gz
2339 http://www.tux.org/~ricdude/EsounD.html
2340
2341 Netpbm is a collection of programs that XEmacs might use at runtime.
2342 netpbm-1mar1994.tar.gz
2343 netpbm-9.2.tar.gz
2344 ftp://metalab.unc.edu/pub/Linux/apps/graphics/convert/
2345
2346 Xaw3d is designed to be a drop-in replacement for the Athena widget
2347 library that `looks cooler'.
2348 Xaw3d-1.5.tar.gz
2349 ftp://ftp.x.org/contrib/widgets/Xaw3d/
2350 @end example
2351
2352 @subheading Internationalization:
2353
2354 @example
2355 Canna is a Japanese language input method.
2356 Canna has not been updated since 1996.
2357 Canna35b2.tar.gz
2358 cfw35f1p.exe (Canna on W95)
2359 http://www.nec.co.jp/canna/ (in Japanese)
2360 http://www.nec.co.jp/canna/c-down.html (download site, for those not able
2361 to read Japanese)
2362 configure flag: --with-canna
2363
2364 Wnn is a multi-language mule input method.
2365 Wnn4 is the free version, while Wnn6 is the commercial version.
2366 Wnn4.2.tar.gz
2367 ftp://ftp.omronsoft.co.jp/pub/Wnn6/ (commercial version)
2368
2369 Wnn4 appears completely orphaned; searches on google turn up XEmacs' own
2370 site first. However, here is a (very old) site with some info on WNN:
2371 http://web.kyoto-inet.or.jp/people/tomoko-y/biwa/root/wnn_e.html
2372
2373 configure flag: --with-wnn
2374
2375 Mew is a multi-lingual mailreader.
2376 mew-1.94.2.tar.gz
2377 http://www.mew.org/
2378
2379 kterm is a multi-lingual terminal emulator with special support for
2380 Asian languages with large character sets.
2381 kterm-6.2.0.tar.gz
2382 ftp://ftp.x.org/contrib/applications/
2383
2384 ispell is a spelling checker with support for multiple languages.
2385 ispell-3.2.06.tar.gz
2386 http://ficus-www.cs.ucla.edu/ficus-members/geoff/ispell.html
2387 http://www.kdstevens.com/~stevens/ispell-page.html
2388
2389 SKK (Simple Kana-to-Kanji) is a simple input method for Japanese.
2390 It has been modified to work with XEmacs.
2391 skk-8.6x.tar.gz
2392
2393 X11 fonts for numerous languages.
2394 intlfonts-1.2.tar.gz
2395 http://www.gnu.org/directory/localization/intlfonts.html
2396 @end example
2397
2398 @subheading Miscellaneous:
2399
2400 @example
2401 ncurses is the standard free software curses library.
2402 ncurses-5.3.tar.gz
2403 http://dickey.his.com/ncurses/ncurses.html
2404 ftp://dickey.his.com/ncurses/
2405 @end example
2406
2407 @subheading Developer Tools:
2408
2409 @example
2410 CVS is the version control system used by XEmacs to manage the sources.
2411 cvs-1.11.5.tar.gz
2412 http:/www.cvshome.org/
2413
2414 bzip2 is a compressor that compresses much better than gzip.
2415 bzip2-1.0.2.tar.gz
2416 http://sources.redhat.com/bzip2/
2417
2418 texi2html is a script that converts Texinfo pages to HTML.
2419 texi2html-1.64.tar.gz
2420 http://www.mathematik.uni-kl.de/~obachman/Texi2html/
2421
2422 Gnats is a bug tracking system. Red Hat recommends using GNATS 4.0 for any
2423 new installations (see the beta below).
2424 gnats-3.113.tar.gz
2425 gnats-3.999.2.tar.gz
2426 cern_wwwgnats_v2.0-beta.tar.gz (WWW front end to Gnats)
2427 http://sources.redhat.com/gnats/
2428
2429 Use autoconf to generate `configure' from `configure.in'.
2430 NOTE: There is a more recent series, 2.5x, that XEmacs doesn't currently
2431 work with.
2432 autoconf-2.13.tar.gz
2433 http://www.gnu.org/software/autoconf/
2434
2435 Use the `applypatch' program from the makepatch package
2436 to apply patches to upgrade from one beta release to another.
2437 Use this if you have a slow or expensive connection to the Net.
2438 makepatch-2.00_09.tar.gz
2439 http://www.squirrel.nl/people/jvromans/
2440 @end example
2441
2442 @node Q2.0.4, Q2.0.5, Q2.0.3, Installation
2443 @unnumberedsubsec Q2.0.4: How do I specify the paths that XEmacs uses for finding files?
2444
2445 You can specify what paths to use by using a number of different flags
2446 when running configure. See the section MAKE VARIABLES in the top-level
2447 file INSTALL in the XEmacs distribution for a listing of those flags.
2448
2449 Most of the time, however, the simplest fix is: @strong{do not} specify
2450 paths as you might for GNU Emacs. XEmacs can generally determine the
2451 necessary paths dynamically at run time. The only path that generally
2452 needs to be specified is the root directory to install into. That can
2453 be specified by passing the @code{--prefix} flag to configure. For a
2454 description of the XEmacs install tree, please consult the @file{NEWS}
2455 file.
2456
2457 @node Q2.0.5, Q2.0.6, Q2.0.4, Installation
2458 @unnumberedsubsec Q2.0.5: Running XEmacs without installing
1403 2459
1404 How can I just try XEmacs without installing it? 2460 How can I just try XEmacs without installing it?
1405 2461
1406 XEmacs will run in place without requiring installation and copying of 2462 XEmacs will run in place without requiring installation and copying of
1407 the Lisp directories, and without having to specify a special build-time 2463 the Lisp directories, and without having to specify a special build-time
1417 (You will obviously use whatever directory you downloaded the source 2473 (You will obviously use whatever directory you downloaded the source
1418 tree to instead of @file{/i/xemacs-20.2}). 2474 tree to instead of @file{/i/xemacs-20.2}).
1419 2475
1420 This will let you run XEmacs without massive copying. 2476 This will let you run XEmacs without massive copying.
1421 2477
1422 @node Q2.0.2, Q2.0.3, Q2.0.1, Installation 2478 @node Q2.0.6, Q2.0.7, Q2.0.5, Installation
1423 @unnumberedsubsec Q2.0.2: XEmacs is too big 2479 @unnumberedsubsec Q2.0.6: XEmacs is too big
1424 2480
1425 The space required by the installation directories can be 2481 The space required by the installation directories can be
1426 reduced dramatically if desired. Gzip all the .el files. Remove all 2482 reduced dramatically if desired. Gzip all the .el files. Remove all
1427 the packages you'll never want to use. Remove the TexInfo manuals. 2483 the packages you'll never want to use. Remove the TexInfo manuals.
1428 Remove the Info (and use just hardcopy versions of the manual). Remove 2484 Remove the Info (and use just hardcopy versions of the manual). Remove
1447 (@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages 2503 (@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages
1448 you wish to delete, and then @kbd{x} to delete them. 2504 you wish to delete, and then @kbd{x} to delete them.
1449 2505
1450 Another method is to do @code{M-x package-get-delete-package}. 2506 Another method is to do @code{M-x package-get-delete-package}.
1451 2507
1452 @node Q2.0.3, Q2.0.4, Q2.0.2, Installation 2508 @node Q2.0.7, Q2.1.1, Q2.0.6, Installation
1453 @unnumberedsubsec Q2.0.3: Compiling XEmacs with Netaudio. 2509 @unnumberedsubsec Q2.0.7: EFS fails with "500 AUTH not understood" (NEW)
2510
2511 A typical error: FTP Error: USER request failed; 500 AUTH not understood.
2512
2513 Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends
2514 on comp.emacs.xemacs:
2515
2516 tell your ftp client to not attempt AUTH authentication (or do not
2517 use FTP servers that don't understand AUTH)
2518
2519 and notes that you need to add an element (often "-u") to
2520 `efs-ftp-program-args'. Use M-x customize-variable, and verify the
2521 needed flag with `man ftp' or other local documentation.
2522
2523 @unnumberedsec 2.1: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
2524
2525 @node Q2.1.1, Q2.1.2, Q2.0.7, Installation
2526 @unnumberedsubsec Q2.1.1: Libraries in non-standard locations
2527
2528 I have x-faces, jpeg, xpm etc. all in different places. I've tried
2529 space-separated, comma-separated, several --site-libraries, all to no
2530 avail.
2531
2532 @example
2533 --site-libraries='/path/one /path/two /path/etc'
2534 @end example
2535
2536 @node Q2.1.2, Q2.1.3, Q2.1.1, Installation
2537 @unnumberedsubsec Q2.1.2: Why can't I strip XEmacs?
2538
2539 @email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes:
2540
2541 @quotation
2542 Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The
2543 link gives you a bare-boned emacs (called temacs). temacs is then run,
2544 preloading some of the lisp files. The result is then dumped into a new
2545 executable, named xemacs, which will contain all of the preloaded lisp
2546 functions and data.
2547
2548 Now, during the dump itself, the executable (code+data+symbols) is
2549 written on disk using a special unexec() function. This function is
2550 obviously heavily system dependent. And on some systems, it leads to an
2551 executable which, although valid, cannot be stripped without damage. If
2552 memory serves, this is especially the case for AIX binaries. On other
2553 architectures it might work OK.
2554
2555 The Right Way to strip the emacs binary is to strip temacs prior to
2556 dumping xemacs. This will always work, although you can do that only if
2557 you install from sources (as temacs is @file{not} part of the binary
2558 kits).
2559 @end quotation
2560
2561 @email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes:
2562
2563 @quotation
2564 Here is the trick:
2565
2566 @enumerate
2567 @item
2568 [ ./configure; make ]
2569
2570 @item
2571 rm src/xemacs
2572
2573 @item
2574 strip src/temacs
2575
2576 @item
2577 make
2578
2579 @item
2580 cp src/xemacs /usr/local/bin/xemacs
2581
2582 @item
2583 cp lib-src/DOC-19.16-XEmacs
2584 @iftex
2585 \ @*
2586 @end iftex
2587 /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
2588 @end enumerate
2589 @end quotation
2590
2591 @node Q2.1.3, Q2.1.4, Q2.1.2, Installation
2592 @unnumberedsubsec Q2.1.3: Compiling XEmacs with Netaudio.
1454 2593
1455 What is the best way to compile XEmacs with the netaudio system, since I 2594 What is the best way to compile XEmacs with the netaudio system, since I
1456 have got the netaudio system compiled but installed at a weird place, I 2595 have got the netaudio system compiled but installed at a weird place, I
1457 am not root. Also in the READMEs it does not say anything about 2596 am not root. Also in the READMEs it does not say anything about
1458 compiling with the audioserver? 2597 compiling with the audioserver?
1476 BTW, netaudio has been renamed as it has a name clash with something 2615 BTW, netaudio has been renamed as it has a name clash with something
1477 else, so if you see references to NAS or Network Audio System, it's the 2616 else, so if you see references to NAS or Network Audio System, it's the
1478 same thing. It also might be found at 2617 same thing. It also might be found at
1479 @uref{ftp://ftp.x.org/contrib/audio/nas/}. 2618 @uref{ftp://ftp.x.org/contrib/audio/nas/}.
1480 2619
1481 @node Q2.0.4, Q2.0.5, Q2.0.3, Installation 2620 @node Q2.1.4, Q2.2.1, Q2.1.3, Installation
1482 @unnumberedsubsec Q2.0.4: Problems with Linux and ncurses. 2621 @unnumberedsubsec Q2.1.4: Problems with Linux and ncurses.
1483 2622
1484 On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc 2623 On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc
1485 5.2.18, XEmacs 20.0b20 is unable to open a tty device: 2624 5.2.18, XEmacs 20.0b20 is unable to open a tty device:
1486 2625
1487 @example 2626 @example
1498 @quotation 2637 @quotation
1499 Your ncurses configuration is messed up. Your /usr/lib/terminfo is a 2638 Your ncurses configuration is messed up. Your /usr/lib/terminfo is a
1500 bad pointer, perhaps to a CD-ROM that is not inserted. 2639 bad pointer, perhaps to a CD-ROM that is not inserted.
1501 @end quotation 2640 @end quotation
1502 2641
1503 @node Q2.0.5, Q2.0.6, Q2.0.4, Installation 2642 @unnumberedsec 2.2: Windows Installation (Windows, Cygwin, MinGW)
1504 @unnumberedsubsec Q2.0.5: Do I need X11 to run XEmacs? 2643
1505 2644 @node Q2.2.1, Q2.2.2, Q2.1.4, Installation
1506 No. The name @dfn{XEmacs} is unfortunate in the sense that it is 2645 @unnumberedsubsec Q2.2.1: What exactly are all the different ways to build XEmacs under Windows?
1507 @strong{not} an X Window System-only version of Emacs. XEmacs has 2646
1508 full color support on a color-capable character terminal. 2647 XEmacs can be built in several ways in the MS Windows environment.
1509 2648
1510 @node Q2.0.6, Q2.0.7, Q2.0.5, Installation 2649 The standard way is what we call the "native" port. It uses the Win32
1511 @unnumberedsubsec Q2.0.6: I'm having strange crashes. What do I do? 2650 API and has no connection with X whatsoever -- it does not require X
1512 2651 libraries to build, nor does it require an X server to run. The native
1513 There have been a variety of reports of crashes due to compilers with 2652 port is the most reliable version and provides the best graphical
1514 buggy optimizers. Please see the @file{PROBLEMS} file that comes with 2653 support. Almost all development is geared towards this version, and
1515 XEmacs to read what it says about your platform. 2654 there is little reason not to use it.
1516 2655
1517 If you compiled XEmacs using @samp{--use-union-type} (or the option 2656 The second way to build is the Cygwin port. It takes advantage of
1518 @samp{USE_UNION_TYPE} in @file{config.inc} under Windows), try 2657 Cygnus emulation library under Win32. @xref{Q1.1.4, What are Cygwin
1519 recompiling again without it. The union type has been known to trigger 2658 and MinGW, and do I need them to run XEmacs?}, for more information.
1520 compiler errors in a number of cases. 2659
1521 2660 A third way is the MinGW port. It uses the Cygwin environment to
1522 @node Q2.0.7, Q2.0.8, Q2.0.6, Installation 2661 build but does not require it at runtime. @xref{Q1.1.4, What are
1523 @unnumberedsubsec Q2.0.7: Libraries in non-standard locations 2662 Cygwin and MinGW, and do I need them to run XEmacs?}, for more
1524 2663 information.
1525 I have x-faces, jpeg, xpm etc. all in different places. I've tried 2664
1526 space-separated, comma-separated, several --site-libraries, all to no 2665 Finally, you might also be able to build the non-Cygwin, non-MinGW "X"
1527 avail. 2666 port. This was actually the first version of XEmacs that ran under MS
2667 Windows, and although the code is still in XEmacs, it's essentially
2668 orphaned and it's unlikely it will compile without a lot of work. If
2669 you want an MS Windows versin of XEmacs that supports X, use the Cygwin
2670 version. (The X support there is actively maintained, so that Windows
2671 developers can test the X support in XEmacs.)
2672
2673 @node Q2.2.2, Q2.2.3, Q2.2.1, Installation
2674 @unnumberedsubsec Q2.2.2: What compiler/libraries do I need to compile XEmacs?
2675
2676 You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
2677 some beta testers currently trying to compile with VC.NET, aka version
2678 7.0, but we can't yet report complete success.) For the Cygwin and
2679 MinGW versions, you need the Cygwin environment, which comes with GCC,
2680 the compiler used for those versions. @xref{Q1.1.4, What are Cygwin
2681 and MinGW, and do I need them to run XEmacs?}, for more information on
2682 Cygwin and MinGW.
2683
2684 @node Q2.2.3, Q2.2.4, Q2.2.2, Installation
2685 @unnumberedsubsec Q2.2.3: How do I compile the native port?
2686
2687 Please read the file @file{nt/README} in the XEmacs distribution, which
2688 contains the full description.
2689
2690 @node Q2.2.4, Q2.2.5, Q2.2.3, Installation
2691 @unnumberedsubsec Q2.2.4: What do I need for Cygwin?
2692
2693 You can find the Cygwin tools and compiler at:
2694
2695 @uref{http://www.cygwin.com/}
2696
2697 Click on the @samp{Install or update now!} link, which will download a
2698 file @file{setup.exe}, which you can use to download everything
2699 else. (You will need to pick a mirror site; @samp{mirrors.rcn.net} is
2700 probably the best.) You should go ahead and install everything --
2701 you'll get various ancillary libraries that XEmacs needs or likes,
2702 e.g. XPM, PNG, JPEG, TIFF, etc. You can also get X Windows here, if you
2703 want to compile under X.
2704
2705 If you want to compile without X, you will need the @file{xpm-nox}
2706 library, which must be specifically selected in the Cygwin netinstaller;
2707 it is not selected by default. The package has had various names.
2708 Currently it is called @file{cygXpm-noX4.dll}.
2709
2710 @node Q2.2.5, Q2.2.6, Q2.2.4, Installation
2711 @unnumberedsubsec Q2.2.5: How do I compile under Cygwin?
2712
2713 Similar as on Unix; use the usual `configure' and `make' process.
2714 Some problems to watch out for:
2715
2716 @itemize @bullet
2717 @item
2718 make sure HOME is set. This controls where you
2719 @file{init.el} file comes from;
2720
2721 @item
2722 @samp{CYGWIN} needs to be set to @samp{tty} for process support to work;
2723
2724 @item
2725 picking up some other grep or other UNIX-like tools can kill configure;
2726
2727 @item
2728 static heap too small, adjust @file{src/sheap-adjust.h} to a more positive
2729 number;
2730
2731 @item
2732 (Unconfirmed) The Cygwin version doesn't understand
2733 @file{//machine/path} type paths so you will need to manually mount a
2734 directory of this form under a unix style directory for a build to work
2735 on the directory;
2736
2737 @item
2738 If you're building @strong{WITHOUT} X11, don't forget to change symlinks
2739 @file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to
2740 the non-X versions of these libraries. By default they point to the X
2741 versions. So:
1528 2742
1529 @example 2743 @example
1530 --site-libraries='/path/one /path/two /path/etc' 2744 /usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a
2745 /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
1531 @end example 2746 @end example
1532 2747
1533 @node Q2.0.8, Q2.0.9, Q2.0.7, Installation 2748 (This advice may now be obsolete because of the availability of the
1534 @unnumberedsubsec Q2.0.8: can't resolve symbol _h_errno 2749 cygXpm-noX4.dll package from Cygwin. Send confirmation to
1535 2750 @email{faq@@xemacs.org}.)
1536 You are using the Linux/ELF distribution of XEmacs 19.14, and your ELF 2751
1537 libraries are out of date. You have the following options: 2752 @item
1538 2753 Other problems are listed in the @file{PROBLEMS} file, in the top-level
1539 @enumerate 2754 directory of the XEmacs sources.
1540 @item 2755
1541 Upgrade your libc to at least 5.2.16 (better is 5.2.18, 5.3.12, or 2756 @end itemize
1542 5.4.10). 2757
1543 2758
1544 @item 2759 @node Q2.2.6, Q2.2.7, Q2.2.5, Installation
1545 Patch the XEmacs binary by replacing all occurrences of 2760 @unnumberedsubsec Q2.2.6: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
1546 @samp{_h_errno^@@} with 2761
1547 @iftex 2762 Similar to the method for Unix. Things to remember:
1548 @* 2763
1549 @end iftex 2764 @itemize @bullet
1550 @samp{h_errno^@@^@@}. Any version of Emacs will 2765 @item
1551 suffice. If you don't understand how to do this, don't do it. 2766 Specify the target host on the command line for @file{./configure}, e.g.
1552 2767 @samp{./configure i586-pc-mingw32}.
1553 @item 2768
1554 Rebuild XEmacs yourself---any working ELF version of libc should be 2769 @item
1555 O.K. 2770 Be sure that your build directory is mounted such that it has the
1556 @end enumerate 2771 same path either as a cygwin path (@file{/build/xemacs}) or as a Windows
1557 2772 path (@file{c:\build\xemacs}).
1558 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes: 2773
1559 2774 @item
1560 @quotation 2775 Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng},
1561 Why not use a Perl one-liner for No. 2? 2776 @file{compface}, etc.
1562 2777
1563 @example 2778 @item
1564 perl -pi -e 's/_h_errno\0/h_errno\0\0/g' \ 2779 Specify the target location of the extra libs on the command line
1565 /usr/local/bin/xemacs-19.14 2780 to @file{configure}, e.g.
1566 @end example 2781 @samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}.
1567 2782 @end itemize
1568 NB: You @emph{must} patch @file{/usr/local/bin/xemacs-19.14}, and not 2783
1569 @file{xemacs} because @file{xemacs} is a link to @file{xemacs-19.14}; 2784 @node Q2.2.7, Q2.2.8, Q2.2.6, Installation
1570 the Perl @samp{-i} option will cause unwanted side-effects if applied to 2785 @unnumberedsubsec Q2.2.7: How do I compile with X support?
1571 a symbolic link. 2786
1572 @end quotation 2787 To compile under Cygwin, all you need to do is install XFree86, which
1573 2788 is available as part of the standard Cygwin installation.
1574 @email{steve@@xemacs.org, SL Baur} writes: 2789 @uref{http://www.cygwin.com/}. Once installed, @file{configure}
1575 2790 should automatically find the X libraries and compile with X support.
1576 @quotation 2791
1577 If you build against a recent libc-5.4 (late enough to have caused 2792 As noted above, the non-Cygwin X support is basically orphaned, and
1578 problems earlier in the beta cycle) and then run with an earlier version 2793 probably won't work. But if it want to try, it's described in
1579 of libc, you get a 2794 @file{nt/README} in some detail. Basically, you need to get X11
1580 2795 libraries from @uref{ftp://ftp.x.org}, and compile them. If the
1581 @example 2796 precompiled versions are available somewhere, we don't know of it.
1582 $ xemacs 2797
1583 xemacs: can't resolve symbol '__malloc_hook' 2798 @node Q2.2.8, Q2.3.1, Q2.2.7, Installation
1584 zsh: 7942 segmentation fault (core dumped) xemacs 2799 @unnumberedsubsec Q2.2.8: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
1585 @end example
1586
1587 (Example binary compiled against libc-5.4.23 and run with libc-5.4.16).
1588
1589 The solution is to upgrade to at least libc-5.4.23. Sigh. Drat.
1590 @end quotation
1591
1592 @node Q2.0.9, Q2.0.10, Q2.0.8, Installation
1593 @unnumberedsubsec Q2.0.9: Where do I find external libraries?
1594
1595 All external libraries used by XEmacs can be found at the XEmacs FTP
1596 site
1597 @iftex
1598 @*
1599 @end iftex
1600 @uref{ftp://ftp.xemacs.org/pub/xemacs/aux/}.
1601 [These tarballs and this FAQ are wa-a-ay out of date. Sorry, I'm not
1602 currently network-capable, and I will probably forgot to update this
1603 before submitting the patch. -- Ed.]
1604
1605 @c Changed June Link above, <URL:ftp://ftp.xemacs.org/pub/aux/> was dead.
1606 @c This list is a pain in the you-know-what to keep in synch with the
1607 @c world.
1608 The canonical locations (at the time of this writing) are as follows:
1609
1610 @table @asis
1611 @item JPEG
1612 @uref{ftp://ftp.uu.net/graphics/jpeg/}. Version 6a is current.
1613 @c Check from host with legal IP address
1614 @item XPM
1615 @uref{ftp://ftp.x.org/contrib/libraries/}. Version 3.4j is current.
1616 Older versions of this package are known to cause XEmacs crashes.
1617
1618 @item TIFF
1619 @uref{ftp://ftp.sgi.com/graphics/tiff/}. v3.4 is current. The latest
1620 beta is v3.4b035. There is a HOWTO here.
1621
1622 @item PNG
1623 @uref{ftp://ftp.uu.net/graphics/png/}. 0.89c is current. XEmacs
1624 requires a fairly recent version to avoid using temporary files.
1625 @c Check from host with legal IP address
1626
1627 @uref{ftp://swrinde.nde.swri.edu/pub/png/src/}
1628
1629 @item Compface
1630 @uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/}. This library has
1631 been frozen for about 6 years, and is distributed without version
1632 numbers. @emph{It should be compiled with the same options that X11 was
1633 compiled with on your system}. The version of this library at
1634 XEmacs.org includes the @file{xbm2xface.pl} script, written by
1635 @email{stig@@hackvan.com}, which may be useful when generating your own xface.
1636
1637 @item NAS
1638 @uref{ftp://ftp.x.org/contrib/audio/nas/}.
1639 Version 1.2p5 is current. There is a FAQ here.
1640 @end table
1641
1642 @node Q2.0.10, Q2.0.11, Q2.0.9, Installation
1643 @unnumberedsubsec Q2.0.10: After I run configure I find a core dump, is something wrong?
1644
1645 Not necessarily. If you have GNU sed 3.0 you should downgrade it to
1646 2.05. From the @file{README} at prep.ai.mit.edu:
1647
1648 @quotation
1649 sed 3.0 has been withdrawn from distribution. It has major revisions,
1650 which mostly seem to be improvements; but it turns out to have bugs too
1651 which cause trouble in some common cases.
1652
1653 Tom Lord won't be able to work fixing the bugs until May. So in the
1654 mean time, we've decided to withdraw sed 3.0 from distribution and make
1655 version 2.05 once again the recommended version.
1656 @end quotation
1657
1658 It has also been observed that the vfork test on Solaris will leave a
1659 core dump.
1660
1661 @node Q2.0.11, Q2.0.12, Q2.0.10, Installation
1662 @unnumberedsubsec Q2.0.11: XEmacs doesn't resolve hostnames.
1663
1664 This is the result of a long-standing problem with SunOS and the fact
1665 that stock SunOS systems do not ship with DNS resolver code in libc.
1666
1667 @email{ckd@@loiosh.kei.com, Christopher Davis} writes:
1668
1669 @quotation
1670 That's correct [The SunOS 4.1.3 precompiled binaries don't do name
1671 lookup]. Since Sun figured that everyone used NIS to do name lookups
1672 (that DNS thing was apparently only a passing fad, right?), the stock
1673 SunOS 4.x systems don't have DNS-based name lookups in libc.
1674
1675 This is also why Netscape ships two binaries for SunOS 4.1.x.
1676
1677 The best solution is to compile it yourself; the configure script will
1678 check to see if you've put DNS in the shared libc and will then proceed
1679 to link against the DNS resolver library code.
1680 @end quotation
1681
1682 @node Q2.0.12, Q2.0.13, Q2.0.11, Installation
1683 @unnumberedsubsec Q2.0.12: Why can't I strip XEmacs?
1684
1685 @email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes:
1686
1687 @quotation
1688 Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The
1689 link gives you a bare-boned emacs (called temacs). temacs is then run,
1690 preloading some of the lisp files. The result is then dumped into a new
1691 executable, named xemacs, which will contain all of the preloaded lisp
1692 functions and data.
1693
1694 Now, during the dump itself, the executable (code+data+symbols) is
1695 written on disk using a special unexec() function. This function is
1696 obviously heavily system dependent. And on some systems, it leads to an
1697 executable which, although valid, cannot be stripped without damage. If
1698 memory serves, this is especially the case for AIX binaries. On other
1699 architectures it might work OK.
1700
1701 The Right Way to strip the emacs binary is to strip temacs prior to
1702 dumping xemacs. This will always work, although you can do that only if
1703 you install from sources (as temacs is @file{not} part of the binary
1704 kits).
1705 @end quotation
1706
1707 @email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes:
1708
1709 @quotation
1710 Here is the trick:
1711
1712 @enumerate
1713 @item
1714 [ ./configure; make ]
1715
1716 @item
1717 rm src/xemacs
1718
1719 @item
1720 strip src/temacs
1721
1722 @item
1723 make
1724
1725 @item
1726 cp src/xemacs /usr/local/bin/xemacs
1727
1728 @item
1729 cp lib-src/DOC-19.16-XEmacs
1730 @iftex
1731 \ @*
1732 @end iftex
1733 /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
1734 @end enumerate
1735 @end quotation
1736
1737 @node Q2.0.13, Q2.0.14, Q2.0.12, Installation
1738 @unnumberedsubsec Q2.0.13: I don't need no steenkin' packages. Do I?
1739
1740 Strictly speaking, no. XEmacs will build and install just fine without
1741 any packages installed. However, only the most basic editing functions
1742 will be available with no packages installed, so installing packages is
1743 an essential part of making your installed XEmacs _useful_.
1744
1745 @node Q2.0.14, Q2.0.15, Q2.0.13, Installation
1746 @unnumberedsubsec Q2.0.14: How do I figure out which packages to install?
1747
1748 Many people really liked the old way that packages were bundled and do
1749 not want to mess with packages at all. You can grab all the packages at
1750 once like you used to with old XEmacs versions. Download the file
1751
1752 @file{xemacs-sumo.tar.gz}
1753
1754 For an XEmacs compiled with Mule you also need
1755
1756 @file{xemacs-mule-sumo.tar.gz}
1757
1758 from the @file{packages} directory on your XEmacs mirror archive.
1759 N.B. They are called 'Sumo Tarballs' for good reason. They are
1760 currently about 15MB and 2.3MB (gzipped) respectively.
1761
1762 Install them by
1763
1764 @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -}
1765
1766 See README.packages for more detailed installation instructions.
1767
1768 As the Sumo tarballs are not regenerated as often as the individual
1769 packages, it is recommended that you use the automatic package tools
1770 afterwards to pick up any recent updates.
1771
1772 @node Q2.0.15, Q2.0.16, Q2.0.14, Installation
1773 @unnumberedsubsec Q2.0.15: EFS fails with "500 AUTH not understood" (NEW)
1774
1775 A typical error: FTP Error: USER request failed; 500 AUTH not understood.
1776
1777 Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends
1778 on comp.emacs.xemacs:
1779
1780 tell your ftp client to not attempt AUTH authentication (or do not
1781 use FTP servers that don't understand AUTH)
1782
1783 and notes that you need to add an element (often "-u") to
1784 `efs-ftp-program-args'. Use M-x customize-variable, and verify the
1785 needed flag with `man ftp' or other local documentation.
1786
1787 @node Q2.0.16, Q2.1.1, Q2.0.15, Installation
1788 @unnumberedsubsec Q2.0.16: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW)
1789 2800
1790 The Cygwin binary distributed with the netinstaller uses an external DLL 2801 The Cygwin binary distributed with the netinstaller uses an external DLL
1791 to handle XPM images (such as toolbar buttons). You may get an error like 2802 to handle XPM images (such as toolbar buttons). You may get an error like
1792 2803
1793 This application has failed to start because cygXpm-noX4.dll was not found. 2804 This application has failed to start because cygXpm-noX4.dll was not found.
1800 cygwin setup again and select this package. 2811 cygwin setup again and select this package.
1801 2812
1802 Ie, reinstalling XEmacs won't help because it is not part of the XEmacs 2813 Ie, reinstalling XEmacs won't help because it is not part of the XEmacs
1803 distribution. 2814 distribution.
1804 2815
1805 @node Q2.1.1, Q2.1.2, Q2.0.16, Installation 2816 @unnumberedsec 2.3: General Troubleshooting
1806 @unnumberedsec 2.1: Trouble Shooting 2817
1807 @unnumberedsubsec Q2.1.1: Help! XEmacs just crashed on me! 2818 @node Q2.3.1, Q2.3.2, Q2.2.8, Installation
2819 @unnumberedsubsec Q2.3.1: Help! XEmacs just crashed on me!
1808 2820
1809 First of all, don't panic. Whenever XEmacs crashes, it tries extremely 2821 First of all, don't panic. Whenever XEmacs crashes, it tries extremely
1810 hard to auto-save all of your files before dying. (The main time that 2822 hard to auto-save all of your files before dying. (The main time that
1811 this will not happen is if the machine physically lost power or if you 2823 this will not happen is if the machine physically lost power or if you
1812 killed the XEmacs process using @code{kill -9}). The next time you try 2824 killed the XEmacs process using @code{kill -9}). The next time you try
1819 2831
1820 Now, XEmacs is not perfect, and there may occasionally be times, or 2832 Now, XEmacs is not perfect, and there may occasionally be times, or
1821 particular sequences of actions, that cause it to crash. If you can 2833 particular sequences of actions, that cause it to crash. If you can
1822 come up with a reproducible way of doing this (or even if you have a 2834 come up with a reproducible way of doing this (or even if you have a
1823 pretty good memory of exactly what you were doing at the time), the 2835 pretty good memory of exactly what you were doing at the time), the
1824 maintainers would be very interested in knowing about it. The best way 2836 maintainers would be very interested in knowing about it. The best
1825 to report a bug is using @kbd{M-x report-emacs-bug} (or by selecting 2837 way to report a bug is using @kbd{M-x report-emacs-bug} (or by
1826 @samp{Send Bug Report...} from the Help menu). If that won't work 2838 selecting @samp{Send Bug Report...} from the Help menu). If that
1827 (e.g. you can't get XEmacs working at all), send ordinary mail to 2839 won't work (e.g. you can't get XEmacs working at all), send ordinary
1828 @email{crashes@@xemacs.org}. @emph{MAKE SURE} to include the output from 2840 mail to @email{xemacs-beta@@xemacs.org}. @emph{MAKE SURE} to include
1829 the crash, especially including the Lisp backtrace, as well as the 2841 the output from the crash, especially including the Lisp backtrace, as
1830 XEmacs configuration from @kbd{M-x describe-installation} (or 2842 well as the XEmacs configuration from @kbd{M-x describe-installation}
1831 equivalently, the file @file{Installation} in the top of the build 2843 (or equivalently, the file @file{Installation} in the top of the build
1832 tree). Please note that the @samp{crashes} address is exclusively for 2844 tree). Note that the developers do @emph{not} usually follow
1833 crash reports. The best way to report bugs in general is through the 2845 @samp{comp.emacs.xemacs} on a regular basis; thus, this is better for
1834 @kbd{M-x report-emacs-bug} interface just mentioned, or if necessary by 2846 general questions about XEmacs than bug reports.
1835 emailing @email{xemacs-beta@@xemacs.org}. Note that the developers do
1836 @emph{not} usually follow @samp{comp.emacs.xemacs} on a regular basis;
1837 thus, this is better for general questions about XEmacs than bug
1838 reports.
1839 2847
1840 If at all possible, include a C stack backtrace of the core dump that 2848 If at all possible, include a C stack backtrace of the core dump that
1841 was produced. This shows where exactly things went wrong, and makes it 2849 was produced. This shows where exactly things went wrong, and makes
1842 much easier to diagnose problems. To do this under Unix, you need to 2850 it much easier to diagnose problems. To do this under Unix and Mac OS
1843 locate the core file (it's called @file{core}, and is usually sitting in 2851 X, you need to locate the core file (it's called @file{core}, and is
1844 the directory that you started XEmacs from, or your home directory if 2852 usually sitting in the directory that you started XEmacs from, or your
1845 that other directory was not writable). Then, go to that directory and 2853 home directory if that other directory was not writable). Then, go to
1846 execute a command like: 2854 that directory and execute a command like:
1847 2855
1848 @example 2856 @example
1849 gdb `which xemacs` core 2857 gdb `which xemacs` core
1850 @end example 2858 @end example
1851 2859
1852 and then issue the command @samp{where} to get the stack backtrace. You 2860 and then issue the command @samp{where} to get the stack backtrace. You
1853 might have to use @code{dbx} or some similar debugger in place of 2861 might have to use @code{dbx} or some similar debugger in place of
1854 @code{gdb}. If you don't have any such debugger available, complain to 2862 @code{gdb}. If you don't have any such debugger available, complain to
1855 your system administrator. 2863 your system administrator.
1856 2864
1857 It's possible that a core file didn't get produced, in which case you're 2865 It's possible that a core file didn't get produced or the stack trace
1858 out of luck. Go complain to your system administrator and tell him not 2866 from gdb is garbage, in which case you're out of luck unless you can
1859 to disable core files by default. Also see @ref{Q2.1.15}, for tips and 2867 reproduce the bug. A nonexistent core file can happen in some
1860 techniques for dealing with a debugger. 2868 circumstances on some operating systems, depending on what exactly
2869 triggered the crash. It's also possible, however, that your limits
2870 are set to turn them off. You may be able to reenable them using a
2871 command like @samp{unlimit coredumpsize} or @samp{ulimit -c}. (To find
2872 out how your limits are set, use the command @samp{limit}.) However, if
2873 you didn't explicitly set your limits this way, go complain to your
2874 system administrator and tell him not to disable core files by
2875 default.
2876
2877 A garbaged stack trace can happen for various reasons. Some versions
2878 of gdb are broken on certain operating systems and aren't able to read
2879 the core file. It's also possible that the stack got overwritten
2880 during the crash. A very simple reason, however, is that your version
2881 of XEmacs was compiled without debugging information or had the
2882 debugging information stripped. A compilation with optimization can
2883 also result in partly or completely garbaged stack trace. In such
2884 cases, you will need to recompile XEmacs with debugging information
2885 and without optimization; @xref{Q2.3.3, How to debug an XEmacs problem
2886 with a debugger}. Note also that core files currently don't work at
2887 all under Cygwin, and the only way to get a backtrace is to run XEmacs
2888 from gdb.
2889
2890 If you cannot get a backtrace from the core dump, but can reproduce
2891 the problem, try running XEmacs under gdb. The goal is to get clean C
2892 and Lisp backtraces and submit a bug report including full
2893 configuration information as described above, as this will greatly
2894 assist in the process of tracking down the bug. However, even partial
2895 information is better than none. The process of getting backtraces
2896 from gdb is described in detail in @ref{Q2.3.3, How to debug an XEmacs
2897 problem with a debugger}.
1861 2898
1862 If you're under Microsoft Windows, you're out of luck unless you happen 2899 If you're under Microsoft Windows, you're out of luck unless you happen
1863 to have a debugging aid installed on your system, for example Visual 2900 to have a debugging aid installed on your system, for example Visual
1864 C++. In this case, the crash will result in a message giving you the 2901 C++. In this case, the crash will result in a message giving you the
1865 option to enter a debugger (for example, by pressing @samp{Cancel}). Do 2902 option to enter a debugger (for example, by pressing @samp{Cancel}). Do
1872 @item 2909 @item
1873 Report @strong{all} of the information output by XEmacs during the 2910 Report @strong{all} of the information output by XEmacs during the
1874 crash. 2911 crash.
1875 2912
1876 @item 2913 @item
1877 You mention what O/S & Hardware you are running XEmacs on. 2914 You mention what O/S and Hardware you are running XEmacs on.
1878 2915
1879 @item 2916 @item
1880 What version of XEmacs you are running. 2917 What version of XEmacs you are running.
1881 2918
1882 @item 2919 @item
1883 What build options you are using. 2920 What build options you are using.
1884 2921
1885 @item 2922 @item
1886 If the problem is related to graphics and you are running Unix, we will 2923 If the problem is related to graphics and you are running Unix or Mac
1887 also need to know what version of the X Window System you are running, 2924 OS X, we will also need to know what version of the X Window System
1888 and what window manager you are using. 2925 you are running, and what window manager you are using.
1889 2926
1890 @item 2927 @item
1891 If the problem happened on a TTY, please include the terminal type. 2928 If the problem happened on a TTY, please include the terminal type.
2929
2930 @item
2931 Try very hard to get both C and Lisp backtraces, as described above.
1892 @end enumerate 2932 @end enumerate
1893 2933
1894 Much of the information above is automatically generated by @kbd{M-x 2934 Much of the information above is automatically generated by @kbd{M-x
1895 report-emacs-bug}. Even more, and often useful, information can be 2935 report-emacs-bug}. Even more, and often useful, information can be
1896 generated by redirecting the output of @code{make} and @code{make check} 2936 generated by redirecting the output of @code{make} and @code{make check}
1897 to a file (@file{beta.err} is the default used by @code{build-report}), 2937 to a file (@file{beta.err} is the default used by @code{build-report}),
1898 and executing @kbd{M-x build-report}. 2938 and executing @kbd{M-x build-report}.
1899 2939
1900 @node Q2.1.2, Q2.1.3, Q2.1.1, Installation 2940
1901 @unnumberedsubsec Q2.1.2: Cryptic Minibuffer messages. 2941 @node Q2.3.2, Q2.3.3, Q2.3.1, Installation
2942 @unnumberedsubsec Q2.3.2: XEmacs crashes and I compiled it myself.
2943
2944 There have been a variety of reports of crashes due to compilers with
2945 buggy optimizers. If you are compiling with optimization, consider
2946 turning it off (@pxref{Q2.3.3, How to debug an XEmacs problem with a
2947 debugger}) and recompiling.
2948
2949 Please see the @file{PROBLEMS} file that comes with XEmacs (it's in
2950 the top-level source directory) to read what it says about your
2951 platform.
2952
2953 If you compiled XEmacs using @samp{--use-union-type} (or the option
2954 @samp{USE_UNION_TYPE} in @file{config.inc} under Windows), try
2955 recompiling again without it. The union type has been known to trigger
2956 compiler errors in a number of cases.
2957
2958 @node Q2.3.3, Q2.3.4, Q2.3.2, Installation
2959 @unnumberedsubsec Q2.3.3: How to debug an XEmacs problem with a debugger
2960
2961 If XEmacs does crash on you, one of the most productive things you can
2962 do to help get the bug fixed is to poke around a bit with the debugger.
2963 Here are some hints:
2964
2965 @itemize @bullet
2966 @item
2967 First of all, if the crash is at all reproducible, consider very
2968 strongly recompiling your XEmacs with debugging symbols and with no
2969 optimization (e.g. with GCC use the compiler flags @samp{-g -O0} --
2970 that's an "oh" followed by a zero), and with the configure options
2971 @samp{--debug=yes} and @samp{--error-checking=all}. This will make
2972 your XEmacs run somewhat slower, but you are a lot more likely to
2973 catch the problem earlier (closer to its source). It makes it a lot
2974 easier to determine what's going on with a debugger. The way to
2975 control the compiler flags is with the configuration option
2976 @samp{--cflags}. If you have a recent version of 21.5, you should use
2977 @samp{--without-optimization} in preference to directly setting
2978 @samp{--cflags}.
2979
2980 @item
2981 If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie
2982 process), or it's inconvenient to run XEmacs again because XEmacs is
2983 already running or is running in batch mode as part of a bunch of
2984 scripts, you may be able to attach to the existing process with your
2985 debugger. Under Unix and Mac OS X, the typical way to do this is to
2986 first use some variant of the @samp{ps} command to figure out the
2987 process ID of XEmacs, for example @samp{ps -auxww | grep xemacs} under
2988 a BSD variant, @samp{ps -elf | grep xemacs} under Linux or System V,
2989 or @samp{ps -aW | grep xemacs} under Cygwin. Then run
2990
2991 @example
2992 gdb /path/to/xemacs/xemacs ####
2993 @end example
2994
2995 Where @code{####} is the process id of your XEmacs. (If you're not
2996 sure, try using @samp{which xemacs}.) When gdb attaches, the xemacs
2997 will stop and you can type @samp{where} in gdb to get a stack trace as
2998 usual. To get things moving again, you can just type @samp{quit} in
2999 gdb. It'll tell you the program is running and ask if you want to
3000 quit anyways. Say @samp{y} and it'll quit and have your emacs
3001 continue from where it was at.
3002
3003 If you're running another debugger, a similar method may work, or you
3004 may have to run the debugger first and then use the @code{attach}
3005 command or something similar.
3006
3007 Under Microsoft Windows, use the menu item @samp{Build->Start
3008 Debug->Attach to Process...} and select the XEmacs process from the list
3009 given.
3010
3011 @item
3012 If you're able to run XEmacs under a debugger and reproduce the crash,
3013 here are some things you can do:
3014
3015 @item
3016 If XEmacs is hitting an assertion failure, put a breakpoint on
3017 @code{assert_failed()}.
3018
3019 @item
3020 If XEmacs is hitting some weird Lisp error that's causing it to crash
3021 (e.g. during startup), put a breakpoint on @code{signal_1()}---this is
3022 declared static in @file{eval.c}.
3023
3024 @item
3025 If XEmacs is outputting lots of X errors, put a breakpoint on
3026 @code{x_error_handler()}; that will tell you which call is causing
3027 them. Note that the result may not be very useful by default because
3028 X Windows normally operates asynchronously: A bunch of commands are
3029 buffered up and then sent to the server all at once. This greatly
3030 improves performance over a network but means that an error may not be
3031 reported until the server receives the commands, which can be long
3032 after XEmacs made the erroneous calls. For best results, you need to
3033 make the X server synchronous before getting the backtrace. This can
3034 be done by starting XEmacs with the @samp{-sync} option or executing
3035 the Lisp code @code{(x-debug-mode t)}.
3036
3037 @item
3038 Internally, you will probably see lots of variables that hold objects of
3039 type @code{Lisp_Object}. These are references to Lisp objects.
3040 Printing them out with the debugger probably won't be too
3041 useful---you'll likely just see a number. To decode them, do this:
3042
3043 @example
3044 call debug_print (OBJECT)
3045 @end example
3046
3047 where @var{OBJECT} is whatever you want to decode (it can be a variable,
3048 a function call, etc.). This uses the Lisp printing routines to out a
3049 readable representation on the TTY from which the xemacs process was
3050 invoked.
3051
3052 Under 21.5 and later, @code{dp} is defined as an easier-to-type equivalent
3053 of @code{debug_print}. You can also try @code{dpa} if you can't see
3054 the output from @code{debug_print} (this will return a string containing
3055 the output), or use @code{debug_p3} if @code{debug_print} itself triggers
3056 a crash (this is a less comprehensive but super-safe way to print out
3057 a Lisp object).
3058
3059 @item
3060 If you want to get a Lisp backtrace showing the Lisp call
3061 stack, do this:
3062
3063 @example
3064 call debug_backtrace ()
3065 @end example
3066
3067 Under 21.5 and later, @code{db} is defined as an easier-to-type equivalent
3068 of @code{debug_backtrace}.
3069
3070 @item
3071 Using @code{debug_print} and @code{debug_backtrace} has two
3072 disadvantages - they can only be used with a running (including hung
3073 or zombie) xemacs process, and they do not display the internal C
3074 structure of a Lisp Object. Even if all you've got is a core dump,
3075 all is not lost.
3076
3077 If you're using GDB, there are some macros in the file
3078 @file{src/.gdbinit} in the XEmacs source distribution that should make
3079 it easier for you to decode Lisp objects. This file is automatically
3080 read by gdb if gdb is run in the directory where xemacs was built, and
3081 contains these useful macros to inspect the state of xemacs:
3082
3083 @table @code
3084 @item pobj
3085 Usage: pobj lisp_object @*
3086 Print the internal C representation of a lisp object.
3087
3088 @item xtype
3089 Usage: xtype lisp_object @*
3090 Print the Lisp type of a lisp object.
3091
3092 @item lbt
3093 Usage: lbt @*
3094 Print the current Lisp stack trace.
3095 Requires a running xemacs process. (It works by calling the db
3096 routine described above.)
3097
3098 @item ldp
3099 Usage: ldp lisp_object @*
3100 Print a Lisp Object value using the Lisp printer.
3101 Requires a running xemacs process. (It works by calling the dp
3102 routine described above.)
3103
3104 @item run-temacs
3105 Usage: run-temacs @*
3106 Run temacs interactively, like xemacs.
3107 Use this with debugging tools (like purify) that cannot deal with dumping,
3108 or when temacs builds successfully, but xemacs does not.
3109
3110 @item dump-temacs
3111 Usage: dump-temacs @*
3112 Run the dumping part of the build procedure.
3113 Use when debugging temacs, not xemacs!
3114 Use this when temacs builds successfully, but xemacs does not.
3115
3116 @item check-xemacs
3117 Usage: check-xemacs @*
3118 Run the test suite. Equivalent to 'make check'.
3119
3120 @item check-temacs
3121 Usage: check-temacs @*
3122 Run the test suite on temacs. Equivalent to 'make check-temacs'.
3123 Use this with debugging tools (like purify) that cannot deal with dumping,
3124 or when temacs builds successfully, but xemacs does not.
3125 @end table
3126
3127 If you are using Sun's @file{dbx} debugger, there is an equivalent file
3128 @file{src/.dbxrc}, which defines the same commands for dbx.
3129
3130 @item
3131 If you're using a debugger to get a C stack backtrace and you're seeing
3132 stack traces with some of the innermost frames mangled, it may be due to
3133 dynamic linking. (This happens especially under Linux.) Consider
3134 reconfiguring with @samp{--dynamic=no}. Also, sometimes (again under
3135 Linux), stack backtraces of core dumps will have the frame where the
3136 fatal signal occurred mangled; if you can obtain a stack trace while
3137 running the XEmacs process under a debugger, the stack trace should be
3138 clean.
3139
3140 @email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so
3141 version 1.8 if dynamic linking and debugging is a problem on Linux.
3142
3143 @item
3144 If you're using a debugger to get a C stack backtrace and you're
3145 getting a completely mangled and bogus stack trace, it's probably due to
3146 one of the following:
3147
3148 @enumerate a
3149 @item
3150 Your executable has been stripped. Bad news. Tell your sysadmin not to
3151 do this---it doesn't accomplish anything except to save a bit of disk
3152 space, and makes debugging much much harder.
3153
3154 @item
3155 Your stack is getting trashed. Debugging this is hard; you have to do a
3156 binary-search type of narrowing down where the crash occurs, until you
3157 figure out exactly which line is causing the problem. Of course, this
3158 only works if the bug is highly reproducible. Also, in many cases if
3159 you run XEmacs from the debugger, the debugger can protect the stack
3160 somewhat. However, if the stack is being smashed, it is typically the
3161 case that there is a wild pointer somewhere in the program, often quite
3162 far from where the crash occurs.
3163
3164 @item
3165 If your stack trace has exactly one frame in it, with address 0x0, this
3166 could simply mean that XEmacs attempted to execute code at that address,
3167 e.g. through jumping to a null function pointer. Unfortunately, under
3168 those circumstances, GDB under Linux doesn't know how to get a stack
3169 trace. (Yes, this is the fourth Linux-related problem I've mentioned. I
3170 have no idea why GDB under Linux is so bogus. Complain to the GDB
3171 authors, or to comp.os.linux.development.system.) Again, you'll have to
3172 use the narrowing-down process described above.
3173
3174 @item
3175 You will get a Lisp backtrace output when XEmacs crashes, so you'll have
3176 something useful.
3177
3178 @end enumerate
3179
3180 @item
3181 If you compile with the newer gcc variants gcc-2.8 or egcs, you will
3182 also need gdb 4.17 or above. Earlier releases of gdb can't handle the
3183 debug information generated by the newer compilers.
3184
3185 @item
3186 In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named
3187 @file{src/gdbinit}. This had the disadvantage of not being sourced
3188 automatically by gdb, so you had to set that up yourself.
3189
3190 @item
3191 If you are running Microsoft Windows, the the file @file{nt/README} for
3192 further information about debugging XEmacs.
3193
3194 @end itemize
3195
3196 @node Q2.3.4, Q2.3.5, Q2.3.3, Installation
3197 @unnumberedsubsec Q2.3.4: I get a cryptic error message when trying to do something.
1902 3198
1903 When I try to use some particular option of some particular package, I 3199 When I try to use some particular option of some particular package, I
1904 get a cryptic error in the minibuffer. 3200 get a cryptic error message in the minibuffer.
1905 3201
1906 If you can't figure out what's going on, select Options/General 3202 If the message went by too quickly, use @samp{Help->Recent Messages}
1907 Options/Debug on Error from the Menubar and then try and make the error 3203 from the menubar (or type @kbd{C-h l}) to see recent messages.
1908 happen again. This will give you a backtrace that may be enlightening. 3204
1909 If not, try reading through this FAQ; if that fails, you could try 3205 If you can't figure out what's going on, select
1910 posting to comp.emacs.xemacs (making sure to include the backtrace) and 3206 @samp{Options->Troubleshooting->Debug on Error} from the menubar (or
1911 someone may be able to help. If you can identify which Emacs lisp 3207 type @kbd{M-:} then @kbd{(setq debug-on-error t)}) then try and make
3208 the error happen again. This will put in the debugger (you can get
3209 out of this and continue what you were doing before by typing @kbd{c})
3210 and give you a backtrace that may be enlightening. If not, try
3211 reading through this FAQ; if that fails, you could try posting to
3212 @samp{comp.emacs.xemacs} (making sure to include the backtrace) and
3213 someone may be able to help. If you can identify which XEmacs Lisp
1912 source file the error is coming from you can get a more detailed stack 3214 source file the error is coming from you can get a more detailed stack
1913 backtrace by doing the following: 3215 backtrace by doing the following:
1914 3216
1915 @enumerate 3217 @enumerate
1916 @item 3218 @item
1921 3223
1922 @item 3224 @item
1923 Reproduce the error. 3225 Reproduce the error.
1924 @end enumerate 3226 @end enumerate
1925 3227
1926 Depending on the version of XEmacs, you may either select View->Show 3228 For more information on debugging Lisp code, @xref{Debugging,,,
1927 Message Log (recent versions), Edit->Show Messages (some earlier 3229 lispref, XEmacs Lisp Reference Manual}.
1928 versions) or Help->Recent Keystrokes/Messages (other earlier versions) 3230
1929 from the menubar to see the most recent messages. This command is bound 3231 @node Q2.3.5, Q2.3.6, Q2.3.4, Installation
1930 to @kbd{C-h l} by default. 3232 @unnumberedsubsec Q2.3.5: XEmacs hangs when I try to do something.
1931 3233
1932 @node Q2.1.3, Q2.1.4, Q2.1.2, Installation 3234 XEmacs might just be slow; some operations take a long time. XEmacs
1933 @unnumberedsubsec Q2.1.3: Translation Table Syntax messages at Startup 3235 may also be waiting on a response from the network, for example when
1934 3236 you are trying to send mail.
1935 I get tons of translation table syntax error messages during startup. 3237
1936 How do I get rid of them? 3238 You can usually interrupt XEmacs by typing @kbd{C-g}. If not (for
1937 3239 example, Lisp code explicitly disabled this by setting
1938 There are two causes of this problem. The first usually only strikes 3240 @code{inhibit-quit}), you can use the "critical quit" mechanism by
1939 people using the prebuilt binaries. The culprit in both cases is the 3241 typing @kbd{Control-Shift-G}. This should also pop you into the
1940 file @file{XKeysymDB}. 3242 debugger and give you a backtrace, which can tell you where the
1941 3243 problem is (@pxref{Q2.3.3, How to debug an XEmacs problem with a
1942 @itemize @bullet 3244 debugger}). (Note that setting @code{debug-on-quit} or selecting
1943 @item 3245 @samp{Options->Troubleshooting->Debug on Quit} will also cause regular
1944 The binary cannot find the @file{XKeysymDB} file. The location is 3246 @kbd{C-g} to enter the debugger and give you a backtrace.)
1945 hardcoded at compile time so if the system the binary was built on puts 3247
1946 it a different place than your system does, you have problems. To fix, 3248 If you can't interrupt XEmacs this way, or for some reason XEmacs is
1947 set the environment variable @code{XKEYSYMDB} to the location of the 3249 not talking to the keyboard, you can try sending the @samp{SIGINT}
1948 @file{XKeysymDB} file on your system or to the location of the one 3250 signal using the @samp{kill} command.
1949 included with XEmacs which should be at 3251
1950 @iftex 3252 If the Lisp backtrace isn't enlightening, or if XEmacs is so hung that
1951 @* 3253 you can't interrupt it at all, you could try attaching to the process
1952 @end iftex 3254 and getting a C stack backtrace. @xref{Q2.3.3, How to debug an XEmacs
1953 @file{<xemacs_root_directory>/lib/xemacs-19.16/etc/XKeysymDB}. 3255 problem with a debugger}.
1954 3256
1955 @item 3257 @node Q2.3.6, Q2.3.7, Q2.3.5, Installation
1956 The binary is finding the XKeysymDB but it is out-of-date on your system 3258 @unnumberedsubsec Q2.3.6: I get an error message when XEmacs is running in batch mode.
1957 and does not contain the necessary lines. Either ask your system 3259
1958 administrator to replace it with the one which comes with XEmacs (which 3260 Typically this happens when you are trying to compile some Elisp code.
1959 is the stock R6 version and is backwards compatible) or set your 3261 If you are doing this as part of XEmacs or the XEmacs packages, you
1960 @code{XKEYSYMDB} variable to the location of XEmacs's described above. 3262 should automatically get a backtrace, which can help you determine the
1961 @end itemize 3263 source of the problem. In other cases, you can get equivalent results
1962 3264 by setting the environment variable @samp{XEMACSDEBUG} to @samp{(setq
1963 @node Q2.1.4, Q2.1.5, Q2.1.3, Installation 3265 stack-trace-on-error t load-always-display-messages t
1964 @unnumberedsubsec Q2.1.4: Startup warnings about deducing proper fonts? 3266 load-ignore-out-of-date-elc-files t load-show-full-path-in-messages
3267 t)} (this needs to be all on one line; to set an environment variable,
3268 use @samp{export XEMACSDEBUG='FOO'} under @samp{bash}, @samp{zsh},
3269 etc. or @samp{setenv XEMACSDEBUG 'FOO'} under @samp{csh} and
3270 @samp{tcsh}). @samp{XEMACSDEBUG} specifies Lisp code that will be
3271 executed at startup time.
3272
3273 If the backtrace is not sufficiently useful in helping you diagnose
3274 the problem, you should consider using a debugger such as GDB.
3275 @xref{Q2.3.3, How to debug an XEmacs problem with a debugger}. You
3276 probably want to set a breakpoint on @code{signal_1}. Since such
3277 errors often occur during compiling, which is often triggered by a
3278 complex command run from a make suite, it may be easier to attach to
3279 the process once it's running.
3280
3281 Under Microsoft Windows (and perhaps other operating systems), there
3282 is another useful trick you can do if you have configured with
3283 debugging support (configure option @samp{--debug} or setting
3284 @samp{DEBUG_XEMACS} in @file{nt/config.inc}). Set the environment
3285 variable @samp{XEMACSDEBUG} (as described above) to @samp{(setq
3286 debug-on-error t)}. Then, when an error occurs noninteractively,
3287 instead of trying to invoke the Lisp debugger (which obviously won't
3288 work), XEmacs will break out to a C debugger using
3289 @code{(force-debugging-signal t)}. @emph{NOTE}: This runs
3290 @code{abort()}!!! (As well as and after executing INT 3 under MS
3291 Windows, which should invoke a debugger if it's active.) This is
3292 guaranteed to kill XEmacs! (But in this situation, XEmacs is about to
3293 die anyway, and if no debugger is present, this will usefully dump
3294 core.)
3295
3296 @node Q2.3.7, Q2.3.8, Q2.3.6, Installation
3297 @unnumberedsubsec Q2.3.7: The keyboard or mouse is not working properly, or I have some other event-related problem.
3298
3299 XEmacs has various facilities for debugging event handling.
3300
3301 First, try setting the variable @code{debug-emacs-events} to non-zero.
3302 This will output various information showing which events are being
3303 received and how they are being translated. This may show you, for
3304 example, that a key command is getting intercepted using
3305 @code{key-translation-map}; this problem can otherwise be very tricky
3306 to debug.
3307
3308 Under X, you can see exactly which events are being received from the
3309 window system by setting @code{x-debug-events} to non-zero. (The value
3310 @samp{1} gives you regular output, and @samp{2} gives you verbose
3311 output, including all parameters.)
3312
3313 A similar facility exists under MS Windows: Set
3314 @code{debug-mswindows-events} to non-zero. (The value @samp{1} gives
3315 you regular output. The value @samp{2} gives you verbose output,
3316 including all parameters. The value @samp{3} gives you
3317 super-gorily-detailed output.)
3318
3319 @node Q2.3.8, Q2.3.9, Q2.3.7, Installation
3320 @unnumberedsubsec Q2.3.8: @kbd{C-g} doesn't work for me. Is it broken?
3321
3322 @kbd{C-g} does work for most people in most circumstances. If it
3323 doesn't, there are two possible explanations:
3324
3325 @enumerate
3326 @item
3327 XEmacs is hung in a way that prevents @kbd{C-g} from working. This
3328 can happen when code is wrapped with a binding of @code{inhibit-quit}
3329 to @code{t}; you should still be able interrupt XEmacs using "critical
3330 quit". On the other hand, XEmacs may be seriously wedged. (If you're
3331 lucky, sending @samp{SIGINT} to the XEmacs process will interrupt it.)
3332 @xref{Q2.3.5, XEmacs hangs when I try to do something.}.
3333
3334 @item
3335 @kbd{C-g} is indeed broken on your system. To test, try executing
3336 @code{(while t)} from the @samp{*scratch*} buffer. If @kbd{C-g}
3337 doesn't interrupt, then it's broken. This used to happen with systems
3338 where @samp{SIGIO} was broken, but @samp{BROKEN_SIGIO} wasn't defined.
3339 However, there may not be very many such systems nowadays.
3340 @end enumerate
3341
3342 @node Q2.3.9, Q2.3.10, Q2.3.8, Installation
3343 @unnumberedsubsec Q2.3.9: How do I debug process-related problems?
3344
3345 Under MS Windows, you can set the variable
3346 @code{debug-mswindows-process-command-lines} to non-@samp{nil} to get
3347 information on exactly what is getting passed to a process. This can
3348 be useful in determining problems with quoting. (Under Unix, a process
3349 receives each argument separately, but under MS Windows a single
3350 command line is received, and arguments with spaces or other special
3351 characters in them must be quoted. Unfortunately this means that each
3352 process, potentially at least, has its own quoting conventions, and
3353 the code to process quoting conventions in @file{cmd.exe}, the Visual
3354 C++ startup code and the like is baroque and poorly documented.
3355 XEmacs uses the variable
3356 @code{mswindows-construct-process-command-line-alist} to construct a
3357 command line from a list of arguments based on the command to be run,
3358 but it is (and cannot be) a perfect solution.)
3359
3360 @node Q2.3.10, Q2.3.11, Q2.3.9, Installation
3361 @unnumberedsubsec Q2.3.10: XEmacs is outputting lots of X errors.
3362
3363 If this is happening, we would very much like to know what's causing
3364 them. To find this out, see @ref{Q2.3.3, How to debug an XEmacs
3365 problem with a debugger}. Try to get both a C and Lisp backtrace, and
3366 send them along with the full error output to
3367 @email{xemacs-beta@@xemacs.org}.
3368
3369 @node Q2.3.11, Q2.4.1, Q2.3.10, Installation
3370 @unnumberedsubsec Q2.3.11: After upgrading, XEmacs won't do `foo' any more!
3371
3372 You have been used to doing `foo', but now when you invoke it (or
3373 click the toolbar button or select the menu item), nothing (or an
3374 error) happens. The simplest explanation is that you are missing a
3375 package that is essential to you. You can either track it down and
3376 install it (there is a list of packages and brief descriptions of
3377 their contents in @file{etc/PACKAGES}), or install the `Sumo Tarball'
3378 (@pxref{Q2.0.2, How do I figure out which packages to install?}).
3379
3380 @c #### should xref to XEmacs manual here
3381
3382 @unnumberedsec 2.4: Startup-Related Problems
3383
3384 @node Q2.4.1, Q2.4.2, Q2.3.11, Installation
3385 @unnumberedsubsec Q2.4.1: XEmacs cannot connect to my X Terminal!
3386
3387 Help! I can not get XEmacs to display on my Envizex X-terminal!
3388
3389 Try setting the @code{DISPLAY} variable using the numeric IP address of
3390 the host you are running XEmacs from.
3391
3392 @node Q2.4.2, Q2.4.3, Q2.4.1, Installation
3393 @unnumberedsubsec Q2.4.2: XEmacs won't start on Windows.
3394
3395 XEmacs relies on a process called "dumping" to generate a working
3396 executable. Under MS-Windows this process effectively fixes the memory
3397 addresses of information in the executable. When XEmacs starts up it tries
3398 to reserve these memory addresses so that the dumping process can be
3399 reversed -- putting the information back at the correct addresses.
3400 Unfortunately some .DLLs (for instance the soundblaster driver) occupy
3401 memory addresses that can conflict with those needed by the dumped XEmacs
3402 executable. In this instance XEmacs will fail to start without any
3403 explanation. Note that this is extremely machine specific.
3404
3405 21.1.10 includes a fix for this that makes more intelligent guesses
3406 about which memory addresses will be free, and this should cure the
3407 problem for most people. 21.4 implements "portable dumping", which
3408 eliminates the problem altogether. We recommend you use the 21.4
3409 binaries, but you can use the 21.1 binaries if you are very paranoid
3410 about stability. @xref{Q1.0.4, Are binaries available?}.
3411
3412 @node Q2.4.3, Q2.4.4, Q2.4.2, Installation
3413 @unnumberedsubsec Q2.4.3: XEmacs won't start without network.
3414
3415 If XEmacs starts when you're on the network, but fails when you're not
3416 on the network, you may be missing a "localhost" entry in your
3417 @file{/etc/hosts} file. The file should contain an entry like:
3418
3419 @example
3420 127.0.0.1 localhost
3421 @end example
3422
3423 Add that line, and XEmacs will be happy.
3424
3425 @node Q2.4.4, Q2.4.5, Q2.4.3, Installation
3426 @unnumberedsubsec Q2.4.4: Startup warnings about deducing proper fonts?
1965 3427
1966 How can I avoid the startup warnings about deducing proper fonts? 3428 How can I avoid the startup warnings about deducing proper fonts?
1967 3429
1968 This is highly dependent on your installation, but try with the 3430 This is highly dependent on your installation, but try with the
1969 following font as your base font for XEmacs and see what it does: 3431 following font as your base font for XEmacs and see what it does:
1986 (setq display-warning-minimum-level 'error) 3448 (setq display-warning-minimum-level 'error)
1987 @end lisp 3449 @end lisp
1988 3450
1989 The buffer still exists; it just isn't in your face. 3451 The buffer still exists; it just isn't in your face.
1990 3452
1991 @node Q2.1.5, Q2.1.6, Q2.1.4, Installation 3453 @node Q2.4.5, Q2.4.6, Q2.4.4, Installation
1992 @unnumberedsubsec Q2.1.5: XEmacs cannot connect to my X Terminal! 3454 @unnumberedsubsec Q2.4.5: Warnings from incorrect key modifiers.
1993
1994 Help! I can not get XEmacs to display on my Envizex X-terminal!
1995
1996 Try setting the @code{DISPLAY} variable using the numeric IP address of
1997 the host you are running XEmacs from.
1998
1999 @node Q2.1.6, Q2.1.7, Q2.1.5, Installation
2000 @unnumberedsubsec Q2.1.6: XEmacs just locked up my Linux X server!
2001
2002 There have been several reports of the X server locking up under Linux.
2003 In all reported cases removing speedo and scaled fonts from the font
2004 path corrected the problem. This can be done with the command
2005 @code{xset}.
2006
2007 It is possible that using a font server may also solve the problem.
2008
2009 @node Q2.1.7, Q2.1.8, Q2.1.6, Installation
2010 @unnumberedsubsec Q2.1.7: HP Alt key as Meta.
2011
2012 How can I make XEmacs recognize the Alt key of my HP workstation as a
2013 Meta key?
2014
2015 Put the following line into a file and load it with xmodmap(1) before
2016 starting XEmacs:
2017
2018 @example
2019 remove Mod1 = Mode_switch
2020 @end example
2021
2022 @node Q2.1.8, Q2.1.9, Q2.1.7, Installation
2023 @unnumberedsubsec Q2.1.8: got (wrong-type-argument color-instance-p nil)
2024
2025 @email{nataliek@@rd.scitec.com.au, Natalie Kershaw} writes:
2026
2027 @quotation
2028 I am trying to run xemacs 19.13 under X11R4. Whenever I move the mouse I
2029 get the following error. Has anyone seen anything like this? This
2030 doesn't occur on X11R5.
2031
2032 @lisp
2033 Signalling:
2034 (error "got (wrong-type-argument color-instance-p nil)
2035 and I don't know why!")
2036 @end lisp
2037 @end quotation
2038
2039 @email{map01kd@@gold.ac.uk, dinos} writes:
2040
2041 @quotation
2042 I think this is due to undefined resources; You need to define color
2043 backgrounds and foregrounds into your @file{.../app-defaults/Emacs}
2044 like:
2045
2046 @example
2047 *Foreground: Black ;everything will be of black on grey95,
2048 *Background: Grey95 ;unless otherwise specified.
2049 *cursorColor: Red3 ;red3 cursor with grey95 border.
2050 *pointerColor: Red3 ;red3 pointer with grey95 border.
2051 @end example
2052 @end quotation
2053
2054 Natalie Kershaw adds:
2055
2056 @quotation
2057 What fixed the problem was adding some more colors to the X color
2058 database (copying the X11R5 colors over), and also defining the
2059 following resources:
2060
2061 @example
2062 xemacs*cursorColor: black
2063 xemacs*pointerColor: black
2064 @end example
2065
2066 With the new colors installed the problem still occurs if the above
2067 resources are not defined.
2068
2069 If the new colors are not present then an additional error occurs on
2070 XEmacs startup, which says @samp{Color Red3} not defined.
2071 @end quotation
2072
2073 @node Q2.1.9, Q2.1.10, Q2.1.8, Installation
2074 @unnumberedsubsec Q2.1.9: XEmacs causes my OpenWindows 3.0 server to crash.
2075
2076 The OpenWindows 3.0 server is incredibly buggy. Your best bet is to
2077 replace it with one from the generic MIT X11 release. You might also
2078 try disabling parts of your @file{init.el}/@file{.emacs}, like those
2079 that enable background pixmaps.
2080
2081 @node Q2.1.10, Q2.1.11, Q2.1.9, Installation
2082 @unnumberedsubsec Q2.1.10: Warnings from incorrect key modifiers.
2083 3455
2084 The following information comes from the @file{PROBLEMS} file that comes 3456 The following information comes from the @file{PROBLEMS} file that comes
2085 with XEmacs. 3457 with XEmacs.
2086 3458
2087 If you're having troubles with HP/UX it is because HP/UX defines the 3459 If you're having troubles with HP/UX it is because HP/UX defines the
2102 keysym Meta_R = Mode_switch 3474 keysym Meta_R = Mode_switch
2103 add mod2 = Mode_switch 3475 add mod2 = Mode_switch
2104 EOF 3476 EOF
2105 @end example 3477 @end example
2106 3478
2107 @node Q2.1.11, Q2.1.12, Q2.1.10, Installation 3479 @node Q2.4.6, , Q2.4.5, Installation
2108 @unnumberedsubsec Q2.1.11: @samp{Can't instantiate image error...} in toolbar 3480 @unnumberedsubsec Q2.4.6: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
3481
3482 Yes.
3483
3484 The console was there because @file{temacs} (and in turn, @file{xemacs})
3485 was a console application, and Windows typically creates a new
3486 console for a console process unless the creating process requests that
3487 one isn't created. This used to be fixed with @file{runemacs}, a small
3488 Windows application that existed merely to start @file{xemacs}, stating
3489 that it didn't want a console.
3490
3491 XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
3492 application. The explanation of what that means is included for
3493 educational value.
3494
3495 When building an application to be run in a Win32 environment, you must
3496 state which sub-system it is to run in. Valid subsystems include
3497 "console" and "gui". The subsystem you use affects the run time
3498 libraries linked into your application, the start up function that is
3499 run before control is handed over to your application, the entry point
3500 to your program, and how Windows normally invokes your program. (Console
3501 programs automatically get a console created for them at startup if
3502 their stdin/stdout don't point anywhere useful, which is the case when
3503 run from the GUI. This is a stupid design, of course -- instead, the
3504 console should get created only when the first I/O actually occurs!
3505 GUI programs have an equally stupid design: When called from
3506 @file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to
3507 point nowhere useful, even though the command shell has its own
3508 stdin/stdout. It's as if someone who had learned a bit about stdio but
3509 had no actual knowledge of interprocess communication designed the
3510 scheme; unfortunately, the whole process-communication aspect of the
3511 Win32 API is equally badly designed.) For example, the entry point for a
3512 console app is "main" (which is what you'd expect for a C/C++ program),
3513 but the entry point for a "gui" app is "WinMain". This confuses and
3514 annoys a lot of programmers who've grown up on Unix systems, where the
3515 kernel doesn't really care whether your application is a gui program or
3516 not.
3517
3518 For reasons not altogether clear, and are lost in the mists of time and
3519 tradition, XEmacs on Win32 started out as a console application, and
3520 therefore a console was automatically created for it. (It may have been
3521 made a console application partly because a console is needed in some
3522 circumstances, especially under Win95, to interrupt, terminate, or send
3523 signals to a child process, and because of the bogosity mentioned above
3524 with GUI programs and the standard command shell. Currently, XEmacs
3525 just creates and immediately hides a console when necessary, and
3526 works around the "no useful stdio" problem by creating its own console
3527 window as necessary to display messages in.)
3528
3529 @node Display Subsystems, External Subsystems, Installation, Top
3530 @unnumbered 3 Basic Display-Related Subsystems
3531
3532 This is part 3 of the XEmacs Frequently Asked Questions list. This
3533 section is devoted to the basic display-related capabilities of
3534 XEmacs, such as the keyboard, the mouse, fonts, colors, the modeline,
3535 etc.
3536
3537 @menu
3538 3.0: The Keyboard
3539 * Q3.0.1:: How can I bind complex functions (or macros) to keys?
3540 * Q3.0.2:: How do I bind C-. and C-; to scroll one line up and down?
3541 * Q3.0.3:: Globally binding @kbd{Delete}?
3542 * Q3.0.4:: How to map @kbd{Help} key alone on Sun type4 keyboard?
3543 * Q3.0.5:: How can you type in special characters in XEmacs?
3544 * Q3.0.6:: Can I turn on @dfn{sticky} modifier keys?
3545 * Q3.0.7:: How do I map the arrow keys?
3546 * Q3.0.8:: HP Alt key as Meta.
3547 * Q3.0.9:: Why does edt emulation not work?
3548 * Q3.0.10:: How can I emulate VI and use it as my default mode?
3549
3550 3.1: The Mouse
3551 * Q3.1.1:: How can I turn off Mouse pasting?
3552 * Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons?
3553 * Q3.1.3:: Clicking the left button does not do anything in buffer list.
3554 * Q3.1.4:: How can I get a list of buffers when I hit mouse button 3?
3555 * Q3.1.5:: How I can set XEmacs up so that it pastes where the text cursor is?
3556
3557 3.2: Textual Fonts and Colors
3558 * Q3.2.1:: How do I specify a font?
3559 * Q3.2.2:: How do I set the text, menu and modeline fonts?
3560 * Q3.2.3:: How can I set color options from @file{init.el}?
3561 * Q3.2.4:: How can I set the colors when highlighting a region?
3562 * Q3.2.5:: How can I limit color map usage?
3563 * Q3.2.6:: My tty supports color, but XEmacs doesn't use them.
3564 * Q3.2.7:: Can I have pixmap backgrounds in XEmacs?
3565 * Q3.2.8:: How do I display non-ASCII characters?
3566 * Q3.2.9:: Font selections in don't get saved after @code{Save Options}.
3567
3568 3.3: The Menubar and Toolbar
3569 * Q3.3.1:: How do I get rid of the menu (or menubar)?
3570 * Q3.3.2:: Can I customize the basic menubar?
3571 * Q3.3.3:: How do I control how many buffers are listed in the menu @code{Buffers List}?
3572 * Q3.3.4:: Resources like @code{Emacs*menubar*font} are not working?
3573 * Q3.3.5:: How can I bind a key to a function to toggle the toolbar?
3574 * Q3.3.6:: @samp{Can't instantiate image error...} in toolbar
3575
3576 3.4: Scrollbars and Scrolling
3577 * Q3.4.1:: How can I disable the scrollbar?
3578 * Q3.4.2:: How can one use resources to change scrollbar colors?
3579 * Q3.4.3:: Moving the scrollbar can move the point; can I disable this?
3580 * Q3.4.4:: Scrolling one line at a time.
3581 * Q3.4.5:: How can I turn off automatic horizontal scrolling in specific modes?
3582 * Q3.4.6:: I find auto-show-mode disconcerting. How do I turn it off?
3583
3584 3.5: The Modeline
3585 * Q3.5.1:: How can I make the modeline go away?
3586 * Q3.5.2:: How do you have XEmacs display the line number in the modeline?
3587 * Q3.5.3:: How do I get XEmacs to put the time of day on the modeline?
3588 * Q3.5.4:: How can one change the modeline color based on the mode used?
3589
3590 3.6: The Cursor
3591 * Q3.6.1:: Is there a way to make the bar cursor thicker?
3592 * Q3.6.2:: Is there a way to get back the block cursor?
3593 * Q3.6.3:: Can I make the cursor blink?
3594
3595 3.7: Text Selections
3596 * Q3.7.1:: How do I select a rectangular region?
3597 * Q3.7.2:: How can I turn off or change highlighted selections?
3598 * Q3.7.3:: How do I get that typing on an active region removes it?
3599 * Q3.7.4:: Can I turn off the highlight during isearch?
3600 * Q3.7.5:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
3601 * Q3.7.6:: The region disappears when I hit the end of buffer while scrolling.
3602 * Q3.7.7:: Why is killing so slow?
3603 * Q3.7.8:: Why does @kbd{M-w} take so long?
3604
3605 3.8: Buffers, Text Editing
3606 * Q3.8.1:: Can I have the end of the buffer delimited in some way?
3607 * Q3.8.2:: How do I insert today's date into a buffer?
3608 * Q3.8.3:: How do I get a single minibuffer frame?
3609 * Q3.8.4:: How can I enable auto-indent and/or Filladapt?
3610 * Q3.8.5:: How can I get XEmacs to come up in text/auto-fill mode by default?
3611
3612 3.9: Editing Source Code
3613 * Q3.9.1:: How can I do source code highlighting using font-lock?
3614 * Q3.9.2:: How do I get @samp{More} Syntax Highlighting on by default?
3615 * Q3.9.3:: Where do I get the latest CC Mode?
3616 * Q3.9.4:: I do not like cc-mode. How do I use the old c-mode?
3617 * Q3.9.5:: How do you make XEmacs indent CL if-clauses correctly?
3618 @end menu
3619
3620 @unnumberedsec 3.0: The Keyboard
3621
3622 @node Q3.0.1, Q3.0.2, Display Subsystems, Display Subsystems
3623 @unnumberedsubsec Q3.0.1: How can I bind complex functions (or macros) to keys?
3624
3625 As an example, say you want the @kbd{paste} key on a Sun keyboard to
3626 insert the current Primary X selection at point. You can accomplish this
3627 with:
3628
3629 @lisp
3630 (define-key global-map [f18] 'x-insert-selection)
3631 @end lisp
3632
3633 However, this only works if there is a current X selection (the
3634 selection will be highlighted). The functionality I like is for the
3635 @kbd{paste} key to insert the current X selection if there is one,
3636 otherwise insert the contents of the clipboard. To do this you need to
3637 pass arguments to @code{x-insert-selection}. This is done by wrapping
3638 the call in a 'lambda form:
3639
3640 @lisp
3641 (global-set-key [f18]
3642 (lambda () (interactive) (x-insert-selection t nil)))
3643 @end lisp
3644
3645 This binds the f18 key to a @dfn{generic} functional object. The
3646 interactive spec is required because only interactive functions can be
3647 bound to keys.
3648
3649 For the FAQ example you could use:
3650
3651 @lisp
3652 (global-set-key [(control ?.)]
3653 (lambda () (interactive) (scroll-up 1)))
3654 (global-set-key [(control ?;)]
3655 (lambda () (interactive) (scroll-up -1)))
3656 @end lisp
3657
3658 This is fine if you only need a few functions within the lambda body.
3659 If you're doing more it's cleaner to define a separate function.
3660 @xref{Q3.0.2, How do I bind C-. and C-; to scroll one line up and
3661 down?}.
3662
3663 @node Q3.0.2, Q3.0.3, Q3.0.1, Display Subsystems
3664 @unnumberedsubsec Q3.0.2: How do I bind C-. and C-; to scroll one line up and down?
3665
3666 Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and
3667 @email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}:
3668
3669 @lisp
3670 (defun scroll-up-one-line ()
3671 (interactive)
3672 (scroll-up 1))
3673
3674 (defun scroll-down-one-line ()
3675 (interactive)
3676 (scroll-down 1))
3677
3678 (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
3679 (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
3680 @end lisp
3681
3682 The key point is that you can only bind simple functions to keys; you
3683 can not bind a key to a function that you're also passing arguments
3684 to. (@pxref{Q3.0.1, How can I bind complex functions (or macros) to
3685 keys?} for a better answer).
3686
3687 @node Q3.0.3, Q3.0.4, Q3.0.2, Display Subsystems
3688 @unnumberedsubsec Q3.0.3: Globally binding @kbd{Delete}?
3689
3690 I cannot manage to globally bind my @kbd{Delete} key to something other
3691 than the default. How does one do this?
3692
3693 Answer: The problem is that many modes explicitly bind @kbd{Delete}. To
3694 get around this, try the following:
3695
3696 @lisp
3697 (defun foo ()
3698 (interactive)
3699 (message "You hit DELETE"))
3700
3701 (define-key key-translation-map 'delete 'redirected-delete)
3702 (global-set-key 'redirected-delete 'foo)
3703 @end lisp
3704
3705 @node Q3.0.4, Q3.0.5, Q3.0.3, Display Subsystems
3706 @unnumberedsubsec Q3.0.4: How to map @kbd{Help} key alone on Sun type4 keyboard?
3707
3708 The following works in GNU Emacs 19:
3709
3710 @lisp
3711 (global-set-key [help] 'help-command);; Help
3712 @end lisp
3713
3714 The following works in XEmacs with the addition of shift:
3715
3716 @lisp
3717 (global-set-key [(shift help)] 'help-command);; Help
3718 @end lisp
3719
3720 But it doesn't work alone. This is in the file @file{PROBLEMS} which
3721 should have come with your XEmacs installation: @emph{Emacs ignores the
3722 @kbd{help} key when running OLWM}.
3723
3724 OLWM grabs the @kbd{help} key, and retransmits it to the appropriate
3725 client using
3726 @iftex
3727 @*
3728 @end iftex
3729 @code{XSendEvent}. Allowing Emacs to react to synthetic
3730 events is a security hole, so this is turned off by default. You can
3731 enable it by setting the variable @code{x-allow-sendevents} to t. You
3732 can also cause fix this by telling OLWM to not grab the help key, with
3733 the null binding @code{OpenWindows.KeyboardCommand.Help:}.
3734
3735 @node Q3.0.5, Q3.0.6, Q3.0.4, Display Subsystems
3736 @unnumberedsubsec Q3.0.5: How can you type in special characters in XEmacs?
3737 One way is to use the package @code{x-compose}. Then you can use
3738 sequences like @kbd{Compose " a} to get ä, etc.
3739
3740 Another way is to use the @code{iso-insert} package. Then you can use
3741 sequences like @kbd{C-x 8 " a} to get ä, etc.
3742
3743 @email{glynn@@sensei.co.uk, Glynn Clements} writes:
3744
3745 @quotation
3746 It depends upon your X server.
3747
3748 Generally, the simplest way is to define a key as Multi_key with
3749 xmodmap, e.g.
3750 @c hey, show some respect, willya -- there's xkeycaps, isn't there? --
3751 @c chr ;)
3752 @example
3753 xmodmap -e 'keycode 0xff20 = Multi_key'
3754 @end example
3755
3756 You will need to pick an appropriate keycode. Use xev to find out the
3757 keycodes for each key.
3758
3759 [NB: On a `Windows' keyboard, recent versions of XFree86 automatically
3760 define the right `Windows' key as Multi_key'.]
3761
3762 Once you have Multi_key defined, you can use e.g.
3763 @example
3764 Multi a ' => á
3765 Multi e " => ë
3766 Multi c , => ç
3767 @end example
3768
3769 etc.
3770
3771 Also, recent versions of XFree86 define various AltGr-<key>
3772 combinations as dead keys, i.e.
3773 @example
3774 AltGr [ => dead_diaeresis
3775 AltGr ] => dead_tilde
3776 AltGr ; => dead_acute
3777 @end example
3778 etc.
3779
3780 Running @samp{xmodmap -pk} will list all of the defined keysyms.
3781 @end quotation
3782
3783 For the related problem of @emph{displaying} non-ASCII characters in a
3784 non-Mule XEmacs, @xref{Q3.2.8, How do I display non-ASCII characters?}.
3785
3786 @node Q3.0.6, Q3.0.7, Q3.0.5, Display Subsystems
3787 @unnumberedsubsec Q3.0.6: Can I turn on @dfn{sticky} modifier keys?
3788
3789 Yes, with @code{(setq modifier-keys-are-sticky t)}. This will give the
3790 effect of being able to press and release Shift and have the next
3791 character typed come out in upper case. This will affect all the other
3792 modifier keys like Control and Meta as well.
3793
3794 @email{ben@@xemacs.org, Ben Wing} writes:
3795
3796 @quotation
3797 One thing about the sticky modifiers is that if you move the mouse out
3798 of the frame and back in, it cancels all currently ``stuck'' modifiers.
3799 @end quotation
3800
3801 @node Q3.0.7, Q3.0.8, Q3.0.6, Display Subsystems
3802 @unnumberedsubsec Q3.0.7: How do I map the arrow keys?
2109 @c New 3803 @c New
2110 3804 Say you want to map @kbd{C-@key{right}} to forward-word:
2111 @email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes: 3805
2112 3806 @email{sds@@usa.net, Sam Steingold} writes:
2113 I just installed the XEmacs (20.4-2) RPMS that I downloaded from 3807
2114 @uref{http://www.xemacs.org/}. Everything works fine, except that when 3808 @quotation
2115 I place my mouse over the toolbar, it beeps and gives me this message: 3809 @lisp
3810 ; both XEmacs and Emacs
3811 (define-key global-map [(control right)] 'forward-word)
3812 @end lisp
3813 or
3814 @lisp
3815 ; Emacs only
3816 (define-key global-map [C-right] 'forward-word)
3817 @end lisp
3818 or
3819 @lisp
3820 ; ver > 20, both
3821 (define-key global-map (kbd "C-<right>") 'forward-word)
3822 @end lisp
3823 @end quotation
3824
3825 @node Q3.0.8, Q3.0.9, Q3.0.7, Display Subsystems
3826 @unnumberedsubsec Q3.0.8: HP Alt key as Meta.
3827
3828 How can I make XEmacs recognize the Alt key of my HP workstation as a
3829 Meta key?
3830
3831 Put the following line into a file and load it with xmodmap(1) before
3832 starting XEmacs:
2116 3833
2117 @example 3834 @example
2118 Can't instantiate image (probably cached): 3835 remove Mod1 = Mode_switch
2119 [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
2120 (16 16 <strange control characters> ...
2121 @end example 3836 @end example
2122 3837
2123 @email{kyle_jones@@wonderworks.com, Kyle Jones} writes: 3838 @node Q3.0.9, Q3.0.10, Q3.0.8, Display Subsystems
3839 @unnumberedsubsec Q3.0.9: Why does edt emulation not work?
3840
3841 We don't know, but you can use tpu-edt emulation instead, which works
3842 fine and is a little fancier than the standard edt emulation. To do
3843 this, add the following line to your @file{init.el}:
3844
3845 @lisp
3846 (tpu-edt)
3847 @end lisp
3848
3849 If you don't want it to replace @kbd{C-h} with an edt-style help menu
3850 add this as well:
3851
3852 @lisp
3853 (global-set-key [(control h)] 'help-for-help)
3854 @end lisp
3855
3856 @node Q3.0.10, Q3.1.1, Q3.0.9, Display Subsystems
3857 @unnumberedsubsec Q3.0.10: How can I emulate VI and use it as my default mode?
3858
3859 Our recommended VI emulator is viper. To make viper-mode the default,
3860 add this to your @file{init.el}:
3861
3862 @lisp
3863 (viper-mode)
3864 @end lisp
3865
3866 @email{kifer@@CS.SunySB.EDU, Michael Kifer} writes:
3867
2124 @quotation 3868 @quotation
2125 This is problem specific to some Chips and Technologies video 3869 This should be added as close to the top of @file{init.el} as you can get
2126 chips, when running XFree86. Putting 3870 it, otherwise some minor modes may not get viper-ized.
2127
2128 @code{Option "sw_cursor"}
2129
2130 in @file{XF86Config} gets rid of the problem.
2131 @end quotation 3871 @end quotation
2132 3872
2133 @node Q2.1.12, Q2.1.13, Q2.1.11, Installation 3873 @unnumberedsec 3.1: The Mouse
2134 @unnumberedsubsec Q2.1.12: Problems with Regular Expressions on DEC OSF1. 3874
2135 3875 @node Q3.1.1, Q3.1.2, Q3.0.10, Display Subsystems
2136 I have xemacs 19.13 running on an alpha running OSF1 V3.2 148 and ispell 3876 @unnumberedsubsec Q3.1.1: How can I turn off Mouse pasting?
2137 would not run because it claimed the version number was incorrect 3877
2138 although it was indeed OK. I traced the problem to the regular 3878 I keep hitting the middle mouse button by accident and getting stuff
2139 expression handler. 3879 pasted into my buffer so how can I turn this off?
2140 3880
2141 @email{douglask@@dstc.edu.au, Douglas Kosovic} writes: 3881 Here is an alternative binding, whereby the middle mouse button selects
2142 3882 (but does not cut) the expression under the mouse. Clicking middle on a
2143 @quotation 3883 left or right paren will select to the matching one. Note that you can
2144 Actually it's a DEC cc optimization bug that screws up the regexp 3884 use @code{define-key} or @code{global-set-key}.
2145 handling in XEmacs. 3885
2146 3886 @lisp
2147 Rebuilding using the @samp{-migrate} switch for DEC cc (which uses a 3887 (defun mouse-set-point-and-select (event)
2148 different sort of optimization) works fine. 3888 "Sets the point at the mouse location, then marks following form"
2149 @end quotation 3889 (interactive "@@e")
2150 3890 (mouse-set-point event)
2151 See @file{xemacs-19_13-dunix-3_2c.patch} at the following URL on how to 3891 (mark-sexp 1))
2152 build with the @samp{-migrate} flag: 3892 (define-key global-map [button2] 'mouse-set-point-and-select)
3893 @end lisp
3894
3895 @node Q3.1.2, Q3.1.3, Q3.1.1, Display Subsystems
3896 @unnumberedsubsec Q3.1.2: How do I set control/meta/etc modifiers on mouse buttons?
3897
3898 Use, for instance, @code{[(meta button1)]}. For example, here is a common
3899 setting for Common Lisp programmers who use the bundled @code{ilisp}
3900 package, whereby meta-button1 on a function name will find the file where
3901 the function name was defined, and put you at that location in the source
3902 file.
3903
3904 [Inside a function that gets called by the lisp-mode-hook and
3905 ilisp-mode-hook]
3906
3907 @lisp
3908 (local-set-key [(meta button1)] 'edit-definitions-lisp)
3909 @end lisp
3910
3911 @node Q3.1.3, Q3.1.4, Q3.1.2, Display Subsystems
3912 @unnumberedsubsec Q3.1.3: Clicking the left button does not do anything in buffer list.
3913
3914 I do @kbd{C-x C-b} to get a list of buffers and the entries get
3915 highlighted when I move the mouse over them but clicking the left mouse
3916 does not do anything.
3917
3918 Use the middle mouse button.
3919
3920 @node Q3.1.4, Q3.1.5, Q3.1.3, Display Subsystems
3921 @unnumberedsubsec Q3.1.4: How can I get a list of buffers when I hit mouse button 3?
3922
3923 The following code will replace the default popup on button3:
3924
3925 @lisp
3926 (global-set-key [button3] 'popup-buffer-menu)
3927 @end lisp
3928
3929 @node Q3.1.5, Q3.2.1, Q3.1.4, Display Subsystems
3930 @unnumberedsubsec Q3.1.5: How I can set XEmacs up so that it pastes where the text cursor is?
3931
3932 By default XEmacs pastes X selections where the mouse pointer is. How
3933 do I disable this?
3934
3935 Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank
3936 @key{RET}}.
3937
3938 To get XEmacs to paste at the text cursor, add this your @file{init.el}:
3939
3940 @lisp
3941 (setq mouse-yank-at-point t)
3942 @end lisp
3943
3944 Starting with XEmacs-20.2 you can also change this with Customize.
3945 Select from the @code{Options} menu
3946 @code{Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...} or type
3947 @kbd{M-x customize @key{RET} mouse @key{RET}}.
3948
3949 @unnumberedsec 3.2: Textual Fonts and Colors
3950
3951 @node Q3.2.1, Q3.2.2, Q3.1.5, Display Subsystems
3952 @unnumberedsubsec Q3.2.1: How do I specify a font?
3953
3954 #### Update me.
3955
3956 In 21.4 and above, you can use the @samp{Options} menu to change the font.
3957 You can also do it in your init file, e.g. like this (for MS Windows):
3958
3959 @display
3960 (set-face-font 'default "Lucida Console:Regular:10")
3961 (set-face-font 'modeline "MS Sans Serif:Regular:10")
3962 @end display
3963
3964 @node Q3.2.2, Q3.2.3, Q3.2.1, Display Subsystems
3965 @unnumberedsubsec Q3.2.2: How do I set the text, menu and modeline fonts?
3966
3967 #### Update me.
3968
3969 Note that you should use @samp{Emacs.} and not @samp{Emacs*} when
3970 setting face values.
3971
3972 In @file{.Xresources}:
2153 3973
2154 @example 3974 @example
2155 @uref{http://www-digital.cern.ch/carney/emacs/emacs.html} 3975 Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
2156 @c Link above, <URL:http://www-digital.cern.ch/carney/emacs/emacs.html> is 3976 Emacs*menubar*font: fixed
2157 @c dead. And the directory `carney' is empty. 3977 Emacs.modeline.attributeFont: fixed
2158
2159
2160
2161 @end example 3978 @end example
2162 3979
2163 NOTE: There have been a variety of other problems reported that are 3980 This is confusing because @samp{default} and @samp{modeline} are face
2164 fixed in this fashion. 3981 names, and can be found listed with all faces in the current mode by
2165 3982 using @kbd{M-x set-face-font (enter) ?}. They use the face-specific
2166 @node Q2.1.13, Q2.1.14, Q2.1.12, Installation 3983 resource @samp{attributeFont}.
2167 @unnumberedsubsec Q2.1.13: HP/UX 10.10 and @code{create_process} failure. 3984
2168 3985 On the other hand, @samp{menubar} is a normal X thing that uses the
2169 @email{Dave.Carrigan@@ipl.ca, Dave Carrigan} writes: 3986 resource @samp{font}. With Motif it @emph{may be} necessary to use
2170 3987 @samp{fontList} @emph{instead of} @samp{font}. In @emph{non-Motif}
2171 @quotation 3988 configurations with Mule it @emph{is} necessary to use @samp{fontSet}
2172 With XEmacs 19.13 and HP/UX 10.10, anything that relies on the 3989 instead of @samp{font}. (Sorry, there just is no simple recipe here.)
2173 @code{create_process} function fails. This breaks a lot of things 3990
2174 (shell-mode, compile, ange-ftp, to name a few). 3991 @node Q3.2.3, Q3.2.4, Q3.2.2, Display Subsystems
2175 @end quotation 3992 @unnumberedsubsec Q3.2.3: How can I set color options from @file{init.el}?
2176
2177 @email{johnson@@dtc.hp.com, Phil Johnson} writes:
2178
2179 @quotation
2180 This is a problem specific to HP-UX 10.10. It only occurs when XEmacs
2181 is compiled for shared libraries (the default), so you can work around
2182 it by compiling a statically-linked binary (run configure with
2183 @samp{--dynamic=no}).
2184
2185 I'm not sure whether the problem is with a particular shared library or
2186 if it's a kernel problem which crept into 10.10.
2187 @end quotation
2188
2189 @email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes:
2190
2191 @quotation
2192 I had a few problems with 10.10. Apparently, some of them were solved by
2193 forcing a static link of libc (manually).
2194 @end quotation
2195
2196 @node Q2.1.14, Q2.1.15, Q2.1.13, Installation
2197 @unnumberedsubsec Q2.1.14: @kbd{C-g} doesn't work for me. Is it broken?
2198
2199 @email{ben@@xemacs.org, Ben Wing} writes:
2200
2201 @quotation
2202 @kbd{C-g} does work for most people in most circumstances. If it
2203 doesn't, there are only two explanations:
2204
2205 @enumerate
2206 @item
2207 The code is wrapped with a binding of @code{inhibit-quit} to
2208 @code{t}. @kbd{Ctrl-Shift-G} should still work, I think.
2209
2210 @item
2211 SIGIO is broken on your system, but BROKEN_SIGIO isn't defined.
2212 @end enumerate
2213
2214 To test #2, try executing @code{(while t)} from the @samp{*scratch*}
2215 buffer. If @kbd{C-g} doesn't interrupt, then you're seeing #2.
2216 @end quotation
2217
2218 @email{terra@@diku.dk, Morten Welinder} writes:
2219
2220 @quotation
2221 On some (but @emph{not} all) machines a hung XEmacs can be revived by
2222 @code{kill -FPE <pid>}. This is a hack, of course, not a solution.
2223 This technique works on a Sun4 running 4.1.3_U1. To see if it works for
2224 you, start another XEmacs and test with that first. If you get a core
2225 dump the method doesn't work and if you get @samp{Arithmetic error} then
2226 it does.
2227 @end quotation
2228
2229 @node Q2.1.15, Q2.1.16, Q2.1.14, Installation
2230 @unnumberedsubsec Q2.1.15: How to debug an XEmacs problem with a debugger
2231
2232 If XEmacs does crash on you, one of the most productive things you can
2233 do to help get the bug fixed is to poke around a bit with the debugger.
2234 Here are some hints:
2235
2236 @itemize @bullet
2237 @item
2238 First of all, if the crash is at all reproducible, consider very
2239 strongly recompiling your XEmacs with debugging symbols and with no
2240 optimization (e.g. with GCC use the compiler flags @samp{-g -O0} --
2241 that's an "oh" followed by a zero), and with the configure options
2242 @samp{--debug=yes} and @samp{--error-checking=all}. This will make your
2243 XEmacs run somewhat slower, but you are a lot more likely to catch the
2244 problem earlier (closer to its source). It makes it a lot easier to
2245 determine what's going on with a debugger.
2246
2247 @item
2248 If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie
2249 process), or it's inconvenient to run XEmacs again because XEmacs is
2250 already running or is running in batch mode as part of a bunch of
2251 scripts, you may be able to attach to the existing process with your
2252 debugger. Most debuggers let you do this by substituting the process ID
2253 for the core file when you invoke the debugger from the command line, or
2254 by using the @code{attach} command or something similar.
2255
2256 @item
2257 If you're able to run XEmacs under a debugger and reproduce the crash,
2258 here are some things you can do:
2259
2260 @item
2261 If XEmacs is hitting an assertion failure, put a breakpoint on
2262 @code{assert_failed()}.
2263
2264 @item
2265 If XEmacs is hitting some weird Lisp error that's causing it to crash
2266 (e.g. during startup), put a breakpoint on @code{signal_1()}---this is
2267 declared static in eval.c.
2268
2269 @item
2270 If XEmacs is outputting lots of X errors, put a breakpoint on
2271 @code{x_error_handler()}; that will tell you which call is causing them.
2272
2273 @item
2274 Internally, you will probably see lots of variables that hold objects of
2275 type @code{Lisp_Object}. These are references to Lisp objects.
2276 Printing them out with the debugger probably won't be too
2277 useful---you'll likely just see a number. To decode them, do this:
2278
2279 @example
2280 call dp (OBJECT)
2281 @end example
2282
2283 where @var{OBJECT} is whatever you want to decode (it can be a variable,
2284 a function call, etc.). This uses the Lisp printing routines to out a
2285 readable representation on the TTY from which the xemacs process was
2286 invoked.
2287
2288 @item
2289 If you want to get a Lisp backtrace showing the Lisp call
2290 stack, do this:
2291
2292 @example
2293 call db ()
2294 @end example
2295
2296 @item
2297 Using @code{dp} and @code{db} has two disadvantages - they can only be
2298 used with a running (including hung or zombie) xemacs process, and they
2299 do not display the internal C structure of a Lisp Object. Even if all
2300 you've got is a core dump, all is not lost.
2301
2302 If you're using GDB, there are some macros in the file
2303 @file{src/.gdbinit} in the XEmacs source distribution that should make
2304 it easier for you to decode Lisp objects. This file is automatically
2305 read by gdb if gdb is run in the directory where xemacs was built, and
2306 contains these useful macros to inspect the state of xemacs:
2307
2308 @table @code
2309 @item pobj
2310 Usage: pobj lisp_object @*
2311 Print the internal C representation of a lisp object.
2312
2313 @item xtype
2314 Usage: xtype lisp_object @*
2315 Print the Lisp type of a lisp object.
2316
2317 @item lbt
2318 Usage: lbt @*
2319 Print the current Lisp stack trace.
2320 Requires a running xemacs process. (It works by calling the db
2321 routine described above.)
2322
2323 @item ldp
2324 Usage: ldp lisp_object @*
2325 Print a Lisp Object value using the Lisp printer.
2326 Requires a running xemacs process. (It works by calling the dp
2327 routine described above.)
2328
2329 @item run-temacs
2330 Usage: run-temacs @*
2331 Run temacs interactively, like xemacs.
2332 Use this with debugging tools (like purify) that cannot deal with dumping,
2333 or when temacs builds successfully, but xemacs does not.
2334
2335 @item dump-temacs
2336 Usage: dump-temacs @*
2337 Run the dumping part of the build procedure.
2338 Use when debugging temacs, not xemacs!
2339 Use this when temacs builds successfully, but xemacs does not.
2340
2341 @item check-xemacs
2342 Usage: check-xemacs @*
2343 Run the test suite. Equivalent to 'make check'.
2344
2345 @item check-temacs
2346 Usage: check-temacs @*
2347 Run the test suite on temacs. Equivalent to 'make check-temacs'.
2348 Use this with debugging tools (like purify) that cannot deal with dumping,
2349 or when temacs builds successfully, but xemacs does not.
2350 @end table
2351
2352 If you are using Sun's @file{dbx} debugger, there is an equivalent file
2353 @file{src/.dbxrc}, which defines the same commands for dbx.
2354
2355 @item
2356 If you're using a debugger to get a C stack backtrace and you're seeing
2357 stack traces with some of the innermost frames mangled, it may be due to
2358 dynamic linking. (This happens especially under Linux.) Consider
2359 reconfiguring with @samp{--dynamic=no}. Also, sometimes (again under
2360 Linux), stack backtraces of core dumps will have the frame where the
2361 fatal signal occurred mangled; if you can obtain a stack trace while
2362 running the XEmacs process under a debugger, the stack trace should be
2363 clean.
2364
2365 @email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so
2366 version 1.8 if dynamic linking and debugging is a problem on Linux.
2367
2368 @item
2369 If you're using a debugger to get a C stack backtrace and you're
2370 getting a completely mangled and bogus stack trace, it's probably due to
2371 one of the following:
2372
2373 @enumerate a
2374 @item
2375 Your executable has been stripped. Bad news. Tell your sysadmin not to
2376 do this---it doesn't accomplish anything except to save a bit of disk
2377 space, and makes debugging much much harder.
2378
2379 @item
2380 Your stack is getting trashed. Debugging this is hard; you have to do a
2381 binary-search type of narrowing down where the crash occurs, until you
2382 figure out exactly which line is causing the problem. Of course, this
2383 only works if the bug is highly reproducible. Also, in many cases if
2384 you run XEmacs from the debugger, the debugger can protect the stack
2385 somewhat. However, if the stack is being smashed, it is typically the
2386 case that there is a wild pointer somewhere in the program, often quite
2387 far from where the crash occurs.
2388
2389 @item
2390 If your stack trace has exactly one frame in it, with address 0x0, this
2391 could simply mean that XEmacs attempted to execute code at that address,
2392 e.g. through jumping to a null function pointer. Unfortunately, under
2393 those circumstances, GDB under Linux doesn't know how to get a stack
2394 trace. (Yes, this is the fourth Linux-related problem I've mentioned. I
2395 have no idea why GDB under Linux is so bogus. Complain to the GDB
2396 authors, or to comp.os.linux.development.system.) Again, you'll have to
2397 use the narrowing-down process described above.
2398
2399 @item
2400 You will get a Lisp backtrace output when XEmacs crashes, so you'll have
2401 something useful.
2402
2403 @end enumerate
2404
2405 @item
2406 If you compile with the newer gcc variants gcc-2.8 or egcs, you will
2407 also need gdb 4.17 or above. Earlier releases of gdb can't handle the
2408 debug information generated by the newer compilers.
2409
2410 @item
2411 In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named
2412 @file{src/gdbinit}. This had the disadvantage of not being sourced
2413 automatically by gdb, so you had to set that up yourself.
2414
2415 @item
2416 If you are running Microsoft Windows, the the file @file{nt/README} for
2417 further information about debugging XEmacs.
2418
2419 @end itemize
2420
2421 @node Q2.1.16, Q2.1.17, Q2.1.15, Installation
2422 @unnumberedsubsec Q2.1.16: XEmacs crashes in @code{strcat} on HP/UX 10
2423
2424 From the problems database (through
2425 the former address http://support.mayfield.hp.com/):
2426
2427 @example
2428 Problem Report: 5003302299
2429 Status: Open
2430
2431 System/Model: 9000/700
2432 Product Name: HPUX S800 10.0X
2433 Product Vers: 9245XB.10.00
2434
2435 Description: strcat(3C) may read beyond
2436 end of source string, can cause SIGSEGV
2437
2438
2439 *** PROBLEM TEXT ***
2440 strcat(3C) may read beyond the source string onto an unmapped page,
2441 causing a segmentation violation.
2442 @end example
2443
2444 @node Q2.1.17, Q2.1.18, Q2.1.16, Installation
2445 @unnumberedsubsec Q2.1.17: @samp{Marker does not point anywhere}
2446
2447 As with other errors, set @code{debug-on-error} to @code{t} to get the
2448 backtrace when the error occurs. Specifically, two problems have been
2449 reported (and fixed).
2450
2451 @enumerate
2452 @item
2453 A problem with line-number-mode in XEmacs 19.14 affected a large number
2454 of other packages. If you see this error message, turn off
2455 line-number-mode.
2456
2457 @item
2458 A problem with some early versions of Gnus 5.4 caused this error.
2459 Upgrade your Gnus.
2460 @end enumerate
2461
2462 @node Q2.1.18, Q2.1.19, Q2.1.17, Installation
2463 @unnumberedsubsec Q2.1.18: XEmacs is outputting lots of X errors.
2464
2465 If this is happening, we would very much like to know what's causing
2466 them. To find this out, see @ref{Q2.1.15}. Try to get both a C and Lisp
2467 backtrace, and send them to @email{xemacs-beta@@xemacs.org}.
2468
2469 @node Q2.1.19, Q2.1.20, Q2.1.18, Installation
2470 @unnumberedsubsec Q2.1.19: XEmacs does not follow the local timezone.
2471
2472 When using one of the prebuilt binaries many users have observed that
2473 XEmacs uses the timezone under which it was built, but not the timezone
2474 under which it is running. The solution is to add:
2475
2476 @lisp
2477 (set-time-zone-rule "MET")
2478 @end lisp
2479
2480 to your @file{init.el}/@file{.emacs} or the @file{site-start.el} file if
2481 you can. Replace @code{MET} with your local timezone.
2482
2483 @node Q2.1.20, Q2.1.21, Q2.1.19, Installation
2484 @unnumberedsubsec Q2.1.20: @samp{Symbol's function definition is void: hkey-help-show.}
2485
2486 This is a problem with a partially loaded hyperbole. Try adding:
2487
2488 @lisp
2489 (require 'hmouse-drv)
2490 @end lisp
2491
2492 where you load hyperbole and the problem should go away.
2493
2494 @node Q2.1.21, Q2.1.22, Q2.1.20, Installation
2495 @unnumberedsubsec Q2.1.21: [This question intentionally left blank]
2496
2497 @node Q2.1.22, Q2.1.23, Q2.1.21, Installation
2498 @unnumberedsubsec Q2.1.22: XEmacs seems to take a really long time to do some things
2499
2500 @email{dmoore@@ucsd.edu, David Moore} writes:
2501
2502 @quotation
2503 Two things you can do:
2504
2505 1) C level:
2506
2507 When you see it going mad like this, you might want to use gdb from an
2508 'xterm' to attach to the running process and get a stack trace. To do
2509 this just run:
2510
2511 @example
2512 gdb /path/to/xemacs/xemacs ####
2513 @end example
2514
2515 Where @code{####} is the process id of your xemacs, instead of
2516 specifying the core. When gdb attaches, the xemacs will stop [1] and
2517 you can type `where' in gdb to get a stack trace as usual. To get
2518 things moving again, you can just type `quit' in gdb. It'll tell you
2519 the program is running and ask if you want to quit anyways. Say 'y' and
2520 it'll quit and have your emacs continue from where it was at.
2521
2522 2) Lisp level:
2523
2524 Turn on debug-on-quit early on. When you think things are going slow
2525 hit C-g and it may pop you in the debugger so you can see what routine
2526 is running. Press `c' to get going again.
2527
2528 debug-on-quit doesn't work if something's turned on inhibit-quit or in
2529 some other strange cases.
2530 @end quotation
2531
2532 @node Q2.1.23, Q2.1.24, Q2.1.22, Installation
2533 @unnumberedsubsec Q2.1.23: Movemail on Linux does not work for XEmacs 19.15 and later.
2534
2535 Movemail used to work fine in 19.14 but has stopped working in 19.15
2536 and 20.x. I am using Linux.
2537
2538 @email{steve@@xemacs.org, SL Baur} writes:
2539
2540 @quotation
2541 Movemail on Linux used to default to using flock file locking. With
2542 19.15 and later versions it now defaults to using @code{.lock} file
2543 locking. If this is not appropriate for your system, edit src/s/linux.h
2544 and uncomment the line that reads:
2545
2546 @example
2547 #define MAIL_USE_FLOCK
2548 @end example
2549 @end quotation
2550
2551 @node Q2.1.24, Q2.1.25, Q2.1.23, Installation
2552 @unnumberedsubsec Q2.1.24: XEmacs won't start without network.
2553
2554 If XEmacs starts when you're on the network, but fails when you're not
2555 on the network, you may be missing a "localhost" entry in your
2556 @file{/etc/hosts} file. The file should contain an entry like:
2557
2558 @example
2559 127.0.0.1 localhost
2560 @end example
2561
2562 Add that line, and XEmacs will be happy.
2563
2564 @node Q2.1.25, , Q2.1.24, Installation
2565 @unnumberedsubsec Q2.1.25:: After upgrading, XEmacs won't do `foo' any more!
2566
2567 You have been used to doing `foo', but now when you invoke it (or click
2568 the toolbar button or select the menu item), nothing (or an error)
2569 happens. The simplest explanation is that you are missing a package
2570 that is essential to you. You can either track it down and install it
2571 (there is a list of packages and brief descriptions of their contents in
2572 @file{etc/PACKAGES}), or install the `Sumo Tarball' (@pxref{Q2.0.14}).
2573
2574 @c #### should xref to XEmacs manual here
2575
2576 @node Customization, Subsystems, Installation, Top
2577 @unnumbered 3 Customization and Options
2578
2579 This is part 3 of the XEmacs Frequently Asked Questions list. This
2580 section is devoted to Customization and screen settings.
2581
2582 @menu
2583 Customization---Emacs Lisp and @file{init.el}/@file{.emacs}:
2584 * Q3.0.1:: What version of Emacs am I running?
2585 * Q3.0.2:: How do I evaluate Elisp expressions?
2586 * Q3.0.3:: @code{(setq tab-width 6)} behaves oddly.
2587 * Q3.0.4:: How can I add directories to the @code{load-path}?
2588 * Q3.0.5:: How to check if a lisp function is defined?
2589 * Q3.0.6:: Can I force the output of @code{(face-list)} to a buffer?
2590 * Q3.0.7:: Font selections don't get saved after @code{Save Options}.
2591 * Q3.0.8:: How do I make a single minibuffer frame?
2592 * Q3.0.9:: What is @code{Customize}?
2593
2594 X Window System & Resources:
2595 * Q3.1.1:: Where is a list of X resources?
2596 * Q3.1.2:: How can I detect a color display?
2597 * Q3.1.3:: [This question intentionally left blank]
2598 * Q3.1.4:: [This question intentionally left blank]
2599 * Q3.1.5:: How can I get the icon to just say @samp{XEmacs}?
2600 * Q3.1.6:: How can I have the window title area display the full path?
2601 * Q3.1.7:: @samp{xemacs -name junk} doesn't work?
2602 * Q3.1.8:: @samp{-iconic} doesn't work.
2603
2604 Textual Fonts & Colors:
2605 * Q3.2.1:: How can I set color options from @file{init.el}/@file{.emacs}?
2606 * Q3.2.2:: How do I set the text, menu and modeline fonts?
2607 * Q3.2.3:: How can I set the colors when highlighting a region?
2608 * Q3.2.4:: How can I limit color map usage?
2609 * Q3.2.5:: My tty supports color, but XEmacs doesn't use them.
2610 * Q3.2.6:: Can I have pixmap backgrounds in XEmacs?
2611 * Q3.2.7:: How do I display non-ASCII characters?
2612
2613 The Modeline:
2614 * Q3.3.1:: How can I make the modeline go away?
2615 * Q3.3.2:: How do you have XEmacs display the line number in the modeline?
2616 * Q3.3.3:: How do I get XEmacs to put the time of day on the modeline?
2617 * Q3.3.4:: How do I turn off current chapter from AUC TeX modeline?
2618 * Q3.3.5:: How can one change the modeline color based on the mode used?
2619
2620 3.4 Multiple Device Support:
2621 * Q3.4.1:: How do I open a frame on another screen of my multi-headed display?
2622 * Q3.4.2:: Can I really connect to a running XEmacs after calling up over a modem? How?
2623
2624 3.5 The Keyboard:
2625 * Q3.5.1:: How can I bind complex functions (or macros) to keys?
2626 * Q3.5.2:: How can I stop down-arrow from adding empty lines to the bottom of my buffers?
2627 * Q3.5.3:: How do I bind C-. and C-; to scroll one line up and down?
2628 * Q3.5.4:: Globally binding @kbd{Delete}?
2629 * Q3.5.5:: Scrolling one line at a time.
2630 * Q3.5.6:: How to map @kbd{Help} key alone on Sun type4 keyboard?
2631 * Q3.5.7:: How can you type in special characters in XEmacs?
2632 * Q3.5.8:: [This question intentionally left blank]
2633 * Q3.5.9:: How do I make the Delete key delete forward?
2634 * Q3.5.10:: Can I turn on @dfn{sticky} modifier keys?
2635 * Q3.5.11:: How do I map the arrow keys?
2636
2637 The Cursor:
2638 * Q3.6.1:: Is there a way to make the bar cursor thicker?
2639 * 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?
2640 * Q3.6.3:: Can I make the cursor blink?
2641
2642 The Mouse and Highlighting:
2643 * Q3.7.1:: How can I turn off Mouse pasting?
2644 * Q3.7.2:: How do I set control/meta/etc modifiers on mouse buttons?
2645 * Q3.7.3:: Clicking the left button does not do anything in buffer list.
2646 * Q3.7.4:: How can I get a list of buffers when I hit mouse button 3?
2647 * Q3.7.5:: Why does cut-and-paste not work between XEmacs and a cmdtool?
2648 * Q3.7.6:: How I can set XEmacs up so that it pastes where the text cursor is?
2649 * Q3.7.7:: How do I select a rectangular region?
2650 * Q3.7.8:: Why does @kbd{M-w} take so long?
2651
2652 The Menubar and Toolbar:
2653 * Q3.8.1:: How do I get rid of the menu (or menubar)?
2654 * Q3.8.2:: Can I customize the basic menubar?
2655 * Q3.8.3:: How do I control how many buffers are listed in the menu @code{Buffers} list?
2656 * Q3.8.4:: Resources like @code{Emacs*menubar*font} are not working?
2657 * Q3.8.5:: How can I bind a key to a function to toggle the toolbar?
2658
2659 Scrollbars:
2660 * Q3.9.1:: How can I disable the scrollbar?
2661 * Q3.9.2:: How can one use resources to change scrollbar colors?
2662 * Q3.9.3:: Moving the scrollbar can move the point; can I disable this?
2663 * Q3.9.4:: How can I turn off automatic horizontal scrolling in specific modes?
2664
2665 Text Selections:
2666 * Q3.10.1:: How can I turn off or change highlighted selections?
2667 * Q3.10.2:: How do I get that typing on an active region removes it?
2668 * Q3.10.3:: Can I turn off the highlight during isearch?
2669 * Q3.10.4:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
2670 * Q3.10.5:: The region disappears when I hit the end of buffer while scrolling.
2671 * Q3.10.6:: Why is killing so slow?
2672 @end menu
2673
2674 @node Q3.0.1, Q3.0.2, Customization, Customization
2675 @unnumberedsec 3.0: Customization -- Emacs Lisp and @file{init.el}/@file{.emacs}
2676 @unnumberedsubsec Q3.0.1: What version of Emacs am I running?
2677
2678 How can @file{init.el}/@file{.emacs} determine which of the family of
2679 Emacsen I am using?
2680
2681 To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
2682 XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
2683 example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in
2684 XEmacs versions prior to 21.4). There are other nifty things in there
2685 as well!
2686
2687 For all new code, all you really need to do is:
2688
2689 @lisp
2690 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
2691 @end lisp
2692
2693 @node Q3.0.2, Q3.0.3, Q3.0.1, Customization
2694 @unnumberedsubsec Q3.0.2: How can I evaluate Emacs-Lisp expressions?
2695
2696 I know I can evaluate Elisp expressions from @code{*scratch*} buffer
2697 with @kbd{C-j} after the expression. How do I do it from another
2698 buffer?
2699
2700 Press @kbd{M-:} (the default binding of @code{eval-expression}), and
2701 enter the expression to the minibuffer.
2702
2703 @node Q3.0.3, Q3.0.4, Q3.0.2, Customization
2704 @unnumberedsubsec Q3.0.3: @code{(setq tab-width 6)} behaves oddly.
2705
2706 If you put @code{(setq tab-width 6)} in your
2707 @file{init.el}/@file{.emacs} file it does not work! Is there a reason
2708 for this? If you do it at the EVAL prompt it works fine!! How strange.
2709
2710 Use @code{setq-default} instead, since @code{tab-width} is
2711 all-buffer-local.
2712
2713 @node Q3.0.4, Q3.0.5, Q3.0.3, Customization
2714 @unnumberedsubsec Q3.0.4: How can I add directories to the @code{load-path}?
2715
2716 Here are two ways to do that, one that puts your directories at the
2717 front of the load-path, the other at the end:
2718
2719 @lisp
2720 ;;; Add things at the beginning of the load-path, do not add
2721 ;;; duplicate directories:
2722 (pushnew "bar" load-path :test 'equal)
2723
2724 (pushnew "foo" load-path :test 'equal)
2725
2726 ;;; Add things at the end, unconditionally
2727 (setq load-path (nconc load-path '("foo" "bar")))
2728 @end lisp
2729
2730 @email{keithh@@nortel.ca, keith (k.p.) hanlan} writes:
2731
2732 @quotation
2733 To add directories using Unix shell metacharacters use
2734 @file{expand-file-name} like this:
2735
2736 @lisp
2737 (push (expand-file-name "~keithh/.emacsdir") load-path)
2738 @end lisp
2739 @end quotation
2740
2741 @node Q3.0.5, Q3.0.6, Q3.0.4, Customization
2742 @unnumberedsubsec Q3.0.5: How to check if a lisp function is defined?
2743
2744 Use the following elisp:
2745
2746 @lisp
2747 (fboundp 'foo)
2748 @end lisp
2749
2750 It's almost always a mistake to test @code{emacs-version} or any similar
2751 variables.
2752
2753 Instead, use feature-tests, such as @code{featurep}, @code{boundp},
2754 @code{fboundp}, or even simple behavioral tests, eg.:
2755
2756 @lisp
2757 (defvar foo-old-losing-code-p
2758 (condition-case nil (progn (losing-code t) nil)
2759 (wrong-number-of-arguments t)))
2760 @end lisp
2761
2762 There is an incredible amount of broken code out there which could work
2763 much better more often in more places if it did the above instead of
2764 trying to divine its environment from the value of one variable.
2765
2766 @node Q3.0.6, Q3.0.7, Q3.0.5, Customization
2767 @unnumberedsubsec Q3.0.6: Can I force the output of @code{(face-list)} to a buffer?
2768
2769 It would be good having it in a buffer, as the output of
2770 @code{(face-list)} is too wide to fit to a minibuffer.
2771
2772 Evaluate the expression in the @samp{*scratch*} buffer with point after
2773 the rightmost paren and typing @kbd{C-j}.
2774
2775 If the minibuffer smallness is the only problem you encounter, you can
2776 simply press @kbd{C-h l} to get the former minibuffer contents in a
2777 buffer.
2778
2779 @node Q3.0.7, Q3.0.8, Q3.0.6, Customization
2780 @unnumberedsubsec Q3.0.7: Font selections in don't get saved after @code{Save Options}.
2781
2782 @email{mannj@@ll.mit.edu, John Mann} writes:
2783
2784 @quotation
2785 You have to go to Options->Frame Appearance and unselect
2786 @samp{Frame-Local Font Menu}. If this option is selected, font changes
2787 are only applied to the @emph{current} frame and do @emph{not} get saved
2788 when you save options.
2789 @end quotation
2790
2791 Also, set the following in your @file{init.el}/@file{.emacs}:
2792
2793 @lisp
2794 (setq options-save-faces t)
2795 @end lisp
2796
2797 @node Q3.0.8, Q3.0.9, Q3.0.7, Customization
2798 @unnumberedsubsec Q3.0.8: How do I get a single minibuffer frame?
2799
2800 @email{acs@@acm.org, Vin Shelton} writes:
2801
2802 @lisp
2803 (setq initial-frame-plist '(minibuffer nil))
2804 (setq default-frame-plist '(minibuffer nil))
2805 (setq default-minibuffer-frame
2806 (make-frame
2807 '(minibuffer only
2808 width 86
2809 height 1
2810 menubar-visible-p nil
2811 default-toolbar-visible-p nil
2812 name "minibuffer"
2813 top -2
2814 left -2
2815 has-modeline-p nil)))
2816 (frame-notice-user-settings)
2817 @end lisp
2818
2819 @strong{Please note:} The single minibuffer frame may not be to everyone's
2820 taste, and there any number of other XEmacs options settings that may
2821 make it difficult or inconvenient to use.
2822
2823 @node Q3.0.9, Q3.1.1, Q3.0.8, Customization
2824 @unnumberedsubsec Q3.0.9: What is @code{Customize}?
2825
2826 Starting with XEmacs 20.2 there is new system 'Customize' for customizing
2827 XEmacs options.
2828
2829 You can access @code{Customize} from the @code{Options} menu
2830 or invoking one of customize commands by typing eg.
2831 @kbd{M-x customize}, @kbd{M-x customize-face},
2832 @kbd{M-x customize-variable} or @kbd{M-x customize-apropos}.
2833
2834 Starting with XEmacs 20.3 there is also new `browser' mode for Customize.
2835 Try it out with @kbd{M-x customize-browse}
2836
2837 @node Q3.1.1, Q3.1.2, Q3.0.9, Customization
2838 @unnumberedsec 3.1: X Window System & Resources
2839 @unnumberedsubsec Q3.1.1: Where is a list of X resources?
2840
2841 Search through the @file{NEWS} file for @samp{X Resources}. A fairly
2842 comprehensive list is given after it.
2843
2844 In addition, an @file{app-defaults} file @file{etc/Emacs.ad} is
2845 supplied, listing the defaults. The file @file{etc/sample.Xresources}
2846 gives a different set of defaults that you might consider for
2847 installation in your @file{~/.Xresources} file. It is nearly the same
2848 as @file{etc/Emacs.ad}, but a few entries are altered. Be careful about
2849 installing the contents of this file into your @file{.Xresources} (or
2850 legacy @file{.Xdefaults}) file if you use GNU Emacs under X11 as well.
2851
2852 @node Q3.1.2, Q3.1.3, Q3.1.1, Customization
2853 @unnumberedsubsec Q3.1.2: How can I detect a color display?
2854
2855 You can test the return value of the function @code{(device-class)}, as
2856 in:
2857
2858 @lisp
2859 (when (eq (device-class) 'color)
2860 (set-face-foreground 'font-lock-comment-face "Grey")
2861 (set-face-foreground 'font-lock-string-face "Red")
2862 ....
2863 )
2864 @end lisp
2865
2866 @node Q3.1.3, Q3.1.4, Q3.1.2, Customization
2867 @unnumberedsubsec Q3.1.3: [This question intentionally left blank]
2868
2869 @node Q3.1.4, Q3.1.5, Q3.1.3, Customization
2870 @unnumberedsubsec Q3.1.4: [This question intentionally left blank]
2871
2872 @node Q3.1.5, Q3.1.6, Q3.1.4, Customization
2873 @unnumberedsubsec Q3.1.5: How can I get the icon to just say @samp{XEmacs}?
2874
2875 I'd like the icon to just say @samp{XEmacs}, and not include the name of
2876 the current file in it.
2877
2878 Add the following line to your @file{init.el}/@file{.emacs}:
2879
2880 @lisp
2881 (setq frame-icon-title-format "XEmacs")
2882 @end lisp
2883
2884 @node Q3.1.6, Q3.1.7, Q3.1.5, Customization
2885 @unnumberedsubsec Q3.1.6: How can I have the window title area display the full path?
2886
2887 I'd like to have the window title area display the full directory/name
2888 of the current buffer file and not just the name.
2889
2890 Add the following line to your @file{init.el}/@file{.emacs}:
2891
2892 @lisp
2893 (setq frame-title-format "%S: %f")
2894 @end lisp
2895
2896 A more sophisticated title might be:
2897
2898 @lisp
2899 (setq frame-title-format
2900 '("%S: " (buffer-file-name "%f"
2901 (dired-directory dired-directory "%b"))))
2902 @end lisp
2903
2904 That is, use the file name, or the dired-directory, or the buffer name.
2905
2906 @node Q3.1.7, Q3.1.8, Q3.1.6, Customization
2907 @unnumberedsubsec Q3.1.7: @samp{xemacs -name junk} doesn't work?
2908
2909 When I run @samp{xterm -name junk}, I get an xterm whose class name
2910 according to xprop, is @samp{junk}. This is the way it's supposed to
2911 work, I think. When I run @samp{xemacs -name junk} the class name is
2912 not set to @samp{junk}. It's still @samp{emacs}. What does
2913 @samp{xemacs -name} really do? The reason I ask is that my window
2914 manager (fvwm) will make a window sticky and I use XEmacs to read my
2915 mail. I want that XEmacs window to be sticky, without having to use the
2916 window manager's function to set the window sticky. What gives?
2917
2918 @samp{xemacs -name} sets the application name for the program (that is,
2919 the thing which normally comes from @samp{argv[0]}). Using @samp{-name}
2920 is the same as making a copy of the executable with that new name. The
2921 @code{WM_CLASS} property on each frame is set to the frame-name, and the
2922 application-class. So, if you did @samp{xemacs -name FOO} and then
2923 created a frame named @var{BAR}, you'd get an X window with WM_CLASS =
2924 @code{( "BAR", "Emacs")}. However, the resource hierarchy for this
2925 widget would be:
2926
2927 @example
2928 Name: FOO .shell .container .BAR
2929 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
2930 @end example
2931
2932 instead of the default
2933
2934 @example
2935 Name: xemacs.shell .container .emacs
2936 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
2937 @end example
2938
2939
2940 It is arguable that the first element of WM_CLASS should be set to the
2941 application-name instead of the frame-name, but I think that's less
2942 flexible, since it does not give you the ability to have multiple frames
2943 with different WM_CLASS properties. Another possibility would be for
2944 the default frame name to come from the application name instead of
2945 simply being @samp{emacs}. However, at this point, making that change
2946 would be troublesome: it would mean that many users would have to make
2947 yet another change to their resource files (since the default frame name
2948 would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever
2949 the executable happened to be named), so we'd rather avoid it.
2950
2951 To make a frame with a particular name use:
2952
2953 @lisp
2954 (make-frame '((name . "the-name")))
2955 @end lisp
2956
2957 @node Q3.1.8, Q3.2.1, Q3.1.7, Customization
2958 @unnumberedsubsec Q3.1.8: @samp{-iconic} doesn't work.
2959
2960 When I start up XEmacs using @samp{-iconic} it doesn't work right.
2961 Using @samp{-unmapped} on the command line, and setting the
2962 @code{initiallyUnmapped} X Resource don't seem to help much either...
2963
2964 @email{ben@@xemacs.org, Ben Wing} writes:
2965
2966 @quotation
2967 Ugh, this stuff is such an incredible mess that I've about given up
2968 getting it to work. The principal problem is numerous window-manager
2969 bugs...
2970 @end quotation
2971
2972 @node Q3.2.1, Q3.2.2, Q3.1.8, Customization
2973 @unnumberedsec 3.2: Textual Fonts & Colors
2974 @unnumberedsubsec Q3.2.1: How can I set color options from @file{init.el}/@file{.emacs}?
2975 3993
2976 How can I set the most commonly used color options from my 3994 How can I set the most commonly used color options from my
2977 @file{init.el}/@file{.emacs} instead of from my @file{.Xresources}? 3995 @file{init.el} instead of from my @file{.Xresources}?
2978 3996
2979 Like this: 3997 Like this:
2980 3998
2981 @lisp 3999 @lisp
2982 (set-face-background 'default "bisque") ; frame background 4000 (set-face-background 'default "bisque") ; frame background
3000 (setq x-pointer-background-color "blue") ; This is color 4018 (setq x-pointer-background-color "blue") ; This is color
3001 ; you really 4019 ; you really
3002 ; want ptr/crsr 4020 ; want ptr/crsr
3003 @end lisp 4021 @end lisp
3004 4022
3005 @node Q3.2.2, Q3.2.3, Q3.2.1, Customization 4023 @node Q3.2.4, Q3.2.5, Q3.2.3, Display Subsystems
3006 @unnumberedsubsec Q3.2.2: How do I set the text, menu and modeline fonts? 4024 @unnumberedsubsec Q3.2.4: How can I set the colors when highlighting a region?
3007
3008 Note that you should use @samp{Emacs.} and not @samp{Emacs*} when
3009 setting face values.
3010
3011 In @file{.Xresources}:
3012
3013 @example
3014 Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
3015 Emacs*menubar*font: fixed
3016 Emacs.modeline.attributeFont: fixed
3017 @end example
3018
3019 This is confusing because @samp{default} and @samp{modeline} are face
3020 names, and can be found listed with all faces in the current mode by
3021 using @kbd{M-x set-face-font (enter) ?}. They use the face-specific
3022 resource @samp{attributeFont}.
3023
3024 On the other hand, @samp{menubar} is a normal X thing that uses the
3025 resource @samp{font}. With Motif it @emph{may be} necessary to use
3026 @samp{fontList} @emph{instead of} @samp{font}. In @emph{non-Motif}
3027 configurations with Mule it @emph{is} necessary to use @samp{fontSet}
3028 instead of @samp{font}. (Sorry, there just is no simple recipe here.)
3029
3030 @node Q3.2.3, Q3.2.4, Q3.2.2, Customization
3031 @unnumberedsubsec Q3.2.3: How can I set the colors when highlighting a region?
3032 4025
3033 How can I set the background/foreground colors when highlighting a 4026 How can I set the background/foreground colors when highlighting a
3034 region? 4027 region?
3035 4028
3036 You can change the face @code{zmacs-region} either in your 4029 You can change the face @code{zmacs-region} either in your
3039 @example 4032 @example
3040 Emacs.zmacs-region.attributeForeground: firebrick 4033 Emacs.zmacs-region.attributeForeground: firebrick
3041 Emacs.zmacs-region.attributeBackground: lightseagreen 4034 Emacs.zmacs-region.attributeBackground: lightseagreen
3042 @end example 4035 @end example
3043 4036
3044 or in your @file{init.el}/@file{.emacs}: 4037 or in your @file{init.el}:
3045 4038
3046 @lisp 4039 @lisp
3047 (set-face-background 'zmacs-region "red") 4040 (set-face-background 'zmacs-region "red")
3048 (set-face-foreground 'zmacs-region "yellow") 4041 (set-face-foreground 'zmacs-region "yellow")
3049 @end lisp 4042 @end lisp
3050 4043
3051 @node Q3.2.4, Q3.2.5, Q3.2.3, Customization 4044 @node Q3.2.5, Q3.2.6, Q3.2.4, Display Subsystems
3052 @unnumberedsubsec Q3.2.4: How can I limit color map usage? 4045 @unnumberedsubsec Q3.2.5: How can I limit color map usage?
3053 4046
3054 I'm using Netscape (or another color grabber like XEmacs); 4047 I'm using Netscape (or another color grabber like XEmacs);
3055 is there any way to limit the number of available colors in the color map? 4048 is there any way to limit the number of available colors in the color map?
3056 4049
3057 Answer: No, but you can start Netscape before XEmacs, and it will use 4050 Answer: No, but you can start Netscape before XEmacs, and it will use
3061 map). 4054 map).
3062 4055
3063 If you have the money, another solution would be to use a truecolor or 4056 If you have the money, another solution would be to use a truecolor or
3064 direct color video. 4057 direct color video.
3065 4058
3066 @node Q3.2.5, Q3.2.6, Q3.2.4, Customization 4059 @node Q3.2.6, Q3.2.7, Q3.2.5, Display Subsystems
3067 @unnumberedsubsec Q3.2.5: My tty supports color, but XEmacs doesn't use them. 4060 @unnumberedsubsec Q3.2.6: My tty supports color, but XEmacs doesn't use them.
3068 4061
3069 XEmacs tries to automatically determine whether your tty supports color, 4062 XEmacs tries to automatically determine whether your tty supports color,
3070 but sometimes guesses wrong. In that case, you can make XEmacs Do The 4063 but sometimes guesses wrong. In that case, you can make XEmacs Do The
3071 Right Thing using this Lisp code: 4064 Right Thing using this Lisp code:
3072 4065
3073 @lisp 4066 @lisp
3074 (if (eq 'tty (device-type)) 4067 (if (eq 'tty (device-type))
3075 (set-device-class nil 'color)) 4068 (set-device-class nil 'color))
3076 @end lisp 4069 @end lisp
3077 4070
3078 @node Q3.2.6, Q3.2.7, Q3.2.5, Customization 4071 @node Q3.2.7, Q3.2.8, Q3.2.6, Display Subsystems
3079 @unnumberedsubsec Q3.2.6: Can I have pixmap backgrounds in XEmacs? 4072 @unnumberedsubsec Q3.2.7: Can I have pixmap backgrounds in XEmacs?
3080 @c New 4073 @c New
3081 @email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes: 4074 @email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes:
3082 4075
3083 @quotation 4076 @quotation
3084 There are several ways to do it. For example, you could specify a 4077 There are several ways to do it. For example, you could specify a
3101 4094
3102 and so on. You can also do this interactively via @kbd{M-x edit-faces}. 4095 and so on. You can also do this interactively via @kbd{M-x edit-faces}.
3103 4096
3104 @end quotation 4097 @end quotation
3105 4098
3106 @node Q3.2.7, Q3.3.1, Q3.2.6, Customization 4099 @node Q3.2.8, Q3.2.9, Q3.2.7, Display Subsystems
3107 @unnumberedsubsec Q3.2.7: How do I display non-ASCII characters? 4100 @unnumberedsubsec Q3.2.8: How do I display non-ASCII characters?
3108 @c New 4101 @c New
3109 4102
3110 If you're using a Mule-enabled XEmacs, then display is automatic. If 4103 If you're using a Mule-enabled XEmacs, then display is automatic. If
3111 you're not seeing the characters you expect, either (1) you don't have 4104 you're not seeing the characters you expect, either (1) you don't have
3112 appropriate fonts available or (2) XEmacs did not correctly detect the 4105 appropriate fonts available or (2) XEmacs did not correctly detect the
3126 doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all 4119 doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all
3127 their Latin-2 buffers, etc. 4120 their Latin-2 buffers, etc.
3128 @end quotation 4121 @end quotation
3129 4122
3130 For the related problem of @emph{inputting} non-ASCII characters in a 4123 For the related problem of @emph{inputting} non-ASCII characters in a
3131 non-Mule XEmacs, @xref{Q3.5.7}. 4124 non-Mule XEmacs, @xref{Q3.0.5, How can you type in special characters
3132 4125 in XEmacs?}.
3133 @node Q3.3.1, Q3.3.2, Q3.2.7, Customization 4126
3134 @unnumberedsec 3.3: The Modeline 4127 @node Q3.2.9, Q3.3.1, Q3.2.8, Display Subsystems
3135 @unnumberedsubsec Q3.3.1: How can I make the modeline go away? 4128 @unnumberedsubsec Q3.2.9: Font selections in don't get saved after @code{Save Options}.
4129
4130 @email{mannj@@ll.mit.edu, John Mann} writes:
4131
4132 @quotation
4133 You have to go to @samp{Options->Menubars} and unselect
4134 @samp{Frame-Local Font Menu}. If this option is selected, font changes
4135 are only applied to the @emph{current} frame and do @emph{not} get saved
4136 when you save options.
4137 @end quotation
4138
4139 Also, set the following in your @file{init.el}:
4140
4141 @lisp
4142 (setq options-save-faces t)
4143 @end lisp
4144
4145 @unnumberedsec 3.3: The Menubar and Toolbar
4146
4147 @node Q3.3.1, Q3.3.2, Q3.2.9, Display Subsystems
4148 @unnumberedsubsec Q3.3.1: How do I get rid of the menu (or menubar)?
4149
4150 @lisp
4151 (set-specifier menubar-visible-p nil)
4152 @end lisp
4153
4154 @node Q3.3.2, Q3.3.3, Q3.3.1, Display Subsystems
4155 @unnumberedsubsec Q3.3.2: Can I customize the basic menubar?
4156
4157 For an extensive menubar, add this line to your @file{init.el}:
4158
4159 @lisp
4160 (load "big-menubar")
4161 @end lisp
4162
4163 If you'd like to write your own, this file provides as good a set of
4164 examples as any to start from. The file is located in edit-utils
4165 package.
4166
4167 @node Q3.3.3, Q3.3.4, Q3.3.2, Display Subsystems
4168 @unnumberedsubsec Q3.3.3: How do I control how many buffers are listed in the menu @code{Buffers List}?
4169
4170 Add the following to your @file{init.el} (suit to fit):
4171
4172 @lisp
4173 (setq buffers-menu-max-size 20)
4174 @end lisp
4175
4176 For no limit, use an argument of @samp{nil}.
4177
4178 Starting with XEmacs-20.3 you can also change this with Customize.
4179 Select from the @code{Options} menu
4180 @code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...} or
4181 type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}.
4182
4183 @node Q3.3.4, Q3.3.5, Q3.3.3, Display Subsystems
4184 @unnumberedsubsec Q3.3.4: Resources like @code{Emacs*menubar*font} are not working?
4185
4186 I am trying to use a resource like @code{Emacs*menubar*font} to set the
4187 font of the menubar but it's not working.
4188
4189 In Motif, the use of @samp{font} resources is obsoleted in order to
4190 support internationalization. If you are using the real Motif menubar,
4191 this resource is not recognized at all; you have to say:
4192
4193 @example
4194 Emacs*menubar*fontList: FONT
4195 @end example
4196
4197 If you are using the Lucid menubar, for backward compatibility with
4198 existing user configurations, the @samp{font} resource is recognized.
4199 Since this is not supported by Motif itself, the code is a kludge and
4200 the @samp{font} resource will be recognized only if the @samp{fontList}
4201 resource resource is unset. This means that the resource
4202
4203 @example
4204 *fontList: FONT
4205 @end example
4206
4207 will override
4208
4209 @example
4210 Emacs*menubar*font: FONT
4211 @end example
4212
4213 even though the latter is more specific.
4214
4215 In non-Motif configurations using @samp{--with-mule} and
4216 @samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet}
4217 resource @emph{instead of} the @code{font} resource. The backward
4218 compatibility kludge was never implemented for non-Motif builds.
4219 Example:
4220
4221 @example
4222 *fontSet: FONT
4223 @end example
4224
4225 @node Q3.3.5, Q3.3.6, Q3.3.4, Display Subsystems
4226 @unnumberedsubsec Q3.3.5: How can I bind a key to a function to toggle the toolbar?
4227
4228 Try something like:
4229
4230 @lisp
4231 (defun my-toggle-toolbar ()
4232 (interactive)
4233 (set-specifier default-toolbar-visible-p
4234 (not (specifier-instance default-toolbar-visible-p))))
4235 (global-set-key "\C-xT" 'my-toggle-toolbar)
4236 @end lisp
4237
4238 There are redisplay bugs in 19.14 that may make the preceding result in
4239 a messed-up display, especially for frames with multiple windows. You
4240 may need to resize the frame before XEmacs completely realizes the
4241 toolbar is really gone.
4242
4243 Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct
4244 code.
4245
4246 @node Q3.3.6, Q3.4.1, Q3.3.5, Display Subsystems
4247 @unnumberedsubsec Q3.3.6: @samp{Can't instantiate image error...} in toolbar
4248 @c New
4249
4250 @email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes:
4251
4252 I just installed the XEmacs (20.4-2) RPMS that I downloaded from
4253 @uref{http://www.xemacs.org/}. Everything works fine, except that when
4254 I place my mouse over the toolbar, it beeps and gives me this message:
4255
4256 @example
4257 Can't instantiate image (probably cached):
4258 [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
4259 (16 16 <strange control characters> ...
4260 @end example
4261
4262 @email{kyle_jones@@wonderworks.com, Kyle Jones} writes:
4263 @quotation
4264 This is problem specific to some Chips and Technologies video
4265 chips, when running XFree86. Putting
4266
4267 @code{Option "sw_cursor"}
4268
4269 in @file{XF86Config} gets rid of the problem.
4270 @end quotation
4271
4272 @unnumberedsec 3.4: Scrollbars
4273
4274 @node Q3.4.1, Q3.4.2, Q3.3.6, Display Subsystems
4275 @unnumberedsubsec Q3.4.1: How can I disable the scrollbar?
4276
4277 To disable them for all frames, add the following line to
4278 your @file{.Xresources}:
4279
4280 @example
4281 Emacs.scrollBarWidth: 0
4282 @end example
4283
4284 Or select @samp{Options->Display->Scrollbars}.
4285 Remember to save options.
4286
4287 To turn the scrollbar off on a per-frame basis, use the following
4288 function:
4289
4290 @lisp
4291 (set-specifier scrollbar-width 0 (selected-frame))
4292 @end lisp
4293
4294 You can actually turn the scrollbars on at any level you want by
4295 substituting for (selected-frame) in the above command. For example, to
4296 turn the scrollbars off only in a single buffer:
4297
4298 @lisp
4299 (set-specifier scrollbar-width 0 (current-buffer))
4300 @end lisp
4301
4302 @node Q3.4.2, Q3.4.3, Q3.4.1, Display Subsystems
4303 @unnumberedsubsec Q3.4.2: How can one use resources to change scrollbar colors?
4304
4305 Here's a recap of how to use resources to change your scrollbar colors:
4306
4307 @example
4308 ! Motif scrollbars
4309
4310 Emacs*XmScrollBar.Background: skyblue
4311 Emacs*XmScrollBar.troughColor: lightgray
4312
4313 ! Athena scrollbars
4314
4315 Emacs*Scrollbar.Foreground: skyblue
4316 Emacs*Scrollbar.Background: lightgray
4317 @end example
4318
4319 Note the capitalization of @code{Scrollbar} for the Athena widget.
4320
4321 @node Q3.4.3, Q3.4.4, Q3.4.2, Display Subsystems
4322 @unnumberedsubsec Q3.4.3: Moving the scrollbar can move the point; can I disable this?
4323
4324 When I move the scrollbar in an XEmacs window, it moves the point as
4325 well, which should not be the default behavior. Is this a bug or a
4326 feature? Can I disable it?
4327
4328 The current behavior is a feature, not a bug. Point remains at the same
4329 buffer position as long as that position does not scroll off the screen.
4330 In that event, point will end up in either the upper-left or lower-left
4331 hand corner.
4332
4333 This cannot be changed.
4334
4335 @node Q3.4.4, Q3.4.5, Q3.4.3, Display Subsystems
4336 @unnumberedsubsec Q3.4.4: Scrolling one line at a time.
4337
4338 Can the cursor keys scroll the screen a line at a time, rather than the
4339 default half page jump? I tend it to find it disorienting.
4340
4341 Use the following:
4342
4343 @lisp
4344 (setq scroll-step 1)
4345 @end lisp
4346
4347 You can also change this with Customize. Select from the
4348 @code{Options} menu @code{Advanced
4349 (Customize)->Emacs->Environment->Windows->Scroll Step...} or type
4350 @kbd{M-x customize @key{RET} windows @key{RET}}.
4351
4352 @node Q3.4.5, Q3.4.6, Q3.4.4, Display Subsystems
4353 @unnumberedsubsec Q3.4.5: How can I turn off automatic horizontal scrolling in specific modes?
4354
4355 Do @code{(setq truncate-lines t)} in the mode-hooks for any modes
4356 in which you want lines truncated.
4357
4358 More precisely: If @code{truncate-lines} is nil, horizontal scrollbars
4359 will never appear. Otherwise, they will appear only if the value of
4360 @code{scrollbar-height} for that buffer/window/etc. is non-zero. If you
4361 do
4362
4363 @lisp
4364 (set-specifier scrollbar-height 0)
4365 @end lisp
4366
4367 then horizontal scrollbars will not appear in truncated buffers unless
4368 the package specifically asked for them.
4369
4370 @node Q3.4.6, Q3.5.1, Q3.4.5, Display Subsystems
4371 @unnumberedsubsec Q3.4.6: I find auto-show-mode disconcerting. How do I turn it off?
4372
4373 @code{auto-show-mode} controls whether or not a horizontal scrollbar
4374 magically appears when a line is too long to be displayed. This is
4375 enabled by default. To turn it off, put the following in your
4376 @file{init.el}:
4377
4378 @lisp
4379 (setq auto-show-mode nil)
4380 (setq-default auto-show-mode nil)
4381 @end lisp
4382
4383 @unnumberedsec 3.5: The Modeline
4384
4385 @node Q3.5.1, Q3.5.2, Q3.4.6, Display Subsystems
4386 @unnumberedsubsec Q3.5.1: How can I make the modeline go away?
3136 4387
3137 @lisp 4388 @lisp
3138 (set-specifier has-modeline-p nil) 4389 (set-specifier has-modeline-p nil)
3139 @end lisp 4390 @end lisp
3140 4391
3141 @c Starting with XEmacs 19.14 the modeline responds to mouse clicks, so if 4392 @node Q3.5.2, Q3.5.3, Q3.5.1, Display Subsystems
3142 @c you haven't liked or used the modeline in the past, you might want to 4393 @unnumberedsubsec Q3.5.2: How do you have XEmacs display the line number in the modeline?
3143 @c try the new version out. 4394
3144 @c 4395 Add the following line to your @file{init.el} file to
3145 @node Q3.3.2, Q3.3.3, Q3.3.1, Customization
3146 @unnumberedsubsec Q3.3.2: How do you have XEmacs display the line number in the modeline?
3147
3148 Add the following line to your @file{init.el}/@file{.emacs} file to
3149 display the line number: 4396 display the line number:
3150 4397
3151 @lisp 4398 @lisp
3152 (line-number-mode 1) 4399 (line-number-mode 1)
3153 @end lisp 4400 @end lisp
3169 @end iftex 4416 @end iftex
3170 @code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode} 4417 @code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode}
3171 4418
3172 Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. 4419 Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
3173 4420
3174 @node Q3.3.3, Q3.3.4, Q3.3.2, Customization 4421 @node Q3.5.3, Q3.5.4, Q3.5.2, Display Subsystems
3175 @unnumberedsubsec Q3.3.3: How do I get XEmacs to put the time of day on the modeline? 4422 @unnumberedsubsec Q3.5.3: How do I get XEmacs to put the time of day on the modeline?
3176 4423
3177 Add the following line to your @file{init.el}/@file{.emacs} file to 4424 Add the following line to your @file{init.el} file to
3178 display the time: 4425 display the time:
3179 4426
3180 @lisp 4427 @lisp
3181 (display-time) 4428 (display-time)
3182 @end lisp 4429 @end lisp
3183 4430
3184 See @code{Customize} from the @code{Options} menu for customization. 4431 See @code{Customize} from the @code{Options} menu for customization.
3185 4432
3186 @node Q3.3.4, Q3.3.5, Q3.3.3, Customization 4433 @node Q3.5.4, Q3.6.1, Q3.5.3, Display Subsystems
3187 @unnumberedsubsec Q3.3.4: How do I turn off current chapter from AUC TeX modeline? 4434 @unnumberedsubsec Q3.5.4: How can one change the modeline color based on the mode used?
3188
3189 With AUC TeX, fast typing is hard because the current chapter, section
3190 etc. are given in the modeline. How can I turn this off?
3191
3192 It's not AUC TeX, it comes from @code{func-menu} in @file{func-menu.el}.
3193
3194 @c Add this code to your @file{init.el}/@file{.emacs} to turn it off:
3195 @c
3196 @c @lisp
3197 @c (setq fume-display-in-modeline-p nil)
3198 @c @end lisp
3199 @c
3200 @c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX
3201 @c mode:
3202 @c
3203 @c @lisp
3204 @c (add-hook 'TeX-mode-hook
3205 @c '(lambda () (setq fume-display-in-modeline-p nil)))
3206 @c @end lisp
3207 @c
3208 @email{dhughes@@origin-at.co.uk, David Hughes} writes:
3209
3210 @quotation
3211 Try this; you'll still get the function name displayed in the modeline,
3212 but it won't attempt to keep track when you modify the file. To refresh
3213 when it gets out of synch, you simply need click on the @samp{Rescan
3214 Buffer} option in the function-menu.
3215
3216 @lisp
3217 (setq-default fume-auto-rescan-buffer-p nil)
3218 @end lisp
3219 @end quotation
3220
3221 @node Q3.3.5, Q3.4.1, Q3.3.4, Customization
3222 @unnumberedsubsec Q3.3.5: How can one change the modeline color based on the mode used?
3223 4435
3224 You can use something like the following: 4436 You can use something like the following:
3225 4437
3226 @lisp 4438 @lisp
3227 (add-hook 'lisp-mode-hook 4439 (add-hook 'lisp-mode-hook
3228 (lambda () 4440 (lambda ()
3229 (set-face-background 'modeline "red" (current-buffer)))) 4441 (set-face-background 'modeline "red" (current-buffer))))
3230 @end lisp 4442 @end lisp
3231 4443
3232 Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline 4444 Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
3233 colors change from the default set in your @file{init.el}/@file{.emacs}. 4445 colors change from the default set in your @file{init.el}.
3234 The change will only be made in the buffer you just entered (which 4446 The change will only be made in the buffer you just entered (which
3235 contains the Lisp file you are editing) and will not affect the modeline 4447 contains the Lisp file you are editing) and will not affect the modeline
3236 colors anywhere else. 4448 colors anywhere else.
3237 4449
3238 Notes: 4450 Notes:
3239 4451
3240 @itemize @bullet 4452 @itemize @bullet
3241 4453
3242 @item The hook is the mode name plus @code{-hook}. eg. c-mode-hook, 4454 @item The hook is the mode name plus @code{-hook}. eg. c-mode-hook,
3243 c++-mode-hook, emacs-lisp-mode-hook (used for your 4455 c++-mode-hook, emacs-lisp-mode-hook (used for your
3244 @file{init.el}/@file{.emacs} or a @file{xx.el} file), 4456 @file{init.el} or a @file{xx.el} file),
3245 lisp-interaction-mode-hook (the @samp{*scratch*} buffer), 4457 lisp-interaction-mode-hook (the @samp{*scratch*} buffer),
3246 text-mode-hook, etc. 4458 text-mode-hook, etc.
3247 4459
3248 @item 4460 @item
3249 Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)}, 4461 Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)},
3259 4471
3260 There are additional modeline faces, @code{modeline-buffer-id}, 4472 There are additional modeline faces, @code{modeline-buffer-id},
3261 @code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which 4473 @code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which
3262 you may want to customize. 4474 you may want to customize.
3263 4475
3264 @node Q3.4.1, Q3.4.2, Q3.3.5, Customization
3265 @unnumberedsec 3.4: Multiple Device Support
3266 @unnumberedsubsec Q3.4.1: How do I open a frame on another screen of my multi-headed display?
3267
3268 Use the command @kbd{M-x make-frame-on-display}. This command is also
3269 on the File menu in the menubar.
3270
3271 The command @code{make-frame-on-tty} also exists, which will establish a
3272 connection to any tty-like device. Opening the TTY devices should be
3273 left to @code{gnuclient}, though.
3274
3275 @node Q3.4.2, Q3.5.1, Q3.4.1, Customization
3276 @unnumberedsubsec Q3.4.2: Can I really connect to a running XEmacs after calling up over a modem? How?
3277
3278 Yes. Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach}
3279 program supplied with XEmacs instead.)
3280
3281 Also see @ref{Q5.0.12}.
3282
3283 @node Q3.5.1, Q3.5.2, Q3.4.2, Customization
3284 @unnumberedsec 3.5: The Keyboard
3285 @unnumberedsubsec Q3.5.1: How can I bind complex functions (or macros) to keys?
3286
3287 As an example, say you want the @kbd{paste} key on a Sun keyboard to
3288 insert the current Primary X selection at point. You can accomplish this
3289 with:
3290
3291 @lisp
3292 (define-key global-map [f18] 'x-insert-selection)
3293 @end lisp
3294
3295 However, this only works if there is a current X selection (the
3296 selection will be highlighted). The functionality I like is for the
3297 @kbd{paste} key to insert the current X selection if there is one,
3298 otherwise insert the contents of the clipboard. To do this you need to
3299 pass arguments to @code{x-insert-selection}. This is done by wrapping
3300 the call in a 'lambda form:
3301
3302 @lisp
3303 (global-set-key [f18]
3304 (lambda () (interactive) (x-insert-selection t nil)))
3305 @end lisp
3306
3307 This binds the f18 key to a @dfn{generic} functional object. The
3308 interactive spec is required because only interactive functions can be
3309 bound to keys.
3310
3311 For the FAQ example you could use:
3312
3313 @lisp
3314 (global-set-key [(control ?.)]
3315 (lambda () (interactive) (scroll-up 1)))
3316 (global-set-key [(control ?;)]
3317 (lambda () (interactive) (scroll-up -1)))
3318 @end lisp
3319
3320 This is fine if you only need a few functions within the lambda body.
3321 If you're doing more it's cleaner to define a separate function as in
3322 question 3.5.3 (@pxref{Q3.5.3}).
3323
3324 @node Q3.5.2, Q3.5.3, Q3.5.1, Customization
3325 @unnumberedsubsec Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers?
3326
3327 Add the following line to your @file{init.el}/@file{.emacs} file:
3328
3329 @lisp
3330 (setq next-line-add-newlines nil)
3331 @end lisp
3332
3333 This has been the default setting in XEmacs for some time.
3334
3335 @node Q3.5.3, Q3.5.4, Q3.5.2, Customization
3336 @unnumberedsubsec Q3.5.3: How do I bind C-. and C-; to scroll one line up and down?
3337
3338 Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and
3339 @email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}:
3340
3341 @lisp
3342 (defun scroll-up-one-line ()
3343 (interactive)
3344 (scroll-up 1))
3345
3346 (defun scroll-down-one-line ()
3347 (interactive)
3348 (scroll-down 1))
3349
3350 (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
3351 (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
3352 @end lisp
3353
3354 The key point is that you can only bind simple functions to keys; you
3355 can not bind a key to a function that you're also passing arguments to.
3356 (@pxref{Q3.5.1} for a better answer).
3357
3358 @node Q3.5.4, Q3.5.5, Q3.5.3, Customization
3359 @unnumberedsubsec Q3.5.4: Globally binding @kbd{Delete}?
3360
3361 I cannot manage to globally bind my @kbd{Delete} key to something other
3362 than the default. How does one do this?
3363
3364 Answer: The problem is that many modes explicitly bind @kbd{Delete}. To
3365 get around this, try the following:
3366
3367 @lisp
3368 (defun foo ()
3369 (interactive)
3370 (message "You hit DELETE"))
3371
3372 (define-key key-translation-map 'delete 'redirected-delete)
3373 (global-set-key 'redirected-delete 'foo)
3374 @end lisp
3375
3376 Also see @ref{Q3.5.10}.
3377
3378 @node Q3.5.5, Q3.5.6, Q3.5.4, Customization
3379 @unnumberedsubsec Q3.5.5: Scrolling one line at a time.
3380
3381 Can the cursor keys scroll the screen a line at a time, rather than the
3382 default half page jump? I tend it to find it disorienting.
3383
3384 Try this:
3385
3386 @lisp
3387 (defun scroll-one-line-up (&optional arg)
3388 "Scroll the selected window up (forward in the text) one line (or N lines)."
3389 (interactive "p")
3390 (scroll-up (or arg 1)))
3391
3392 (defun scroll-one-line-down (&optional arg)
3393 "Scroll the selected window down (backward in the text) one line (or N)."
3394 (interactive "p")
3395 (scroll-down (or arg 1)))
3396
3397 (global-set-key [up] 'scroll-one-line-up)
3398 (global-set-key [down] 'scroll-one-line-down)
3399 @end lisp
3400
3401 The following will also work but will affect more than just the cursor
3402 keys (i.e. @kbd{C-n} and @kbd{C-p}):
3403
3404 @lisp
3405 (setq scroll-step 1)
3406 @end lisp
3407
3408 Starting with XEmacs-20.3 you can also change this with Customize.
3409 Select from the @code{Options} menu
3410 @code{Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...} or type
3411 @kbd{M-x customize @key{RET} windows @key{RET}}.
3412
3413 @node Q3.5.6, Q3.5.7, Q3.5.5, Customization
3414 @unnumberedsubsec Q3.5.6: How to map @kbd{Help} key alone on Sun type4 keyboard?
3415
3416 The following works in GNU Emacs 19:
3417
3418 @lisp
3419 (global-set-key [help] 'help-command);; Help
3420 @end lisp
3421
3422 The following works in XEmacs with the addition of shift:
3423
3424 @lisp
3425 (global-set-key [(shift help)] 'help-command);; Help
3426 @end lisp
3427
3428 But it doesn't work alone. This is in the file @file{PROBLEMS} which
3429 should have come with your XEmacs installation: @emph{Emacs ignores the
3430 @kbd{help} key when running OLWM}.
3431
3432 OLWM grabs the @kbd{help} key, and retransmits it to the appropriate
3433 client using
3434 @iftex
3435 @*
3436 @end iftex
3437 @code{XSendEvent}. Allowing Emacs to react to synthetic
3438 events is a security hole, so this is turned off by default. You can
3439 enable it by setting the variable @code{x-allow-sendevents} to t. You
3440 can also cause fix this by telling OLWM to not grab the help key, with
3441 the null binding @code{OpenWindows.KeyboardCommand.Help:}.
3442
3443 @node Q3.5.7, Q3.5.8, Q3.5.6, Customization
3444 @unnumberedsubsec Q3.5.7: How can you type in special characters in XEmacs?
3445 @c Changed
3446 One way is to use the package @code{x-compose}. Then you can use
3447 sequences like @kbd{Compose " a} to get ä, etc.
3448
3449 Another way is to use the @code{iso-insert} package. Then you can use
3450 sequences like @kbd{C-x 8 " a} to get ä, etc.
3451
3452 @email{glynn@@sensei.co.uk, Glynn Clements} writes:
3453
3454 @quotation
3455 It depends upon your X server.
3456
3457 Generally, the simplest way is to define a key as Multi_key with
3458 xmodmap, e.g.
3459 @c hey, show some respect, willya -- there's xkeycaps, isn't there? --
3460 @c chr ;)
3461 @example
3462 xmodmap -e 'keycode 0xff20 = Multi_key'
3463 @end example
3464
3465 You will need to pick an appropriate keycode. Use xev to find out the
3466 keycodes for each key.
3467
3468 [NB: On a `Windows' keyboard, recent versions of XFree86 automatically
3469 define the right `Windows' key as Multi_key'.]
3470
3471 Once you have Multi_key defined, you can use e.g.
3472 @example
3473 Multi a ' => á
3474 Multi e " => ë
3475 Multi c , => ç
3476 @end example
3477
3478 etc.
3479
3480 Also, recent versions of XFree86 define various AltGr-<key>
3481 combinations as dead keys, i.e.
3482 @example
3483 AltGr [ => dead_diaeresis
3484 AltGr ] => dead_tilde
3485 AltGr ; => dead_acute
3486 @end example
3487 etc.
3488
3489 Running @samp{xmodmap -pk} will list all of the defined keysyms.
3490 @end quotation
3491
3492 For the related problem of @emph{displaying} non-ASCII characters in a
3493 non-Mule XEmacs, @xref{Q3.2.7}.
3494
3495 @node Q3.5.8, Q3.5.9, Q3.5.7, Customization
3496 @unnumberedsubsec Q3.5.8: [This question intentionally left blank]
3497
3498 Obsolete question, left blank to avoid renumbering.
3499
3500 @node Q3.5.9, Q3.5.10, Q3.5.8, Customization
3501 @unnumberedsubsec Q3.5.9: How do I make the Delete key delete forward?
3502
3503 With XEmacs-20.2 use the @code{delbs} package:
3504
3505 @lisp
3506 (require 'delbs)
3507 @end lisp
3508
3509 This will give you the functions @code{delbs-enable-delete-forward} to
3510 set things up, and @code{delbs-disable-delete-forward} to revert to
3511 ``normal'' behavior. Note that @code{delbackspace} package is obsolete.
3512
3513 Starting with XEmacs-20.3 better solution is to set variable
3514 @code{delete-key-deletes-forward} to t. You can also change this with
3515 Customize. Select from the @code{Options} menu
3516 @code{Advanced (Customize)->Emacs->Editing->Basics->Delete Key Deletes Forward} or
3517 type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
3518
3519 Also see @ref{Q3.5.4}.
3520
3521 @node Q3.5.10, Q3.5.11, Q3.5.9, Customization
3522 @unnumberedsubsec Q3.5.10: Can I turn on @dfn{sticky} modifier keys?
3523
3524 Yes, with @code{(setq modifier-keys-are-sticky t)}. This will give the
3525 effect of being able to press and release Shift and have the next
3526 character typed come out in upper case. This will affect all the other
3527 modifier keys like Control and Meta as well.
3528
3529 @email{ben@@xemacs.org, Ben Wing} writes:
3530
3531 @quotation
3532 One thing about the sticky modifiers is that if you move the mouse out
3533 of the frame and back in, it cancels all currently ``stuck'' modifiers.
3534 @end quotation
3535
3536 @node Q3.5.11, Q3.6.1, Q3.5.10, Customization
3537 @unnumberedsubsec Q3.5.11: How do I map the arrow keys?
3538 @c New
3539 Say you want to map @kbd{C-@key{right}} to forward-word:
3540
3541 @email{sds@@usa.net, Sam Steingold} writes:
3542
3543 @quotation
3544 @lisp
3545 ; both XEmacs and Emacs
3546 (define-key global-map [(control right)] 'forward-word)
3547 @end lisp
3548 or
3549 @lisp
3550 ; Emacs only
3551 (define-key global-map [C-right] 'forward-word)
3552 @end lisp
3553 or
3554 @lisp
3555 ; ver > 20, both
3556 (define-key global-map (kbd "C-<right>") 'forward-word)
3557 @end lisp
3558 @end quotation
3559
3560
3561
3562 @node Q3.6.1, Q3.6.2, Q3.5.11, Customization
3563 @unnumberedsec 3.6: The Cursor 4476 @unnumberedsec 3.6: The Cursor
4477
4478 @node Q3.6.1, Q3.6.2, Q3.5.4, Display Subsystems
3564 @unnumberedsubsec Q3.6.1: Is there a way to make the bar cursor thicker? 4479 @unnumberedsubsec Q3.6.1: Is there a way to make the bar cursor thicker?
3565 4480
3566 I'd like to have the bar cursor a little thicker, as I tend to "lose" it 4481 I'd like to have the bar cursor a little thicker, as I tend to "lose" it
3567 often. 4482 often.
3568 4483
3587 4502
3588 @example 4503 @example
3589 Emacs*cursorColor: Red 4504 Emacs*cursorColor: Red
3590 @end example 4505 @end example
3591 4506
3592 @node Q3.6.2, Q3.6.3, Q3.6.1, Customization 4507 @node Q3.6.2, Q3.6.3, Q3.6.1, Display Subsystems
3593 @unnumberedsubsec Q3.6.2: Is there a way to get back the block cursor? 4508 @unnumberedsubsec Q3.6.2: Is there a way to get back the block cursor?
3594 4509
3595 @lisp 4510 @lisp
3596 (setq bar-cursor nil) 4511 (setq bar-cursor nil)
3597 @end lisp 4512 @end lisp
3599 Starting with XEmacs 20.3 you can also change this with Customize. 4514 Starting with XEmacs 20.3 you can also change this with Customize.
3600 Select from the @code{Options} menu 4515 Select from the @code{Options} menu
3601 @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type 4516 @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
3602 @kbd{M-x customize @key{RET} display @key{RET}}. 4517 @kbd{M-x customize @key{RET} display @key{RET}}.
3603 4518
3604 @node Q3.6.3, Q3.7.1, Q3.6.2, Customization 4519 @node Q3.6.3, Q3.7.1, Q3.6.2, Display Subsystems
3605 @unnumberedsubsec Q3.6.3: Can I make the cursor blink? 4520 @unnumberedsubsec Q3.6.3: Can I make the cursor blink?
3606 4521
3607 Yes, like this: 4522 Yes, like this:
3608 4523
3609 @lisp 4524 @lisp
3610 (blink-cursor-mode) 4525 (blink-cursor-mode)
3611 @end lisp 4526 @end lisp
3612 4527
3613 This function toggles between a steady cursor and a blinking cursor. 4528 This function toggles between a steady cursor and a blinking cursor.
3614 You may also set this mode from the menu bar by selecting @samp{Options 4529 You may also set this mode from the menu bar by selecting
3615 => Frame Appearance => Blinking Cursor}. Remember to save options. 4530 @samp{Options->Display->Blinking Cursor}. Remember to save options.
3616 4531
3617 @node Q3.7.1, Q3.7.2, Q3.6.3, Customization 4532 @unnumberedsec 3.7: Text Selections
3618 @unnumberedsec 3.7: The Mouse and Highlighting 4533
3619 @unnumberedsubsec Q3.7.1: How can I turn off Mouse pasting? 4534 @node Q3.7.1, Q3.7.2, Q3.6.3, Display Subsystems
3620 4535 @unnumberedsubsec Q3.7.1: How do I select a rectangular region?
3621 I keep hitting the middle mouse button by accident and getting stuff
3622 pasted into my buffer so how can I turn this off?
3623
3624 Here is an alternative binding, whereby the middle mouse button selects
3625 (but does not cut) the expression under the mouse. Clicking middle on a
3626 left or right paren will select to the matching one. Note that you can
3627 use @code{define-key} or @code{global-set-key}.
3628
3629 @lisp
3630 (defun mouse-set-point-and-select (event)
3631 "Sets the point at the mouse location, then marks following form"
3632 (interactive "@@e")
3633 (mouse-set-point event)
3634 (mark-sexp 1))
3635 (define-key global-map [button2] 'mouse-set-point-and-select)
3636 @end lisp
3637
3638 @node Q3.7.2, Q3.7.3, Q3.7.1, Customization
3639 @unnumberedsubsec Q3.7.2: How do I set control/meta/etc modifiers on mouse buttons?
3640
3641 Use, for instance, @code{[(meta button1)]}. For example, here is a common
3642 setting for Common Lisp programmers who use the bundled @code{ilisp}
3643 package, whereby meta-button1 on a function name will find the file where
3644 the function name was defined, and put you at that location in the source
3645 file.
3646
3647 [Inside a function that gets called by the lisp-mode-hook and
3648 ilisp-mode-hook]
3649
3650 @lisp
3651 (local-set-key [(meta button1)] 'edit-definitions-lisp)
3652 @end lisp
3653
3654 @node Q3.7.3, Q3.7.4, Q3.7.2, Customization
3655 @unnumberedsubsec Q3.7.3: Clicking the left button does not do anything in buffer list.
3656
3657 I do @kbd{C-x C-b} to get a list of buffers and the entries get
3658 highlighted when I move the mouse over them but clicking the left mouse
3659 does not do anything.
3660
3661 Use the middle mouse button.
3662
3663 @node Q3.7.4, Q3.7.5, Q3.7.3, Customization
3664 @unnumberedsubsec Q3.7.4: How can I get a list of buffers when I hit mouse button 3?
3665
3666 The following code will replace the default popup on button3:
3667
3668 @lisp
3669 (global-set-key [button3] 'popup-buffer-menu)
3670 @end lisp
3671
3672 @node Q3.7.5, Q3.7.6, Q3.7.4, Customization
3673 @unnumberedsubsec Q3.7.5: Why does cut-and-paste not work between XEmacs and a cmdtool?
3674
3675 We don't know. It's a bug. There does seem to be a work-around,
3676 however. Try running xclipboard first. It appears to fix the problem
3677 even if you exit it. (This should be mostly fixed in 19.13, but we
3678 haven't yet verified that).
3679
3680 @node Q3.7.6, Q3.7.7, Q3.7.5, Customization
3681 @unnumberedsubsec Q3.7.6: How I can set XEmacs up so that it pastes where the text cursor is?
3682
3683 By default XEmacs pastes X selections where the mouse pointer is. How
3684 do I disable this?
3685
3686 Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank
3687 @key{RET}}.
3688
3689 To get XEmacs to paste at the text cursor, add this your @file{init.el}/@file{.emacs}:
3690
3691 @lisp
3692 (setq mouse-yank-at-point t)
3693 @end lisp
3694
3695 Starting with XEmacs-20.2 you can also change this with Customize.
3696 Select from the @code{Options} menu
3697 @code{Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...} or type
3698 @kbd{M-x customize @key{RET} mouse @key{RET}}.
3699
3700 @node Q3.7.7, Q3.7.8, Q3.7.6, Customization
3701 @unnumberedsubsec Q3.7.7: How do I select a rectangular region?
3702 4536
3703 Just select the region normally, then use the rectangle commands (e.g. 4537 Just select the region normally, then use the rectangle commands (e.g.
3704 @code{kill-rectangle} on it. The region does not highlight as a 4538 @code{kill-rectangle} on it. The region does not highlight as a
3705 rectangle, but the commands work just fine. 4539 rectangle, but the commands work just fine.
3706 4540
3725 mouse-track-do-rectangle: (event) 4559 mouse-track-do-rectangle: (event)
3726 -- an interactive compiled Lisp function. 4560 -- an interactive compiled Lisp function.
3727 Like `mouse-track' but selects rectangles instead of regions. 4561 Like `mouse-track' but selects rectangles instead of regions.
3728 @end example 4562 @end example
3729 4563
3730 @node Q3.7.8, Q3.8.1, Q3.7.7, Customization 4564 @node Q3.7.2, Q3.7.3, Q3.7.1, Display Subsystems
3731 @unnumberedsubsec Q3.7.8: Why does @kbd{M-w} take so long? 4565 @unnumberedsubsec Q3.7.2: How can I turn off or change highlighted selections?
3732
3733 It actually doesn't. It leaves the region visible for a second so that
3734 you can see what area is being yanked. If you start working, though, it
3735 will immediately complete its operation. In other words, it will only
3736 delay for a second if you let it.
3737
3738 @node Q3.8.1, Q3.8.2, Q3.7.8, Customization
3739 @unnumberedsec 3.8: The Menubar and Toolbar
3740 @unnumberedsubsec Q3.8.1: How do I get rid of the menu (or menubar)?
3741
3742 @c If you are running XEmacs 19.13 or earlier, add this command to your
3743 @c @file{init.el}/@file{.emacs}.
3744 @c
3745 @c @lisp
3746 @c (set-menubar nil)
3747 @c @end lisp
3748 @c
3749 @c Starting with XEmacs 19.14 the preferred method is:
3750 @c
3751 @lisp
3752 (set-specifier menubar-visible-p nil)
3753 @end lisp
3754
3755 @node Q3.8.2, Q3.8.3, Q3.8.1, Customization
3756 @unnumberedsubsec Q3.8.2: Can I customize the basic menubar?
3757
3758 For an extensive menubar, add this line to your @file{init.el}/@file{.emacs}:
3759
3760 @lisp
3761 (load "big-menubar")
3762 @end lisp
3763
3764 If you'd like to write your own, this file provides as good a set of
3765 examples as any to start from. The file is located in edit-utils
3766 package.
3767
3768 @node Q3.8.3, Q3.8.4, Q3.8.2, Customization
3769 @unnumberedsubsec Q3.8.3: How do I control how many buffers are listed in the menu @code{Buffers List}?
3770
3771 Add the following to your @file{init.el}/@file{.emacs} (suit to fit):
3772
3773 @lisp
3774 (setq buffers-menu-max-size 20)
3775 @end lisp
3776
3777 For no limit, use an argument of @samp{nil}.
3778
3779 Starting with XEmacs-20.3 you can also change this with Customize.
3780 Select from the @code{Options} menu
3781 @code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...} or
3782 type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}.
3783
3784 @node Q3.8.4, Q3.8.5, Q3.8.3, Customization
3785 @unnumberedsubsec Q3.8.4: Resources like @code{Emacs*menubar*font} are not working?
3786
3787 I am trying to use a resource like @code{Emacs*menubar*font} to set the
3788 font of the menubar but it's not working.
3789
3790 In Motif, the use of @samp{font} resources is obsoleted in order to
3791 support internationalization. If you are using the real Motif menubar,
3792 this resource is not recognized at all; you have to say:
3793
3794 @example
3795 Emacs*menubar*fontList: FONT
3796 @end example
3797
3798 If you are using the Lucid menubar, for backward compatibility with
3799 existing user configurations, the @samp{font} resource is recognized.
3800 Since this is not supported by Motif itself, the code is a kludge and
3801 the @samp{font} resource will be recognized only if the @samp{fontList}
3802 resource resource is unset. This means that the resource
3803
3804 @example
3805 *fontList: FONT
3806 @end example
3807
3808 will override
3809
3810 @example
3811 Emacs*menubar*font: FONT
3812 @end example
3813
3814 even though the latter is more specific.
3815
3816 In non-Motif configurations using @samp{--with-mule} and
3817 @samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet}
3818 resource @emph{instead of} the @code{font} resource. The backward
3819 compatibility kludge was never implemented for non-Motif builds.
3820 Example:
3821
3822 @example
3823 *fontSet: FONT
3824 @end example
3825
3826 @node Q3.8.5, Q3.9.1, Q3.8.4, Customization
3827 @unnumberedsubsec Q3.8.5: How can I bind a key to a function to toggle the toolbar?
3828
3829 Try something like:
3830
3831 @lisp
3832 (defun my-toggle-toolbar ()
3833 (interactive)
3834 (set-specifier default-toolbar-visible-p
3835 (not (specifier-instance default-toolbar-visible-p))))
3836 (global-set-key "\C-xT" 'my-toggle-toolbar)
3837 @end lisp
3838
3839 There are redisplay bugs in 19.14 that may make the preceding result in
3840 a messed-up display, especially for frames with multiple windows. You
3841 may need to resize the frame before XEmacs completely realizes the
3842 toolbar is really gone.
3843
3844 Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct
3845 code.
3846
3847 @node Q3.9.1, Q3.9.2, Q3.8.5, Customization
3848 @unnumberedsec 3.9: Scrollbars
3849 @unnumberedsubsec Q3.9.1: How can I disable the scrollbar?
3850
3851 To disable them for all frames, add the following line to
3852 your @file{.Xresources}:
3853
3854 @example
3855 Emacs.scrollBarWidth: 0
3856 @end example
3857
3858 Or select from the @code{Options} menu @code{Frame Appearance->Scrollbars}.
3859 Remember to save options.
3860
3861 To turn the scrollbar off on a per-frame basis, use the following
3862 function:
3863
3864 @lisp
3865 (set-specifier scrollbar-width 0 (selected-frame))
3866 @end lisp
3867
3868 You can actually turn the scrollbars on at any level you want by
3869 substituting for (selected-frame) in the above command. For example, to
3870 turn the scrollbars off only in a single buffer:
3871
3872 @lisp
3873 (set-specifier scrollbar-width 0 (current-buffer))
3874 @end lisp
3875 @c
3876 @c In XEmacs versions prior to 19.14, you had to use the hairier construct:
3877 @c
3878 @c @lisp
3879 @c (set-specifier scrollbar-width (cons (selected-frame) 0))
3880 @c @end lisp
3881
3882 @node Q3.9.2, Q3.9.3, Q3.9.1, Customization
3883 @unnumberedsubsec Q3.9.2: How can one use resources to change scrollbar colors?
3884
3885 Here's a recap of how to use resources to change your scrollbar colors:
3886
3887 @example
3888 ! Motif scrollbars
3889
3890 Emacs*XmScrollBar.Background: skyblue
3891 Emacs*XmScrollBar.troughColor: lightgray
3892
3893 ! Athena scrollbars
3894
3895 Emacs*Scrollbar.Foreground: skyblue
3896 Emacs*Scrollbar.Background: lightgray
3897 @end example
3898
3899 Note the capitalization of @code{Scrollbar} for the Athena widget.
3900
3901 @node Q3.9.3, Q3.9.4, Q3.9.2, Customization
3902 @unnumberedsubsec Q3.9.3: Moving the scrollbar can move the point; can I disable this?
3903
3904 When I move the scrollbar in an XEmacs window, it moves the point as
3905 well, which should not be the default behavior. Is this a bug or a
3906 feature? Can I disable it?
3907
3908 The current behavior is a feature, not a bug. Point remains at the same
3909 buffer position as long as that position does not scroll off the screen.
3910 In that event, point will end up in either the upper-left or lower-left
3911 hand corner.
3912
3913 This cannot be changed.
3914
3915 @node Q3.9.4, Q3.10.1, Q3.9.3, Customization
3916 @unnumberedsubsec Q3.9.4: How can I turn off automatic horizontal scrolling in specific modes?
3917
3918 Do @code{(setq truncate-lines t)} in the mode-hooks for any modes
3919 in which you want lines truncated.
3920
3921 More precisely: If @code{truncate-lines} is nil, horizontal scrollbars
3922 will never appear. Otherwise, they will appear only if the value of
3923 @code{scrollbar-height} for that buffer/window/etc. is non-zero. If you
3924 do
3925
3926 @lisp
3927 (set-specifier scrollbar-height 0)
3928 @end lisp
3929
3930 then horizontal scrollbars will not appear in truncated buffers unless
3931 the package specifically asked for them.
3932
3933 @node Q3.10.1, Q3.10.2, Q3.9.4, Customization
3934 @unnumberedsec 3.10: Text Selections
3935 @unnumberedsubsec Q3.10.1: How can I turn off or change highlighted selections?
3936 4566
3937 The @code{zmacs} mode allows for what some might call gratuitous 4567 The @code{zmacs} mode allows for what some might call gratuitous
3938 highlighting for selected regions (either by setting mark or by using 4568 highlighting for selected regions (either by setting mark or by using
3939 the mouse). This is the default behavior. To turn off, add the 4569 the mouse). This is the default behavior. To turn off, add the
3940 following line to your @file{init.el}/@file{.emacs} file: 4570 following line to your @file{init.el} file:
3941 4571
3942 @lisp 4572 @lisp
3943 (setq zmacs-regions nil) 4573 (setq zmacs-regions nil)
3944 @end lisp 4574 @end lisp
3945 4575
3946 Starting with XEmacs-20.2 you can also change this with Customize. Select 4576 You can also change this with Customize. Select from the
3947 from the @code{Options} menu @code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs 4577 @code{Options} menu
3948 Regions} or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. 4578 @code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs Regions}
3949 4579 or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
3950 To change the face for selection, look at @code{Options->Customize} on 4580
3951 the menubar. 4581 To change the face for selection, look at @code{Options->Advanced (Customize)}
3952 4582 on the menubar.
3953 @node Q3.10.2, Q3.10.3, Q3.10.1, Customization 4583
3954 @unnumberedsubsec Q3.10.2: How do I get that typing on an active region removes it? 4584 @node Q3.7.3, Q3.7.4, Q3.7.2, Display Subsystems
4585 @unnumberedsubsec Q3.7.3: How do I get that typing on an active region removes it?
3955 4586
3956 I want to change things so that if I select some text and start typing, 4587 I want to change things so that if I select some text and start typing,
3957 the typed text replaces the selected text, similar to Motif. 4588 the typed text replaces the selected text, similar to Motif.
3958 4589
3959 You want to use something called @dfn{pending delete}. Pending delete 4590 You want to use something called @dfn{pending delete}. Pending delete
3961 and you press a key to replace the selected region by the key you typed. 4592 and you press a key to replace the selected region by the key you typed.
3962 Usually backspace kills the selected region. 4593 Usually backspace kills the selected region.
3963 4594
3964 To get this behavior, ensure that you have the @file{pc} package 4595 To get this behavior, ensure that you have the @file{pc} package
3965 installed, and add the following lines to your 4596 installed, and add the following lines to your
3966 @file{init.el}/@file{.emacs}: 4597 @file{init.el}:
3967 4598
3968 @lisp 4599 @lisp
3969 (cond 4600 (cond
3970 ((fboundp 'turn-on-pending-delete) 4601 ((fboundp 'turn-on-pending-delete)
3971 (turn-on-pending-delete)) 4602 (turn-on-pending-delete))
3975 4606
3976 Note that this will work with both Backspace and Delete. This code is a 4607 Note that this will work with both Backspace and Delete. This code is a
3977 tad more complicated than it has to be for XEmacs in order to make it 4608 tad more complicated than it has to be for XEmacs in order to make it
3978 more portable. 4609 more portable.
3979 4610
3980 @node Q3.10.3, Q3.10.4, Q3.10.2, Customization 4611 @node Q3.7.4, Q3.7.5, Q3.7.3, Display Subsystems
3981 @unnumberedsubsec Q3.10.3: Can I turn off the highlight during isearch? 4612 @unnumberedsubsec Q3.7.4: Can I turn off the highlight during isearch?
3982 4613
3983 I do not like my text highlighted while I am doing isearch as I am not 4614 I do not like my text highlighted while I am doing isearch as I am not
3984 able to see what's underneath. How do I turn it off? 4615 able to see what's underneath. How do I turn it off?
3985 4616
3986 Put the following in your @file{init.el}/@file{.emacs}: 4617 Put the following in your @file{init.el}:
3987 4618
3988 @lisp 4619 @lisp
3989 (setq isearch-highlight nil) 4620 (setq isearch-highlight nil)
3990 @end lisp 4621 @end lisp
3991 4622
3994 4625
3995 Note also that isearch-highlight affects query-replace and ispell. 4626 Note also that isearch-highlight affects query-replace and ispell.
3996 Instead of disabling isearch-highlight you may find that a better 4627 Instead of disabling isearch-highlight you may find that a better
3997 solution consists of customizing the @code{isearch} face. 4628 solution consists of customizing the @code{isearch} face.
3998 4629
3999 @node Q3.10.4, Q3.10.5, Q3.10.3, Customization 4630 @node Q3.7.5, Q3.7.6, Q3.7.4, Display Subsystems
4000 @unnumberedsubsec Q3.10.4: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? 4631 @unnumberedsubsec Q3.7.5: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)?
4001 4632
4002 Put this in your @code{.emacs}: 4633 Put this in your @code{.emacs}:
4003 4634
4004 @lisp 4635 @lisp
4005 (setq zmacs-regions nil) 4636 (setq zmacs-regions nil)
4006 @end lisp 4637 @end lisp
4007 4638
4008 @strong{Warning: This command turns off all region highlighting.} 4639 @strong{Warning: This command turns off all region highlighting.}
4009 4640
4010 Also see @ref{Q3.10.1}. 4641 @xref{Q3.7.2, How can I turn off or change highlighted selections?}.
4011 4642
4012 @node Q3.10.5, Q3.10.6, Q3.10.4, Customization 4643 @node Q3.7.6, Q3.7.7, Q3.7.5, Display Subsystems
4013 @unnumberedsubsec Q3.10.5: The region disappears when I hit the end of buffer while scrolling. 4644 @unnumberedsubsec Q3.7.6: The region disappears when I hit the end of buffer while scrolling.
4014 4645
4015 This has been fixed by default starting with XEmacs-20.3. 4646 This has been fixed by default starting with XEmacs-20.3.
4016 4647
4017 With older versions you can turn this feature (if it indeed is a feature) 4648 With older versions you can turn this feature (if it indeed is a feature)
4018 off like this: 4649 off like this:
4038 @end lisp 4669 @end lisp
4039 4670
4040 Thanks to @email{raman@@adobe.com, T. V. Raman} for assistance in deriving this 4671 Thanks to @email{raman@@adobe.com, T. V. Raman} for assistance in deriving this
4041 answer. 4672 answer.
4042 4673
4043 @node Q3.10.6, , Q3.10.5, Customization 4674 @node Q3.7.7, Q3.7.8, Q3.7.6, Display Subsystems
4044 @unnumberedsubsec Q3.10.6: Why is killing so slow? 4675 @unnumberedsubsec Q3.7.7: Why is killing so slow?
4045 4676
4046 This actually is an X Windows question, although you'll notice it with 4677 This actually is an X Windows question, although you'll notice it with
4047 keyboard operations as well as while using the GUI. Basically, there 4678 keyboard operations as well as while using the GUI. Basically, there
4048 are four ways to communicate interprogram via the X server: 4679 are four ways to communicate interprogram via the X server:
4049 4680
4105 @code{x-selection-strict-motif-ownership} to nil, but this means you will 4736 @code{x-selection-strict-motif-ownership} to nil, but this means you will
4106 only intermittently be able to paste XEmacs kills to Motif applications. 4737 only intermittently be able to paste XEmacs kills to Motif applications.
4107 4738
4108 Thanks to Jeff Mincy and Glynn Clements for corrections. 4739 Thanks to Jeff Mincy and Glynn Clements for corrections.
4109 4740
4110 @node Subsystems, Miscellaneous, Customization, Top 4741 @node Q3.7.8, Q3.8.1, Q3.7.7, Display Subsystems
4111 @unnumbered 4 Major Subsystems 4742 @unnumberedsubsec Q3.7.8: Why does @kbd{M-w} take so long?
4112 4743
4113 This is part 4 of the XEmacs Frequently Asked Questions list. This 4744 It actually doesn't. It leaves the region visible for a second so that
4114 section is devoted to major XEmacs subsystems. 4745 you can see what area is being yanked. If you start working, though, it
4115 4746 will immediately complete its operation. In other words, it will only
4116 @menu 4747 delay for a second if you let it.
4117 Reading Mail with VM: 4748
4118 * Q4.0.1:: How do I set up VM to retrieve remote mail using POP? 4749 @unnumberedsec 3.8: Buffers, Text Editing
4119 * Q4.0.2:: How do I get VM to filter mail for me? 4750
4120 * Q4.0.3:: How can I get VM to automatically check for new mail? 4751 @node Q3.8.1, Q3.8.2, Q3.7.8, Display Subsystems
4121 * Q4.0.4:: [This question intentionally left blank] 4752 @unnumberedsubsec Q3.8.1: Can I have the end of the buffer delimited in some way?
4122 * Q4.0.5:: How do I get my outgoing mail archived?
4123 * 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"?
4124 * Q4.0.7:: Is there a mailing list or FAQ for VM?
4125 * Q4.0.8:: Remote mail reading with VM.
4126 * Q4.0.9:: rmail or VM gets an error incorporating new mail.
4127 * Q4.0.10:: How do I make VM stay in a single frame?
4128 * Q4.0.11:: How do I make VM or mh-e display graphical smilies?
4129 * Q4.0.12:: Customization of VM not covered in the manual or here.
4130
4131 Web browsing with W3:
4132 * Q4.1.1:: What is W3?
4133 * Q4.1.2:: How do I run W3 from behind a firewall?
4134 * Q4.1.3:: Is it true that W3 supports style sheets and tables?
4135
4136 Reading Netnews and Mail with Gnus:
4137 * Q4.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus,argh!
4138 * Q4.2.2:: [This question intentionally left blank]
4139 * Q4.2.3:: How do I make Gnus stay within a single frame?
4140 * Q4.2.4:: How do I customize the From: line?
4141
4142 Other Mail & News:
4143 * Q4.3.1:: How can I read and/or compose MIME messages?
4144 * Q4.3.2:: What is TM and where do I get it?
4145 * Q4.3.3:: Why isn't this @code{movemail} program working?
4146 * Q4.3.4:: Movemail is also distributed by Netscape? Can that cause problems?
4147 * Q4.3.5:: Where do I find pstogif (required by tm)?
4148
4149 Sparcworks, EOS, and WorkShop:
4150 * Q4.4.1:: What is SPARCworks, EOS, and WorkShop
4151 * Q4.4.2:: How do I start the Sun Workshop support in XEmacs 21?
4152
4153 Energize:
4154 * Q4.5.1:: What is/was Energize?
4155
4156 Infodock:
4157 * Q4.6.1:: What is Infodock?
4158
4159 Other Unbundled Packages:
4160 * Q4.7.1:: What is AUC TeX? Where do you get it?
4161 * Q4.7.2:: Are there any Emacs Lisp Spreadsheets?
4162 * Q4.7.3:: [This question intentionally left blank]
4163 * Q4.7.4:: Problems installing AUC TeX
4164 * Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs?
4165 * Q4.7.6:: Is there a MatLab mode?
4166 * Q4.7.7:: Can I edit files on other hosts?
4167 @end menu
4168
4169 @node Q4.0.1, Q4.0.2, Subsystems, Subsystems
4170 @unnumberedsec 4.0: Reading Mail with VM
4171 @unnumberedsubsec Q4.0.1: How do I set up VM to retrieve mail from a remote site using POP?
4172
4173 Use @code{vm-spool-files}, like this for example:
4174
4175 @lisp
4176 (setq vm-spool-files '("/var/spool/mail/wing"
4177 "netcom23.netcom.com:110:pass:wing:MYPASS"))
4178 @end lisp
4179
4180 Of course substitute your actual password for MYPASS.
4181
4182 @node Q4.0.2, Q4.0.3, Q4.0.1, Subsystems
4183 @unnumberedsubsec Q4.0.2: How do I get VM to filter mail for me?
4184
4185 One possibility is to use procmail to split your mail before it gets to
4186 VM. I prefer this personally, since there are many strange and
4187 wonderful things one can do with procmail. Procmail may be found at
4188 @uref{ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/}.
4189
4190 Also see the Mail Filtering FAQ at:
4191 @iftex
4192 @*
4193 @end iftex
4194 @uref{ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq}.
4195 @c Link above,
4196 @c <URL:http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/filtering-faq/faq.html>
4197 @c was dead.
4198
4199 @node Q4.0.3, Q4.0.4, Q4.0.2, Subsystems
4200 @unnumberedsubsec Q4.0.3: How can I get VM to automatically check for new mail?
4201
4202 @email{turner@@lanl.gov, John Turner} writes:
4203
4204 @quotation
4205 Use the following:
4206
4207 @lisp
4208 (setq vm-auto-get-new-mail 60)
4209 @end lisp
4210 @end quotation
4211
4212 @node Q4.0.4, Q4.0.5, Q4.0.3, Subsystems
4213 @unnumberedsubsec Q4.0.4: [This question intentionally left blank]
4214
4215 Obsolete question, left blank to avoid renumbering.
4216
4217 @node Q4.0.5, Q4.0.6, Q4.0.4, Subsystems
4218 @unnumberedsubsec Q4.0.5: How do I get my outgoing mail archived?
4219
4220 @lisp
4221 (setq mail-archive-file-name "~/outbox")
4222 @end lisp
4223
4224 @node Q4.0.6, Q4.0.7, Q4.0.5, Subsystems
4225 @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"?
4226
4227 Set @code{vm-reply-ignored-addresses} to a list, like
4228
4229 @lisp
4230 (setq vm-reply-ignored-addresses
4231 '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
4232 "wing@@netcom.com" "wing@@xemacs.org"))
4233 @end lisp
4234
4235 Note that each string is a regular expression.
4236
4237 @node Q4.0.7, Q4.0.8, Q4.0.6, Subsystems
4238 @unnumberedsubsec Q4.0.7: Is there a mailing list or FAQ for VM?
4239
4240 A FAQ for VM exists at @uref{http://www.wonderworks.com/vm/FAQ.html}.
4241
4242 VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
4243
4244 @node Q4.0.8, Q4.0.9, Q4.0.7, Subsystems
4245 @unnumberedsubsec Q4.0.8: Remote mail reading with VM.
4246
4247 My mailbox lives at the office on a big honkin server. My regular INBOX
4248 lives on my honkin desktop machine. I now can PPP to the office from
4249 home which is far from honking... I'd like to be able to read mail at
4250 home without storing it here and I'd like to use xemacs and VM at
4251 home... Is there a recommended setup?
4252
4253 @email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes:
4254
4255 @quotation
4256 There are several ways to do this.
4257
4258 @enumerate
4259 @item
4260 Set your display to your home machine and run dxpc or one of the other X
4261 compressors.
4262
4263 @item
4264 NFS mount your desktop machine on your home machine and modify your pop
4265 command on your home machine to rsh to your desktop machine and actually
4266 do the pop get's.
4267
4268 @item
4269 Run a POP server on your desktop machine as well and do a sort of two
4270 tiered POP get.
4271 @end enumerate
4272 @end quotation
4273
4274 @email{wmperry@@monolith.spry.com, William Perry} adds:
4275
4276 @quotation
4277 Or you could run a pop script periodically on your desktop machine, and
4278 just use ange-ftp or NFS to get to your mailbox. I used to do this all
4279 the time back at IU.
4280 @end quotation
4281
4282 @node Q4.0.9, Q4.0.10, Q4.0.8, Subsystems
4283 @unnumberedsubsec Q4.0.9: rmail or VM gets an error incorporating new mail.
4284
4285 Quoting the XEmacs PROBLEMS file:
4286
4287 @quotation
4288 rmail and VM get new mail from @file{/usr/spool/mail/$USER} using a
4289 program called @code{movemail}. This program interlocks with
4290 @code{/bin/mail} using the protocol defined by @code{/bin/mail}.
4291
4292 There are two different protocols in general use. One of them uses the
4293 @code{flock} system call. The other involves creating a lock file;
4294 @code{movemail} must be able to write in @file{/usr/spool/mail} in order
4295 to do this. You control which one is used by defining, or not defining,
4296 the macro @code{MAIL_USE_FLOCK} in @file{config.h} or the m- or s- file
4297 it includes.
4298
4299 @strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
4300 SYSTEM, YOU CAN LOSE MAIL!}
4301
4302 If your system uses the lock file protocol, and fascist restrictions
4303 prevent ordinary users from writing the lock files in
4304 @file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a
4305 suitable group such as @samp{mail}. You can use these commands (as
4306 root):
4307
4308 @example
4309 chgrp mail movemail
4310 chmod 2755 movemail
4311 @end example
4312
4313 If your system uses the lock file protocol, and fascist restrictions
4314 prevent ordinary users from writing the lock files in
4315 @file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a
4316 suitable group such as @code{mail}. To do this, use the following
4317 commands (as root) after doing the make install.
4318
4319 @example
4320 chgrp mail movemail
4321 chmod 2755 movemail
4322 @end example
4323
4324 Installation normally copies movemail from the build directory to an
4325 installation directory which is usually under @file{/usr/local/lib}.
4326 The installed copy of @code{movemail} is usually in the directory
4327 @file{/usr/local/lib/emacs/VERSION/TARGET}. You must change the group
4328 and mode of the installed copy; changing the group and mode of the build
4329 directory copy is ineffective.
4330 @end quotation
4331
4332 @node Q4.0.10, Q4.0.11, Q4.0.9, Subsystems
4333 @unnumberedsubsec Q4.0.10: How do I make VM stay in a single frame?
4334
4335 John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes:
4336
4337 @quotation
4338 @lisp
4339 ; Don't use multiple frames
4340 (setq vm-frame-per-composition nil)
4341 (setq vm-frame-per-folder nil)
4342 (setq vm-frame-per-edit nil)
4343 (setq vm-frame-per-summary nil)
4344 @end lisp
4345 @end quotation
4346
4347 @node Q4.0.11, Q4.0.12, Q4.0.10, Subsystems
4348 @unnumberedsubsec Q4.0.11: How do I make VM or mh-e display graphical smilies?
4349 @c Changed June
4350 For mh-e use the following:
4351
4352 @lisp
4353 (add-hook 'mh-show-mode-hook '(lambda ()
4354 (smiley-region (point-min)
4355 (point-max))))
4356 @end lisp
4357
4358 @email{bill@@carpenter.ORG, WJCarpenter} writes:
4359 For VM use the following:
4360 @lisp
4361 (autoload 'smiley-region "smiley" nil t)
4362 (add-hook 'vm-select-message-hook
4363 '(lambda ()
4364 (smiley-region (point-min)
4365 (point-max))))
4366 @end lisp
4367
4368 For tm use the following:
4369 @lisp
4370 (autoload 'smiley-buffer "smiley" nil t)
4371 (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
4372 @end lisp
4373
4374 @node Q4.0.12, Q4.1.1, Q4.0.11, Subsystems
4375 @unnumberedsubsec Q4.0.12: Customization of VM not covered in the manual, or here.
4376
4377 @email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes:
4378
4379 @quotation
4380 The meta-answer is to look into the file @file{vm-vars.el}, in the vm
4381 directory of the lisp library.
4382
4383 @file{vm-vars.el} contains, initializes and carefully describes, with
4384 examples of usage, the plethora of user options that @emph{fully}
4385 control VM's behavior.
4386
4387 Enter vm-vars, @code{forward-search} for toolbar, find the variables
4388 that control the toolbar placement, appearance, existence, copy to your
4389 @file{init.el}/@file{.emacs} or @file{.vm} and modify according to the
4390 detailed instructions.
4391
4392 The above also applies to all the various features of VM: search for
4393 some keywords, maybe the first you conjure isn't appropriate, find the
4394 appropriate variables, copy and experiment.
4395 @end quotation
4396
4397 @node Q4.1.1, Q4.1.2, Q4.0.12, Subsystems
4398 @unnumberedsec 4.1: Web browsing with W3
4399 @unnumberedsubsec Q4.1.1: What is W3?
4400
4401 W3 is an advanced graphical browser written in Emacs lisp that runs on
4402 XEmacs. It has full support for cascaded style sheets, and more...
4403
4404 It has a home web page at
4405 @uref{http://www.cs.indiana.edu/elisp/w3/docs.html}.
4406
4407 @node Q4.1.2, Q4.1.3, Q4.1.1, Subsystems
4408 @unnumberedsubsec Q4.1.2: How do I run W3 from behind a firewall?
4409
4410 There is a long, well-written, detailed section in the W3 manual that
4411 describes how to do this. Look in the section entitled "Firewalls".
4412
4413 @node Q4.1.3, Q4.2.1, Q4.1.2, Subsystems
4414 @unnumberedsubsec Q4.1.3: Is it true that W3 supports style sheets and tables?
4415
4416 Yes, and much more. W3, as distributed with the latest XEmacs is a
4417 full-featured web browser.
4418
4419 @node Q4.2.1, Q4.2.2, Q4.1.3, Subsystems
4420 @unnumberedsec 4.2: Reading Netnews and Mail with Gnus
4421 @unnumberedsubsec Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
4422
4423 The Gnus numbering issues are not meant for mere mortals to know them.
4424 If you feel you @emph{must} enter the muddy waters of Gnus, visit the
4425 excellent FAQ, maintained by Justin Sheehy, at:
4426
4427 @example
4428 @uref{http://www.ccs.neu.edu/software/contrib/gnus/}
4429 @end example
4430
4431 See also Gnus home page
4432 @example
4433 @uref{http://www.gnus.org/}
4434 @end example
4435
4436 @node Q4.2.2, Q4.2.3, Q4.2.1, Subsystems
4437 @unnumberedsubsec Q4.2.2: This question intentionally left blank.
4438
4439 Obsolete question, left blank to avoid renumbering.
4440
4441 @node Q4.2.3, Q4.2.4, Q4.2.2, Subsystems
4442 @unnumberedsubsec Q4.2.3: How do I make Gnus stay within a single frame?
4443
4444 The toolbar code to start Gnus opens the new frame---and it's a feature
4445 rather than a bug. If you don't like it, but would still like to click
4446 on the seemly icon, use the following code:
4447
4448 @lisp
4449 (defun toolbar-news ()
4450 (gnus))
4451 @end lisp
4452
4453 It will redefine the callback function of the icon to just call
4454 @code{gnus}, without all the fancy frame stuff.
4455
4456 @node Q4.2.4, Q4.3.1, Q4.2.3, Subsystems
4457 @unnumberedsubsec Q4.2.4: How do I customize the From: line?
4458
4459 How do I change the @code{From:} line? I have set gnus-user-from-line
4460 to
4461 @example
4462 Gail Gurman <gail.gurman@@sybase.com>
4463 @end example
4464 @noindent , but XEmacs Gnus doesn't use
4465 it. Instead it uses
4466 @example
4467 Gail Mara Gurman @email{gailg@@deall}
4468 @end example
4469 @noindent and then complains
4470 that it's incorrect. Also, as you perhaps can see, my Message-ID is
4471 screwy. How can I change that?
4472
4473 @email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes:
4474
4475 @quotation
4476 Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or
4477 @code{mail-host-address} to @samp{sybase.com}.
4478 @end quotation
4479
4480 @node Q4.3.1, Q4.3.2, Q4.2.4, Subsystems
4481 @unnumberedsec 4.3: Other Mail & News
4482 @unnumberedsubsec Q4.3.1: How can I read and/or compose MIME messages?
4483 @c Changed June
4484
4485 VM supports MIME natively.
4486
4487 You probably want to use the Tools for MIME (tm). @xref{Q4.3.2}, for
4488 details.
4489
4490 @email{trey@@cs.berkeley.edu, Trey Jackson} has an Emacs & MIME web page at
4491 @iftex
4492 @*
4493 @end iftex
4494 @uref{http://bmrc.berkeley.edu/~trey/emacs/mime.html}.
4495
4496
4497 Another possibility is RMIME. You may find RMIME at
4498 @iftex
4499 @*
4500 @end iftex
4501 @uref{http://www.cinti.net/~rmoody/rmime/index.html}.
4502
4503
4504 @node Q4.3.2, Q4.3.3, Q4.3.1, Subsystems
4505 @unnumberedsubsec Q4.3.2: What is TM and where do I get it?
4506
4507 TM stands for @dfn{Tools for MIME} and not Tiny MIME. TM integrates
4508 with all major XEmacs packages like Gnus (all flavors), VM, MH-E, and
4509 mailcrypt. It provides totally transparent and trouble-free MIME
4510 support. When appropriate a message will be decoded in place in an
4511 XEmacs buffer.
4512
4513 TM now comes as a package with XEmacs 19.16 and XEmacs 20.2.
4514
4515 TM was written by @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} and
4516 @email{shuhei-k@@jaist.ac.jp, KOBAYASHI
4517 Shuhei}.
4518
4519 It is based on the work of @email{umerin@@mse.kyutech.ac.jp, UMEDA
4520 Masanobu}, the original writer of GNUS.
4521
4522 The following information is from the @file{README}:
4523
4524 @dfn{tm} is a MIME package for GNU Emacs.
4525 tm has following functions:
4526
4527 @itemize @bullet
4528 @item MIME style multilingual header.
4529 @item MIME message viewer (mime/viewer-mode).
4530 @item MIME message composer (mime/editor-mode).
4531 @item MIME extenders for mh-e, GNUS, RMAIL and VM.
4532 @end itemize
4533
4534 tm is available from following anonymous ftp sites:
4535 @itemize @bullet
4536 @comment @item @uref{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/mime/} (Japan).
4537 @comment @item @uref{ftp://ftp.nis.co.jp/pub/gnu/emacs-lisp/tm/} (Japan).
4538 @comment @c The host above is unknown.
4539 @comment @item @uref{ftp://ftp.nisiq.net/pub/gnu/emacs-lisp/tm/} (US).
4540 @comment @item @uref{ftp://ftp.miranova.com/pub/gnus/jaist.ac.jp/} (US).
4541 @item @uref{ftp://ftp.unicamp.br/pub/mail/mime/tm/} (Brasil).
4542 @item @uref{ftp://ftp.th-darmstadt.de/pub/editors/GNU-Emacs/lisp/mime/} (Germany).
4543 @item @uref{ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/} (Germany).
4544 @end itemize
4545
4546 Don't let the installation procedure & instructions stop you from trying
4547 this package out---it's much simpler than it looks, and once installed,
4548 trivial to use.
4549
4550 @email{youngs@@xemacs.org, Steve Youngs} writes:
4551
4552 @quotation
4553 All the major Emacs Lisp based MUAs (Gnus, MH-E, and VM) all do their
4554 own thing when it comes to MIME so you won't need TM to get MIME support
4555 in these packages.
4556 @end quotation
4557
4558 @node Q4.3.3, Q4.3.4, Q4.3.2, Subsystems
4559 @unnumberedsubsec Q4.3.3: Why isn't this @code{movemail} program working?
4560
4561 Ben Wing @email{ben@@xemacs.org} writes:
4562
4563 @quotation
4564 It wasn't chown'ed/chmod'd correctly.
4565 @end quotation
4566
4567 @node Q4.3.4, Q4.3.5, Q4.3.3, Subsystems
4568 @unnumberedsubsec Q4.3.4: Movemail is also distributed by Netscape? Can that cause problems?
4569
4570 @email{steve@@xemacs.org, Steve Baur} writes:
4571
4572 @quotation
4573 Yes. Always use the movemail installed with your XEmacs. Failure to do
4574 so can result in lost mail.
4575 @end quotation
4576
4577 Please refer to @email{jwz@@jwz.org, Jamie Zawinski's} notes at
4578 @iftex
4579 @*
4580 @end iftex
4581 @uref{http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/movemail.html}.
4582 In particular, this document will show you how to make Netscape use the
4583 version of movemail configured for your system by the person who built
4584 XEmacs.
4585
4586 @node Q4.3.5, Q4.4.1, Q4.3.4, Subsystems
4587 @unnumberedsubsec Q4.3.5: Where do I find pstogif (required by tm)?
4588
4589 pstogif is part of the latex2html package.
4590
4591 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
4592
4593 latex2html is best found at the CTAN hosts and their mirrors
4594 in
4595 @iftex
4596 @*
4597 @end iftex
4598 @file{tex-archive/support/latex2html}.
4599
4600 CTAN hosts are:
4601
4602 @itemize @bullet
4603 @item @uref{ftp://ftp.tex.ac.uk/tex-archive/support/latex2html/}.
4604 @item @uref{ftp://ftp.dante.de/tex-archive/support/latex2html/}.
4605 @end itemize
4606
4607 There is a good mirror at ftp.cdrom.com;
4608 @iftex
4609 @*
4610 @end iftex
4611 @uref{ftp://ftp.cdrom.com/pub/tex/ctan/support/latex2html/}.
4612
4613 @node Q4.4.1, Q4.4.2, Q4.3.5, Subsystems
4614 @unnumberedsec 4.4: Sparcworks, EOS, and WorkShop
4615 @unnumberedsubsec Q4.4.1: What is SPARCworks, EOS, and WorkShop?
4616
4617 @email{turner@@lanl.gov, John Turner} writes:
4618
4619 @quotation
4620 SPARCworks is SunSoft's development environment, comprising compilers
4621 (C, C++, FORTRAN 77, Fortran 90, Ada, and Pascal), a debugger, and other
4622 tools such as TeamWare (for configuration management), MakeTool, etc.
4623 @end quotation
4624
4625 See @uref{http://www.sun.com/software/Developer-products/}
4626 for more info.
4627
4628 EOS stands for "Era on SPARCworks", but I don't know what Era stands
4629 for.
4630
4631 EOS is the integration of XEmacs with the SPARCworks debugger. It
4632 allows one to use an XEmacs frame to view code (complete with
4633 fontification, etc.), set breakpoints, print variables, etc., while
4634 using the SPARCworks debugger. It works very well and I use it all the
4635 time.
4636
4637 @email{cthomp@@xemacs.org, Chuck Thompson} writes:
4638
4639 @quotation
4640 Era stood for "Emacs Rewritten Again". It was what we were calling the
4641 modified version of Lucid Emacs for Sun when I was dragged, er, allowed
4642 to work on this wonderful editor.
4643 @end quotation
4644
4645 @email{martin@@xemacs.org, Martin Buchholz} writes:
4646
4647 @quotation
4648 EOS is being replaced with a new graphical development environment
4649 called Sun WorkShop, which is currently (07/96) in Alpha Test. For more
4650 details, check out
4651 @iftex
4652 @*
4653 @end iftex
4654 @uref{http://www.sun.com/software/Products/Developer-products}.
4655 @end quotation
4656
4657 @node Q4.4.2, Q4.5.1, Q4.4.1, Subsystems
4658 @unnumberedsubsec Q4.4.2: How do I start the Sun Workshop support in XEmacs 21?
4659
4660 Add the switch ---with-workshop to the configure command when building
4661 XEmacs and put the following in one of your startup files
4662 (e.g. site-start.el or .emacs):
4663
4664 @lisp
4665 (when (featurep 'tooltalk)
4666 (load "tooltalk-macros")
4667 (load "tooltalk-util")
4668 (load "tooltalk-init"))
4669 (when (featurep 'sparcworks)
4670 (load "sunpro-init")
4671 (load "ring")
4672 (load "comint")
4673 (load "annotations")
4674 (sunpro-startup))
4675 @end lisp
4676
4677 If you are not using the latest Workshop (5.0) you have to apply the
4678 following patch:
4679
4680 @format
4681 --- /opt/SUNWspro/lib/eserve.el.ORIG Fri May 14 15:23:26 1999
4682 +++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999
4683 @@@@ -42,7 +42,7 @@@@
4684 (defvar running-xemacs nil "t if we're running XEmacs")
4685 (defvar running-emacs nil "t if we're running GNU Emacs 19")
4686
4687 -(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
4688 +(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
4689 (setq running-xemacs t)
4690 (setq running-emacs t))
4691 @end format
4692
4693
4694
4695 @node Q4.5.1, Q4.6.1, Q4.4.2, Subsystems
4696 @unnumberedsec 4.5: Energize
4697 @unnumberedsubsec Q4.5.1: What is/was Energize?
4698
4699 @email{gray@@meteor.harlequin.com, David N Gray} writes:
4700 @quotation
4701 The files in @file{lisp/energize} are to enable Emacs to interface with
4702 the "Energize Programming System", a C and C++ development environment,
4703 which was a product of Lucid, Inc. Tragically, Lucid went out of
4704 business in 1994, so although Energize is still a great system, if you
4705 don't already have it, there isn't any way to get it now. (Unless you
4706 happen to be in Japan; INS Engineering may still be selling it there.
4707 Tartan bought the rights to sell it in the rest of the world, but never
4708 did so.)
4709 @end quotation
4710
4711 @node Q4.6.1, Q4.7.1, Q4.5.1, Subsystems
4712 @unnumberedsec 4.6: Infodock
4713 @unnumberedsubsec Q4.6.1: What is Infodock?
4714
4715 @uref{http://sourceforge.net/projects/infodock/, InfoDock} is an
4716 integrated productivity toolset, mainly aimed at technical people,
4717 hosted at SourceForge.
4718
4719 InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of
4720 the power of Emacs, but with an easier to use and more comprehensive
4721 menu-based user interface. The bottom portion of this text describes
4722 how it differs from XEmacs and GNU Emacs from the Free Software
4723 Foundation.
4724
4725 InfoDock is aimed at people who want a free, turn-key productivity
4726 environment. Although InfoDock is customizable, it is not intended for
4727 people who like basic versions of Emacs which need to be customized
4728 extensively for local use; standard Emacs distributions are better for
4729 such uses. InfoDock is for those people who want a complete,
4730 pre-customized environment in one package, which they need not touch
4731 more than once or twice a year to update to new revisions.
4732
4733 InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX,
4734 and Intel Linux systems. It is intended for use on a color display,
4735 although most features will work on monochrome monitors. Simply unpack
4736 InfoDock according to the instructions in the ID-INSTALL file and you
4737 are ready to run.
4738
4739 The InfoDock Manual is concise, yet sufficient as a user guide for users
4740 who have never used an Emacs-type editor before. For users who are
4741 already familiar with Emacs, it supplements the information in the GNU
4742 Emacs Manual.
4743
4744 InfoDock menus are much more extensive and more mature than standard
4745 Emacs menus. Each menu offers a @samp{Manual} item which displays
4746 documentation associated with the menu's functions.
4747
4748 @noindent
4749 Four types of menubars are provided:
4750 @enumerate
4751 @item
4752 An extensive menubar providing access to global InfoDock commands.
4753 @item
4754 Mode-specific menubars tailored to the current major mode.
4755 @item
4756 A simple menubar for basic editing to help novices get started with InfoDock.
4757 @item
4758 The standard XEmacs menubar.
4759 @end enumerate
4760
4761 Most modes also include mode-specific popup menus. Additionally, region and
4762 rectangle popup menus are included.
4763
4764 @samp{Hyperbole}, the everyday information manager, is a core part of
4765 InfoDock. This provides context-sensitive mouse keys, a rolodex-type
4766 contact manager, programmable hypertext buttons, and an autonumbered
4767 outliner with embedded hyperlink anchors.
4768
4769 The @samp{OO-Browser}, a multi-language object-oriented code browser, is a
4770 standard part of InfoDock.
4771
4772 InfoDock saves a more extensive set of user options than other Emacs
4773 versions.
4774
4775 InfoDock inserts a useful file header in many file types, showing the
4776 author, summary, and last modification time of each file. A summary
4777 program can then be used to summarize all of the files in a directory,
4778 for easy MANIFEST file creation.
4779
4780 Your working set of buffers is automatically saved and restored (if you
4781 answer yes to a prompt) between InfoDock sessions.
4782
4783 Refined color choices for code highlighting are provided for both dark and
4784 light background display frames.
4785
4786 The @kbd{C-z} key prefix performs frame-based commands which parallel the
4787 @kbd{C-x} key prefix for window-based commands.
4788
4789 The Smart Menu system is included for producing command menus on dumb
4790 terminals.
4791
4792 Lisp libraries are better categorized according to function.
4793
4794 Extensions and improvements to many areas of Emacs are included, such as:
4795 paragraph filling, mail reading with Rmail, shell handling, outlining, code
4796 highlighting and browsing, and man page browsing.
4797
4798 InfoDock questions, answers and discussion should go to the mail list
4799 @iftex
4800 @*
4801 @end iftex
4802 @email{infodock@@infodock.com}. Use
4803 @email{infodock-request@@infodock.com} to be added or removed from the
4804 list. Always include your InfoDock version number when sending help
4805 requests.
4806
4807 InfoDock is available across the Internet via anonymous FTP. To get
4808 it, first move to a directory into which you want the InfoDock archive
4809 files placed. We will call this <DIST-DIR>.
4810
4811 @example
4812 cd <DIST-DIR>
4813 @end example
4814
4815 Ftp to ftp.xemacs.org (Internet Host ID = 128.174.252.16):
4816
4817 @example
4818 prompt> ftp ftp.xemacs.org
4819 @end example
4820
4821 Login as @samp{anonymous} with your own <user-id>@@<site-name> as a password.
4822
4823 @example
4824 Name (ftp.xemacs.org): anonymous
4825 331 Guest login ok, send your complete e-mail address as password.
4826 Password: -<your-user-id>@@<your-domain>
4827 230 Guest login ok, access restrictions apply.
4828 @end example
4829
4830 Move to the location of the InfoDock archives:
4831
4832 @example
4833 ftp> cd pub/infodock
4834 @end example
4835
4836 Set your transfer mode to binary:
4837
4838 @example
4839 ftp> bin
4840 200 Type set to I.
4841 @end example
4842
4843 Turn off prompting:
4844
4845 @example
4846 ftp> prompt
4847 Interactive mode off.
4848 @end example
4849
4850 Retrieve the InfoDock archives that you want, either by using a
4851 @samp{get <file>} for each file you want or by using the following to
4852 get a complete distribution, including all binaries:
4853
4854 @example
4855 ftp> mget ID-INSTALL
4856 ftp> mget id-*
4857 @end example
4858
4859 Close the FTP connection:
4860
4861 @example
4862 ftp> quit
4863 221 Goodbye.
4864 @end example
4865
4866 Read the @file{ID-INSTALL} file which you just retrieved for
4867 step-by-step installation instructions.
4868
4869 @node Q4.7.1, Q4.7.2, Q4.6.1, Subsystems
4870 @unnumberedsec 4.7: Other Unbundled Packages
4871 @unnumberedsubsec Q4.7.1: What is AUC TeX? Where do you get it?
4872
4873 AUC TeX is a package written by @email{abraham@@dina.kvl.dk, Per Abrahamsen}.
4874 Starting with XEmacs 19.16, AUC TeX is bundled with XEmacs. The
4875 following information is from the @file{README} and website.
4876
4877 AUC TeX is an extensible package that supports writing and formatting
4878 TeX files for most variants of GNU Emacs. Many different macro packages
4879 are supported, including AMS TeX, LaTeX, and TeXinfo.
4880
4881 The most recent version is always available by ftp at
4882 @iftex
4883 @*
4884 @end iftex
4885 @uref{ftp://sunsite.dk/packages/auctex/auctex.tar.gz}.
4886
4887 In case you don't have access to anonymous ftp, you can get it by an
4888 email request to @email{ftpmail@@decwrl.dec.com}.
4889
4890 WWW users may want to check out the AUC TeX page at
4891 @iftex
4892 @*
4893 @end iftex
4894 @uref{http://sunsite.dk/auctex/}.
4895
4896 @node Q4.7.2, Q4.7.3, Q4.7.1, Subsystems
4897 @unnumberedsubsec Q4.7.2: Are there any Emacs Lisp Spreadsheets?
4898
4899 Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at
4900 @iftex
4901 @*
4902 @end iftex
4903 @uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}.
4904
4905 @node Q4.7.3, Q4.7.4, Q4.7.2, Subsystems
4906 @unnumberedsubsec Q4.7.3: [This question intentionally left blank]
4907
4908 @node Q4.7.4, Q4.7.5, Q4.7.3, Subsystems
4909 @unnumberedsubsec Q4.7.4: Problems installing AUC TeX.
4910
4911 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
4912
4913 @quotation
4914 AUC TeX works fine on both stock Emacs and XEmacs has been doing so for
4915 a very very long time. This is mostly due to the work of
4916 @email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu}
4917 package. Which leads to what is probably the problem...
4918 @end quotation
4919
4920 Most problems with AUC TeX are one of two things:
4921
4922 @itemize @bullet
4923 @item
4924 The TeX-lisp-directory in @file{tex-site.el} and the makefile don't
4925 match.
4926
4927 Fix: make sure you configure AUC TeX properly @strong{before} installing.
4928
4929 @item
4930 You have an old version of easymenu.el in your path.
4931
4932 Fix: use @code{locate-library} and remove old versions to make sure it
4933 @strong{only} finds the one that came with XEmacs.
4934 @end itemize
4935
4936
4937 @node Q4.7.5, Q4.7.6, Q4.7.4, Subsystems
4938 @unnumberedsubsec Q4.7.5: Is there a reason for an Emacs package not to be included in XEmacs?
4939
4940 The reason for an Emacs package not to be included in XEmacs is
4941 usually one or more of the following:
4942
4943 @enumerate
4944 @item
4945 The package has not been ported to XEmacs. This will typically happen
4946 when it uses GNU-Emacs-specific features, which make it fail under
4947 XEmacs.
4948
4949 Porting a package to XEmacs can range from a trivial amount of change to
4950 a partial or full rewrite. Fortunately, the authors of modern packages
4951 usually choose to support both Emacsen themselves.
4952
4953 @item
4954 The package has been decided not to be appropriate for XEmacs. It may
4955 have an equivalent or better replacement within XEmacs, in which case
4956 the developers may choose not to burden themselves with supporting an
4957 additional package.
4958
4959 Each package bundled with XEmacs means more work for the maintainers,
4960 whether they want it or not. If you are ready to take over the
4961 maintenance responsibilities for the package you port, be sure to say
4962 so---we will more likely include it.
4963
4964 @item
4965 The package simply hasn't been noted by the XEmacs development. If
4966 that's the case, the messages like yours are very useful for attracting
4967 our attention.
4968
4969 @item
4970 The package was noted by the developers, but they simply haven't yet
4971 gotten around to including/porting it. Wait for the next release or,
4972 even better, offer your help. It will be gladly accepted and
4973 appreciated.
4974 @end enumerate
4975
4976 @node Q4.7.6, Q4.7.7, Q4.7.5, Subsystems
4977 @unnumberedsubsec Q4.7.5: Is there a MatLab mode?
4978
4979 Yes, a matlab mode and other items are available at the
4980 @uref{ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons,
4981 MathWorks' emacs_add_ons ftp directory}.
4982
4983 @node Q4.7.7, , Q4.7.6, Subsystems
4984 @unnumberedsubsec Q4.7.7: Can I edit files on other hosts?
4985
4986 Yes. Of course XEmacs can use any network file system (such as NFS or
4987 Windows file sharing) you have available, and includes some
4988 optimizations and safety features appropriate to those environments.
4989
4990 It is also possible to transparently edit files via FTP, ssh, or rsh. That
4991 is, XEmacs makes a local copy using the transport in the background, and
4992 automatically refreshes the remote original from that copy when you save
4993 it. XEmacs also is capable of doing file system manipulations like
4994 creating and removing directories and files. The FTP interface is
4995 provided by the standard @samp{efs} package @ref{Top, EFS, , efs}. The
4996 ssh/rsh interface is provided by the optional @samp{tramp} package
4997 @ref{Top, TRAMP, , tramp}.
4998
4999 @node Miscellaneous, MS Windows, Subsystems, Top
5000 @unnumbered 5 The Miscellaneous Stuff
5001
5002 This is part 5 of the XEmacs Frequently Asked Questions list. This
5003 section is devoted to anything that doesn't fit neatly into the other
5004 sections.
5005
5006 @menu
5007 Major & Minor Modes:
5008 * Q5.0.1:: How can I do source code highlighting using font-lock?
5009 * Q5.0.2:: I do not like cc-mode. How do I use the old c-mode?
5010 * Q5.0.3:: How do I get @samp{More} Syntax Highlighting on by default?
5011 * Q5.0.4:: How can I enable auto-indent and/or Filladapt?
5012 * Q5.0.5:: How can I get XEmacs to come up in text/auto-fill mode by default?
5013 * Q5.0.6:: How do I start up a second shell buffer?
5014 * Q5.0.7:: Telnet from shell filters too much.
5015 * Q5.0.8:: Why does edt emulation not work?
5016 * Q5.0.9:: How can I emulate VI and use it as my default mode?
5017 * Q5.0.10:: [This question intentionally left blank]
5018 * Q5.0.11:: [This question intentionally left blank]
5019 * Q5.0.12:: How do I disable gnuserv from opening a new frame?
5020 * Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client?
5021 * Q5.0.14:: Strange things are happening in Shell Mode.
5022 * Q5.0.15:: Where do I get the latest CC Mode?
5023 * Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off?
5024 * Q5.0.17:: How can I get two instances of info?
5025 * Q5.0.18:: [This question intentionally left blank]
5026 * Q5.0.19:: Is there something better than LaTeX mode?
5027 * Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
5028
5029 Emacs Lisp Programming Techniques:
5030 * Q5.1.1:: The difference in key sequences between XEmacs and GNU Emacs?
5031 * Q5.1.2:: Can I generate "fake" keyboard events?
5032 * Q5.1.3:: Could you explain @code{read-kbd-macro} in more detail?
5033 * Q5.1.4:: What is the performance hit of @code{let}?
5034 * Q5.1.5:: What is the recommended use of @code{setq}?
5035 * Q5.1.6:: What is the typical misuse of @code{setq}?
5036 * Q5.1.7:: I like the @code{do} form of cl, does it slow things down?
5037 * Q5.1.8:: I like recursion, does it slow things down?
5038 * Q5.1.9:: How do I put a glyph as annotation in a buffer?
5039 * Q5.1.10:: @code{map-extents} won't traverse all of my extents!
5040 * Q5.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
5041
5042 Sound:
5043 * Q5.2.1:: How do I turn off the sound?
5044 * Q5.2.2:: How do I get funky sounds instead of a boring beep?
5045 * Q5.2.3:: What's NAS, how do I get it?
5046 * Q5.2.4:: Sunsite sounds don't play.
5047
5048 Miscellaneous:
5049 * Q5.3.1:: How do you make XEmacs indent CL if-clauses correctly?
5050 * Q5.3.2:: [This question intentionally left blank]
5051 * Q5.3.3:: How can I print WYSIWYG a font-locked buffer?
5052 * Q5.3.4:: Getting @kbd{M-x lpr} to work with postscript printer.
5053 * Q5.3.5:: How do I specify the paths that XEmacs uses for finding files?
5054 * Q5.3.6:: [This question intentionally left blank]
5055 * Q5.3.7:: Can I have the end of the buffer delimited in some way?
5056 * Q5.3.8:: How do I insert today's date into a buffer?
5057 * Q5.3.9:: Are only certain syntactic character classes available for abbrevs?
5058 * Q5.3.10:: How can I get those oh-so-neat X-Face lines?
5059 * Q5.3.11:: How do I add new Info directories?
5060 * Q5.3.12:: What do I need to change to make printing work?
5061
5062 Mathematics:
5063 * Q5.4.1:: What are bignums, ratios, and bigfloats in Lisp?
5064 * Q5.4.2:: XEmacs segfaults when I use very big numbers!
5065 * Q5.4.3:: Bignums are really slow!
5066 * Q5.4.4:: Equal bignums don't compare as equal! What's going on?
5067 @end menu
5068
5069 @node Q5.0.1, Q5.0.2, Miscellaneous, Miscellaneous
5070 @unnumberedsec 5.0: Major & Minor Modes
5071 @unnumberedsubsec Q5.0.1: How can I do source code highlighting using font-lock?
5072
5073 For most modes, font-lock is already set up and just needs to be turned
5074 on. This can be done by adding the line:
5075
5076 @lisp
5077 (require 'font-lock)
5078 @end lisp
5079
5080 to your @file{init.el}/@file{.emacs}. (You can turn it on for the
5081 current buffer and session only by @kbd{M-x font-lock-mode}.) See the
5082 file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs
5083 versions prior to 21.4) for more information.
5084
5085 @c the old way:
5086 @c (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
5087 @c (add-hook 'dired-mode-hook 'turn-on-font-lock)
5088
5089 See also @code{Syntax Highlighting} from the @code{Options} menu.
5090 Remember to save options.
5091
5092 @node Q5.0.2, Q5.0.3, Q5.0.1, Miscellaneous
5093 @unnumberedsubsec Q5.0.2: I do not like cc-mode. How do I use the old c-mode?
5094
5095 Well, first off, consider if you really want to do this. cc-mode is
5096 much more powerful than the old c-mode. If you're having trouble
5097 getting your old offsets to work, try using @code{c-set-offset} instead.
5098 You might also consider using the package @code{cc-compat}.
5099
5100 But, if you still insist, add the following lines to your @file{init.el}/@file{.emacs}:
5101
5102 @lisp
5103 (fmakunbound 'c-mode)
5104 (makunbound 'c-mode-map)
5105 (fmakunbound 'c++-mode)
5106 (makunbound 'c++-mode-map)
5107 (makunbound 'c-style-alist)
5108 (load-library "old-c-mode")
5109 (load-library "old-c++-mode")
5110 @end lisp
5111
5112 This must be done before any other reference is made to either c-mode or
5113 c++-mode.
5114
5115 @node Q5.0.3, Q5.0.4, Q5.0.2, Miscellaneous
5116 @unnumberedsubsec Q5.0.3: How do I get @samp{More} Syntax Highlighting on by default?
5117
5118 Use the following code in your @file{init.el}/@file{.emacs}:
5119
5120 @lisp
5121 (setq-default font-lock-maximum-decoration t)
5122 @end lisp
5123
5124 @c In versions of XEmacs prior to 19.14, you had to use a kludgy solution
5125 @c like this:
5126 @c
5127 @c @lisp
5128 @c (setq c-font-lock-keywords c-font-lock-keywords-2
5129 @c c++-font-lock-keywords c++-font-lock-keywords-2
5130 @c lisp-font-lock-keywords lisp-font-lock-keywords-2)
5131 @c @end lisp
5132 @c
5133 @c It will work for C, C++ and Lisp.
5134 @c
5135 See also @code{Syntax Highlighting} from the @code{Options} menu.
5136 Remember to save options.
5137
5138 @node Q5.0.4, Q5.0.5, Q5.0.3, Miscellaneous
5139 @unnumberedsubsec Q5.0.4: How can I enable auto-indent and/or Filladapt?
5140
5141 Put the following line in your @file{init.el}/@file{.emacs}:
5142
5143 @lisp
5144 (setq indent-line-function 'indent-relative-maybe)
5145 @end lisp
5146
5147 If you want to get fancy, try the @code{filladapt} package available
5148 standard with XEmacs. Put this into your @file{init.el}/@file{.emacs}:
5149
5150 @lisp
5151 (require 'filladapt)
5152 (setq-default filladapt-mode t)
5153 (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
5154 @end lisp
5155
5156 This will enable Filladapt for all modes except C mode, where it doesn't
5157 work well. To turn Filladapt on only in particular major modes, remove
5158 the @code{(setq-default ...)} line and use
5159 @code{turn-on-filladapt-mode}, like this:
5160
5161 @lisp
5162 (add-hook 'text-mode-hook 'turn-on-filladapt-mode)
5163 @end lisp
5164
5165 You can customize filling and adaptive filling with Customize.
5166 Select from the @code{Options} menu
5167 @code{Advanced (Customize)->Emacs->Editing->Fill->Fill...}
5168 or type @kbd{M-x customize @key{RET} fill @key{RET}}.
5169
5170 Note that well-behaving text-lookalike modes will run
5171 @code{text-mode-hook} by default (e.g. that's what Message does). For
5172 the nasty ones, you'll have to provide the @code{add-hook}s yourself.
5173
5174 Please note that the @code{fa-extras} package is no longer useful.
5175
5176 @node Q5.0.5, Q5.0.6, Q5.0.4, Miscellaneous
5177 @unnumberedsubsec Q5.0.5: How can I get XEmacs to come up in text/auto-fill mode by default?
5178
5179 Try the following lisp in your @file{init.el}/@file{.emacs}:
5180
5181 @lisp
5182 (setq default-major-mode 'text-mode)
5183 (setq text-mode-hook 'turn-on-auto-fill)
5184 @end lisp
5185
5186 @strong{WARNING}: note that changing the value of
5187 @code{default-major-mode} from @code{fundamental-mode} can break a large
5188 amount of built-in code that expects newly created buffers to be in
5189 @code{fundamental-mode}. (Changing from @code{fundamental-mode} to
5190 @code{text-mode} might not wreak too much havoc, but changing to
5191 something more exotic like a lisp-mode would break many Emacs packages).
5192
5193 Note that Emacs by default starts up in buffer @code{*scratch*} in
5194 @code{initial-major-mode}, which defaults to
5195 @code{lisp-interaction-mode}. Thus adding the following form to your
5196 Emacs init file will cause the initial @code{*scratch*} buffer to be put
5197 into auto-fill'ed @code{text-mode}:
5198
5199 @lisp
5200 (setq initial-major-mode
5201 (lambda ()
5202 (text-mode)
5203 (turn-on-auto-fill)))
5204 @end lisp
5205
5206 Note that after your init file is loaded, if
5207 @code{inhibit-startup-message} is @code{nil} (the default) and the
5208 startup buffer is @code{*scratch*} then the startup message will be
5209 inserted into @code{*scratch*}; it will be removed after a timeout by
5210 erasing the entire @code{*scratch*} buffer. Keep in mind this default
5211 usage of @code{*scratch*} if you desire any prior manipulation of
5212 @code{*scratch*} from within your Emacs init file. In particular,
5213 anything you insert into @code{*scratch*} from your init file will be
5214 later erased. Also, if you change the mode of the @code{*scratch*}
5215 buffer, be sure that this will not interfere with possible later
5216 insertion of the startup message (e.g. if you put @code{*scratch*} into
5217 a nonstandard mode that has automatic font lock rules, then the startup
5218 message might get fontified in a strange foreign manner, e.g. as code in
5219 some programming language).
5220
5221 @node Q5.0.6, Q5.0.7, Q5.0.5, Miscellaneous
5222 @unnumberedsubsec Q5.0.6: How do I start up a second shell buffer?
5223
5224 In the @code{*shell*} buffer:
5225
5226 @lisp
5227 M-x rename-buffer @key{RET} *shell-1* @key{RET}
5228 M-x shell RET
5229 @end lisp
5230
5231 This will then start a second shell. The key is that no buffer named
5232 @samp{*shell*} can exist. It might be preferable to use @kbd{M-x
5233 rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x
5234 rename-buffer}.
5235
5236 Alternately, you can set the variable @code{shell-multiple-shells}.
5237 If the value of this variable is non-nil, each time shell mode is invoked,
5238 a new shell is made
5239
5240 @node Q5.0.7, Q5.0.8, Q5.0.6, Miscellaneous
5241 @unnumberedsubsec Q5.0.7: Telnet from shell filters too much
5242
5243 I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke
5244 and use a telnet session within it. Everything works fine except that
5245 now all @samp{^M}'s are filtered out by Emacs. Fixes?
5246
5247 Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather
5248 than doing rsh or telnet within the local shell buffer. Starting with
5249 XEmacs-20.3 you can also use @kbd{M-x ssh} to open secure remote session
5250 if you have @code{ssh} installed.
5251
5252 @node Q5.0.8, Q5.0.9, Q5.0.7, Miscellaneous
5253 @unnumberedsubsec Q5.0.8: Why does edt emulation not work?
5254
5255 We don't know, but you can use tpu-edt emulation instead, which works
5256 fine and is a little fancier than the standard edt emulation. To do
5257 this, add the following line to your @file{init.el}/@file{.emacs}:
5258
5259 @lisp
5260 (tpu-edt)
5261 @end lisp
5262
5263 If you don't want it to replace @kbd{C-h} with an edt-style help menu
5264 add this as well:
5265
5266 @lisp
5267 (global-set-key [(control h)] 'help-for-help)
5268 @end lisp
5269
5270 @node Q5.0.9, Q5.0.10, Q5.0.8, Miscellaneous
5271 @unnumberedsubsec Q5.0.9: How can I emulate VI and use it as my default mode?
5272
5273 Our recommended VI emulator is viper. To make viper-mode the default,
5274 add this to your @file{init.el}/@file{.emacs}:
5275
5276 @lisp
5277 (viper-mode)
5278 @end lisp
5279
5280 @email{kifer@@CS.SunySB.EDU, Michael Kifer} writes:
5281
5282 @quotation
5283 This should be added as close to the top of @file{init.el}/@file{.emacs} as you can get
5284 it, otherwise some minor modes may not get viper-ized.
5285 @end quotation
5286
5287 @node Q5.0.10, Q5.0.11, Q5.0.9, Miscellaneous
5288 @unnumberedsubsec Q5.0.10: [This question intentionally left blank]
5289
5290 Obsolete question, left blank to avoid renumbering
5291
5292 @node Q5.0.11, Q5.0.12, Q5.0.10, Miscellaneous
5293 @unnumberedsubsec Q5.0.11: [This question intentionally left blank]
5294
5295 Obsolete question, left blank to avoid renumbering
5296
5297 @node Q5.0.12, Q5.0.13, Q5.0.11, Miscellaneous
5298 @unnumberedsubsec Q5.0.12: How do I disable gnuserv from opening a new frame?
5299
5300 If you set the @code{gnuserv-frame} variable to the frame that should be
5301 used to display buffers that are pulled up, a new frame will not be
5302 created. For example, you could put
5303
5304 @lisp
5305 (setq gnuserv-frame (selected-frame))
5306 @end lisp
5307
5308 early on in your @file{init.el}/@file{.emacs}, to ensure that the first frame created
5309 is the one used for your gnuserv buffers.
5310
5311 There is an option to set the gnuserv target to the current frame. See
5312 @code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target}
5313
5314 Starting with XEmacs-20.3 you can also change this with Customize.
5315 Select from the @code{Options} menu
5316 @code{Advanced (Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...}
5317 or type @kbd{M-x customize @key{RET} gnuserv @key{RET}}.
5318
5319
5320 @node Q5.0.13, Q5.0.14, Q5.0.12, Miscellaneous
5321 @unnumberedsubsec Q5.0.13: How do I start gnuserv so that each subsequent XEmacs is a client?
5322
5323 Put the following in your @file{init.el}/@file{.emacs} file to start the server:
5324
5325 @lisp
5326 (gnuserv-start)
5327 @end lisp
5328
5329 Start your first XEmacs as usual. After that, you can do:
5330
5331 @example
5332 gnuclient randomfilename
5333 @end example
5334
5335 from the command line to get your existing XEmacs process to open a new
5336 frame and visit randomfilename in that window. When you're done editing
5337 randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the
5338 frame.
5339
5340 See also man page of gnuclient.
5341
5342 @node Q5.0.14, Q5.0.15, Q5.0.13, Miscellaneous
5343 @unnumberedsubsec Q5.0.14: Strange things are happening in Shell Mode.
5344
5345 Sometimes (i.e. it's not repeatable, and I can't work out why it
5346 happens) when I'm typing into shell mode, I hit return and only a
5347 portion of the command is given to the shell, and a blank prompt is
5348 returned. If I hit return again, the rest of the previous command is
5349 given to the shell.
5350
5351 @email{martin@@xemacs.org, Martin Buchholz} writes:
5352
5353 @quotation
5354 There is a known problem with interaction between @code{csh} and the
5355 @code{filec} option and XEmacs. You should add the following to your
5356 @file{.cshrc}:
5357
5358 @example
5359 if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
5360 @end example
5361 @end quotation
5362
5363 @node Q5.0.15, Q5.0.16, Q5.0.14, Miscellaneous
5364 @unnumberedsubsec Q5.0.15: Where do I get the latest CC Mode?
5365
5366 @email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} writes:
5367
5368 @quotation
5369 This can be had from @uref{http://www.python.org/emacs/}.
5370 @end quotation
5371
5372 @node Q5.0.16, Q5.0.17, Q5.0.15, Miscellaneous
5373 @unnumberedsubsec Q5.0.16: I find auto-show-mode disconcerting. How do I turn it off?
5374
5375 @code{auto-show-mode} controls whether or not a horizontal scrollbar
5376 magically appears when a line is too long to be displayed. This is
5377 enabled by default. To turn it off, put the following in your
5378 @file{init.el}/@file{.emacs}:
5379
5380 @lisp
5381 (setq auto-show-mode nil)
5382 (setq-default auto-show-mode nil)
5383 @end lisp
5384
5385 @node Q5.0.17, Q5.0.18, Q5.0.16, Miscellaneous
5386 @unnumberedsubsec Q5.0.17: How can I get two instances of info?
5387
5388 Before 21.4, you can't. The @code{info} package does not provide for
5389 multiple info buffers. In 21.4, this should be fixed. #### how?
5390
5391 @node Q5.0.18, Q5.0.19, Q5.0.17, Miscellaneous
5392 @unnumberedsubsec Q5.0.18: [This question intentionally left blank]
5393
5394 @node Q5.0.19, Q5.0.20, Q5.0.18, Miscellaneous
5395 @unnumberedsubsec Q5.0.19: Is there something better than LaTeX mode?
5396
5397 @email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes:
5398
5399 @quotation
5400 The standard TeX modes leave much to be desired, and are somewhat
5401 leniently maintained. Serious TeX users use AUC TeX (@pxref{Q4.7.1}).
5402 @end quotation
5403
5404 @node Q5.0.20, Q5.1.1, Q5.0.19, Miscellaneous
5405 @unnumberedsubsec Q5.0.20: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
5406
5407 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
5408 @quotation
5409 Here is one of the solutions, we have this in a script called
5410 @file{etc/editclient.sh}.
5411 @example
5412 #!/bin/sh
5413 if gnuclient -batch -eval t >/dev/null 2>&1
5414 then
5415 exec gnuclient $@{1+"$@@"@}
5416 else
5417 xemacs -unmapped -f gnuserv-start &
5418 until gnuclient -batch -eval t >/dev/null 2>&1
5419 do
5420 sleep 1
5421 done
5422 exec gnuclient $@{1+"$@@"@}
5423 fi
5424 @end example
5425
5426 Note that there is a known problem when running XEmacs and 'gnuclient
5427 -nw' on the same TTY.
5428 @end quotation
5429
5430 @node Q5.1.1, Q5.1.2, Q5.0.20, Miscellaneous
5431 @unnumberedsec 5.1: Emacs Lisp Programming Techniques
5432 @unnumberedsubsec Q5.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
5433
5434 @email{clerik@@naggum.no, Erik Naggum} writes;
5435
5436 @quotation
5437 Emacs has a legacy of keyboards that produced characters with modifier
5438 bits, and therefore map a variety of input systems into this scheme even
5439 today. XEmacs is instead optimized for X events. This causes an
5440 incompatibility in the way key sequences are specified, but both Emacs
5441 and XEmacs will accept a key sequence as a vector of lists of modifiers
5442 that ends with a key, e.g., to bind @kbd{M-C-a}, you would say
5443 @code{[(meta control a)]} in both Emacsen. XEmacs has an abbreviated
5444 form for a single key, just (meta control a). Emacs has an abbreviated
5445 form for the Control and the Meta modifiers to string-characters (the
5446 ASCII characters), as in @samp{\M-\C-a}. XEmacs users need to be aware
5447 that the abbreviated form works only for one-character key sequences,
5448 while Emacs users need to be aware that the string-character is rather
5449 limited. Specifically, the string-character can accommodate only 256
5450 different values, 128 of which have the Meta modifier and 128 of which
5451 have not. In each of these blocks, only 32 characters have the Control
5452 modifier. Whereas @code{[(meta control A)]} differs from @code{[(meta
5453 control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A}
5454 do not. Programmers are advised to use the full common form, both
5455 because it is more readable and less error-prone, and because it is
5456 supported by both Emacsen.
5457 @end quotation
5458
5459 Another (even safer) way to be sure of the key-sequences is to use the
5460 @code{read-kbd-macro} function, which takes a string like @samp{C-c
5461 <up>}, and converts it to the internal key representation of the Emacs
5462 you use. The function is available both on XEmacs and GNU Emacs.
5463
5464 @node Q5.1.2, Q5.1.3, Q5.1.1, Miscellaneous
5465 @unnumberedsubsec Q5.1.2: Can I generate "fake" keyboard events?
5466
5467 I wonder if there is an interactive function that can generate
5468 @dfn{fake} keyboard events. This way, I could simply map them inside
5469 XEmacs.
5470
5471 This seems to work:
5472
5473 @lisp
5474 (defun cg--generate-char-event (ch)
5475 "Generate an event, as if ch has been typed"
5476 (dispatch-event (character-to-event ch)))
5477
5478 ;; Backspace and Delete stuff
5479 (global-set-key [backspace]
5480 (lambda () (interactive) (cg--generate-char-event 127)))
5481 (global-set-key [unknown_keysym_0x4]
5482 (lambda () (interactive) (cg--generate-char-event 4)))
5483 @end lisp
5484
5485 @node Q5.1.3, Q5.1.4, Q5.1.2, Miscellaneous
5486 @unnumberedsubsec Q5.1.3: Could you explain @code{read-kbd-macro} in more detail?
5487
5488 The @code{read-kbd-macro} function returns the internal Emacs
5489 representation of a human-readable string (which is its argument).
5490 Thus:
5491
5492 @lisp
5493 (read-kbd-macro "C-c C-a")
5494 @result{} [(control ?c) (control ?a)]
5495
5496 (read-kbd-macro "C-c C-. <up>")
5497 @result{} [(control ?c) (control ?.) up]
5498 @end lisp
5499
5500 In GNU Emacs the same forms will be evaluated to what GNU Emacs
5501 understands internally---the sequences @code{"\C-x\C-c"} and @code{[3
5502 67108910 up]}, respectively.
5503
5504 The exact @dfn{human-readable} syntax is defined in the docstring of
5505 @code{edmacro-mode}. I'll repeat it here, for completeness.
5506
5507 @quotation
5508 Format of keyboard macros during editing:
5509
5510 Text is divided into @dfn{words} separated by whitespace. Except for
5511 the words described below, the characters of each word go directly as
5512 characters of the macro. The whitespace that separates words is
5513 ignored. Whitespace in the macro must be written explicitly, as in
5514 @kbd{foo @key{SPC} bar @key{RET}}.
5515
5516 @itemize @bullet
5517 @item
5518 The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD},
5519 @kbd{ESC}, and @kbd{NUL} represent special control characters. The
5520 words must be written in uppercase.
5521
5522 @item
5523 A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or
5524 @code{<f1>}, represents a function key. (Note that in the standard
5525 configuration, the function key @code{<return>} and the control key
5526 @key{RET} are synonymous.) You can use angle brackets on the words
5527 @key{RET}, @key{SPC}, etc., but they are not required there.
5528
5529 @item
5530 Keys can be written by their @sc{ascii} code, using a backslash followed
5531 by up to six octal digits. This is the only way to represent keys with
5532 codes above \377.
5533
5534 @item
5535 One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-}
5536 (shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may
5537 precede a character or key notation. For function keys, the prefixes
5538 may go inside or outside of the brackets: @code{C-<down>} @equiv{}
5539 @code{<C-down>}. The prefixes may be written in any order: @kbd{M-C-x}
5540 @equiv{} @kbd{C-M-x}.
5541
5542 Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except
5543 that the Meta prefix is allowed on a sequence of digits and optional
5544 minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}.
5545
5546 @item
5547 The @code{^} notation for control characters also works: @kbd{^M}
5548 @equiv{} @kbd{C-m}.
5549
5550 @item
5551 Double angle brackets enclose command names: @code{<<next-line>>} is
5552 shorthand for @kbd{M-x next-line @key{RET}}.
5553
5554 @item
5555 Finally, @code{REM} or @code{;;} causes the rest of the line to be
5556 ignored as a comment.
5557 @end itemize
5558
5559 Any word may be prefixed by a multiplier in the form of a decimal number
5560 and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>},
5561 and @code{10*foo} @equiv{}
5562 @iftex
5563 @*
5564 @end iftex
5565 @code{foofoofoofoofoofoofoofoofoofoo}.
5566
5567 Multiple text keys can normally be strung together to form a word, but
5568 you may need to add whitespace if the word would look like one of the
5569 above notations: @code{; ; ;} is a keyboard macro with three semicolons,
5570 but @code{;;;} is a comment. Likewise, @code{\ 1 2 3} is four keys but
5571 @code{\123} is a single key written in octal, and @code{< right >} is
5572 seven keys but @code{<right>} is a single function key. When in doubt,
5573 use whitespace.
5574 @end quotation
5575
5576 @node Q5.1.4, Q5.1.5, Q5.1.3, Miscellaneous
5577 @unnumberedsubsec Q5.1.4: What is the performance hit of @code{let}?
5578
5579 In most cases, not noticeable. Besides, there's no avoiding
5580 @code{let}---you have to bind your local variables, after all. Some
5581 pose a question whether to nest @code{let}s, or use one @code{let} per
5582 function. I think because of clarity and maintenance (and possible
5583 future implementation), @code{let}-s should be used (nested) in a way to
5584 provide the clearest code.
5585
5586 @node Q5.1.5, Q5.1.6, Q5.1.4, Miscellaneous
5587 @unnumberedsubsec Q5.1.5: What is the recommended use of @code{setq}?
5588
5589 @itemize @bullet
5590 @item Global variables
5591
5592 You will typically @code{defvar} your global variable to a default
5593 value, and use @code{setq} to set it later.
5594
5595 It is never a good practice to @code{setq} user variables (like
5596 @code{case-fold-search}, etc.), as it ignores the user's choice
5597 unconditionally. Note that @code{defvar} doesn't change the value of a
5598 variable if it was bound previously. If you wish to change a
5599 user-variable temporarily, use @code{let}:
5600
5601 @lisp
5602 (let ((case-fold-search nil))
5603 ... ; code with searches that must be case-sensitive
5604 ...)
5605 @end lisp
5606
5607 You will notice the user-variables by their docstrings beginning with an
5608 asterisk (a convention).
5609
5610 @item Local variables
5611
5612 Bind them with @code{let}, which will unbind them (or restore their
5613 previous value, if they were bound) after exiting from the @code{let}
5614 form. Change the value of local variables with @code{setq} or whatever
5615 you like (e.g. @code{incf}, @code{setf} and such). The @code{let} form
5616 can even return one of its local variables.
5617
5618 Typical usage:
5619
5620 @lisp
5621 ;; iterate through the elements of the list returned by
5622 ;; `hairy-function-that-returns-list'
5623 (let ((l (hairy-function-that-returns-list)))
5624 (while l
5625 ... do something with (car l) ...
5626 (setq l (cdr l))))
5627 @end lisp
5628
5629 Another typical usage includes building a value simply to work with it.
5630
5631 @lisp
5632 ;; Build the mode keymap out of the key-translation-alist
5633 (let ((inbox (file-truename (expand-file-name box)))
5634 (i 0))
5635 ... code dealing with inbox ...
5636 inbox)
5637 @end lisp
5638
5639 This piece of code uses the local variable @code{inbox}, which becomes
5640 unbound (or regains old value) after exiting the form. The form also
5641 returns the value of @code{inbox}, which can be reused, for instance:
5642
5643 @lisp
5644 (setq foo-processed-inbox
5645 (let .....))
5646 @end lisp
5647 @end itemize
5648
5649 @node Q5.1.6, Q5.1.7, Q5.1.5, Miscellaneous
5650 @unnumberedsubsec Q5.1.6: What is the typical misuse of @code{setq} ?
5651
5652 A typical misuse is probably @code{setq}ing a variable that was meant to
5653 be local. Such a variable will remain bound forever, never to be
5654 garbage-collected. For example, the code doing:
5655
5656 @lisp
5657 (defun my-function (whatever)
5658 (setq a nil)
5659 ... build a large list ...
5660 ... and exit ...)
5661 @end lisp
5662
5663 does a bad thing, as @code{a} will keep consuming memory, never to be
5664 unbound. The correct thing is to do it like this:
5665
5666 @lisp
5667 (defun my-function (whatever)
5668 (let (a) ; default initialization is to nil
5669 ... build a large list ...
5670 ... and exit, unbinding `a' in the process ...)
5671 @end lisp
5672
5673 Not only is this prettier syntactically, but it makes it possible for
5674 Emacs to garbage-collect the objects which @code{a} used to reference.
5675
5676 Note that even global variables should not be @code{setq}ed without
5677 @code{defvar}ing them first, because the byte-compiler issues warnings.
5678 The reason for the warning is the following:
5679
5680 @lisp
5681 (defun flurgoze nil) ; ok, global internal variable
5682 ...
5683
5684 (setq flurghoze t) ; ops! a typo, but semantically correct.
5685 ; however, the byte-compiler warns.
5686
5687 While compiling toplevel forms:
5688 ** assignment to free variable flurghoze
5689 @end lisp
5690
5691 @node Q5.1.7, Q5.1.8, Q5.1.6, Miscellaneous
5692 @unnumberedsubsec Q5.1.7: I like the @code{do} form of cl, does it slow things down?
5693
5694 It shouldn't. Here is what Dave Gillespie has to say about cl.el
5695 performance:
5696
5697 @quotation
5698 Many of the advanced features of this package, such as @code{defun*},
5699 @code{loop}, and @code{setf}, are implemented as Lisp macros. In
5700 byte-compiled code, these complex notations will be expanded into
5701 equivalent Lisp code which is simple and efficient. For example, the
5702 forms
5703
5704 @lisp
5705 (incf i n)
5706 (push x (car p))
5707 @end lisp
5708
5709 are expanded at compile-time to the Lisp forms
5710
5711 @lisp
5712 (setq i (+ i n))
5713 (setcar p (cons x (car p)))
5714 @end lisp
5715
5716 which are the most efficient ways of doing these respective operations
5717 in Lisp. Thus, there is no performance penalty for using the more
5718 readable @code{incf} and @code{push} forms in your compiled code.
5719
5720 @emph{Interpreted} code, on the other hand, must expand these macros
5721 every time they are executed. For this reason it is strongly
5722 recommended that code making heavy use of macros be compiled. (The
5723 features labelled @dfn{Special Form} instead of @dfn{Function} in this
5724 manual are macros.) A loop using @code{incf} a hundred times will
5725 execute considerably faster if compiled, and will also garbage-collect
5726 less because the macro expansion will not have to be generated, used,
5727 and thrown away a hundred times.
5728
5729 You can find out how a macro expands by using the @code{cl-prettyexpand}
5730 function.
5731 @end quotation
5732
5733 @node Q5.1.8, Q5.1.9, Q5.1.7, Miscellaneous
5734 @unnumberedsubsec Q5.1.8: I like recursion, does it slow things down?
5735
5736 Yes. Emacs byte-compiler cannot do much to optimize recursion. But
5737 think well whether this is a real concern in Emacs. Much of the Emacs
5738 slowness comes from internal mechanisms such as redisplay, or from the
5739 fact that it is an interpreter.
5740
5741 Please try not to make your code much uglier to gain a very small speed
5742 gain. It's not usually worth it.
5743
5744 @node Q5.1.9, Q5.1.10, Q5.1.8, Miscellaneous
5745 @unnumberedsubsec Q5.1.9: How do I put a glyph as annotation in a buffer?
5746
5747 Here is a solution that will insert the glyph annotation at the
5748 beginning of buffer:
5749
5750 @lisp
5751 (make-annotation (make-glyph '([FORMAT :file FILE]
5752 [string :data "fallback-text"]))
5753 (point-min)
5754 'text
5755 (current-buffer))
5756 @end lisp
5757
5758 Replace @samp{FORMAT} with an unquoted symbol representing the format of
5759 the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.)
5760 Instead of @samp{FILE}, use the image file name
5761 (e.g.
5762 @iftex
5763 @*
5764 @end iftex
5765 @file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}).
5766
5767 You can turn this to a function (that optionally prompts you for a file
5768 name), and inserts the glyph at @code{(point)} instead of
5769 @code{(point-min)}.
5770
5771 @node Q5.1.10, Q5.1.11, Q5.1.9, Miscellaneous
5772 @unnumberedsubsec Q5.1.10: @code{map-extents} won't traverse all of my extents!
5773
5774 I tried to use @code{map-extents} to do an operation on all the extents
5775 in a region. However, it seems to quit after processing a random number
5776 of extents. Is it buggy?
5777
5778 No. The documentation of @code{map-extents} states that it will iterate
5779 across the extents as long as @var{function} returns @code{nil}.
5780 Unexperienced programmers often forget to return @code{nil} explicitly,
5781 which results in buggy code. For instance, the following code is
5782 supposed to delete all the extents in a buffer, and issue as many
5783 @samp{fubar!} messages.
5784
5785 @lisp
5786 (map-extents (lambda (ext ignore)
5787 (delete-extent ext)
5788 (message "fubar!")))
5789 @end lisp
5790
5791 Instead, it will delete only the first extent, and stop right there --
5792 because @code{message} will return a non-nil value. The correct code
5793 is:
5794
5795 @lisp
5796 (map-extents (lambda (ext ignore)
5797 (delete-extent ext)
5798 (message "fubar!")
5799 nil))
5800 @end lisp
5801
5802 @node Q5.1.11, Q5.2.1, Q5.1.10, Miscellaneous
5803 @unnumberedsubsec Q5.1.11: My elisp program is horribly slow. Is there
5804 an easy way to find out where it spends time?
5805 @c New
5806
5807 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
5808 @quotation
5809 Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence},
5810 press a key (say @key{RET} in the Gnus Group buffer), and get the
5811 results using @kbd{M-x profile-results}. It should give you an idea of
5812 where the time is being spent.
5813 @end quotation
5814
5815 @node Q5.2.1, Q5.2.2, Q5.1.11, Miscellaneous
5816 @unnumberedsec 5.2: Sound
5817 @unnumberedsubsec Q5.2.1: How do I turn off the sound?
5818
5819 Add the following line to your @file{init.el}/@file{.emacs}:
5820
5821 @lisp
5822 (setq bell-volume 0)
5823 (setq sound-alist nil)
5824 @end lisp
5825
5826 That will make your XEmacs totally silent---even the default ding sound
5827 (TTY beep on TTY-s) will be gone.
5828
5829 Starting with XEmacs 20.2 you can also change these with Customize.
5830 Select from the @code{Options} menu
5831 @code{Advanced (Customize)->Emacs->Environment->Sound->Sound...} or type
5832 @kbd{M-x customize @key{RET} sound @key{RET}}.
5833
5834
5835 @node Q5.2.2, Q5.2.3, Q5.2.1, Miscellaneous
5836 @unnumberedsubsec Q5.2.2: How do I get funky sounds instead of a boring beep?
5837
5838 Make sure your XEmacs was compiled with sound support, and then put this
5839 in your @file{init.el}/@file{.emacs}:
5840
5841 @lisp
5842 (load-default-sounds)
5843 @end lisp
5844
5845 @c The sound support in XEmacs 19.14 was greatly improved over previous
5846 @c versions.
5847 @c
5848 @node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous
5849 @unnumberedsubsec Q5.2.3: What's NAS, how do I get it?
5850
5851 @xref{Q2.0.3}, for an explanation of the @dfn{Network Audio System}.
5852
5853 @node Q5.2.4, Q5.3.1, Q5.2.3, Miscellaneous
5854 @unnumberedsubsec Q5.2.4: Sunsite sounds don't play.
5855
5856 I'm having some trouble with sounds I've downloaded from sunsite. They
5857 play when I run them through @code{showaudio} or cat them directly to
5858 @file{/dev/audio}, but XEmacs refuses to play them.
5859
5860 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
5861
5862 @quotation
5863 [Many of] These files have an (erroneous) 24byte header that tells about
5864 the format that they have been recorded in. If you cat them to
5865 @file{/dev/audio}, the header will be ignored and the default behavior
5866 for /dev/audio will be used. This happens to be 8kHz uLaw. It is
5867 probably possible to fix the header by piping through @code{sox} and
5868 passing explicit parameters for specifying the sampling format; you then
5869 need to perform a 'null' conversion from SunAudio to SunAudio.
5870 @end quotation
5871
5872 @node Q5.3.1, Q5.3.2, Q5.2.4, Miscellaneous
5873 @unnumberedsec 5.3: Miscellaneous
5874 @unnumberedsubsec Q5.3.1: How do you make XEmacs indent CL if-clauses correctly?
5875
5876 I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the
5877 same amount instead of indenting the 3rd clause differently from the
5878 first two.
5879
5880 One way is to add, to @file{init.el}/@file{.emacs}:
5881
5882 @lisp
5883 (put 'if 'lisp-indent-function nil)
5884 @end lisp
5885
5886 However, note that the package @code{cl-indent} that comes with
5887 XEmacs sets up this kind of indentation by default. @code{cl-indent}
5888 also knows about many other CL-specific forms. To use @code{cl-indent},
5889 one can do this:
5890
5891 @lisp
5892 (load "cl-indent")
5893 (setq lisp-indent-function (function common-lisp-indent-function))
5894 @end lisp
5895
5896 One can also customize @file{cl-indent.el} so it mimics the default
5897 @code{if} indentation @code{then} indented more than the @code{else}.
5898 Here's how:
5899
5900 @lisp
5901 (put 'if 'common-lisp-indent-function '(nil nil &body))
5902 @end lisp
5903
5904 Also, a new version (1.2) of @file{cl-indent.el} was posted to
5905 comp.emacs.xemacs on 12/9/94. This version includes more documentation
5906 than previous versions. This may prove useful if you need to customize
5907 any indent-functions.
5908
5909 @node Q5.3.2, Q5.3.3, Q5.3.1, Miscellaneous
5910 @unnumberedsubsec Q5.3.2: [This question intentionally left blank]
5911
5912 Obsolete question, left blank to avoid renumbering.
5913
5914 @node Q5.3.3, Q5.3.4, Q5.3.2, Miscellaneous
5915 @unnumberedsubsec Q5.3.3: How can I print WYSIWYG a font-locked buffer?
5916
5917 Font-lock looks nice. How can I print (WYSIWYG) the highlighted
5918 document?
5919
5920 The package @code{ps-print}, which is now included with XEmacs, provides
5921 the ability to do this. The source code contains complete instructions
5922 on its use, in
5923 @file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el},
5924 being the default location of an installed ps-print package.
5925
5926 @node Q5.3.4, Q5.3.5, Q5.3.3, Miscellaneous
5927 @unnumberedsubsec Q5.3.4: Getting @kbd{M-x lpr} to work with postscript printer.
5928
5929 My printer is a Postscript printer and @code{lpr} only works for
5930 Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x
5931 lpr-buffer} to work?
5932
5933 Put something like this in your @file{init.el}/@file{.emacs}:
5934
5935 @lisp
5936 (setq lpr-command "a2ps")
5937 (setq lpr-switches '("-p" "-1"))
5938 @end lisp
5939
5940 If you don't use a2ps to convert ASCII to postscript (why not, it's
5941 free?), replace with the command you do use. Note also that some
5942 versions of a2ps require a @samp{-Pprinter} to ensure spooling.
5943
5944 @node Q5.3.5, Q5.3.6, Q5.3.4, Miscellaneous
5945 @unnumberedsubsec Q5.3.5: How do I specify the paths that XEmacs uses for finding files?
5946
5947 You can specify what paths to use by using a number of different flags
5948 when running configure. See the section MAKE VARIABLES in the top-level
5949 file INSTALL in the XEmacs distribution for a listing of those flags.
5950
5951 Most of the time, however, the simplest fix is: @strong{do not} specify
5952 paths as you might for GNU Emacs. XEmacs can generally determine the
5953 necessary paths dynamically at run time. The only path that generally
5954 needs to be specified is the root directory to install into. That can
5955 be specified by passing the @code{--prefix} flag to configure. For a
5956 description of the XEmacs install tree, please consult the @file{NEWS}
5957 file.
5958
5959 @node Q5.3.6, Q5.3.7, Q5.3.5, Miscellaneous
5960 @unnumberedsubsec Q5.3.6: [This question intentionally left blank]
5961
5962 Obsolete question, left blank to avoid renumbering.
5963
5964 @node Q5.3.7, Q5.3.8, Q5.3.6, Miscellaneous
5965 @unnumberedsubsec Q5.3.7: Can I have the end of the buffer delimited in some way?
5966 4753
5967 Say, with: @samp{[END]}? 4754 Say, with: @samp{[END]}?
5968 4755
5969 Try this: 4756 Try this:
5970 4757
6021 @end lisp 4808 @end lisp
6022 4809
6023 Note that you might want to make this a function, and put it to a hook. 4810 Note that you might want to make this a function, and put it to a hook.
6024 We leave that as an exercise for the reader. 4811 We leave that as an exercise for the reader.
6025 4812
6026 @node Q5.3.8, Q5.3.9, Q5.3.7, Miscellaneous 4813 @node Q3.8.2, Q3.8.3, Q3.8.1, Display Subsystems
6027 @unnumberedsubsec Q5.3.8: How do I insert today's date into a buffer? 4814 @unnumberedsubsec Q3.8.2: How do I insert today's date into a buffer?
6028 4815
6029 Like this: 4816 Like this:
6030 4817
6031 @lisp 4818 @lisp
6032 (insert (current-time-string)) 4819 (insert (current-time-string))
6033 @end lisp 4820 @end lisp
6034 4821
6035 @node Q5.3.9, Q5.3.10, Q5.3.8, Miscellaneous 4822 @node Q3.8.3, Q3.8.4, Q3.8.2, Display Subsystems
6036 @unnumberedsubsec Q5.3.9: Are only certain syntactic character classes available for abbrevs? 4823 @unnumberedsubsec Q3.8.3: How do I get a single minibuffer frame?
4824
4825 @email{acs@@acm.org, Vin Shelton} writes:
4826
4827 @lisp
4828 (setq initial-frame-plist '(minibuffer nil))
4829 (setq default-frame-plist '(minibuffer nil))
4830 (setq default-minibuffer-frame
4831 (make-frame
4832 '(minibuffer only
4833 width 86
4834 height 1
4835 menubar-visible-p nil
4836 default-toolbar-visible-p nil
4837 name "minibuffer"
4838 top -2
4839 left -2
4840 has-modeline-p nil)))
4841 (frame-notice-user-settings)
4842 @end lisp
4843
4844 @strong{Please note:} The single minibuffer frame may not be to everyone's
4845 taste, and there any number of other XEmacs options settings that may
4846 make it difficult or inconvenient to use.
4847
4848 @node Q3.8.4, Q3.8.5, Q3.8.3, Display Subsystems
4849 @unnumberedsubsec Q3.8.4: How can I enable auto-indent and/or Filladapt?
4850
4851 Put the following line in your @file{init.el}:
4852
4853 @lisp
4854 (setq indent-line-function 'indent-relative-maybe)
4855 @end lisp
4856
4857 If you want to get fancy, try the @code{filladapt} package available
4858 standard with XEmacs. Put this into your @file{init.el}:
4859
4860 @lisp
4861 (require 'filladapt)
4862 (setq-default filladapt-mode t)
4863 (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
4864 @end lisp
4865
4866 This will enable Filladapt for all modes except C mode, where it doesn't
4867 work well. To turn Filladapt on only in particular major modes, remove
4868 the @code{(setq-default ...)} line and use
4869 @code{turn-on-filladapt-mode}, like this:
4870
4871 @lisp
4872 (add-hook 'text-mode-hook 'turn-on-filladapt-mode)
4873 @end lisp
4874
4875 You can customize filling and adaptive filling with Customize.
4876 Select from the @code{Options} menu
4877 @code{Advanced (Customize)->Emacs->Editing->Fill->Fill...}
4878 or type @kbd{M-x customize @key{RET} fill @key{RET}}.
4879
4880 Note that well-behaving text-lookalike modes will run
4881 @code{text-mode-hook} by default (e.g. that's what Message does). For
4882 the nasty ones, you'll have to provide the @code{add-hook}s yourself.
4883
4884 Please note that the @code{fa-extras} package is no longer useful.
4885
4886 @node Q3.8.5, Q3.9.1, Q3.8.4, Display Subsystems
4887 @unnumberedsubsec Q3.8.5: How can I get XEmacs to come up in text/auto-fill mode by default?
4888
4889 Try the following lisp in your @file{init.el}:
4890
4891 @lisp
4892 (setq default-major-mode 'text-mode)
4893 (setq text-mode-hook 'turn-on-auto-fill)
4894 @end lisp
4895
4896 @strong{WARNING}: note that changing the value of
4897 @code{default-major-mode} from @code{fundamental-mode} can break a large
4898 amount of built-in code that expects newly created buffers to be in
4899 @code{fundamental-mode}. (Changing from @code{fundamental-mode} to
4900 @code{text-mode} might not wreak too much havoc, but changing to
4901 something more exotic like a lisp-mode would break many Emacs packages).
4902
4903 Note that Emacs by default starts up in buffer @code{*scratch*} in
4904 @code{initial-major-mode}, which defaults to
4905 @code{lisp-interaction-mode}. Thus adding the following form to your
4906 Emacs init file will cause the initial @code{*scratch*} buffer to be put
4907 into auto-fill'ed @code{text-mode}:
4908
4909 @lisp
4910 (setq initial-major-mode
4911 (lambda ()
4912 (text-mode)
4913 (turn-on-auto-fill)))
4914 @end lisp
4915
4916 Note that after your init file is loaded, if
4917 @code{inhibit-startup-message} is @code{nil} (the default) and the
4918 startup buffer is @code{*scratch*} then the startup message will be
4919 inserted into @code{*scratch*}; it will be removed after a timeout by
4920 erasing the entire @code{*scratch*} buffer. Keep in mind this default
4921 usage of @code{*scratch*} if you desire any prior manipulation of
4922 @code{*scratch*} from within your Emacs init file. In particular,
4923 anything you insert into @code{*scratch*} from your init file will be
4924 later erased. Also, if you change the mode of the @code{*scratch*}
4925 buffer, be sure that this will not interfere with possible later
4926 insertion of the startup message (e.g. if you put @code{*scratch*} into
4927 a nonstandard mode that has automatic font lock rules, then the startup
4928 message might get fontified in a strange foreign manner, e.g. as code in
4929 some programming language).
4930
4931 @unnumberedsec 3.9: Editing Source Code
4932
4933 @node Q3.9.1, Q3.9.2, Q3.8.5, Display Subsystems
4934 @unnumberedsubsec Q3.9.1: How can I do source code highlighting using font-lock?
4935
4936 For most modes, font-lock is already set up and just needs to be turned
4937 on. This can be done by adding the line:
4938
4939 @lisp
4940 (require 'font-lock)
4941 @end lisp
4942
4943 to your @file{init.el}. (You can turn it on for the
4944 current buffer and session only by @kbd{M-x font-lock-mode}.) See the
4945 file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs
4946 versions prior to 21.4) for more information.
4947
4948 @c the old way:
4949 @c (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
4950 @c (add-hook 'dired-mode-hook 'turn-on-font-lock)
4951
4952 See also @code{Syntax Highlighting} from the @code{Options} menu.
4953 Remember to save options.
4954
4955 @node Q3.9.2, Q3.9.3, Q3.9.1, Display Subsystems
4956 @unnumberedsubsec Q3.9.2: How do I get @samp{More} Syntax Highlighting on by default?
4957
4958 Use the following code in your @file{init.el}:
4959
4960 @lisp
4961 (setq-default font-lock-maximum-decoration t)
4962 @end lisp
4963
4964 See also @code{Syntax Highlighting} from the @code{Options} menu.
4965 Remember to save options.
4966
4967 @node Q3.9.3, Q3.9.4, Q3.9.2, Display Subsystems
4968 @unnumberedsubsec Q3.9.3: Where do I get the latest CC Mode?
4969
4970 @email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} writes:
4971
4972 @quotation
4973 This can be had from @uref{http://www.python.org/emacs/}.
4974 @end quotation
4975
4976 @node Q3.9.4, Q3.9.5, Q3.9.3, Display Subsystems
4977 @unnumberedsubsec Q3.9.4: I do not like cc-mode. How do I use the old c-mode?
4978
4979 Well, first off, consider if you really want to do this. cc-mode is
4980 much more powerful than the old c-mode. If you're having trouble
4981 getting your old offsets to work, try using @code{c-set-offset} instead.
4982 You might also consider using the package @code{cc-compat}.
4983
4984 But, if you still insist, add the following lines to your @file{init.el}:
4985
4986 @lisp
4987 (fmakunbound 'c-mode)
4988 (makunbound 'c-mode-map)
4989 (fmakunbound 'c++-mode)
4990 (makunbound 'c++-mode-map)
4991 (makunbound 'c-style-alist)
4992 (load-library "old-c-mode")
4993 (load-library "old-c++-mode")
4994 @end lisp
4995
4996 This must be done before any other reference is made to either c-mode or
4997 c++-mode.
4998
4999 @node Q3.9.5, , Q3.9.4, Display Subsystems
5000 @unnumberedsubsec Q3.9.5: How do you make XEmacs indent CL if-clauses correctly?
5001
5002 I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the
5003 same amount instead of indenting the 3rd clause differently from the
5004 first two.
5005
5006 One way is to add, to @file{init.el}:
5007
5008 @lisp
5009 (put 'if 'lisp-indent-function nil)
5010 @end lisp
5011
5012 However, note that the package @code{cl-indent} that comes with
5013 XEmacs sets up this kind of indentation by default. @code{cl-indent}
5014 also knows about many other CL-specific forms. To use @code{cl-indent},
5015 one can do this:
5016
5017 @lisp
5018 (load "cl-indent")
5019 (setq lisp-indent-function (function common-lisp-indent-function))
5020 @end lisp
5021
5022 One can also customize @file{cl-indent.el} so it mimics the default
5023 @code{if} indentation @code{then} indented more than the @code{else}.
5024 Here's how:
5025
5026 @lisp
5027 (put 'if 'common-lisp-indent-function '(nil nil &body))
5028 @end lisp
5029
5030 Also, a new version (1.2) of @file{cl-indent.el} was posted to
5031 comp.emacs.xemacs on 12/9/94. This version includes more documentation
5032 than previous versions. This may prove useful if you need to customize
5033 any indent-functions.
5034
5035 @node External Subsystems, Internet, Display Subsystems, Top
5036 @unnumbered 4 Interfacing with the Operating System and External Devices
5037
5038 This is part 4 of the XEmacs Frequently Asked Questions list. This
5039 section is devoted to the various ways that XEmacs interfaces with the
5040 operating system, with other processes and with external devices such
5041 as speakers and the printer.
5042
5043 @menu
5044 4.0: X Window System and Resources
5045 * Q4.0.1:: Where is a list of X resources?
5046 * Q4.0.2:: How can I detect a color display?
5047 * Q4.0.3:: How can I get the icon to just say @samp{XEmacs}?
5048 * Q4.0.4:: How can I have the window title area display the full path?
5049 * Q4.0.5:: @samp{xemacs -name junk} doesn't work?
5050 * Q4.0.6:: @samp{-iconic} doesn't work.
5051
5052 4.1: Microsoft Windows
5053 * Q4.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
5054 * Q4.1.2:: How do I get Windows Explorer to associate a file type with XEmacs?
5055
5056 4.2: Printing
5057 * Q4.2.1:: What do I need to change to make printing work?
5058 * Q4.2.2:: How can I print WYSIWYG a font-locked buffer?
5059 * Q4.2.3:: Getting @kbd{M-x lpr} to work with postscript printer.
5060 * Q4.2.4:: Can you print under MS Windows?
5061
5062 4.3: Sound
5063 * Q4.3.1:: How do I turn off the sound?
5064 * Q4.3.2:: How do I get funky sounds instead of a boring beep?
5065 * Q4.3.3:: What's NAS, how do I get it?
5066 * Q4.3.4:: Sunsite sounds don't play.
5067
5068 4.4: Running an Interior Shell, Invoking Subprocesses
5069 * Q4.4.1:: What is an interior shell?
5070 * Q4.4.2:: How do I start up a second shell buffer?
5071 * Q4.4.3:: Telnet from shell filters too much
5072 * Q4.4.4:: Strange things are happening in Shell Mode.
5073 * Q4.4.5:: XEmacs complains "No such file or directory, diff"
5074
5075 4.5: Multiple Device Support
5076 * Q4.5.1:: How do I open a frame on another screen of my multi-headed display?
5077 * Q4.5.2:: Can I really connect to a running XEmacs after calling up over a modem? How?
5078 * Q4.5.3:: How do I disable gnuserv from opening a new frame?
5079 * Q4.5.4:: How do I start gnuserv so that each subsequent XEmacs is a client?
5080 * Q4.5.5:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
5081
5082 4.6: TeX
5083 * Q4.6.1:: Is there something better than LaTeX mode?
5084 * Q4.6.2:: What is AUCTeX? Where do you get it?
5085 * Q4.6.3:: Problems installing AUCTeX.
5086 * Q4.6.4:: How do I turn off current chapter from AUCTeX modeline?
5087
5088 4.7: Other Unbundled Packages
5089 * Q4.7.1:: Is there a reason for an Emacs package not to be included in XEmacs?
5090 * Q4.7.2:: Are there any Emacs Lisp Spreadsheets?
5091 * Q4.7.3:: Is there a MatLab mode?
5092
5093 4.8: Environments Built Around XEmacs
5094 * Q4.8.1:: What are SPARCworks, EOS, and WorkShop?
5095 * Q4.8.2:: How do I start the Sun Workshop support in XEmacs 21?
5096 * Q4.8.3:: What is/was Energize?
5097 * Q4.8.4:: What is Infodock?
5098 @end menu
5099
5100 @unnumberedsec 4.0: X Window System and Resources
5101
5102 @node Q4.0.1, Q4.0.2, External Subsystems, External Subsystems
5103 @unnumberedsubsec Q4.0.1: Where is a list of X resources?
5104
5105 Search through the @file{NEWS} file for @samp{X Resources}. A fairly
5106 comprehensive list is given after it.
5107
5108 In addition, an @file{app-defaults} file @file{etc/Emacs.ad} is
5109 supplied, listing the defaults. The file @file{etc/sample.Xresources}
5110 gives a different set of defaults that you might consider for
5111 installation in your @file{~/.Xresources} file. It is nearly the same
5112 as @file{etc/Emacs.ad}, but a few entries are altered. Be careful about
5113 installing the contents of this file into your @file{.Xresources} (or
5114 legacy @file{.Xdefaults}) file if you use GNU Emacs under X11 as well.
5115
5116 @node Q4.0.2, Q4.0.3, Q4.0.1, External Subsystems
5117 @unnumberedsubsec Q4.0.2: How can I detect a color display?
5118
5119 You can test the return value of the function @code{(device-class)}, as
5120 in:
5121
5122 @lisp
5123 (when (eq (device-class) 'color)
5124 (set-face-foreground 'font-lock-comment-face "Grey")
5125 (set-face-foreground 'font-lock-string-face "Red")
5126 ....
5127 )
5128 @end lisp
5129
5130 @node Q4.0.3, Q4.0.4, Q4.0.2, External Subsystems
5131 @unnumberedsubsec Q4.0.3: How can I get the icon to just say @samp{XEmacs}?
5132
5133 I'd like the icon to just say @samp{XEmacs}, and not include the name of
5134 the current file in it.
5135
5136 Add the following line to your @file{init.el}:
5137
5138 @lisp
5139 (setq frame-icon-title-format "XEmacs")
5140 @end lisp
5141
5142 @node Q4.0.4, Q4.0.5, Q4.0.3, External Subsystems
5143 @unnumberedsubsec Q4.0.4: How can I have the window title area display the full path?
5144
5145 I'd like to have the window title area display the full directory/name
5146 of the current buffer file and not just the name.
5147
5148 Add the following line to your @file{init.el}:
5149
5150 @lisp
5151 (setq frame-title-format "%S: %f")
5152 @end lisp
5153
5154 A more sophisticated title might be:
5155
5156 @lisp
5157 (setq frame-title-format
5158 '("%S: " (buffer-file-name "%f"
5159 (dired-directory dired-directory "%b"))))
5160 @end lisp
5161
5162 That is, use the file name, or the dired-directory, or the buffer name.
5163
5164 @node Q4.0.5, Q4.0.6, Q4.0.4, External Subsystems
5165 @unnumberedsubsec Q4.0.5: @samp{xemacs -name junk} doesn't work?
5166
5167 When I run @samp{xterm -name junk}, I get an xterm whose class name
5168 according to xprop, is @samp{junk}. This is the way it's supposed to
5169 work, I think. When I run @samp{xemacs -name junk} the class name is
5170 not set to @samp{junk}. It's still @samp{emacs}. What does
5171 @samp{xemacs -name} really do? The reason I ask is that my window
5172 manager (fvwm) will make a window sticky and I use XEmacs to read my
5173 mail. I want that XEmacs window to be sticky, without having to use the
5174 window manager's function to set the window sticky. What gives?
5175
5176 @samp{xemacs -name} sets the application name for the program (that is,
5177 the thing which normally comes from @samp{argv[0]}). Using @samp{-name}
5178 is the same as making a copy of the executable with that new name. The
5179 @code{WM_CLASS} property on each frame is set to the frame-name, and the
5180 application-class. So, if you did @samp{xemacs -name FOO} and then
5181 created a frame named @var{BAR}, you'd get an X window with WM_CLASS =
5182 @code{( "BAR", "Emacs")}. However, the resource hierarchy for this
5183 widget would be:
5184
5185 @example
5186 Name: FOO .shell .container .BAR
5187 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
5188 @end example
5189
5190 instead of the default
5191
5192 @example
5193 Name: xemacs.shell .container .emacs
5194 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
5195 @end example
5196
5197
5198 It is arguable that the first element of WM_CLASS should be set to the
5199 application-name instead of the frame-name, but I think that's less
5200 flexible, since it does not give you the ability to have multiple frames
5201 with different WM_CLASS properties. Another possibility would be for
5202 the default frame name to come from the application name instead of
5203 simply being @samp{emacs}. However, at this point, making that change
5204 would be troublesome: it would mean that many users would have to make
5205 yet another change to their resource files (since the default frame name
5206 would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever
5207 the executable happened to be named), so we'd rather avoid it.
5208
5209 To make a frame with a particular name use:
5210
5211 @lisp
5212 (make-frame '((name . "the-name")))
5213 @end lisp
5214
5215 @node Q4.0.6, Q4.1.1, Q4.0.5, External Subsystems
5216 @unnumberedsubsec Q4.0.6: @samp{-iconic} doesn't work.
5217
5218 When I start up XEmacs using @samp{-iconic} it doesn't work right.
5219 Using @samp{-unmapped} on the command line, and setting the
5220 @code{initiallyUnmapped} X Resource don't seem to help much either...
5221
5222 @email{ben@@xemacs.org, Ben Wing} writes:
5223
5224 @quotation
5225 Ugh, this stuff is such an incredible mess that I've about given up
5226 getting it to work. The principal problem is numerous window-manager
5227 bugs...
5228 @end quotation
5229
5230 @unnumberedsec 4.1: Microsoft Windows
5231
5232 @node Q4.1.1, Q4.1.2, Q4.0.6, External Subsystems
5233 @unnumberedsubsec Q4.1.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
5234
5235 In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*}
5236 symbols to @samp{w32-*}. Does XEmacs do the same?
5237
5238 We consider such a move counter-productive, thus we do not use the
5239 @samp{w32} prefix. (His rather questionable justification was that he
5240 did not consider Windows to be a "winning" platform.) However, the name
5241 @samp{Win32} is not particularly descriptive outside the Windows world,
5242 and using just @samp{windows-} would be too generic. So we chose a
5243 compromise, the prefix @samp{mswindows-} for Windows-related variables
5244 and functions.
5245
5246 Thus all the XEmacs variables and functions directly related to either
5247 the Windows GUI or OS are prefixed @samp{mswindows-} (except for a
5248 couple of debugging variables, prefixed @samp{debug-mswindows-}). From
5249 an architectural perspective, however, we believe that this is mostly a
5250 non-issue because there should be a very small number of
5251 window-systems-specific variables anyway. Whenever possible, we try to
5252 provide generic interfaces that apply to all window systems.
5253
5254 @c not true:
5255 @c The user variables
5256 @c that share functionality with existing NT Emacs variables are be named
5257 @c with our convention, but we provide the GNU Emacs names as
5258 @c compatibility aliases.
5259
5260 @node Q4.1.2, Q4.2.1, Q4.1.1, External Subsystems
5261 @unnumberedsubsec Q4.1.2: How do I get Windows Explorer to associate a file type with XEmacs?
5262
5263 @unnumberedsubsubsec Associating a new file type with XEmacs.
5264
5265 In Explorer select @samp{View->Options->File Types}, press @samp{[New
5266 Type...]} and fill in the dialog box, e.g.:
5267
5268 @example
5269 Description of type: Emacs Lisp source
5270 Associated extension: el
5271 Content Type (MIME): text/plain
5272 @end example
5273
5274 then press @samp{[New...]} and fill in the @samp{Action} dialog box as
5275 follows:
5276
5277 @example
5278 Action:
5279 Open
5280
5281 Application used to perform action:
5282 D:\Full\path\for\xemacs.exe "%1"
5283
5284 [x] Use DDE
5285
5286 DDE Message:
5287 open("%1")
5288
5289 Application:
5290 <leave blank>
5291
5292 DDE Application Not Running:
5293 <leave blank>
5294
5295 Topic:
5296 <leave blank>
5297 @end example
5298
5299 @unnumberedsubsubsec Associating an existing file type with XEmacs.
5300
5301 In Explorer select @samp{View->Options->File Types}. Click on the file
5302 type in the list and press @samp{[Edit...]}. If the file type already
5303 has an @samp{Open} action, double click on it and fill in the
5304 @samp{Action} dialog box as described above; otherwise create a new
5305 action.
5306
5307 If the file type has more than one action listed, you probably want to
5308 make the @samp{Open} action that you just edited the default by clicking on
5309 it and pressing @samp{Set Default}.
5310
5311 Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types}
5312 using @samp{Control Panel->Folder Options->File Types}.
5313
5314 @unnumberedsec 4.2: Printing
5315
5316 @node Q4.2.1, Q4.2.2, Q4.1.2, External Subsystems
5317 @unnumberedsubsec Q4.2.1: What do I need to change to make printing work?
5318
5319 For regular printing there are two variables that can be customized.
5320
5321 @table @code
5322 @item lpr-command
5323 This should be set to a command that takes standard input and sends
5324 it to a printer. Something like:
5325
5326 @lisp
5327 (setq lpr-command "lp")
5328 @end lisp
5329
5330 @item lpr-switches
5331 This should be set to a list that contains whatever the print command
5332 requires to do its job. Something like:
5333
5334 @lisp
5335 (setq lpr-switches '("-depson"))
5336 @end lisp
5337 @end table
5338
5339 For postscript printing there are three analogous variables to
5340 customize.
5341
5342 @table @code
5343 @item ps-lpr-command
5344 This should be set to a command that takes postscript on standard input
5345 and directs it to a postscript printer.
5346
5347 @item ps-lpr-switches
5348 This should be set to a list of switches required for
5349 @code{ps-lpr-command} to do its job.
5350
5351 @item ps-print-color-p
5352 This boolean variable should be set @code{t} if printing will be done in
5353 color, otherwise it should be set to @code{nil}.
5354 @end table
5355
5356 NOTE: It is an undocumented limitation in XEmacs that postscript
5357 printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a
5358 window system environment. It cannot be used outside of X11.
5359
5360 @node Q4.2.2, Q4.2.3, Q4.2.1, External Subsystems
5361 @unnumberedsubsec Q4.2.2: How can I print WYSIWYG a font-locked buffer?
5362
5363 Font-lock looks nice. How can I print (WYSIWYG) the highlighted
5364 document?
5365
5366 The package @code{ps-print}, which is now included with XEmacs, provides
5367 the ability to do this. The source code contains complete instructions
5368 on its use, in
5369 @file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el},
5370 being the default location of an installed ps-print package.
5371
5372 @node Q4.2.3, Q4.2.4, Q4.2.2, External Subsystems
5373 @unnumberedsubsec Q4.2.3: Getting @kbd{M-x lpr} to work with postscript printer.
5374
5375 My printer is a Postscript printer and @code{lpr} only works for
5376 Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x
5377 lpr-buffer} to work?
5378
5379 Put something like this in your @file{init.el}:
5380
5381 @lisp
5382 (setq lpr-command "a2ps")
5383 (setq lpr-switches '("-p" "-1"))
5384 @end lisp
5385
5386 If you don't use a2ps to convert ASCII to postscript (why not, it's
5387 free?), replace with the command you do use. Note also that some
5388 versions of a2ps require a @samp{-Pprinter} to ensure spooling.
5389
5390 @node Q4.2.4, Q4.3.1, Q4.2.3, External Subsystems
5391 @unnumberedsubsec Q4.2.4: Can you print under MS Windows?
5392
5393 As of 21.4, printing works on Windows, using simply
5394 @samp{File->Print BUFFER...}, and can be configured with
5395 @samp{File->Page Setup...}.
5396
5397 Prior to 21.4, there is no built-in support, but there are some clever
5398 hacks out there. If you know how, please let us know and we'll put it
5399 here.
5400
5401 @unnumberedsec 4.3: Sound
5402
5403 @node Q4.3.1, Q4.3.2, Q4.2.4, External Subsystems
5404 @unnumberedsubsec Q4.3.1: How do I turn off the sound?
5405
5406 Add the following line to your @file{init.el}:
5407
5408 @lisp
5409 (setq bell-volume 0)
5410 (setq sound-alist nil)
5411 @end lisp
5412
5413 That will make your XEmacs totally silent---even the default ding sound
5414 (TTY beep on TTY-s) will be gone.
5415
5416 You can also change these with Customize. Select from the
5417 @code{Options} menu @code{Advanced
5418 (Customize)->Emacs->Environment->Sound->Sound...} or type @kbd{M-x
5419 customize @key{RET} sound @key{RET}}.
5420
5421
5422 @node Q4.3.2, Q4.3.3, Q4.3.1, External Subsystems
5423 @unnumberedsubsec Q4.3.2: How do I get funky sounds instead of a boring beep?
5424
5425 Make sure your XEmacs was compiled with sound support, and then put this
5426 in your @file{init.el}:
5427
5428 @lisp
5429 (load-default-sounds)
5430 @end lisp
5431
5432 @node Q4.3.3, Q4.3.4, Q4.3.2, External Subsystems
5433 @unnumberedsubsec Q4.3.3: What's NAS, how do I get it?
5434
5435 @xref{Q2.1.3, Compiling XEmacs with Netaudio}, for an explanation of
5436 the @dfn{Network Audio System}.
5437
5438 @node Q4.3.4, Q4.4.1, Q4.3.3, External Subsystems
5439 @unnumberedsubsec Q4.3.4: Sunsite sounds don't play.
5440
5441 I'm having some trouble with sounds I've downloaded from sunsite. They
5442 play when I run them through @code{showaudio} or cat them directly to
5443 @file{/dev/audio}, but XEmacs refuses to play them.
6037 5444
6038 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes: 5445 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
6039 5446
6040 @quotation 5447 @quotation
6041 Yes, abbrevs only expands word-syntax strings. While XEmacs does not 5448 [Many of] These files have an (erroneous) 24byte header that tells about
6042 prevent you from defining (e.g. with @kbd{C-x a g} or @kbd{C-x a l}) 5449 the format that they have been recorded in. If you cat them to
6043 abbrevs that contain special characters, it will refuse to expand 5450 @file{/dev/audio}, the header will be ignored and the default behavior
6044 them. So you need to ensure, that the abbreviation contains letters and 5451 for /dev/audio will be used. This happens to be 8kHz uLaw. It is
6045 digits only. This means that @samp{xd}, @samp{d5}, and @samp{5d} are 5452 probably possible to fix the header by piping through @code{sox} and
6046 valid abbrevs, but @samp{&d}, and @samp{x d} are not. 5453 passing explicit parameters for specifying the sampling format; you then
6047 5454 need to perform a 'null' conversion from SunAudio to SunAudio.
6048 If this sounds confusing to you, (re-)read the online documentation for
6049 abbrevs (@kbd{C-h i m XEmacs @key{RET} m Abbrevs @key{RET}}), and then come back and
6050 read this question/answer again.
6051 @end quotation 5455 @end quotation
6052 5456
6053 Starting with XEmacs 20.3 this restriction has been lifted. 5457 @unnumberedsec 4.4: Running an Interior Shell, Invoking Subprocesses
6054 5458
6055 @node Q5.3.10, Q5.3.11, Q5.3.9, Miscellaneous 5459 @node Q4.4.1, Q4.4.2, Q4.3.4, External Subsystems
6056 @unnumberedsubsec Q5.3.10: How can I get those oh-so-neat X-Face lines? 5460 @unnumberedsubsec Q4.4.1: What is an interior shell?
5461
5462 #### Write me.
5463
5464 @node Q4.4.2, Q4.4.3, Q4.4.1, External Subsystems
5465 @unnumberedsubsec Q4.4.2: How do I start up a second shell buffer?
5466
5467 In the @code{*shell*} buffer:
5468
5469 @lisp
5470 M-x rename-buffer @key{RET} *shell-1* @key{RET}
5471 M-x shell RET
5472 @end lisp
5473
5474 This will then start a second shell. The key is that no buffer named
5475 @samp{*shell*} can exist. It might be preferable to use @kbd{M-x
5476 rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x
5477 rename-buffer}.
5478
5479 Alternately, you can set the variable @code{shell-multiple-shells}.
5480 If the value of this variable is non-nil, each time shell mode is invoked,
5481 a new shell is made
5482
5483 @node Q4.4.3, Q4.4.4, Q4.4.2, External Subsystems
5484 @unnumberedsubsec Q4.4.3: Telnet from shell filters too much
5485
5486 I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke
5487 and use a telnet session within it. Everything works fine except that
5488 now all @samp{^M}'s are filtered out by Emacs. Fixes?
5489
5490 Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather
5491 than doing rsh or telnet within the local shell buffer. You can also
5492 use @kbd{M-x ssh} to open secure remote session if you have @code{ssh}
5493 installed.
5494
5495 @node Q4.4.4, Q4.4.5, Q4.4.3, External Subsystems
5496 @unnumberedsubsec Q4.4.4: Strange things are happening in Shell Mode.
5497
5498 Sometimes (i.e. it's not repeatable, and I can't work out why it
5499 happens) when I'm typing into shell mode, I hit return and only a
5500 portion of the command is given to the shell, and a blank prompt is
5501 returned. If I hit return again, the rest of the previous command is
5502 given to the shell.
5503
5504 @email{martin@@xemacs.org, Martin Buchholz} writes:
5505
5506 @quotation
5507 There is a known problem with interaction between @code{csh} and the
5508 @code{filec} option and XEmacs. You should add the following to your
5509 @file{.cshrc}:
5510
5511 @example
5512 if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
5513 @end example
5514 @end quotation
5515
5516 @node Q4.4.5, Q4.5.1, Q4.4.4, External Subsystems
5517 @unnumberedsubsec Q4.4.5: XEmacs complains "No such file or directory, diff"
5518
5519 or "ispell" or other commands that seem related to whatever you just
5520 tried to do (M-x ediff or M-$, for example).
5521
5522 There are a large number of common (in the sense that "everyone has
5523 these, they really do") Unix utilities that are not provided with
5524 XEmacs. The GNU Project's implementations are available for Windows in
5525 the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also
5526 provides a complete Unix emulation environment (and thus makes ports of
5527 Unix utilities nearly trivial). Another implementation is that from
5528 MinGW (@uref{http://www.mingw.org/msys.shtml}). If you know of others,
5529 please let us know!
5530
5531 @unnumberedsec 4.5: Multiple Device Support
5532
5533 @node Q4.5.1, Q4.5.2, Q4.4.5, External Subsystems
5534 @unnumberedsubsec Q4.5.1: How do I open a frame on another screen of my multi-headed display?
5535
5536 Use the command @kbd{M-x make-frame-on-display}. This command is also
5537 on the File menu in the menubar.
5538
5539 The command @code{make-frame-on-tty} also exists, which will establish a
5540 connection to any tty-like device. Opening the TTY devices should be
5541 left to @code{gnuclient}, though.
5542
5543 @node Q4.5.2, Q4.5.3, Q4.5.1, External Subsystems
5544 @unnumberedsubsec Q4.5.2: Can I really connect to a running XEmacs after calling up over a modem? How?
5545
5546 Yes. Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach}
5547 program supplied with XEmacs instead.)
5548
5549 Also see @ref{Q4.5.3, How do I disable gnuserv from opening a new frame?}.
5550
5551 @node Q4.5.3, Q4.5.4, Q4.5.2, External Subsystems
5552 @unnumberedsubsec Q4.5.3: How do I disable gnuserv from opening a new frame?
5553
5554 If you set the @code{gnuserv-frame} variable to the frame that should be
5555 used to display buffers that are pulled up, a new frame will not be
5556 created. For example, you could put
5557
5558 @lisp
5559 (setq gnuserv-frame (selected-frame))
5560 @end lisp
5561
5562 early on in your @file{init.el}, to ensure that the first frame created
5563 is the one used for your gnuserv buffers.
5564
5565 There is an option to set the gnuserv target to the current frame. See
5566 @code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target}
5567
5568 You can also change this with Customize. Select from the
5569 @code{Options} menu @code{Advanced
5570 (Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...} or type
5571 @kbd{M-x customize @key{RET} gnuserv @key{RET}}.
5572
5573
5574 @node Q4.5.4, Q4.5.5, Q4.5.3, External Subsystems
5575 @unnumberedsubsec Q4.5.4: How do I start gnuserv so that each subsequent XEmacs is a client?
5576
5577 Put the following in your @file{init.el} file to start the server:
5578
5579 @lisp
5580 (gnuserv-start)
5581 @end lisp
5582
5583 Start your first XEmacs as usual. After that, you can do:
5584
5585 @example
5586 gnuclient randomfilename
5587 @end example
5588
5589 from the command line to get your existing XEmacs process to open a new
5590 frame and visit randomfilename in that window. When you're done editing
5591 randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the
5592 frame.
5593
5594 See also man page of gnuclient.
5595
5596 @node Q4.5.5, Q4.6.1, Q4.5.4, External Subsystems
5597 @unnumberedsubsec Q4.5.5: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
5598
5599 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
5600 @quotation
5601 Here is one of the solutions, we have this in a script called
5602 @file{etc/editclient.sh}.
5603 @example
5604 #!/bin/sh
5605 if gnuclient -batch -eval t >/dev/null 2>&1
5606 then
5607 exec gnuclient $@{1+"$@@"@}
5608 else
5609 xemacs -unmapped -f gnuserv-start &
5610 until gnuclient -batch -eval t >/dev/null 2>&1
5611 do
5612 sleep 1
5613 done
5614 exec gnuclient $@{1+"$@@"@}
5615 fi
5616 @end example
5617
5618 Note that there is a known problem when running XEmacs and 'gnuclient
5619 -nw' on the same TTY.
5620 @end quotation
5621
5622 @unnumberedsec 4.6: TeX
5623
5624 @node Q4.6.1, Q4.6.2, Q4.5.5, External Subsystems
5625 @unnumberedsubsec Q4.6.1: Is there something better than LaTeX mode?
5626
5627 @email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes:
5628
5629 @quotation
5630 The standard TeX modes leave much to be desired, and are somewhat
5631 leniently maintained. Serious TeX users use AUCTeX (@pxref{Q4.6.2,
5632 What is AUCTeX? Where do you get it?}).
5633 @end quotation
5634
5635 @node Q4.6.2, Q4.6.3, Q4.6.1, External Subsystems
5636 @unnumberedsubsec Q4.6.2: What is AUCTeX? Where do you get it?
5637
5638 AUCTeX is a complex and sophisticated editing package dedicated to TeX
5639 and related text formatting languages, including LaTeX and Texinfo.
5640 It provides support for running TeX on a file or part of a file,
5641 include files, and of course shortcuts for entering common TeX macros,
5642 LaTeX environments, etc, and for fontlock.
5643
5644 AUCTeX is a standard package provided by XEmacs. You can get it as
5645 usual through the @kbd{M-x list-packages} interface. It is also
5646 included in the (non-Mule) SUMO package. The AUCTeX XEmacs package is
5647 maintained by Uwe Brauer <GET MAIL ADDRESS>.
5648
5649 AUCTeX is extremely complicated, and its developers primarily
5650 use GNU Emacs. Not all features of the bleeding edge version
5651 of AUCTeX are immediately ported to XEmacs; if you need
5652 these, you may be better off getting the most recent versions
5653 from the GNU AUCTeX project on @uref{http://savannah.gnu.org}.
5654
5655 @node Q4.6.3, Q4.6.4, Q4.6.2, External Subsystems
5656 @unnumberedsubsec Q4.6.3: Problems installing AUCTeX.
5657
5658 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
5659
5660 @quotation
5661 AUCTeX works fine on both stock Emacs and XEmacs has been doing so for
5662 a very very long time. This is mostly due to the work of
5663 @email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu}
5664 package. Which leads to what is probably the problem...
5665 @end quotation
5666
5667 Most problems with AUCTeX are one of two things:
5668
5669 @itemize @bullet
5670 @item
5671 The TeX-lisp-directory in @file{tex-site.el} and the makefile don't
5672 match.
5673
5674 Fix: make sure you configure AUCTeX properly @strong{before} installing.
5675
5676 @item
5677 You have an old version of easymenu.el in your path.
5678
5679 Fix: use @code{locate-library} and remove old versions to make sure it
5680 @strong{only} finds the one that came with XEmacs.
5681 @end itemize
5682
5683 @node Q4.6.4, Q4.7.1, Q4.6.3, External Subsystems
5684 @unnumberedsubsec Q4.6.4: How do I turn off current chapter from AUCTeX modeline?
5685
5686 With AUCTeX, fast typing is hard because the current chapter, section
5687 etc. are given in the modeline. How can I turn this off?
5688
5689 It's not AUCTeX, it comes from @code{func-menu} in @file{func-menu.el}.
5690
5691 @c Add this code to your @file{init.el} to turn it off:
5692 @c
5693 @c @lisp
5694 @c (setq fume-display-in-modeline-p nil)
5695 @c @end lisp
5696 @c
5697 @c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX
5698 @c mode:
5699 @c
5700 @c @lisp
5701 @c (add-hook 'TeX-mode-hook
5702 @c '(lambda () (setq fume-display-in-modeline-p nil)))
5703 @c @end lisp
5704 @c
5705 @email{dhughes@@origin-at.co.uk, David Hughes} writes:
5706
5707 @quotation
5708 Try this; you'll still get the function name displayed in the modeline,
5709 but it won't attempt to keep track when you modify the file. To refresh
5710 when it gets out of synch, you simply need click on the @samp{Rescan
5711 Buffer} option in the function-menu.
5712
5713 @lisp
5714 (setq-default fume-auto-rescan-buffer-p nil)
5715 @end lisp
5716 @end quotation
5717
5718 @unnumberedsec 4.7: Other Unbundled Packages
5719
5720 @node Q4.7.1, Q4.7.2, Q4.6.4, External Subsystems
5721 @unnumberedsubsec Q4.7.1: Is there a reason for an Emacs package not to be included in XEmacs?
5722
5723 The reason for an Emacs package not to be included in XEmacs is
5724 usually one or more of the following:
5725
5726 @enumerate
5727 @item
5728 The package has not been ported to XEmacs. This will typically happen
5729 when it uses GNU-Emacs-specific features, which make it fail under
5730 XEmacs.
5731
5732 Porting a package to XEmacs can range from a trivial amount of change to
5733 a partial or full rewrite. Fortunately, the authors of modern packages
5734 usually choose to support both Emacsen themselves.
5735
5736 @item
5737 The package has been decided not to be appropriate for XEmacs. It may
5738 have an equivalent or better replacement within XEmacs, in which case
5739 the developers may choose not to burden themselves with supporting an
5740 additional package.
5741
5742 Each package bundled with XEmacs means more work for the maintainers,
5743 whether they want it or not. If you are ready to take over the
5744 maintenance responsibilities for the package you port, be sure to say
5745 so---we will more likely include it.
5746
5747 @item
5748 The package simply hasn't been noted by the XEmacs development. If
5749 that's the case, the messages like yours are very useful for attracting
5750 our attention.
5751
5752 @item
5753 The package was noted by the developers, but they simply haven't yet
5754 gotten around to including/porting it. Wait for the next release or,
5755 even better, offer your help. It will be gladly accepted and
5756 appreciated.
5757 @end enumerate
5758
5759 @node Q4.7.2, Q4.7.3, Q4.7.1, External Subsystems
5760 @unnumberedsubsec Q4.7.2: Are there any Emacs Lisp Spreadsheets?
5761
5762 Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at
5763 @iftex
5764 @*
5765 @end iftex
5766 @uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}.
5767
5768 @node Q4.7.3, Q4.8.1, Q4.7.2, External Subsystems
5769 @unnumberedsubsec Q4.7.3: Is there a MatLab mode?
5770
5771 Yes, a matlab mode and other items are available at the
5772 @uref{ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons,
5773 MathWorks' emacs_add_ons ftp directory}.
5774
5775 @unnumberedsec 4.8: Environments Built Around XEmacs
5776
5777 @node Q4.8.1, Q4.8.2, Q4.7.3, External Subsystems
5778 @unnumberedsubsec Q4.8.1: What are SPARCworks, EOS, and WorkShop?
5779
5780 SPARCworks was a development environment from Sun (circa 1993-1996)
5781 and consisted of compilers (C, C++, FORTRAN 77, Fortran 90, Ada, and
5782 Pascal), a debugger, and other tools such as TeamWare (for
5783 configuration management), MakeTool, etc.
5784
5785 EOS is the integration of XEmacs with the SPARCworks debugger. It
5786 allows one to use an XEmacs frame to view code (complete with
5787 fontification, etc.), set breakpoints, print variables, etc., while
5788 using the SPARCworks debugger.
5789
5790 EOS stands for "Era on SPARCworks"; Era stood for "Emacs Rewritten
5791 Again" and was the name used by Sun for its modified version of Lucid
5792 Emacs (later XEmacs) in the early-mid 90's. This is documented in
5793 more detail in the history section of the XEmacs About page.
5794
5795 EOS was replaced around 1996 with a newer graphical development
5796 environment called Sun WorkShop. The current status of this is
5797 unknown.
5798
5799 @node Q4.8.2, Q4.8.3, Q4.8.1, External Subsystems
5800 @unnumberedsubsec Q4.8.2: How do I start the Sun Workshop support in XEmacs 21?
5801
5802 Add the switch ---with-workshop to the configure command when building
5803 XEmacs and put the following in one of your startup files
5804 (e.g. site-start.el or .emacs):
5805
5806 @lisp
5807 (when (featurep 'tooltalk)
5808 (load "tooltalk-macros")
5809 (load "tooltalk-util")
5810 (load "tooltalk-init"))
5811 (when (featurep 'sparcworks)
5812 (load "sunpro-init")
5813 (load "ring")
5814 (load "comint")
5815 (load "annotations")
5816 (sunpro-startup))
5817 @end lisp
5818
5819 If you are not using the latest Workshop (5.0) you have to apply the
5820 following patch:
5821
5822 @format
5823 --- /opt/SUNWspro/lib/eserve.el.ORIG Fri May 14 15:23:26 1999
5824 +++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999
5825 @@@@ -42,7 +42,7 @@@@
5826 (defvar running-xemacs nil "t if we're running XEmacs")
5827 (defvar running-emacs nil "t if we're running GNU Emacs 19")
5828
5829 -(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
5830 +(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
5831 (setq running-xemacs t)
5832 (setq running-emacs t))
5833 @end format
5834
5835 @node Q4.8.3, Q4.8.4, Q4.8.2, External Subsystems
5836 @unnumberedsubsec Q4.8.3: What is/was Energize?
5837
5838 The "Energize Programming System" was a C and C++ development environment
5839 sold by Lucid, Inc. It was the reason why Lucid Emacs, now XEmacs, was
5840 created in the first place. Unfortunately, Lucid went out of business in
5841 1994. The rights to sell it in Japan were purchased by INS
5842 Engineering (which briefly employed Stig Hackvan aka Jonathan
5843 Stigelman to work on Japanese support for XEmacs, in late 1994 and
5844 early 1995) and Tartan bought the rights to sell it in the rest of the
5845 world. However, INS is not selling Energize at this point and may or
5846 may not have ever done so; Tartan certainly never did.
5847
5848 @node Q4.8.4, , Q4.8.3, External Subsystems
5849 @unnumberedsubsec Q4.8.4: What is Infodock?
5850
5851 @uref{http://sourceforge.net/projects/infodock/, InfoDock} is an
5852 integrated productivity toolset, mainly aimed at technical people,
5853 hosted at SourceForge.
5854
5855 InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of
5856 the power of Emacs, but with an easier to use and more comprehensive
5857 menu-based user interface. The bottom portion of this text describes
5858 how it differs from XEmacs and GNU Emacs from the Free Software
5859 Foundation.
5860
5861 InfoDock is aimed at people who want a free, turn-key productivity
5862 environment. Although InfoDock is customizable, it is not intended for
5863 people who like basic versions of Emacs which need to be customized
5864 extensively for local use; standard Emacs distributions are better for
5865 such uses. InfoDock is for those people who want a complete,
5866 pre-customized environment in one package, which they need not touch
5867 more than once or twice a year to update to new revisions.
5868
5869 InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX,
5870 and Intel Linux systems. It is intended for use on a color display,
5871 although most features will work on monochrome monitors. Simply unpack
5872 InfoDock according to the instructions in the ID-INSTALL file and you
5873 are ready to run.
5874
5875 The InfoDock Manual is concise, yet sufficient as a user guide for users
5876 who have never used an Emacs-type editor before. For users who are
5877 already familiar with Emacs, it supplements the information in the GNU
5878 Emacs Manual.
5879
5880 InfoDock menus are much more extensive and more mature than standard
5881 Emacs menus. Each menu offers a @samp{Manual} item which displays
5882 documentation associated with the menu's functions.
5883
5884 @noindent
5885 Four types of menubars are provided:
5886 @enumerate
5887 @item
5888 An extensive menubar providing access to global InfoDock commands.
5889 @item
5890 Mode-specific menubars tailored to the current major mode.
5891 @item
5892 A simple menubar for basic editing to help novices get started with InfoDock.
5893 @item
5894 The standard XEmacs menubar.
5895 @end enumerate
5896
5897 Most modes also include mode-specific popup menus. Additionally, region and
5898 rectangle popup menus are included.
5899
5900 @samp{Hyperbole}, the everyday information manager, is a core part of
5901 InfoDock. This provides context-sensitive mouse keys, a rolodex-type
5902 contact manager, programmable hypertext buttons, and an autonumbered
5903 outliner with embedded hyperlink anchors.
5904
5905 The @samp{OO-Browser}, a multi-language object-oriented code browser, is a
5906 standard part of InfoDock.
5907
5908 InfoDock saves a more extensive set of user options than other Emacs
5909 versions.
5910
5911 InfoDock inserts a useful file header in many file types, showing the
5912 author, summary, and last modification time of each file. A summary
5913 program can then be used to summarize all of the files in a directory,
5914 for easy MANIFEST file creation.
5915
5916 Your working set of buffers is automatically saved and restored (if you
5917 answer yes to a prompt) between InfoDock sessions.
5918
5919 Refined color choices for code highlighting are provided for both dark and
5920 light background display frames.
5921
5922 The @kbd{C-z} key prefix performs frame-based commands which parallel the
5923 @kbd{C-x} key prefix for window-based commands.
5924
5925 The Smart Menu system is included for producing command menus on dumb
5926 terminals.
5927
5928 Lisp libraries are better categorized according to function.
5929
5930 Extensions and improvements to many areas of Emacs are included, such as:
5931 paragraph filling, mail reading with Rmail, shell handling, outlining, code
5932 highlighting and browsing, and man page browsing.
5933
5934 InfoDock questions, answers and discussion should go to the mail list
5935 @iftex
5936 @*
5937 @end iftex
5938 @email{infodock@@infodock.com}. Use
5939 @email{infodock-request@@infodock.com} to be added or removed from the
5940 list. Always include your InfoDock version number when sending help
5941 requests.
5942
5943 @node Internet, Advanced, External Subsystems, Top
5944 @unnumbered 5 Connecting to the Internet
5945
5946 This is part 5 of the XEmacs Frequently Asked Questions list. This
5947 section is devoted connecting to the Internet.
5948
5949 @menu
5950 5.0: General Mail and News
5951 * Q5.0.1:: What are the various packages for reading mail?
5952 * Q5.0.2:: How can I send mail?
5953 * Q5.0.3:: How do I get my outgoing mail archived?
5954 * Q5.0.4:: How can I read and/or compose MIME messages?
5955 * Q5.0.5:: How do I customize the From line?
5956 * Q5.0.6:: How do I get my MUA to filter mail for me?
5957 * Q5.0.7:: Remote mail reading with an MUA.
5958 * Q5.0.8:: An MUA gets an error incorporating new mail.
5959 * Q5.0.9:: Why isn't @file{movemail} working?
5960 * Q5.0.10:: How do I make my MUA display graphical smilies?
5961 * Q5.0.11:: How can I get those oh-so-neat X-Face lines?
5962
5963 5.1: Reading Mail with VM
5964 * Q5.1.1:: How do I set up VM to retrieve mail from a remote site using POP?
5965 * Q5.1.2:: How can I get VM to automatically check for new mail?
5966 * Q5.1.3:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
5967 * Q5.1.4:: Is there a mailing list or FAQ for VM?
5968 * Q5.1.5:: How do I make VM stay in a single frame?
5969 * Q5.1.6:: Customization of VM not covered in the manual, or here.
5970
5971 5.2: Reading Netnews and Mail with Gnus
5972 * Q5.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
5973 * Q5.2.2:: How do I make Gnus stay within a single frame?
5974
5975 5.3: FTP Access
5976 * Q5.3.1:: Can I edit files on other hosts?
5977 * Q5.3.2:: What is EFS?
5978
5979 5.4: Web Browsing with W3
5980 * Q5.4.1:: What is W3?
5981 * Q5.4.2:: How do I run W3 from behind a firewall?
5982 * Q5.4.3:: Is it true that W3 supports style sheets and tables?
5983 @end menu
5984
5985 @unnumberedsec 5.0: General Mail and News
5986
5987 @node Q5.0.1, Q5.0.2, Internet, Internet
5988 @unnumberedsubsec Q5.0.1: What are the various packages for reading mail?
5989
5990 #### Write me.
5991
5992 @node Q5.0.2, Q5.0.3, Q5.0.1, Internet
5993 @unnumberedsubsec Q5.0.2: How can I send mail?
5994
5995 Under Unix and Mac OS X, the @samp{sendmail} package is normally used
5996 for this.
5997 #### Write me.
5998
5999 Under Windows, you need to use @samp{smtpmail}, which communicates
6000 directly with the mail server, as there is no @file{sendmail} program
6001 running. To get it working, use code like the following in your
6002 @file{init.el} file:
6003
6004 @lisp
6005 ;; Get mail working under Windows.
6006 (setq message-send-mail-function 'smtpmail-send-it) ; for message/Gnus
6007 (setq send-mail-function 'smtpmail-send-it) ; for C-x m, etc.
6008 ;; the following ensures that mail problems can be debugged: it logs a trace
6009 ;; of the SMTP conversation to *trace of SMTP session to <somewhere>*.
6010 (setq smtpmail-debug-info t)
6011 ;; Substitute your info here.
6012 ;(setq user-mail-address "ben@@xemacs.org")
6013 ;(setq user-full-name "Ben Wing")
6014 ;(setq smtpmail-default-smtp-server "smtp.myserver.myisp.com")
6015 ;; The following two aren't completely necessary but may help.
6016 ;(setq smtpmail-local-domain "666.com")
6017 ;(setq smtpmail-sendto-domain "666.com")
6018 ;; If your SMTP server requires a username/password to authenticate, as
6019 ;; many do nowadays, set them like this:
6020 ;(setq smtpmail-auth-credentials ; or use ~/.authinfo
6021 ; '(("smtp.myserver.myisp.com" 25 "USER@@SOMEWHERE" "PASSWORD")))
6022
6023 ;; Other possibilities for getting smtpmail to work:
6024 ;;
6025 ;; If for some reason you need to authenticate using the STARTTLS protocol
6026 ;; (don't look into this unless you know what it is), use
6027 ;; (setq smtpmail-starttls-credentials
6028 ;; '(("YOUR SMTP HOST" 25 "~/.my_smtp_tls.key" "~/.my_smtp_tls.cert")))
6029 ;; Requires external program
6030 ;; ftp://ftp.opaopa.org/pub/elisp/starttls-*.tar.gz.
6031 ;; See http://www.ietf.org/rfc/rfc2246.txt,
6032 ;; http://www.ietf.org/rfc/rfc2487.txt
6033 @end lisp
6034
6035 The lines you need to care about are those that set
6036 @code{user-mail-address}, @code{user-full-name},
6037 @code{smtpmail-default-smtp-server}, and
6038 @code{smtpmail-auth-credentials}. You need to set these with,
6039 respectively, your email address, your full name, the SMTP server you
6040 use for outgoing mail, and the username and password you need to log
6041 in to your SMTP server. (If for some reason your SMTP server doesn't
6042 require logging in to send mail, don't uncomment this last line.)
6043
6044 The other settings may be useful in specific cases, but you should know what
6045 you're doing before enabling them.
6046
6047 @node Q5.0.3, Q5.0.4, Q5.0.2, Internet
6048 @unnumberedsubsec Q5.0.3: How do I get my outgoing mail archived?
6049
6050 @lisp
6051 (setq mail-archive-file-name "~/outbox")
6052 @end lisp
6053
6054 @node Q5.0.4, Q5.0.5, Q5.0.3, Internet
6055 @unnumberedsubsec Q5.0.4: How can I read and/or compose MIME messages?
6056
6057 VM, MH-E and GNUS support MIME natively. Other MUAs may or may not
6058 have MIME support; refer to their documentation and other resources,
6059 such as web pages and mailing lists. Packages like SEMI/WEMI may be
6060 useful in connection with MUAs like mew and Wanderlust.
6061
6062 @node Q5.0.5, Q5.0.6, Q5.0.4, Internet
6063 @unnumberedsubsec Q5.0.5: How do I customize the From line?
6064
6065 How do I change the @samp{From:} line? I have set gnus-user-from-line
6066 to
6067 @example
6068 Gail Gurman <gail.gurman@@sybase.com>
6069 @end example
6070 @noindent , but XEmacs Gnus doesn't use
6071 it. [This should apply to all MUA's. --ed] Instead it uses
6072 @example
6073 Gail Mara Gurman @email{gailg@@deall}
6074 @end example
6075 @noindent and then complains
6076 that it's incorrect. Also, as you perhaps can see, my Message-ID is
6077 screwy. How can I change that?
6078
6079 @email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes:
6080
6081 @quotation
6082 Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or
6083 @code{mail-host-address} to @samp{sybase.com}.
6084 @end quotation
6085
6086 @node Q5.0.6, Q5.0.7, Q5.0.5, Internet
6087 @unnumberedsubsec Q5.0.6: How do I get my MUA to filter mail for me?
6088
6089 One possibility is to use procmail to split your mail before it gets to
6090 the MUA. I prefer this personally, since there are many strange and
6091 wonderful things one can do with procmail. Procmail may be found at
6092 @uref{ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/}.
6093
6094 Also see the Mail Filtering FAQ at:
6095 @iftex
6096 @*
6097 @end iftex
6098 @uref{ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq}.
6099 @c Link above,
6100 @c <URL:http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/filtering-faq/faq.html>
6101 @c was dead.
6102
6103 @node Q5.0.7, Q5.0.8, Q5.0.6, Internet
6104 @unnumberedsubsec Q5.0.7: Remote mail reading with an MUA.
6105
6106 My mailbox lives at the office on a big honkin server. My regular INBOX
6107 lives on my honkin desktop machine. I now can PPP to the office from
6108 home which is far from honking... I'd like to be able to read mail at
6109 home without storing it here and I'd like to use xemacs and the MUA at
6110 home... Is there a recommended setup?
6111
6112 @email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes:
6113
6114 @quotation
6115 There are several ways to do this.
6116
6117 @enumerate
6118 @item
6119 Set your display to your home machine and run dxpc or one of the other X
6120 compressors.
6121
6122 @item
6123 NFS mount your desktop machine on your home machine and modify your pop
6124 command on your home machine to rsh to your desktop machine and actually
6125 do the pop get's.
6126
6127 @item
6128 Run a POP server on your desktop machine as well and do a sort of two
6129 tiered POP get.
6130 @end enumerate
6131 @end quotation
6132
6133 @email{wmperry@@monolith.spry.com, William Perry} adds:
6134
6135 @quotation
6136 Or you could run a pop script periodically on your desktop machine, and
6137 just use ange-ftp or NFS to get to your mailbox. I used to do this all
6138 the time back at IU.
6139 @end quotation
6140
6141 @node Q5.0.8, Q5.0.9, Q5.0.7, Internet
6142 @unnumberedsubsec Q5.0.8: An MUA gets an error incorporating new mail.
6143
6144 rmail and VM, and probably other MUA's as well, get new mail from
6145 your mailbox (called @file{/var/mail/$USER} or @file{/var/spool/mail/$USER}
6146 or something similar) using a program called @code{movemail}.
6147 This program interlocks with @code{/bin/mail} using the protocol
6148 defined by @code{/bin/mail}.
6149
6150 There are various different protocols in general use, which you need to
6151 specify using the @samp{--mail-locking} option to @file{configure}:
6152
6153 @table @samp
6154 @item lockf
6155 POSIX file locking with @code{lockf()}
6156 @item flock
6157 BSD file locking with @code{flock()}
6158 @item dot
6159 To manipulate mail file @file{foo}, first create file @file{foo.lock}
6160 @item locking
6161 Use @code{locking()}, Microsoft's renamed @code{flock()}
6162 @item mmdf
6163 Use @code{lk_open()} and @code{lk_close()} as defined by the Multi-channel
6164 Memo Distribution Facility
6165 @item pop
6166 Retrieve mail using POP (the Post Office Protocol). This is the
6167 default for Cygwin/MinGW.
6168 @end table
6169
6170 @strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
6171 SYSTEM, YOU CAN LOSE MAIL!}
6172
6173 Usually the value is correctly determined automatically:
6174 @file{configure} tries to detect the method in use, and defaults exist
6175 on systems for which this doesn't work.
6176
6177 However, if you run into problems incorporating new mail, it may be
6178 because an incorrect method is being used.
6179
6180 If your system uses the lock file protocol, and permissions are set
6181 so that ordinary users cannot write lock files in the mail spool
6182 directory, you may need to make @file{movemail} setgid to a
6183 suitable group such as @samp{mail}. You can use these commands (as
6184 root):
6185
6186 @example
6187 chgrp mail movemail
6188 chmod 2755 movemail
6189 @end example
6190
6191 If you are using the @samp{pop} locking method, @file{movemail} must
6192 be setuid root.
6193
6194 Installation normally copies movemail from the build directory to an
6195 installation directory which is usually under @file{/usr/local/lib}.
6196 The installed copy of @file{movemail} is usually in the directory
6197 @file{/usr/local/lib/xemacs-VERSION/TARGET} (for example,
6198 @file{/usr/local/lib/xemacs-21.4.15/i686-pc-cygwin}). You must change
6199 the group and mode of the installed copy; changing the group and mode
6200 of the build directory copy is ineffective.
6201
6202 @node Q5.0.9, Q5.0.10, Q5.0.8, Internet
6203 @unnumberedsubsec Q5.0.9: Why isn't @file{movemail} working?
6204
6205 @xref{Q5.0.8}.
6206
6207 Note also that older versions of Mozilla came with a @file{movemail}
6208 program that is @strong{not} compatible with XEmacs. Do not use it.
6209 Always use the @file{movemail} installed with your XEmacs. Failure to
6210 do so can result in lost mail.
6211
6212 @node Q5.0.10, Q5.0.11, Q5.0.9, Internet
6213 @unnumberedsubsec Q5.0.10: How do I make my MUA display graphical smilies?
6214 For mh-e use the following:
6215
6216 @lisp
6217 (add-hook 'mh-show-mode-hook '(lambda ()
6218 (smiley-region (point-min)
6219 (point-max))))
6220 @end lisp
6221
6222 @email{bill@@carpenter.ORG, WJCarpenter} writes:
6223 For VM use the following:
6224 @lisp
6225 (autoload 'smiley-region "smiley" nil t)
6226 (add-hook 'vm-select-message-hook
6227 '(lambda ()
6228 (smiley-region (point-min)
6229 (point-max))))
6230 @end lisp
6231
6232 For tm use the following:
6233 @lisp
6234 (autoload 'smiley-buffer "smiley" nil t)
6235 (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
6236 @end lisp
6237
6238 @node Q5.0.11, Q5.1.1, Q5.0.10, Internet
6239 @unnumberedsubsec Q5.0.11: How can I get those oh-so-neat X-Face lines?
6057 6240
6058 Firstly there is an ftp site which describes X-faces and has the 6241 Firstly there is an ftp site which describes X-faces and has the
6059 associated tools mentioned below, at 6242 associated tools mentioned below, at
6060 @uref{ftp://ftp.cs.indiana.edu:/pub/faces/}. 6243 @uref{ftp://ftp.cs.indiana.edu:/pub/faces/}.
6061 6244
6137 Heinz Uphoff, 6320 Heinz Uphoff,
6138 Peter Arius, 6321 Peter Arius,
6139 Paul Harrison, and 6322 Paul Harrison, and
6140 Vegard Vesterheim 6323 Vegard Vesterheim
6141 6324
6142 @node Q5.3.11, Q5.3.12, Q5.3.10, Miscellaneous 6325 @unnumberedsec 5.1: Reading Mail with VM
6143 @unnumberedsubsec Q5.3.11: How do I add new Info directories? 6326
6327 @node Q5.1.1, Q5.1.2, Q5.0.11, Internet
6328 @unnumberedsubsec Q5.1.1: How do I set up VM to retrieve mail from a remote site using POP?
6329
6330 Use @code{vm-spool-files}, like this for example:
6331
6332 @lisp
6333 (setq vm-spool-files '("/var/spool/mail/wing"
6334 "netcom23.netcom.com:110:pass:wing:MYPASS"))
6335 @end lisp
6336
6337 Of course substitute your actual password for MYPASS.
6338
6339 @node Q5.1.2, Q5.1.3, Q5.1.1, Internet
6340 @unnumberedsubsec Q5.1.2: How can I get VM to automatically check for new mail?
6341
6342 @email{turner@@lanl.gov, John Turner} writes:
6343
6344 @quotation
6345 Use the following:
6346
6347 @lisp
6348 (setq vm-auto-get-new-mail 60)
6349 @end lisp
6350 @end quotation
6351
6352 @node Q5.1.3, Q5.1.4, Q5.1.2, Internet
6353 @unnumberedsubsec Q5.1.3: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
6354
6355 Set @code{vm-reply-ignored-addresses} to a list, like
6356
6357 @lisp
6358 (setq vm-reply-ignored-addresses
6359 '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
6360 "wing@@netcom.com" "wing@@xemacs.org"))
6361 @end lisp
6362
6363 Note that each string is a regular expression.
6364
6365 @node Q5.1.4, Q5.1.5, Q5.1.3, Internet
6366 @unnumberedsubsec Q5.1.4: Is there a mailing list or FAQ for VM?
6367
6368 A FAQ for VM exists at @uref{http://www.wonderworks.com/vm/FAQ.html}.
6369
6370 VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
6371
6372 @node Q5.1.5, Q5.1.6, Q5.1.4, Internet
6373 @unnumberedsubsec Q5.1.5: How do I make VM stay in a single frame?
6374
6375 John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes:
6376
6377 @quotation
6378 @lisp
6379 ; Don't use multiple frames
6380 (setq vm-frame-per-composition nil)
6381 (setq vm-frame-per-folder nil)
6382 (setq vm-frame-per-edit nil)
6383 (setq vm-frame-per-summary nil)
6384 @end lisp
6385 @end quotation
6386
6387 @node Q5.1.6, Q5.2.1, Q5.1.5, Internet
6388 @unnumberedsubsec Q5.1.6: Customization of VM not covered in the manual, or here.
6389
6390 @email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes:
6391
6392 @quotation
6393 The meta-answer is to look into the file @file{vm-vars.el}, in the vm
6394 directory of the lisp library.
6395
6396 @file{vm-vars.el} contains, initializes and carefully describes, with
6397 examples of usage, the plethora of user options that @emph{fully}
6398 control VM's behavior.
6399
6400 Enter vm-vars, @code{forward-search} for toolbar, find the variables
6401 that control the toolbar placement, appearance, existence, copy to your
6402 @file{init.el} or @file{.vm} and modify according to the
6403 detailed instructions.
6404
6405 The above also applies to all the various features of VM: search for
6406 some keywords, maybe the first you conjure isn't appropriate, find the
6407 appropriate variables, copy and experiment.
6408 @end quotation
6409
6410 @unnumberedsec 5.2: Reading Netnews and Mail with Gnus
6411
6412 @node Q5.2.1, Q5.2.2, Q5.1.6, Internet
6413 @unnumberedsubsec Q5.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
6414
6415 The Gnus numbering issues are not meant for mere mortals to know them.
6416 If you feel you @emph{must} enter the muddy waters of Gnus, visit the
6417 excellent FAQ, maintained by Justin Sheehy, at:
6418
6419 @example
6420 @uref{http://www.ccs.neu.edu/software/contrib/gnus/}
6421 @end example
6422
6423 See also Gnus home page
6424 @example
6425 @uref{http://www.gnus.org/}
6426 @end example
6427
6428 @node Q5.2.2, Q5.3.1, Q5.2.1, Internet
6429 @unnumberedsubsec Q5.2.2: How do I make Gnus stay within a single frame?
6430
6431 The toolbar code to start Gnus opens the new frame---and it's a feature
6432 rather than a bug. If you don't like it, but would still like to click
6433 on the seemly icon, use the following code:
6434
6435 @lisp
6436 (defun toolbar-news ()
6437 (gnus))
6438 @end lisp
6439
6440 It will redefine the callback function of the icon to just call
6441 @code{gnus}, without all the fancy frame stuff.
6442
6443 @unnumberedsec 5.3: FTP Access
6444
6445 @node Q5.3.1, Q5.3.2, Q5.2.2, Internet
6446 @unnumberedsubsec Q5.3.1: Can I edit files on other hosts?
6447
6448 Yes. Of course XEmacs can use any network file system (such as NFS or
6449 Windows file sharing) you have available, and includes some
6450 optimizations and safety features appropriate to those environments.
6451
6452 It is also possible to transparently edit files via FTP, ssh, or rsh. That
6453 is, XEmacs makes a local copy using the transport in the background, and
6454 automatically refreshes the remote original from that copy when you save
6455 it. XEmacs also is capable of doing file system manipulations like
6456 creating and removing directories and files. The FTP interface is
6457 provided by the standard @samp{efs} package @ref{Top, EFS, , efs}. The
6458 ssh/rsh interface is provided by the optional @samp{tramp} package
6459 @ref{Top, TRAMP, , tramp}.
6460
6461 @node Q5.3.2, Q5.4.1, Q5.3.1, Internet
6462 @unnumberedsubsec Q5.3.2: What is EFS?
6463
6464 #### Write me.
6465
6466 @unnumberedsec 5.4: Web Browsing with W3
6467
6468 @node Q5.4.1, Q5.4.2, Q5.3.2, Internet
6469 @unnumberedsubsec Q5.4.1: What is W3?
6470
6471 W3 is an advanced graphical browser written in Emacs lisp that runs on
6472 XEmacs. It has full support for cascaded style sheets, and more...
6473
6474 It has a home web page at
6475 @uref{http://www.cs.indiana.edu/elisp/w3/docs.html}.
6476
6477 @node Q5.4.2, Q5.4.3, Q5.4.1, Internet
6478 @unnumberedsubsec Q5.4.2: How do I run W3 from behind a firewall?
6479
6480 There is a long, well-written, detailed section in the W3 manual that
6481 describes how to do this. Look in the section entitled "Firewalls".
6482
6483 @node Q5.4.3, , Q5.4.2, Internet
6484 @unnumberedsubsec Q5.4.3: Is it true that W3 supports style sheets and tables?
6485
6486 Yes, and much more. W3, as distributed with the latest XEmacs is a
6487 full-featured web browser.
6488
6489 @node Advanced, Current Events, Internet, Top
6490 @unnumbered 6 Advanced Customization Using XEmacs Lisp
6491
6492 This is part 6 of the XEmacs Frequently Asked Questions list. This
6493 section is devoted to advanced customization using XEmacs Lisp.
6494
6495 @menu
6496 6.0: Online Help
6497 * Q6.0.1:: How can I get two instances of info?
6498 * Q6.0.2:: How do I add new Info directories?
6499
6500 6.1: Emacs Lisp and @file{init.el}
6501 * Q6.1.1:: What version of Emacs am I running?
6502 * Q6.1.2:: How can I evaluate Emacs-Lisp expressions?
6503 * Q6.1.3:: @code{(setq tab-width 6)} behaves oddly.
6504 * Q6.1.4:: How can I add directories to the @code{load-path}?
6505 * Q6.1.5:: How to check if a lisp function is defined?
6506 * Q6.1.6:: Can I force the output of @code{(face-list)} to a buffer?
6507
6508 6.2: Emacs Lisp Programming Techniques
6509 * Q6.2.1:: What is the difference in key sequences between XEmacs and GNU Emacs?
6510 * Q6.2.2:: Can I generate "fake" keyboard events?
6511 * Q6.2.3:: Could you explain @code{read-kbd-macro} in more detail?
6512 * Q6.2.4:: What is the performance hit of @code{let}?
6513 * Q6.2.5:: What is the recommended use of @code{setq}?
6514 * Q6.2.6:: What is the typical misuse of @code{setq}?
6515 * Q6.2.7:: I like the @code{do} form of cl, does it slow things down?
6516 * Q6.2.8:: I like recursion, does it slow things down?
6517 * Q6.2.9:: How do I put a glyph as annotation in a buffer?
6518 * Q6.2.10:: @code{map-extents} won't traverse all of my extents!
6519 * Q6.2.11:: My elisp program is horribly slow. Is there
6520
6521 6.3: Mathematics
6522 * Q6.3.1:: What are bignums, ratios, and bigfloats in Lisp?
6523 * Q6.3.2:: XEmacs segfaults when I use very big numbers!
6524 * Q6.3.3:: Bignums are really slow!
6525 * Q6.3.4:: Equal bignums don't compare as equal! What gives?
6526 @end menu
6527
6528 @unnumberedsec 6.0: Online Help
6529
6530 @node Q6.0.1, Q6.0.2, Advanced, Advanced
6531 @unnumberedsubsec Q6.0.1: How can I get two instances of info?
6532
6533 Before 21.4, you can't. The @code{info} package does not provide for
6534 multiple info buffers. In 21.4, this should be fixed. #### how?
6535
6536 @node Q6.0.2, Q6.1.1, Q6.0.1, Advanced
6537 @unnumberedsubsec Q6.0.2: How do I add new Info directories?
6144 6538
6145 You use something like: 6539 You use something like:
6146 6540
6147 @lisp 6541 @lisp
6148 (setq Info-directory-list (cons 6542 (setq Info-directory-list (cons
6181 6575
6182 Another alternative is to convert the documentation to HTML with 6576 Another alternative is to convert the documentation to HTML with
6183 texi2html and read it from a web browser like Lynx or W3. 6577 texi2html and read it from a web browser like Lynx or W3.
6184 @end quotation 6578 @end quotation
6185 6579
6186 @node Q5.3.12, Q5.4.1, Q5.3.11, Miscellaneous 6580 @unnumberedsec 6.1: Emacs Lisp and @file{init.el}
6187 @unnumberedsubsec Q5.3.12: What do I need to change to make printing work? 6581
6188 6582 @node Q6.1.1, Q6.1.2, Q6.0.2, Advanced
6189 For regular printing there are two variables that can be customized. 6583 @unnumberedsubsec Q6.1.1: What version of Emacs am I running?
6190 6584
6191 @table @code 6585 How can @file{init.el} determine which of the family of
6192 @item lpr-command 6586 Emacsen I am using?
6193 This should be set to a command that takes standard input and sends 6587
6194 it to a printer. Something like: 6588 To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
6195 6589 XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
6196 @lisp 6590 example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in
6197 (setq lpr-command "lp") 6591 XEmacs versions prior to 21.4). There are other nifty things in there
6198 @end lisp 6592 as well!
6199 6593
6200 @item lpr-switches 6594 For all new code, all you really need to do is:
6201 This should be set to a list that contains whatever the print command 6595
6202 requires to do its job. Something like: 6596 @lisp
6203 6597 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
6204 @lisp 6598 @end lisp
6205 (setq lpr-switches '("-depson")) 6599
6206 @end lisp 6600 @node Q6.1.2, Q6.1.3, Q6.1.1, Advanced
6207 @end table 6601 @unnumberedsubsec Q6.1.2: How can I evaluate Emacs-Lisp expressions?
6208 6602
6209 For postscript printing there are three analogous variables to 6603 I know I can evaluate Elisp expressions from @code{*scratch*} buffer
6210 customize. 6604 with @kbd{C-j} after the expression. How do I do it from another
6211 6605 buffer?
6212 @table @code 6606
6213 @item ps-lpr-command 6607 Press @kbd{M-:} (the default binding of @code{eval-expression}), and
6214 This should be set to a command that takes postscript on standard input 6608 enter the expression to the minibuffer.
6215 and directs it to a postscript printer. 6609
6216 6610 @node Q6.1.3, Q6.1.4, Q6.1.2, Advanced
6217 @item ps-lpr-switches 6611 @unnumberedsubsec Q6.1.3: @code{(setq tab-width 6)} behaves oddly.
6218 This should be set to a list of switches required for 6612
6219 @code{ps-lpr-command} to do its job. 6613 If you put @code{(setq tab-width 6)} in your
6220 6614 @file{init.el} file it does not work! Is there a reason
6221 @item ps-print-color-p 6615 for this? If you do it at the EVAL prompt it works fine!! How strange.
6222 This boolean variable should be set @code{t} if printing will be done in 6616
6223 color, otherwise it should be set to @code{nil}. 6617 Use @code{setq-default} instead, since @code{tab-width} is
6224 @end table 6618 all-buffer-local.
6225 6619
6226 NOTE: It is an undocumented limitation in XEmacs that postscript 6620 @node Q6.1.4, Q6.1.5, Q6.1.3, Advanced
6227 printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a 6621 @unnumberedsubsec Q6.1.4: How can I add directories to the @code{load-path}?
6228 window system environment. It cannot be used outside of X11. 6622
6229 6623 Here are two ways to do that, one that puts your directories at the
6230 6624 front of the load-path, the other at the end:
6231 @node Q5.4.1, Q5.4.2, Q5.3.12, Miscellaneous 6625
6232 @unnumberedsec 5.4: Mathematics 6626 @lisp
6233 @unnumberedsubsec Q5.4.1: What are bignums, ratios, and bigfloats in Lisp? 6627 ;;; Add things at the beginning of the load-path, do not add
6628 ;;; duplicate directories:
6629 (pushnew "bar" load-path :test 'equal)
6630
6631 (pushnew "foo" load-path :test 'equal)
6632
6633 ;;; Add things at the end, unconditionally
6634 (setq load-path (nconc load-path '("foo" "bar")))
6635 @end lisp
6636
6637 @email{keithh@@nortel.ca, keith (k.p.) hanlan} writes:
6638
6639 @quotation
6640 To add directories using Unix shell metacharacters use
6641 @file{expand-file-name} like this:
6642
6643 @lisp
6644 (push (expand-file-name "~keithh/.emacsdir") load-path)
6645 @end lisp
6646 @end quotation
6647
6648 @node Q6.1.5, Q6.1.6, Q6.1.4, Advanced
6649 @unnumberedsubsec Q6.1.5: How to check if a lisp function is defined?
6650
6651 Use the following elisp:
6652
6653 @lisp
6654 (fboundp 'foo)
6655 @end lisp
6656
6657 It's almost always a mistake to test @code{emacs-version} or any similar
6658 variables.
6659
6660 Instead, use feature-tests, such as @code{featurep}, @code{boundp},
6661 @code{fboundp}, or even simple behavioral tests, eg.:
6662
6663 @lisp
6664 (defvar foo-old-losing-code-p
6665 (condition-case nil (progn (losing-code t) nil)
6666 (wrong-number-of-arguments t)))
6667 @end lisp
6668
6669 There is an incredible amount of broken code out there which could work
6670 much better more often in more places if it did the above instead of
6671 trying to divine its environment from the value of one variable.
6672
6673 @node Q6.1.6, Q6.2.1, Q6.1.5, Advanced
6674 @unnumberedsubsec Q6.1.6: Can I force the output of @code{(face-list)} to a buffer?
6675
6676 It would be good having it in a buffer, as the output of
6677 @code{(face-list)} is too wide to fit to a minibuffer.
6678
6679 Evaluate the expression in the @samp{*scratch*} buffer with point after
6680 the rightmost paren and typing @kbd{C-j}.
6681
6682 If the minibuffer smallness is the only problem you encounter, you can
6683 simply press @kbd{C-h l} to get the former minibuffer contents in a
6684 buffer.
6685
6686 @unnumberedsec 6.2: Emacs Lisp Programming Techniques
6687
6688 @node Q6.2.1, Q6.2.2, Q6.1.6, Advanced
6689 @unnumberedsubsec Q6.2.1: What is the difference in key sequences between XEmacs and GNU Emacs?
6690
6691 @email{clerik@@naggum.no, Erik Naggum} writes;
6692
6693 @quotation
6694 Emacs has a legacy of keyboards that produced characters with modifier
6695 bits, and therefore map a variety of input systems into this scheme even
6696 today. XEmacs is instead optimized for X events. This causes an
6697 incompatibility in the way key sequences are specified, but both Emacs
6698 and XEmacs will accept a key sequence as a vector of lists of modifiers
6699 that ends with a key, e.g., to bind @kbd{M-C-a}, you would say
6700 @code{[(meta control a)]} in both Emacsen. XEmacs has an abbreviated
6701 form for a single key, just (meta control a). Emacs has an abbreviated
6702 form for the Control and the Meta modifiers to string-characters (the
6703 ASCII characters), as in @samp{\M-\C-a}. XEmacs users need to be aware
6704 that the abbreviated form works only for one-character key sequences,
6705 while Emacs users need to be aware that the string-character is rather
6706 limited. Specifically, the string-character can accommodate only 256
6707 different values, 128 of which have the Meta modifier and 128 of which
6708 have not. In each of these blocks, only 32 characters have the Control
6709 modifier. Whereas @code{[(meta control A)]} differs from @code{[(meta
6710 control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A}
6711 do not. Programmers are advised to use the full common form, both
6712 because it is more readable and less error-prone, and because it is
6713 supported by both Emacsen.
6714 @end quotation
6715
6716 Another (even safer) way to be sure of the key-sequences is to use the
6717 @code{read-kbd-macro} function, which takes a string like @samp{C-c
6718 <up>}, and converts it to the internal key representation of the Emacs
6719 you use. The function is available both on XEmacs and GNU Emacs.
6720
6721 @node Q6.2.2, Q6.2.3, Q6.2.1, Advanced
6722 @unnumberedsubsec Q6.2.2: Can I generate "fake" keyboard events?
6723
6724 I wonder if there is an interactive function that can generate
6725 @dfn{fake} keyboard events. This way, I could simply map them inside
6726 XEmacs.
6727
6728 This seems to work:
6729
6730 @lisp
6731 (defun cg--generate-char-event (ch)
6732 "Generate an event, as if ch has been typed"
6733 (dispatch-event (character-to-event ch)))
6734
6735 ;; Backspace and Delete stuff
6736 (global-set-key [backspace]
6737 (lambda () (interactive) (cg--generate-char-event 127)))
6738 (global-set-key [unknown_keysym_0x4]
6739 (lambda () (interactive) (cg--generate-char-event 4)))
6740 @end lisp
6741
6742 @node Q6.2.3, Q6.2.4, Q6.2.2, Advanced
6743 @unnumberedsubsec Q6.2.3: Could you explain @code{read-kbd-macro} in more detail?
6744
6745 The @code{read-kbd-macro} function returns the internal Emacs
6746 representation of a human-readable string (which is its argument).
6747 Thus:
6748
6749 @lisp
6750 (read-kbd-macro "C-c C-a")
6751 @result{} [(control ?c) (control ?a)]
6752
6753 (read-kbd-macro "C-c C-. <up>")
6754 @result{} [(control ?c) (control ?.) up]
6755 @end lisp
6756
6757 In GNU Emacs the same forms will be evaluated to what GNU Emacs
6758 understands internally---the sequences @code{"\C-x\C-c"} and @code{[3
6759 67108910 up]}, respectively.
6760
6761 The exact @dfn{human-readable} syntax is defined in the docstring of
6762 @code{edmacro-mode}. I'll repeat it here, for completeness.
6763
6764 @quotation
6765 Format of keyboard macros during editing:
6766
6767 Text is divided into @dfn{words} separated by whitespace. Except for
6768 the words described below, the characters of each word go directly as
6769 characters of the macro. The whitespace that separates words is
6770 ignored. Whitespace in the macro must be written explicitly, as in
6771 @kbd{foo @key{SPC} bar @key{RET}}.
6772
6773 @itemize @bullet
6774 @item
6775 The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD},
6776 @kbd{ESC}, and @kbd{NUL} represent special control characters. The
6777 words must be written in uppercase.
6778
6779 @item
6780 A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or
6781 @code{<f1>}, represents a function key. (Note that in the standard
6782 configuration, the function key @code{<return>} and the control key
6783 @key{RET} are synonymous.) You can use angle brackets on the words
6784 @key{RET}, @key{SPC}, etc., but they are not required there.
6785
6786 @item
6787 Keys can be written by their @sc{ascii} code, using a backslash followed
6788 by up to six octal digits. This is the only way to represent keys with
6789 codes above \377.
6790
6791 @item
6792 One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-}
6793 (shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may
6794 precede a character or key notation. For function keys, the prefixes
6795 may go inside or outside of the brackets: @code{C-<down>} @equiv{}
6796 @code{<C-down>}. The prefixes may be written in any order: @kbd{M-C-x}
6797 @equiv{} @kbd{C-M-x}.
6798
6799 Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except
6800 that the Meta prefix is allowed on a sequence of digits and optional
6801 minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}.
6802
6803 @item
6804 The @code{^} notation for control characters also works: @kbd{^M}
6805 @equiv{} @kbd{C-m}.
6806
6807 @item
6808 Double angle brackets enclose command names: @code{<<next-line>>} is
6809 shorthand for @kbd{M-x next-line @key{RET}}.
6810
6811 @item
6812 Finally, @code{REM} or @code{;;} causes the rest of the line to be
6813 ignored as a comment.
6814 @end itemize
6815
6816 Any word may be prefixed by a multiplier in the form of a decimal number
6817 and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>},
6818 and @code{10*foo} @equiv{}
6819 @iftex
6820 @*
6821 @end iftex
6822 @code{foofoofoofoofoofoofoofoofoofoo}.
6823
6824 Multiple text keys can normally be strung together to form a word, but
6825 you may need to add whitespace if the word would look like one of the
6826 above notations: @code{; ; ;} is a keyboard macro with three semicolons,
6827 but @code{;;;} is a comment. Likewise, @code{\ 1 2 3} is four keys but
6828 @code{\123} is a single key written in octal, and @code{< right >} is
6829 seven keys but @code{<right>} is a single function key. When in doubt,
6830 use whitespace.
6831 @end quotation
6832
6833 @node Q6.2.4, Q6.2.5, Q6.2.3, Advanced
6834 @unnumberedsubsec Q6.2.4: What is the performance hit of @code{let}?
6835
6836 In most cases, not noticeable. Besides, there's no avoiding
6837 @code{let}---you have to bind your local variables, after all. Some
6838 pose a question whether to nest @code{let}s, or use one @code{let} per
6839 function. I think because of clarity and maintenance (and possible
6840 future implementation), @code{let}-s should be used (nested) in a way to
6841 provide the clearest code.
6842
6843 @node Q6.2.5, Q6.2.6, Q6.2.4, Advanced
6844 @unnumberedsubsec Q6.2.5: What is the recommended use of @code{setq}?
6845
6846 @itemize @bullet
6847 @item Global variables
6848
6849 You will typically @code{defvar} your global variable to a default
6850 value, and use @code{setq} to set it later.
6851
6852 It is never a good practice to @code{setq} user variables (like
6853 @code{case-fold-search}, etc.), as it ignores the user's choice
6854 unconditionally. Note that @code{defvar} doesn't change the value of a
6855 variable if it was bound previously. If you wish to change a
6856 user-variable temporarily, use @code{let}:
6857
6858 @lisp
6859 (let ((case-fold-search nil))
6860 ... ; code with searches that must be case-sensitive
6861 ...)
6862 @end lisp
6863
6864 You will notice the user-variables by their docstrings beginning with an
6865 asterisk (a convention).
6866
6867 @item Local variables
6868
6869 Bind them with @code{let}, which will unbind them (or restore their
6870 previous value, if they were bound) after exiting from the @code{let}
6871 form. Change the value of local variables with @code{setq} or whatever
6872 you like (e.g. @code{incf}, @code{setf} and such). The @code{let} form
6873 can even return one of its local variables.
6874
6875 Typical usage:
6876
6877 @lisp
6878 ;; iterate through the elements of the list returned by
6879 ;; `hairy-function-that-returns-list'
6880 (let ((l (hairy-function-that-returns-list)))
6881 (while l
6882 ... do something with (car l) ...
6883 (setq l (cdr l))))
6884 @end lisp
6885
6886 Another typical usage includes building a value simply to work with it.
6887
6888 @lisp
6889 ;; Build the mode keymap out of the key-translation-alist
6890 (let ((inbox (file-truename (expand-file-name box)))
6891 (i 0))
6892 ... code dealing with inbox ...
6893 inbox)
6894 @end lisp
6895
6896 This piece of code uses the local variable @code{inbox}, which becomes
6897 unbound (or regains old value) after exiting the form. The form also
6898 returns the value of @code{inbox}, which can be reused, for instance:
6899
6900 @lisp
6901 (setq foo-processed-inbox
6902 (let .....))
6903 @end lisp
6904 @end itemize
6905
6906 @node Q6.2.6, Q6.2.7, Q6.2.5, Advanced
6907 @unnumberedsubsec Q6.2.6: What is the typical misuse of @code{setq}?
6908
6909 A typical misuse is probably @code{setq}ing a variable that was meant to
6910 be local. Such a variable will remain bound forever, never to be
6911 garbage-collected. For example, the code doing:
6912
6913 @lisp
6914 (defun my-function (whatever)
6915 (setq a nil)
6916 ... build a large list ...
6917 ... and exit ...)
6918 @end lisp
6919
6920 does a bad thing, as @code{a} will keep consuming memory, never to be
6921 unbound. The correct thing is to do it like this:
6922
6923 @lisp
6924 (defun my-function (whatever)
6925 (let (a) ; default initialization is to nil
6926 ... build a large list ...
6927 ... and exit, unbinding `a' in the process ...)
6928 @end lisp
6929
6930 Not only is this prettier syntactically, but it makes it possible for
6931 Emacs to garbage-collect the objects which @code{a} used to reference.
6932
6933 Note that even global variables should not be @code{setq}ed without
6934 @code{defvar}ing them first, because the byte-compiler issues warnings.
6935 The reason for the warning is the following:
6936
6937 @lisp
6938 (defun flurgoze nil) ; ok, global internal variable
6939 ...
6940
6941 (setq flurghoze t) ; ops! a typo, but semantically correct.
6942 ; however, the byte-compiler warns.
6943
6944 While compiling toplevel forms:
6945 ** assignment to free variable flurghoze
6946 @end lisp
6947
6948 @node Q6.2.7, Q6.2.8, Q6.2.6, Advanced
6949 @unnumberedsubsec Q6.2.7: I like the @code{do} form of cl, does it slow things down?
6950
6951 It shouldn't. Here is what Dave Gillespie has to say about cl.el
6952 performance:
6953
6954 @quotation
6955 Many of the advanced features of this package, such as @code{defun*},
6956 @code{loop}, and @code{setf}, are implemented as Lisp macros. In
6957 byte-compiled code, these complex notations will be expanded into
6958 equivalent Lisp code which is simple and efficient. For example, the
6959 forms
6960
6961 @lisp
6962 (incf i n)
6963 (push x (car p))
6964 @end lisp
6965
6966 are expanded at compile-time to the Lisp forms
6967
6968 @lisp
6969 (setq i (+ i n))
6970 (setcar p (cons x (car p)))
6971 @end lisp
6972
6973 which are the most efficient ways of doing these respective operations
6974 in Lisp. Thus, there is no performance penalty for using the more
6975 readable @code{incf} and @code{push} forms in your compiled code.
6976
6977 @emph{Interpreted} code, on the other hand, must expand these macros
6978 every time they are executed. For this reason it is strongly
6979 recommended that code making heavy use of macros be compiled. (The
6980 features labelled @dfn{Special Form} instead of @dfn{Function} in this
6981 manual are macros.) A loop using @code{incf} a hundred times will
6982 execute considerably faster if compiled, and will also garbage-collect
6983 less because the macro expansion will not have to be generated, used,
6984 and thrown away a hundred times.
6985
6986 You can find out how a macro expands by using the @code{cl-prettyexpand}
6987 function.
6988 @end quotation
6989
6990 @node Q6.2.8, Q6.2.9, Q6.2.7, Advanced
6991 @unnumberedsubsec Q6.2.8: I like recursion, does it slow things down?
6992
6993 Yes. The Emacs byte-compiler cannot do much to optimize recursion. But
6994 think well whether this is a real concern in Emacs. Much of the Emacs
6995 slowness comes from internal mechanisms such as redisplay, or from the
6996 fact that it is an interpreter.
6997
6998 Please try not to make your code much uglier to gain a very small speed
6999 gain. It's not usually worth it.
7000
7001 @node Q6.2.9, Q6.2.10, Q6.2.8, Advanced
7002 @unnumberedsubsec Q6.2.9: How do I put a glyph as annotation in a buffer?
7003
7004 Here is a solution that will insert the glyph annotation at the
7005 beginning of buffer:
7006
7007 @lisp
7008 (make-annotation (make-glyph '([FORMAT :file FILE]
7009 [string :data "fallback-text"]))
7010 (point-min)
7011 'text
7012 (current-buffer))
7013 @end lisp
7014
7015 Replace @samp{FORMAT} with an unquoted symbol representing the format of
7016 the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.)
7017 Instead of @samp{FILE}, use the image file name
7018 (e.g.
7019 @iftex
7020 @*
7021 @end iftex
7022 @file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}).
7023
7024 You can turn this to a function (that optionally prompts you for a file
7025 name), and inserts the glyph at @code{(point)} instead of
7026 @code{(point-min)}.
7027
7028 @node Q6.2.10, Q6.2.11, Q6.2.9, Advanced
7029 @unnumberedsubsec Q6.2.10: @code{map-extents} won't traverse all of my extents!
7030
7031 I tried to use @code{map-extents} to do an operation on all the extents
7032 in a region. However, it seems to quit after processing a random number
7033 of extents. Is it buggy?
7034
7035 No. The documentation of @code{map-extents} states that it will iterate
7036 across the extents as long as @var{function} returns @code{nil}.
7037 Unexperienced programmers often forget to return @code{nil} explicitly,
7038 which results in buggy code. For instance, the following code is
7039 supposed to delete all the extents in a buffer, and issue as many
7040 @samp{fubar!} messages.
7041
7042 @lisp
7043 (map-extents (lambda (ext ignore)
7044 (delete-extent ext)
7045 (message "fubar!")))
7046 @end lisp
7047
7048 Instead, it will delete only the first extent, and stop right there --
7049 because @code{message} will return a non-nil value. The correct code
7050 is:
7051
7052 @lisp
7053 (map-extents (lambda (ext ignore)
7054 (delete-extent ext)
7055 (message "fubar!")
7056 nil))
7057 @end lisp
7058
7059 @node Q6.2.11, Q6.3.1, Q6.2.10, Advanced
7060 @unnumberedsubsec Q6.2.11: My elisp program is horribly slow. Is there
7061 an easy way to find out where it spends time?
7062 @c New
7063
7064 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
7065 @quotation
7066 Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence},
7067 press a key (say @key{RET} in the Gnus Group buffer), and get the
7068 results using @kbd{M-x profile-results}. It should give you an idea of
7069 where the time is being spent.
7070 @end quotation
7071
7072 @unnumberedsec 6.3: Mathematics
7073
7074 @node Q6.3.1, Q6.3.2, Q6.2.11, Advanced
7075 @unnumberedsubsec Q6.3.1: What are bignums, ratios, and bigfloats in Lisp?
6234 7076
6235 Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and 7077 Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and
6236 later can use the capabilities of multiple-precision libraries that may 7078 later can use the capabilities of multiple-precision libraries that may
6237 be available for your platform. The GNU Multiple Precision (GMP) and 7079 be available for your platform. The GNU Multiple Precision (GMP) and
6238 BSD Multiple Precision (MP) libraries are partially supported. GMP 7080 BSD Multiple Precision (MP) libraries are partially supported. GMP
6256 User-visible changes in behavior include (in probable order of annoyance) 7098 User-visible changes in behavior include (in probable order of annoyance)
6257 7099
6258 @itemize 7100 @itemize
6259 @item 7101 @item
6260 Arithmetic can cause a segfault, depending on your MP library 7102 Arithmetic can cause a segfault, depending on your MP library
6261 @ref{Q5.4.2}. 7103 @ref{Q6.3.2, XEmacs segfaults when I use very big numbers!}.
6262 7104
6263 @item 7105 @item
6264 Terminology is not Common-Lisp-conforming. For example, ``integer'' for 7106 Terminology is not Common-Lisp-conforming. For example, ``integer'' for
6265 Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being 7107 Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being
6266 investigated, but the use of ``integer'' for fixnum is pervasive and may 7108 investigated, but the use of ``integer'' for fixnum is pervasive and may
6282 disabled at runtime. New functions have been added which produce 7124 disabled at runtime. New functions have been added which produce
6283 ratios, so there should be few surprises with type conflicts, but they 7125 ratios, so there should be few surprises with type conflicts, but they
6284 can't be ruled out. ``Arbitrary'' precision means precisely what it 7126 can't be ruled out. ``Arbitrary'' precision means precisely what it
6285 says. If you work with extremely large numbers, your machine may 7127 says. If you work with extremely large numbers, your machine may
6286 arbitrarily decide to hand you an unpleasant surprise rather than a 7128 arbitrarily decide to hand you an unpleasant surprise rather than a
6287 bignum @ref{Q5.4.2}. 7129 bignum @ref{Q6.3.2, XEmacs segfaults when I use very big numbers!}.
6288 7130
6289 To configure with GNU MP, add 7131 To configure with GNU MP, add
6290 @samp{--use-number-lib=gmp} 7132 @samp{--use-number-lib=gmp}
6291 to your invocation of @file{configure}. For BSD MP, use 7133 to your invocation of @file{configure}. For BSD MP, use
6292 @samp{--use-number-lib=mp}. 7134 @samp{--use-number-lib=mp}.
6297 @file{number-mp.h}. Jerry has promised to write internals documentation 7139 @file{number-mp.h}. Jerry has promised to write internals documentation
6298 eventually, but if your skills run more to analysis and documentation 7140 eventually, but if your skills run more to analysis and documentation
6299 than to writing new code, feel free to fill in the gap! 7141 than to writing new code, feel free to fill in the gap!
6300 7142
6301 7143
6302 @node Q5.4.2, Q5.4.3, Q5.4.1, Miscellaneous 7144 @node Q6.3.2, Q6.3.3, Q6.3.1, Advanced
6303 @unnumberedsubsec Q5.4.2: XEmacs segfaults when I use very big numbers! 7145 @unnumberedsubsec Q6.3.2: XEmacs segfaults when I use very big numbers!
6304 7146
6305 GMP by default allocates temporaries on the stack. If you run out of 7147 GMP by default allocates temporaries on the stack. If you run out of
6306 stack space, you're dead; there is no way that we know of to reliably 7148 stack space, you're dead; there is no way that we know of to reliably
6307 detect this condition, because @samp{alloca} is typically implemented to 7149 detect this condition, because @samp{alloca} is typically implemented to
6308 be @emph{fast} rather than robust. If you just need a little more 7150 be @emph{fast} rather than robust. If you just need a little more
6315 @key{RET}}), which will give us platform information. (We do know that 7157 @key{RET}}), which will give us platform information. (We do know that
6316 BSD MP implementations vary across vendors, but how much, we do not know 7158 BSD MP implementations vary across vendors, but how much, we do not know
6317 yet.) 7159 yet.)
6318 7160
6319 7161
6320 @node Q5.4.3, Q5.4.4, Q5.4.2, Miscellaneous 7162 @node Q6.3.3, Q6.3.4, Q6.3.2, Advanced
6321 @unnumberedsubsec Q5.4.3: Bignums are really slow! 7163 @unnumberedsubsec Q6.3.3: Bignums are really slow!
6322 7164
6323 Many Linux distributions compile all their packages for the i386, and 7165 Many Linux distributions compile all their packages for the i386, and
6324 this is costly. An optimized version can give you two or three orders 7166 this is costly. An optimized version can give you two or three orders
6325 of magnitude better performance for a Pentium III or IV. (Yes, really. 7167 of magnitude better performance for a Pentium III or IV. (Yes, really.
6326 See @uref{http://www.swox.com/gmp/gmp-speed.html}.) 7168 See @uref{http://www.swox.com/gmp/gmp-speed.html}.)
6327 7169
6328 7170
6329 @node Q5.4.4, , Q5.4.3, Miscellaneous 7171 @node Q6.3.4, , Q6.3.3, Advanced
6330 @unnumberedsubsec Q5.4.4: Equal bignums don't compare as equal! What gives? 7172 @unnumberedsubsec Q6.3.4: Equal bignums don't compare as equal! What gives?
6331 7173
6332 Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva 7174 Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva
6333 CLTL2 warned of the illusion that equal numbers would be @samp{eq}! 7175 CLTL2 warned of the illusion that equal numbers would be @samp{eq}!
6334 Meditate on the deeper truths of @samp{eql}, in which numbers of the same 7176 Meditate on the deeper truths of @samp{eql}, in which numbers of the same
6335 type which have equal values compare equal, and @samp{=}, which does any 7177 type which have equal values compare equal, and @samp{=}, which does any
6339 characters have an immediate representation. Sorry about that; 7181 characters have an immediate representation. Sorry about that;
6340 arbitrary precision obviously requires consing new objects because the 7182 arbitrary precision obviously requires consing new objects because the
6341 objects are ``large'' and of variable size, and the definition of 7183 objects are ``large'' and of variable size, and the definition of
6342 @samp{eq} does not permit different objects to compare as equal. 7184 @samp{eq} does not permit different objects to compare as equal.
6343 7185
6344 7186 @node Current Events, Legacy Versions, Advanced, Top
6345 @node MS Windows, Current Events, Miscellaneous, Top
6346 @unnumbered 6 XEmacs on MS Windows
6347
6348 This is part 6 of the XEmacs Frequently Asked Questions list, written by
6349 Hrvoje Niksic and others. This section is devoted to the MS Windows
6350 port of XEmacs.
6351
6352 @menu
6353 General Info
6354 * Q6.0.1:: What is the status of the XEmacs port to Windows?
6355 * Q6.0.2:: What flavors of MS Windows are supported? The list name implies NT only.
6356 * Q6.0.3:: Are binaries available?
6357 * Q6.0.4:: Can I build XEmacs on MS Windows with X support? Do I need to?
6358 * Q6.0.5:: I'd like to help out. What do I do?
6359 * Q6.0.6:: What are Cygwin and MinGW, and do I need them to run XEmacs?
6360 * Q6.0.7:: What exactly are all the different ways to build XEmacs under Windows?
6361
6362 Building XEmacs on MS Windows:
6363 * Q6.1.1:: What compiler/libraries do I need to compile XEmacs?
6364 * Q6.1.2:: How do I compile the native port?
6365 * Q6.1.3:: What do I need for Cygwin?
6366 * Q6.1.4:: How do I compile under Cygwin?
6367 * Q6.1.5:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
6368 * Q6.1.6:: I decided to run with X. Where do I get an X server?
6369 * Q6.1.7:: How do I compile with X support?
6370
6371 Customization and User Interface:
6372 * Q6.2.1:: How does the port cope with differences in the Windows user interface?
6373 * Q6.2.2:: How do I change fonts in XEmacs on MS Windows?
6374 * Q6.2.3:: Where do I put my @file{init.el}/@file{.emacs} file?
6375 * Q6.2.4:: How do I get Windows Explorer to associate a file type with XEmacs?
6376 * Q6.2.5:: Is it possible to print from XEmacs?
6377
6378 Miscellaneous:
6379 * Q6.3.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
6380 * Q6.3.2:: What are the differences between the various MS Windows emacsen?
6381 * Q6.3.3:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
6382 * Q6.3.4:: What is the porting team doing at the moment?
6383
6384 Troubleshooting:
6385 * Q6.4.1:: XEmacs won't start on Windows.
6386 * Q6.4.2:: Why do I get a blank toolbar on Windows 95?
6387 * Q6.4.3:: XEmacs complains "No such file or directory, diff"
6388 @end menu
6389
6390 @node Q6.0.1, Q6.0.2, MS Windows, MS Windows
6391 @unnumberedsec 6.0: General Info
6392 @unnumberedsubsec Q6.0.1: What is the status of the XEmacs port to Windows?
6393
6394 Is XEmacs really ported to MS Windows? What is the status of the port?
6395
6396 Beginning with release 21.0, XEmacs has worked under MS Windows. A
6397 group of dedicated developers actively maintains and improves the
6398 Windows-specific portions of the code. The mailing list at
6399 @email{xemacs-nt@@xemacs.org} is dedicated to that effort (please use
6400 the -request address to subscribe). (Despite its name, XEmacs actually
6401 works on all versions of Windows.)
6402
6403 As of May 2001, XEmacs on MS Windows is stable and full-featured, and
6404 has been so for a year or more -- in fact, some features, such as
6405 printing, actually work better on Windows than native Unix. However,
6406 the internationalization (Mule) support does not work -- although this
6407 is being actively worked on.
6408
6409
6410 @node Q6.0.2, Q6.0.3, Q6.0.1, MS Windows
6411 @unnumberedsubsec Q6.0.2: What flavors of MS Windows are supported? The list name implies NT only.
6412
6413 The list name is misleading, as XEmacs supports and has been compiled on
6414 Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
6415 XP, and all newer versions of Windows. The MS Windows-specific code is
6416 based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
6417 MS-DOS.
6418
6419 XEmacs also supports the Cygwin and MinGW development and runtime
6420 environments, where it also uses native Windows code for graphical
6421 features.
6422
6423
6424 @node Q6.0.3, Q6.0.4, Q6.0.2, MS Windows
6425 @unnumberedsubsec Q6.0.3: Are binaries available?
6426
6427 Binaries are available at @uref{http://www.xemacs.org/Download/win32/}
6428 for the native and Cygwin MS Windows versions of 21.4, and the native
6429 version of 21.1.
6430
6431 The 21.4 binaries use a modified version of the Cygwin installer. Run
6432 the provided @file{setup.exe}, and follow the instructions.
6433
6434
6435 @node Q6.0.4, Q6.0.5, Q6.0.3, MS Windows
6436 @unnumberedsubsec Q6.0.4: Can I build XEmacs on MS Windows with X support? Do I need to?
6437
6438 Yes, you can, but no you do not need to. In fact, we recommend that you
6439 use a native-GUI version unless you have a specific need for an X
6440 version.
6441
6442 @node Q6.0.5, Q6.0.6, Q6.0.4, MS Windows
6443 @unnumberedsubsec Q6.0.5: I'd like to help out. What do I do?
6444
6445 It depends on the knowledge and time you possess. If you are a
6446 programmer, try to build XEmacs and see if you can improve it.
6447 Windows-specific improvements like integration with established
6448 Windows environments are especially sought after.
6449
6450 Otherwise, you can still help by downloading the binaries, using
6451 XEmacs as your everyday editor and reporting bugs you find to the
6452 mailing list.
6453
6454 Another area where we need help is the documentation: We need good
6455 documentation for building XEmacs and for using it. This FAQ is a
6456 small step in that direction.
6457
6458 @node Q6.0.6, Q6.0.7, Q6.0.5, MS Windows
6459 @unnumberedsubsec Q6.0.6: What are Cygwin and MinGW, and do I need them to run XEmacs?
6460
6461 To answer the second part of the question: No, you, you don't need
6462 Cygwin or MinGW to build or to run XEmacs. But if you have them and
6463 want to use them, XEmacs supports these environments.
6464
6465 (One important reason to support Cygwin is that it lets the MS Windows
6466 developers test out their code in a Unix environment without actually
6467 having to have a Unix machine around. For this reason alone, Cygwin
6468 support is likely to remain supported for a long time in XEmacs. Same
6469 goes for the X support under Cygwin, for the same reasons. MinGW
6470 support, on the other hand, depends on volunteers to keep it up to date;
6471 but this is generally not hard.)
6472
6473 Cygwin is a set of tools providing Unix-like API on top of Win32.
6474 It makes it easy to port large Unix programs without significant
6475 changes to their source code. It is a development environment as well
6476 as a runtime environment.
6477
6478 When built with Cygwin, XEmacs supports all display types -- TTY, X &
6479 Win32 GUI, and can be built with support for all three simultaneously.
6480 If you build with Win32 GUI support then the Cygwin version uses the
6481 majority of the Windows-specific code, which is mostly related to
6482 display. If you want to build with X support you need X libraries (and
6483 an X server to display XEmacs on); see @ref{Q6.1.4}. TTY and Win32 GUI
6484 require no additional libraries beyond what comes standard with Cygwin.
6485
6486 The advantages of the Cygwin version are that it integrates well with
6487 the Cygwin environment for existing Cygwin users; uses configure so
6488 building with different features is very easy; and actively supports X &
6489 TTY. Furthermore, the entire Cygwin environment and compiler are free,
6490 whereas Visual C++ costs money.
6491
6492 The disadvantage is that it requires the whole Cygwin environment,
6493 whereas the native port requires only a suitable MS Windows compiler.
6494 Also, it follows the Unix filesystem and process model very closely
6495 (some will undoubtedly view this as an advantage).
6496
6497 See @uref{http://sources.redhat.com/cygwin/} for more information on
6498 Cygwin.
6499
6500 MinGW is a collection of header files and import libraries that allow
6501 one to use GCC under the Cygwin environment to compile and produce
6502 exactly the same native Win32 programs that you can using Visual C++.
6503 Programs compiled with MinGW make use of the standard Microsoft runtime
6504 library @file{MSVCRT.DLL}, present on all Windows systems, and look,
6505 feel, and act like a standard Visual-C-produced application. (The only
6506 difference is the compiler.) This means that, unlike a
6507 standardly-compiled Cygwin application, no extra runtime support
6508 (e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the
6509 fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
6510 environment, for those die-hard Unix hackers out there), is the main
6511 advantage of MinGW. It is also potentially faster than Cygwin because
6512 it has less overhead when calling Windows, but you lose the POSIX
6513 emulation layer, which makes Unix programs harder to port. (But this is
6514 irrelevant for XEmacs since it's already ported to Win32.)
6515
6516 See @uref{http://www.mingw.org/} for more information on MinGW.
6517
6518 @node Q6.0.7, Q6.1.1, Q6.0.6, MS Windows
6519 @unnumberedsubsec Q6.0.7: What exactly are all the different ways to build XEmacs under Windows?
6520
6521 XEmacs can be built in several ways in the MS Windows environment.
6522
6523 The standard way is what we call the "native" port. It uses the Win32
6524 API and has no connection with X whatsoever -- it does not require X
6525 libraries to build, nor does it require an X server to run. The native
6526 port is the most reliable version and provides the best graphical
6527 support. Almost all development is geared towards this version, and
6528 there is little reason not to use it.
6529
6530 The second way to build is the Cygwin port. It takes advantage of
6531 Cygnus emulation library under Win32. @xref{Q6.0.6}, for more
6532 information.
6533
6534 A third way is the MinGW port. It uses the Cygwin environment to build
6535 but does not require it at runtime. @xref{Q6.0.6}, for more
6536 information.
6537
6538 Finally, you might also be able to build the non-Cygwin, non-MinGW "X"
6539 port. This was actually the first version of XEmacs that ran under MS
6540 Windows, and although the code is still in XEmacs, it's essentially
6541 orphaned and it's unlikely it will compile without a lot of work. If
6542 you want an MS Windows versin of XEmacs that supports X, use the Cygwin
6543 version. (The X support there is actively maintained, so that Windows
6544 developers can test the X support in XEmacs.)
6545
6546
6547 @node Q6.1.1, Q6.1.2, Q6.0.7, MS Windows
6548 @unnumberedsec 6.1: Building XEmacs on MS Windows
6549 @unnumberedsubsec Q6.1.1: What compiler/libraries do I need to compile XEmacs?
6550
6551 You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
6552 some beta testers currently trying to compile with VC.NET, aka version
6553 7.0, but we can't yet report complete success.) For the Cygwin and MinGW
6554 versions, you need the Cygwin environment, which comes with GCC, the
6555 compiler used for those versions. @xref{Q6.0.6}, for more information
6556 on Cygwin and MinGW.
6557
6558 @node Q6.1.2, Q6.1.3, Q6.1.1, MS Windows
6559 @unnumberedsubsec Q6.1.2: How do I compile the native port?
6560
6561 Please read the file @file{nt/README} in the XEmacs distribution, which
6562 contains the full description.
6563
6564 @node Q6.1.3, Q6.1.4, Q6.1.2, MS Windows
6565 @unnumberedsubsec Q6.1.3: What do I need for Cygwin?
6566
6567 You can find the Cygwin tools and compiler at:
6568
6569 @uref{http://sources.redhat.com/cygwin/}
6570
6571 Click on the @samp{Install now!} link, which will download a file
6572 @file{setup.exe}, which you can use to download everything else. (You
6573 will need to pick a mirror site; @samp{mirrors.rcn.net} is probably the
6574 best.) You should go ahead and install everything -- you'll get various
6575 ancillary libraries that XEmacs needs or likes, e.g. XPM, PNG, JPEG,
6576 TIFF, etc.
6577
6578 If you want to compile under X, you will also need the X libraries; see
6579 @ref{Q6.1.6}.
6580
6581 If you want to compile without X, you will need the @file{xpm-nox}
6582 library, which must be specifically selected in the Cygwin netinstaller;
6583 it is not selected by default. The package has had various names.
6584 Currently it is called @file{cygXpm-noX4.dll}.
6585
6586
6587 @node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows
6588 @unnumberedsubsec Q6.1.4: How do I compile under Cygwin?
6589
6590 Similar as on Unix; use the usual `configure' and `make' process.
6591 Some problems to watch out for:
6592
6593 @itemize @bullet
6594 @item
6595 make sure HOME is set. This controls where you
6596 @file{init.el}/@file{.emacs} file comes from;
6597
6598 @item
6599 CYGWIN needs to be set to tty for process support to work, e.g. CYGWIN=tty;
6600
6601 @item
6602 picking up some other grep or other UNIX-like tools can kill configure;
6603
6604 @item
6605 static heap too small, adjust @file{src/sheap-adjust.h} to a more positive
6606 number;
6607
6608 @item
6609 (Unconfirmed) The Cygwin version doesn't understand
6610 @file{//machine/path} type paths so you will need to manually mount a
6611 directory of this form under a unix style directory for a build to work
6612 on the directory;
6613
6614 @item
6615 If you're building @strong{WITHOUT} X11, don't forget to change symlinks
6616 @file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to
6617 the non-X versions of these libraries. By default they point to the X
6618 versions. So:
6619
6620 @example
6621 /usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a
6622 /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
6623 @end example
6624
6625 (This advice may now be obsolete because of the availability of the
6626 cygXpm-noX4.dll package from Cygwin. Send confirmation to
6627 @email{faq@@xemacs.org}.)
6628
6629 @item
6630 Other problems are listed in the @file{PROBLEMS} file, in the top-level
6631 directory of the XEmacs sources.
6632
6633 @end itemize
6634
6635
6636 @node Q6.1.5, Q6.1.6, Q6.1.4, MS Windows
6637 @unnumberedsubsec Q6.1.5: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
6638
6639 Similar to the method for Unix. Things to remember:
6640
6641 @itemize @bullet
6642 @item
6643 Specify the target host on the command line for @file{./configure}, e.g.
6644 @samp{./configure i586-pc-mingw32}.
6645
6646 @item
6647 Be sure that your build directory is mounted such that it has the
6648 same path either as a cygwin path (@file{/build/xemacs}) or as a Windows
6649 path (@file{c:\build\xemacs}).
6650
6651 @item
6652 Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng},
6653 @file{compface}, etc.
6654
6655 @item
6656 Specify the target location of the extra libs on the command line
6657 to @file{configure}, e.g.
6658 @samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}.
6659 @end itemize
6660
6661
6662 @node Q6.1.6, Q6.1.7, Q6.1.5, MS Windows
6663 @unnumberedsubsec Q6.1.6: I decided to run with X. Where do I get an X server?
6664
6665 As of May 2001, we are recommending that you use the port of XFree86 to
6666 Cygwin. This has recently stabilized, and will undoubtedly soon make
6667 most other MS Windows X servers obsolete. It is what the Windows
6668 developers use to test the MS Windows X support.
6669
6670 To install, go to @uref{http://xfree86.cygwin.com/}. There is a
6671 detailed description on that site of exactly how to install it. This
6672 installation also provides the libraries, include files, and other stuff
6673 needed for development; a large collection of internationalized fonts;
6674 the standard X utilities (xterm, twm, etc.) -- in a word, the works.
6675
6676 NOTE: As of late May 2001, there is a bug in the file
6677 @file{startxwin.bat}, used to start X Windows. It passes the option
6678 @samp{-engine -4} to the X server, which is bogus -- you need to edit
6679 the file and change it to @samp{-engine 4}.
6680
6681
6682 @node Q6.1.7, Q6.2.1, Q6.1.6, MS Windows
6683 @unnumberedsubsec Q6.1.7: How do I compile with X support?
6684
6685 To compile under Cygwin, all you need to do is install XFree86
6686 (@pxref{Q6.1.6}). Once installed, @file{configure} should automatically
6687 find the X libraries and compile with X support.
6688
6689 As noted above, the non-Cygwin X support is basically orphaned, and
6690 probably won't work. But if it want to try, it's described in
6691 @file{nt/README} in some detail. Basically, you need to get X11
6692 libraries from ftp.x.org, and compile them. If the precompiled versions
6693 are available somewhere, we don't know of it.
6694
6695
6696 @node Q6.2.1, Q6.2.2, Q6.1.7, MS Windows
6697 @unnumberedsec 6.2: Customization and User Interface
6698 @unnumberedsubsec Q6.2.1: How does the port cope with differences in the Windows user interface?
6699
6700 The XEmacs (and Emacs in general) user interface is pretty different
6701 from what is expected of a typical MS Windows program. How does the MS
6702 Windows port cope with it?
6703
6704 As a general rule, we follow native MS Windows conventions as much as
6705 possible. 21.4 is a fairly complete Windows application, supporting
6706 native printing, system file dialog boxes, tool tips, etc. In cases
6707 where there's a clear UI conflict, we currently use normal Unix XEmacs
6708 behavior by default, but make sure the MS Windows "look and feel" (mark
6709 via shift-arrow, self-inserting deletes region, Alt selects menu items,
6710 etc.) is easily configurable (respectively: using the variable
6711 @code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact
6712 the default in these versions], or the @file{pc-select} package; using
6713 the @file{pending-del} package; and setting the variable
6714 @code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above).
6715 In fact, if you use the sample @file{init.el} file as your init file,
6716 you will get all these behaviors automatically turned on.
6717
6718 In future versions, some of these features might be turned on by
6719 default in the MS Windows environment.
6720
6721
6722 @node Q6.2.2, Q6.2.3, Q6.2.1, MS Windows
6723 @unnumberedsubsec Q6.2.2: How do I change fonts in XEmacs on MS Windows?
6724
6725 In 21.4 and above, you can use the "Options" menu to change the font.
6726 You can also do it in your init file, e.g. like this:
6727
6728 @display
6729 (set-face-font 'default "Lucida Console:Regular:10")
6730 (set-face-font 'modeline "MS Sans Serif:Regular:10")
6731 @end display
6732
6733
6734 @node Q6.2.3, Q6.2.4, Q6.2.2, MS Windows
6735 @unnumberedsubsec Q6.2.3: Where do I put my @file{init.el}/@file{.emacs} file?
6736
6737 @file{init.el} is the name of the init file starting with 21.4, and is
6738 located in the subdirectory @file{.xemacs/} of your home directory. In
6739 prior versions, the init file is called @file{.emacs} and is located in
6740 your home directory. Your home directory under Windows is determined by
6741 the @samp{HOME} environment variable. If this is not set, it defaults to
6742 @samp{C:\}.
6743
6744 To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
6745 select @samp{Control Panel->System->Advanced->Environment Variables...}
6746 under Windows NT/2000.
6747
6748
6749 @node Q6.2.4, Q6.2.5, Q6.2.3, MS Windows
6750 @unnumberedsubsec Q6.2.4: How do I get Windows Explorer to associate a file type with XEmacs?
6751
6752 @unnumberedsubsubsec Associating a new file type with XEmacs.
6753
6754 In Explorer select @samp{View/Options/File Types}, press @samp{[New
6755 Type...]} and fill in the dialog box, e.g.:
6756
6757 @example
6758 Description of type: Emacs Lisp source
6759 Associated extension: el
6760 Content Type (MIME): text/plain
6761 @end example
6762
6763 then press @samp{[New...]} and fill in the @samp{Action} dialog box as
6764 follows:
6765
6766 @example
6767 Action:
6768 Open
6769
6770 Application used to perform action:
6771 D:\Full\path\for\xemacs.exe "%1"
6772
6773 [x] Use DDE
6774
6775 DDE Message:
6776 open("%1")
6777
6778 Application:
6779 <leave blank>
6780
6781 DDE Application Not Running:
6782 <leave blank>
6783
6784 Topic:
6785 <leave blank>
6786 @end example
6787
6788 @unnumberedsubsubsec Associating an existing file type with XEmacs.
6789
6790 In Explorer select @samp{View/Options/File Types}. Click on the file
6791 type in the list and press @samp{[Edit...]}. If the file type already
6792 has an @samp{Open} action, double click on it and fill in the
6793 @samp{Action} dialog box as described above; otherwise create a new
6794 action.
6795
6796 If the file type has more than one action listed, you probably want to
6797 make the @samp{Open} action that you just edited the default by clicking on
6798 it and pressing @samp{Set Default}.
6799
6800 Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types}
6801 using @samp{Control Panel->Folder Options->File Types}.
6802
6803
6804 @node Q6.2.5, Q6.3.1, Q6.2.4, MS Windows
6805 @unnumberedsubsec Q6.2.5: Is it possible to print from XEmacs?
6806
6807 As of 21.4, printing works on Windows, using simply @samp{File->Print},
6808 and can be configured with @samp{File->Page Setup}.
6809
6810 Prior to 21.4, there is no built-in support, but there are some clever
6811 hacks out there. If you know how, please let us know and we'll put it
6812 here.
6813
6814
6815 @node Q6.3.1, Q6.3.2, Q6.2.5, MS Windows
6816 @unnumberedsec 6.3: Miscellaneous
6817 @unnumberedsubsec Q6.3.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
6818
6819 In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*}
6820 symbols to @samp{w32-*}. Does XEmacs do the same?
6821
6822 We consider such a move counter-productive, thus we do not use the
6823 @samp{w32} prefix. (His rather questionable justification was that he
6824 did not consider Windows to be a "winning" platform.) However, the name
6825 @samp{Win32} is not particularly descriptive outside the Windows world,
6826 and using just @samp{windows-} would be too generic. So we chose a
6827 compromise, the prefix @samp{mswindows-} for Windows-related variables
6828 and functions.
6829
6830 Thus all the XEmacs variables and functions directly related to either
6831 the Windows GUI or OS are prefixed @samp{mswindows-} (except for a
6832 couple of debugging variables, prefixed @samp{debug-mswindows-}). From
6833 an architectural perspective, however, we believe that this is mostly a
6834 non-issue because there should be a very small number of
6835 window-systems-specific variables anyway. Whenever possible, we try to
6836 provide generic interfaces that apply to all window systems.
6837
6838 @c not true:
6839 @c The user variables
6840 @c that share functionality with existing NT Emacs variables are be named
6841 @c with our convention, but we provide the GNU Emacs names as
6842 @c compatibility aliases.
6843
6844
6845 @node Q6.3.2, Q6.3.3, Q6.3.1, MS Windows
6846 @unnumberedsubsec Q6.3.2: What are the differences between the various MS Windows emacsen?
6847
6848 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
6849 Could you briefly explain the differences between them?
6850
6851 Here is a recount of various Emacs versions running on MS Windows:
6852
6853 @itemize @bullet
6854
6855 @item
6856 XEmacs
6857
6858 @itemize @minus
6859
6860 @item
6861 Beginning with XEmacs 19.12, XEmacs' architecture was redesigned
6862 in such a way to allow clean support of multiple window systems. At
6863 this time the TTY support was added, making X and TTY the first two
6864 "window systems" supported by XEmacs. The 19.12 design is the basis for
6865 the current native MS Windows code.
6866
6867 @item
6868 Some time during 1997, David Hobley (soon joined by Marc Paquette)
6869 imported some of the NT-specific portions of GNU Emacs, making XEmacs
6870 with X support compile under Windows NT, and creating the "X" port.
6871
6872 @item
6873 Several months later, Jonathan Harris sent out initial patches to use
6874 the Win32 API, thus creating the native port. Since then, various
6875 people have contributed, including Kirill M. Katsnelson (contributed
6876 support for menubars, subprocesses and network, as well as loads of
6877 other code), Andy Piper (ported XEmacs to Cygwin environment,
6878 contributed Windows unexec, Windows-specific glyphs and toolbars code,
6879 and more), Ben Wing (loads of improvements; primary MS Windows developer
6880 since 2000), Jeff Sparkes (contributed scrollbars support) and many
6881 others.
6882 @end itemize
6883
6884 @item
6885 NT Emacs
6886
6887 @itemize @minus
6888
6889 @item
6890 NT Emacs is a version of GNU Emacs modified to compile and run under MS
6891 Windows 95 and NT using the native Win32 API. As such, it is close in
6892 spirit to the XEmacs "native" port.
6893
6894 @item
6895 NT Emacs has been written by Geoff Voelker, and more information can be
6896 found at
6897 @iftex
6898 @*
6899 @end iftex
6900 @uref{http://www.gnu.org/software/emacs/windows/ntemacs.html}.
6901 @end itemize
6902
6903 @item
6904 Win-Emacs
6905
6906 @itemize @minus
6907
6908 @item
6909 Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
6910 compatibility libraries. Win-Emacs was written by Ben Wing. The MS
6911 Windows code never made it back to Lucid Emacs, and its creator (Pearl
6912 Software) has long since gone out of business.
6913 @end itemize
6914
6915 @item
6916 GNU Emacs for DOS
6917
6918 @itemize @minus
6919
6920 @item
6921 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
6922 port of GCC). Such an Emacs is heavily underfeatured, because it does
6923 not support long file names, lacks proper subprocesses support, and
6924 is far too big compared with typical DOS editors.
6925 @end itemize
6926
6927 @item
6928 GNU Emacs compiled with Win32
6929
6930 @itemize @minus
6931
6932 @item
6933 Starting with version 19.30, it has been possible to compile GNU Emacs
6934 under MS Windows using the DJGPP compiler and X libraries. The result
6935 is very similar to GNU Emacs compiled under MS DOS, only it works
6936 somewhat better because it runs in 32-bit mode, makes use of all the
6937 system memory, supports long file names, etc.
6938 @end itemize
6939
6940 @end itemize
6941
6942
6943 @node Q6.3.3, Q6.3.4, Q6.3.2, MS Windows
6944 @unnumberedsubsec Q6.3.3: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
6945
6946 Yes.
6947
6948 The console was there because @file{temacs} (and in turn, @file{xemacs})
6949 was a console application, and Windows typically creates a new
6950 console for a console process unless the creating process requests that
6951 one isn't created. This used to be fixed with @file{runemacs}, a small
6952 Windows application that existed merely to start @file{xemacs}, stating
6953 that it didn't want a console.
6954
6955 XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
6956 application. The explanation of what that means is included for
6957 educational value.
6958
6959 When building an application to be run in a Win32 environment, you must
6960 state which sub-system it is to run in. Valid subsystems include
6961 "console" and "gui". The subsystem you use affects the run time
6962 libraries linked into your application, the start up function that is
6963 run before control is handed over to your application, the entry point
6964 to your program, and how Windows normally invokes your program. (Console
6965 programs automatically get a console created for them at startup if
6966 their stdin/stdout don't point anywhere useful, which is the case when
6967 run from the GUI. This is a stupid design, of course -- instead, the
6968 console should get created only when the first I/O actually occurs!
6969 GUI programs have an equally stupid design: When called from
6970 @file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to
6971 point nowhere useful, even though the command shell has its own
6972 stdin/stdout. It's as if someone who had learned a bit about stdio but
6973 had no actual knowledge of interprocess communication designed the
6974 scheme; unfortunately, the whole process-communication aspect of the
6975 Win32 API is equally badly designed.) For example, the entry point for a
6976 console app is "main" (which is what you'd expect for a C/C++ program),
6977 but the entry point for a "gui" app is "WinMain". This confuses and
6978 annoys a lot of programmers who've grown up on Unix systems, where the
6979 kernel doesn't really care whether your application is a gui program or
6980 not.
6981
6982 For reasons not altogether clear, and are lost in the mists of time and
6983 tradition, XEmacs on Win32 started out as a console application, and
6984 therefore a console was automatically created for it. (It may have been
6985 made a console application partly because a console is needed in some
6986 circumstances, especially under Win95, to interrupt, terminate, or send
6987 signals to a child process, and because of the bogosity mentioned above
6988 with GUI programs and the standard command shell. Currently, XEmacs
6989 just creates and immediately hides a console when necessary, and
6990 works around the "no useful stdio" problem by creating its own console
6991 window as necessary to display messages in.)
6992
6993
6994 @node Q6.3.4, Q6.4.1, Q6.3.3, MS Windows
6995 @unnumberedsubsec Q6.3.4: What is the porting team doing at the moment?
6996
6997 (as of June 2001)
6998
6999 The porting team is continuing work on the MS Windows-specific code.
7000 Major projects are the development of Mule (internationalization)
7001 support for Windows and the improvement of the widget support (better
7002 support for dialog boxes, buttons, edit fields, and similar UI
7003 elements).
7004
7005
7006
7007 @node Q6.4.1, Q6.4.2, Q6.3.4, MS Windows
7008 @unnumberedsec 6.4: Troubleshooting
7009 @unnumberedsubsec Q6.4.1 XEmacs won't start on Windows.
7010
7011 XEmacs relies on a process called "dumping" to generate a working
7012 executable. Under MS-Windows this process effectively fixes the memory
7013 addresses of information in the executable. When XEmacs starts up it tries
7014 to reserve these memory addresses so that the dumping process can be
7015 reversed -- putting the information back at the correct addresses.
7016 Unfortunately some .DLLs (for instance the soundblaster driver) occupy
7017 memory addresses that can conflict with those needed by the dumped XEmacs
7018 executable. In this instance XEmacs will fail to start without any
7019 explanation. Note that this is extremely machine specific.
7020
7021 21.1.10 includes a fix for this that makes more intelligent guesses
7022 about which memory addresses will be free, and this should cure the
7023 problem for most people. 21.4 implements "portable dumping", which
7024 eliminates the problem altogether. We recommend you use the 21.4
7025 binaries, but you can use the 21.1 binaries if you are very paranoid
7026 about stability. @xref{Q6.0.3}.
7027
7028 @node Q6.4.2, Q6.4.3, Q6.4.1, MS Windows
7029 @unnumberedsubsec Q6.4.2 Why do I get a blank toolbar on Windows 95?
7030
7031 You need at least version 4.71 of the system file @file{comctl32.dll}.
7032 The updated version is supplied with Internet Explorer 4 and later but if
7033 you are avoiding IE you can also download it from the Microsoft web
7034 site. Go into support and search for @file{comctl32.dll}. The download
7035 is a self-installing executable.
7036
7037 @node Q6.4.3, , Q6.4.2, MS Windows
7038 @unnumberedsubsec Q6.4.3 XEmacs complains "No such file or directory, diff"
7039
7040 or "ispell" or other commands that seem related to whatever you just
7041 tried to do (M-x ediff or M-$, for example).
7042
7043 There are a large number of common (in the sense that "everyone has
7044 these, they really do") Unix utilities that are not provided with
7045 XEmacs. The GNU Project's implementations are available for Windows in
7046 the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also
7047 provides a complete Unix emulation environment (and thus makes ports of
7048 Unix utilities nearly trivial). Another implementation is that from
7049 MinGW (@uref{http://www.mingw.org/msys.shtml}). If you know of others,
7050 please let us know!
7051
7052
7053
7054 @node Current Events, Legacy Versions, MS Windows, Top
7055 @unnumbered 7 What the Future Holds 7187 @unnumbered 7 What the Future Holds
7056 7188
7057 This is part 7 of the XEmacs Frequently Asked Questions list. This 7189 This is part 7 of the XEmacs Frequently Asked Questions list. This
7058 section will change frequently, and (in theory) should contain any 7190 section will change frequently, and (in theory) should contain any
7059 interesting items that have transpired recently. (But in practice it's 7191 interesting items that have transpired recently. (But in practice it's
7069 Information on older versions of XEmacs can be find in @file{ONEWS} in 7201 Information on older versions of XEmacs can be find in @file{ONEWS} in
7070 the same directory, or @file{OONEWS} for really old versions. 7202 the same directory, or @file{OONEWS} for really old versions.
7071 7203
7072 7204
7073 @menu 7205 @menu
7074 * Q7.0.1:: What new features will be in XEmacs soon? 7206 7.0: Changes
7075 * Q7.0.2:: What's new in XEmacs 21.4? 7207 * Q7.0.1:: What new features will be in XEmacs soon?
7076 * Q7.0.3:: What's new in XEmacs 21.1? 7208 * Q7.0.2:: What's new in XEmacs 21.4?
7077 * Q7.0.4:: What's new in XEmacs 20.4? 7209 * Q7.0.3:: What's new in XEmacs 21.1?
7078 * Q7.0.5:: What's new in XEmacs 20.3? 7210 * Q7.0.4:: What's new in XEmacs 20.4?
7079 * Q7.0.6:: What's new in XEmacs 20.2? 7211 * Q7.0.5:: What's new in XEmacs 20.3?
7212 * Q7.0.6:: What's new in XEmacs 20.2?
7080 @end menu 7213 @end menu
7081 7214
7215 @unnumberedsec 7.0: Changes
7216
7082 @node Q7.0.1, Q7.0.2, Current Events, Current Events 7217 @node Q7.0.1, Q7.0.2, Current Events, Current Events
7083 @unnumberedsec 7.0: Changes
7084 @unnumberedsubsec Q7.0.1: What new features will be in XEmacs soon? 7218 @unnumberedsubsec Q7.0.1: What new features will be in XEmacs soon?
7085 7219
7086 Not yet written. 7220 #### Write me.
7087 7221
7088 @node Q7.0.2, Q7.0.3, Q7.0.1, Current Events 7222 @node Q7.0.2, Q7.0.3, Q7.0.1, Current Events
7089 @unnumberedsubsec Q7.0.2: What's new in XEmacs 21.4? 7223 @unnumberedsubsec Q7.0.2: What's new in XEmacs 21.4?
7090 7224
7091 21.4 was the "stable" version of the 21.2 series, which was considered 7225 21.4 was the "stable" version of the 21.2 series, which was considered
7129 XEmacs support for menu accelerators has been much improved. 7263 XEmacs support for menu accelerators has been much improved.
7130 @item 7264 @item
7131 Default menubar improvements. (Default menubar has many new commands and 7265 Default menubar improvements. (Default menubar has many new commands and
7132 better organization. The font-menu is now available under MS Windows.) 7266 better organization. The font-menu is now available under MS Windows.)
7133 @item 7267 @item
7134 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...) 7268 Dialog box improvements, including a real file dialog box. (XEmacs now
7269 has a proper file dialog box under MS Windows (and GTK)! The old
7270 clunky file dialog box is improved. Keyboard traversal now works
7271 correctly in MS Windows dialog boxes. There is a Search dialog box
7272 available from @samp{Edit->Find...})
7135 @item 7273 @item
7136 New buffer tabs. 7274 New buffer tabs.
7137 @item 7275 @item
7138 There is a new MS Windows installer, netinstall, ported from Cygwin. 7276 There is a new MS Windows installer, netinstall, ported from Cygwin.
7139 @item 7277 @item
7205 7343
7206 @node Q7.0.3, Q7.0.4, Q7.0.2, Current Events 7344 @node Q7.0.3, Q7.0.4, Q7.0.2, Current Events
7207 @unnumberedsubsec Q7.0.3: What's new in XEmacs 21.1? 7345 @unnumberedsubsec Q7.0.3: What's new in XEmacs 21.1?
7208 7346
7209 21.1 was the "stable" version of "experimental" 21.0 series. 7347 21.1 was the "stable" version of "experimental" 21.0 series.
7210 @xref{Q7.0.2}. 7348 @xref{Q7.0.2, What's new in XEmacs 21.4?}.
7211 7349
7212 The following lists summarizes the essential changes made in this 7350 The following lists summarizes the essential changes made in this
7213 version. For a fuller list, see the @file{NEWS} in the @file{etc} 7351 version. For a fuller list, see the @file{NEWS} in the @file{etc}
7214 directory of the XEmacs distribution, or use @kbd{C-h n} or the 7352 directory of the XEmacs distribution, or use @kbd{C-h n} or the
7215 @samp{Help} menu to view this file inside of XEmacs. 7353 @samp{Help} menu to view this file inside of XEmacs.
7217 @unnumberedsubsubsec User-visible changes in XEmacs 21.1 7355 @unnumberedsubsubsec User-visible changes in XEmacs 21.1
7218 7356
7219 @itemize @bullet 7357 @itemize @bullet
7220 7358
7221 @item 7359 @item
7222 XEmacs is now supported under Microsoft Windows 95/98 and Windows NT 7360 XEmacs is now supported under Microsoft Windows 95/98/ME and Windows
7223 operating systems. To discuss Windows-specific issues, subscribe to the 7361 NT/2000/XP operating systems. To discuss Windows-specific issues,
7224 mailing list at @email{xemacs-nt-request@@xemacs.org}. 7362 subscribe to the mailing list at
7363 @email{xemacs-winnt-request@@xemacs.org}.
7225 7364
7226 @item 7365 @item
7227 XEmacs has been unbundled into constituent installable packages. 7366 XEmacs has been unbundled into constituent installable packages.
7228 7367
7229 @item 7368 @item
7365 the default) is definitely faster than XEmacs 19.16. 7504 the default) is definitely faster than XEmacs 19.16.
7366 7505
7367 XEmacs 20.3 is the first non-beta v20 release, and will be the 7506 XEmacs 20.3 is the first non-beta v20 release, and will be the
7368 basis for all further development. 7507 basis for all further development.
7369 7508
7370 @node Q7.0.6, , Q7.0.5, Current Events 7509 @node Q7.0.6, , Q7.0.5, Current Events
7371 @unnumberedsubsec Q7.0.6: What's new in XEmacs 20.2? 7510 @unnumberedsubsec Q7.0.6: What's new in XEmacs 20.2?
7372 7511
7373 The biggest changes in 20.2 include integration of EFS (the next 7512 The biggest changes in 20.2 include integration of EFS (the next
7374 generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a 7513 generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a
7375 major mode for editing Tex and LaTeX, and a lot of other stuff). Many 7514 major mode for editing Tex and LaTeX, and a lot of other stuff). Many
7381 considered unstable. 7520 considered unstable.
7382 7521
7383 For older news, see the file @file{ONEWS} in the @file{etc} directory of 7522 For older news, see the file @file{ONEWS} in the @file{etc} directory of
7384 the XEmacs distribution. 7523 the XEmacs distribution.
7385 7524
7386 7525 @node Legacy Versions, , Current Events, Top
7387
7388 @node Legacy Versions, , Current Events, Top
7389 @unnumbered 8 New information about old XEmacsen 7526 @unnumbered 8 New information about old XEmacsen
7390 7527
7391 This is part 8 of the XEmacs Frequently Asked Questions list. It will 7528 This is part 8 of the XEmacs Frequently Asked Questions list. It will
7392 occasionally be updated to reflect new information about versions which 7529 occasionally be updated to reflect new information about versions which
7393 are no longer being revised by the XEmacs Project. The primary purpose 7530 are no longer being revised by the XEmacs Project. The primary purpose
7394 is advice on compatibility of older XEmacsen with new packages and 7531 is advice on compatibility of older XEmacsen with new packages and
7395 updated versions of packages, but bug fixes (which will not be applied 7532 updated versions of packages, but bug fixes (which will not be applied
7396 to released XEmacsen, but users can apply themselves) are also accepted. 7533 to released XEmacsen, but users can apply themselves) are also accepted.
7397 7534
7398
7399 @menu 7535 @menu
7400 * Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. 7536 * Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1.
7401 @end menu 7537 @end menu
7402 7538
7403 @node Q8.0.1, , , Legacy Versions 7539 @unnumberedsec 8.0: XEmacs 21.1
7404 @unnumberedsec 8.0 XEmacs 21.1 7540
7541 @node Q8.0.1, , Legacy Versions, Legacy Versions
7405 @unnumberedsubsec Q8.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1. 7542 @unnumberedsubsec Q8.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1.
7406 7543
7407 @email{eeide@@cs.utah.edu, Eric Eide} wrote: 7544 @email{eeide@@cs.utah.edu, Eric Eide} wrote:
7408 7545
7409 @quotation 7546 @quotation
7437 7574
7438 The image-mode stuff is gone from format-alist in the 21.4 7575 The image-mode stuff is gone from format-alist in the 21.4
7439 branch, praise be. 7576 branch, praise be.
7440 @end quotation 7577 @end quotation
7441 7578
7442
7443 @bye 7579 @bye