442
|
1 \input texinfo.tex @c -*- mode: texinfo; coding: iso-2022-8 -*-
|
428
|
2 @c %**start of header
|
|
3 @setfilename ../info/xemacs-faq.info
|
|
4 @settitle Frequently asked questions about XEmacs
|
|
5 @setchapternewpage off
|
|
6 @c %**end of header
|
|
7 @finalout
|
|
8 @titlepage
|
|
9 @title XEmacs FAQ
|
2537
|
10 @subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2005/01/31 20:08:48 $
|
428
|
11 @sp 1
|
2417
|
12 @author Ben Wing <ben@@xemacs.org>
|
1869
|
13 @author Tony Rossini <rossini@@u.washington.edu>
|
428
|
14 @author Chuck Thompson <cthomp@@xemacs.org>
|
|
15 @author Steve Baur <steve@@xemacs.org>
|
|
16 @author Andreas Kaempf <andreas@@sccon.com>
|
|
17 @author Christian Nyb@o{} <chr@@mediascience.no>
|
434
|
18 @author Sandra Wambold <wambold@@xemacs.org>
|
428
|
19 @page
|
|
20 @end titlepage
|
|
21
|
|
22 @ifinfo
|
|
23 @dircategory XEmacs Editor
|
|
24 @direntry
|
440
|
25 * FAQ: (xemacs-faq). XEmacs FAQ.
|
428
|
26 @end direntry
|
|
27 @end ifinfo
|
|
28
|
2417
|
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
|
428
|
130 @node Top, Introduction, (dir), (dir)
|
|
131 @top XEmacs FAQ
|
|
132
|
|
133 This is the guide to the XEmacs Frequently Asked Questions list---a
|
|
134 compendium of questions and answers pertaining to one of the finest
|
442
|
135 programs ever written. XEmacs is much more than just a Text Editor.
|
|
136
|
|
137 This FAQ is freely redistributable. This FAQ is distributed in the hope
|
|
138 that it will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
139 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
428
|
140
|
|
141 If you have a Web browser, the official hypertext version is at
|
|
142 @iftex
|
|
143 @*
|
|
144 @end iftex
|
1143
|
145 @uref{http://www.xemacs.org/FAQ/xemacs-faq.html}
|
428
|
146
|
|
147 @ifset CANONICAL
|
|
148 @html
|
|
149 This document is available in several different formats:
|
|
150 @itemize @bullet
|
|
151 @item
|
|
152 @uref{xemacs-faq.txt, As a single ASCII file}, produced by
|
|
153 @code{makeinfo --no-headers}
|
|
154 @item
|
|
155 @uref{xemacs-faq.dvi, As a .dvi file}, as used with
|
|
156 @uref{http://www.tug.org, TeX.}
|
|
157 @item
|
|
158 As a PostScript file @uref{xemacs-faq-a4.ps, in A4 format},
|
|
159 as well as in @uref{xemacs-faq-letter.ps, letter format}
|
|
160 @item
|
|
161 In html format, @uref{xemacs-faq_1.html, split by chapter}, or in
|
|
162 @uref{xemacs-faq.html, one monolithic} document.
|
|
163 @item
|
|
164 The canonical version of the FAQ is the texinfo document
|
|
165 @uref{xemacs-faq.texi, man/xemacs-faq.texi}.
|
|
166 @item
|
|
167 If you do not have makeinfo installed, you may @uref{xemacs-faq.info,
|
|
168 download the faq} in info format, and install it in @file{<XEmacs
|
|
169 library directory>/info/}. For example in
|
462
|
170 @file{/usr/local/lib/xemacs-21.4/info/}.
|
428
|
171
|
|
172 @end itemize
|
|
173
|
|
174 @end html
|
|
175
|
|
176 @end ifset
|
|
177
|
|
178 @c end ifset points to CANONICAL
|
|
179
|
|
180 @menu
|
2417
|
181 * Introduction:: Introduction, Policy, Credits.
|
|
182 * Installation:: Installation and Troubleshooting.
|
2459
|
183 * Editing:: Editing Functions.
|
|
184 * Display:: Display Functions.
|
2417
|
185 * External Subsystems:: Interfacing with the OS and External Devices.
|
|
186 * Internet:: Connecting to the Internet.
|
|
187 * Advanced:: Advanced Customization Using XEmacs Lisp.
|
2459
|
188 * Other Packages:: Other External Packages.
|
2417
|
189 * Current Events:: What the Future Holds.
|
|
190 * Legacy Versions:: New information about old XEmacsen.
|
428
|
191
|
|
192 @detailmenu
|
|
193 --- The Detailed Node Listing ---
|
|
194
|
2417
|
195 1 Introduction, Policy, Credits
|
|
196
|
2537
|
197 1.0: What is XEmacs?
|
2417
|
198 * Q1.0.1:: What is XEmacs?
|
|
199 * Q1.0.2:: What is the current version of XEmacs?
|
2537
|
200 * Q1.0.3:: How do you pronounce XEmacs?
|
|
201 * Q1.0.4:: What does XEmacs look like?
|
|
202 * Q1.0.5:: Who wrote XEmacs?
|
|
203 * Q1.0.6:: Who wrote the FAQ?
|
|
204
|
|
205 1.1: Getting XEmacs
|
|
206 * Q1.1.1:: Where can I find XEmacs?
|
|
207 * Q1.1.2:: Are binaries available?
|
|
208 * Q1.1.3:: How do I get the bleeding-edge sources?
|
|
209 * Q1.1.4:: Where can I obtain a printed copy of the XEmacs User's Manual?
|
|
210
|
|
211 1.2: Versions for Different Operating Systems
|
|
212 * Q1.2.1:: Do I need X11 to run XEmacs?
|
|
213 * Q1.2.2:: What versions of Unix does XEmacs run on?
|
|
214 * Q1.2.3:: Is there a port of XEmacs to Microsoft Windows?
|
|
215 * Q1.2.4:: Can I build XEmacs on MS Windows with X support? Do I need to?
|
|
216 * Q1.2.5:: What are Cygwin and MinGW, and do I need them to run XEmacs?
|
|
217 * Q1.2.6:: What are the differences between the various MS Windows emacsen?
|
|
218 * Q1.2.7:: How does the port cope with differences in the Windows user interface?
|
|
219 * Q1.2.8:: Is there a port of XEmacs to the Macintosh?
|
|
220 * Q1.2.9:: Is there a port of XEmacs to MS-DOS?
|
|
221 * Q1.2.10:: Is there a port of XEmacs to OS/2?
|
|
222 * Q1.2.11:: Is there a port of XEmacs to NextStep?
|
|
223 * Q1.2.12:: Is there a port of XEmacs to VMS?
|
|
224
|
|
225 1.3: Getting Started
|
|
226 * Q1.3.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one?
|
|
227 * Q1.3.2:: Where do I put my @file{init.el} file?
|
|
228 * Q1.3.3:: Can I use the same @file{init.el} with the other Emacs?
|
|
229 * Q1.3.4:: Any good XEmacs tutorials around?
|
|
230 * Q1.3.5:: May I see an example of a useful XEmacs Lisp function?
|
|
231 * Q1.3.6:: And how do I bind it to a key?
|
|
232 * Q1.3.7:: What's the difference between a macro and a function?
|
|
233 * Q1.3.8:: What is @code{Custom}?
|
|
234
|
|
235 1.4: Getting Help
|
|
236 * Q1.4.1:: Where can I get help?
|
|
237 * Q1.4.2:: Which mailing lists are there?
|
|
238 * Q1.4.2:: Where are the mailing lists archived?
|
|
239 * Q1.4.3:: How can I get two instances of info?
|
|
240 * Q1.4.4:: How do I add new Info directories?
|
|
241
|
|
242 1.5: Contributing to XEmacs
|
|
243 * Q1.5.1:: How do I submit changes to the FAQ?
|
|
244 * Q1.5.2:: How do I become a beta tester?
|
|
245 * Q1.5.3:: How do I contribute to XEmacs itself?
|
|
246
|
|
247 1.6: Politics (XEmacs vs. GNU Emacs)
|
|
248 * Q1.6.1:: What is GNU Emacs?
|
|
249 * Q1.6.2:: How does XEmacs differ from GNU Emacs?
|
|
250 * Q1.6.3:: How much does XEmacs differ?
|
|
251 * Q1.6.4:: Is XEmacs "GNU"?
|
|
252 * Q1.6.5:: What is the correct way to refer to XEmacs and GNU Emacs?
|
|
253 * Q1.6.6:: Why haven't XEmacs and GNU Emacs merged?
|
|
254
|
|
255 1.7: External Packages
|
|
256 * Q1.7.1:: Which external packages are there?
|
|
257
|
|
258 1.8: Internationalization
|
|
259 * Q1.8.1:: What is the status of internationalization support aka MULE (including Asian language support)?
|
|
260 * Q1.8.2:: How can I help with internationalization?
|
|
261 * Q1.8.3:: How do I type non-ASCII characters?
|
|
262 * Q1.8.4:: Can XEmacs messages come out in a different language?
|
|
263 * Q1.8.5:: Please explain the various input methods in MULE/XEmacs
|
|
264 * Q1.8.6:: How do I portably code for MULE/XEmacs?
|
|
265 * Q1.8.7:: How about Cyrillic modes?
|
|
266 * Q1.8.8:: Does XEmacs support Unicode?
|
|
267 * Q1.8.9:: How does XEmacs display Unicode?
|
2417
|
268
|
|
269 2 Installation and Troubleshooting
|
|
270
|
|
271 2.0: Installation (General), Packages
|
|
272 * Q2.0.1:: How do I install the packages?
|
|
273 * Q2.0.2:: I don't need no steenkin' packages. Do I?
|
|
274 * Q2.0.3:: Where do I find external libraries?
|
|
275 * Q2.0.4:: How do I specify the paths that XEmacs uses for finding files?
|
|
276 * Q2.0.5:: Running XEmacs without installing
|
|
277 * Q2.0.6:: XEmacs is too big
|
|
278 * Q2.0.7:: EFS fails with "500 AUTH not understood" (NEW)
|
|
279
|
2459
|
280 2.1: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
|
2417
|
281 * Q2.1.1:: Libraries in non-standard locations
|
|
282 * Q2.1.2:: Why can't I strip XEmacs?
|
|
283
|
|
284 2.2: Windows Installation (Windows, Cygwin, MinGW)
|
|
285 * Q2.2.1:: What exactly are all the different ways to build XEmacs under Windows?
|
|
286 * Q2.2.2:: What compiler/libraries do I need to compile XEmacs?
|
|
287 * Q2.2.3:: How do I compile the native port?
|
|
288 * Q2.2.4:: What do I need for Cygwin?
|
|
289 * Q2.2.5:: How do I compile under Cygwin?
|
|
290 * Q2.2.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
|
|
291 * Q2.2.7:: How do I compile with X support?
|
|
292 * Q2.2.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
|
|
293
|
|
294 2.3: General Troubleshooting
|
|
295 * Q2.3.1:: Help! XEmacs just crashed on me!
|
|
296 * Q2.3.2:: XEmacs crashes and I compiled it myself.
|
|
297 * Q2.3.3:: How to debug an XEmacs problem with a debugger
|
|
298 * Q2.3.4:: I get a cryptic error message when trying to do something.
|
|
299 * Q2.3.5:: XEmacs hangs when I try to do something.
|
|
300 * Q2.3.6:: I get an error message when XEmacs is running in batch mode.
|
|
301 * Q2.3.7:: The keyboard or mouse is not working properly, or I have some other event-related problem.
|
|
302 * Q2.3.8:: @kbd{C-g} doesn't work for me. Is it broken?
|
|
303 * Q2.3.9:: How do I debug process-related problems?
|
|
304 * Q2.3.10:: XEmacs is outputting lots of X errors.
|
|
305 * Q2.3.11:: After upgrading, XEmacs won't do `foo' any more!
|
|
306
|
|
307 2.4: Startup-Related Problems
|
|
308 * Q2.4.1:: XEmacs cannot connect to my X Terminal!
|
|
309 * Q2.4.2:: XEmacs won't start on Windows.
|
|
310 * Q2.4.3:: XEmacs won't start without network.
|
|
311 * Q2.4.4:: Startup warnings about deducing proper fonts?
|
|
312 * Q2.4.5:: Warnings from incorrect key modifiers.
|
|
313 * Q2.4.6:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
|
|
314
|
2459
|
315 3 Editing Functions
|
2417
|
316
|
|
317 3.0: The Keyboard
|
2459
|
318 * Q3.0.1:: How can I customize the keyboard?
|
|
319 * Q3.0.2:: How can I bind complex functions (or macros) to keys?
|
|
320 * Q3.0.3:: How do I bind C-. and C-; to scroll one line up and down?
|
|
321 * Q3.0.4:: Globally binding @kbd{Delete}?
|
|
322 * Q3.0.5:: How to map @kbd{Help} key alone on Sun type4 keyboard?
|
|
323 * Q3.0.6:: How can you type in special characters in XEmacs?
|
|
324 * Q3.0.7:: Can I turn on @dfn{sticky} modifier keys?
|
|
325 * Q3.0.8:: How do I map the arrow keys?
|
|
326 * Q3.0.9:: HP Alt key as Meta.
|
|
327 * Q3.0.10:: Why does edt emulation not work?
|
|
328 * Q3.0.11:: How can I emulate VI and use it as my default mode?
|
2417
|
329
|
|
330 3.1: The Mouse
|
|
331 * Q3.1.1:: How can I turn off Mouse pasting?
|
|
332 * Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons?
|
|
333 * Q3.1.3:: Clicking the left button does not do anything in buffer list.
|
|
334 * Q3.1.4:: How can I get a list of buffers when I hit mouse button 3?
|
2459
|
335 * Q3.1.5:: How can I set XEmacs up so that it pastes where the text cursor is?
|
|
336
|
|
337 3.2: Buffers, Text Editing
|
|
338 * Q3.2.1:: Can I have the end of the buffer delimited in some way?
|
|
339 * Q3.2.2:: How do I insert today's date into a buffer?
|
|
340 * Q3.2.3:: How do I get a single minibuffer frame?
|
|
341 * Q3.2.4:: How can I enable auto-indent and/or Filladapt?
|
|
342 * Q3.2.5:: How can I get XEmacs to come up in text/auto-fill mode by default?
|
|
343
|
|
344 3.3: Text Selections
|
|
345 * Q3.3.1:: How do I select a rectangular region?
|
|
346 * Q3.3.2:: How can I turn off or change highlighted selections?
|
|
347 * Q3.3.3:: How do I cause typing on an active region to remove it?
|
|
348 * Q3.3.4:: Can I turn off the highlight during isearch?
|
|
349 * Q3.3.5:: Why is killing so slow?
|
|
350 * Q3.3.6:: Why does @kbd{M-w} take so long?
|
|
351
|
|
352 3.4: Editing Source Code
|
|
353 * Q3.4.1:: I do not like cc-mode. How do I use the old c-mode?
|
|
354 * Q3.4.2:: How do you make XEmacs indent CL if-clauses correctly?
|
|
355
|
|
356 4 Display Functions
|
|
357
|
|
358 4.0: Textual Fonts and Colors
|
|
359 * Q4.0.1:: How do I specify a font?
|
|
360 * Q4.0.2:: How do I set the text, menu and modeline fonts?
|
|
361 * Q4.0.3:: How can I set color options from @file{init.el}?
|
|
362 * Q4.0.4:: How can I set the colors when highlighting a region?
|
|
363 * Q4.0.5:: How can I limit color map usage?
|
|
364 * Q4.0.6:: My tty supports color, but XEmacs doesn't use them.
|
|
365 * Q4.0.7:: Can I have pixmap backgrounds in XEmacs?
|
|
366 * Q4.0.8:: How do I display non-ASCII characters?
|
|
367 * Q4.0.9:: Font selections in don't get saved after @code{Save Options}.
|
|
368
|
|
369 4.1: Syntax Highlighting (Font Lock)
|
|
370 * Q4.1.1:: How can I do source code highlighting using font-lock?
|
|
371 * Q4.1.2:: How do I get @samp{More} Syntax Highlighting on by default?
|
|
372
|
|
373 4.2: The Modeline
|
|
374 * Q4.2.1:: How can I make the modeline go away?
|
|
375 * Q4.2.2:: How do you have XEmacs display the line number in the modeline?
|
|
376 * Q4.2.3:: How do I get XEmacs to put the time of day on the modeline?
|
|
377 * Q4.2.4:: How can I change the modeline color based on the mode used?
|
|
378
|
|
379 4.3: The Cursor
|
|
380 * Q4.3.1:: Is there a way to make the bar cursor thicker?
|
|
381 * Q4.3.2:: Is there a way to get back the block cursor?
|
|
382 * Q4.3.3:: Can I make the cursor blink?
|
|
383
|
|
384 4.4: The Menubar
|
|
385 * Q4.4.1:: How do I get rid of the menubar?
|
|
386 * Q4.4.2:: How can I customize the menubar?
|
|
387 * Q4.4.3:: How do I enable use of the keyboard (@kbd{Alt}) to access menu items?
|
|
388 * Q4.4.4:: How do I control how many buffers are listed in the menu @code{Buffers List}?
|
|
389 * Q4.4.5:: Resources like @code{Emacs*menubar*font} are not working?
|
|
390
|
|
391 4.5: The Toolbar
|
|
392 * Q4.5.1:: How do I get rid of the toolbar?
|
|
393 * Q4.5.2:: How can I customize the toolbar?
|
|
394 * Q4.5.3:: How can I bind a key to a function to toggle the toolbar?
|
|
395 * Q4.5.4:: @samp{Can't instantiate image error...} in toolbar
|
|
396
|
|
397 4.6: Scrollbars and Scrolling
|
|
398 * Q4.6.1:: How can I disable the scrollbar?
|
|
399 * Q4.6.2:: How can I change the scrollbar width?
|
|
400 * Q4.6.3:: How can I use resources to change scrollbar colors?
|
|
401 * Q4.6.4:: Moving the scrollbar can move the point; can I disable this?
|
|
402 * Q4.6.5:: Scrolling one line at a time.
|
|
403 * Q4.6.6:: How can I turn off automatic horizontal scrolling in specific modes?
|
|
404 * Q4.6.7:: I find auto-show-mode disconcerting. How do I turn it off?
|
|
405
|
|
406 4.7: The Gutter Tabs, The Progress Bar, Widgets
|
|
407 * Q4.7.1:: How can I disable the gutter tabs?
|
|
408 * Q4.7.2:: How can I disable the progress bar?
|
|
409 * Q4.7.3:: There are bugs in the gutter or widgets.
|
|
410 * Q4.7.4:: How can I customize the gutter or gutter tabs?
|
|
411
|
|
412 5 Interfacing with the Operating System and External Devices
|
|
413
|
|
414 5.0: X Window System and Resources
|
|
415 * Q5.0.1:: Where is a list of X resources?
|
|
416 * Q5.0.2:: How can I detect a color display?
|
|
417 * Q5.0.3:: How can I get the icon to just say @samp{XEmacs}?
|
|
418 * Q5.0.4:: How can I have the window title area display the full path?
|
|
419 * Q5.0.5:: @samp{xemacs -name junk} doesn't work?
|
|
420 * Q5.0.6:: @samp{-iconic} doesn't work.
|
|
421
|
|
422 5.1: Microsoft Windows
|
|
423 * Q5.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
|
|
424 * Q5.1.2:: How do I get Windows Explorer to associate a file type with XEmacs?
|
|
425
|
|
426 5.2: Printing
|
|
427 * Q5.2.1:: What do I need to change to make printing work?
|
|
428 * Q5.2.2:: How can I print WYSIWYG a font-locked buffer?
|
|
429 * Q5.2.3:: Getting @kbd{M-x lpr} to work with postscript printer.
|
|
430 * Q5.2.4:: Can you print under MS Windows?
|
|
431
|
|
432 5.3: Sound
|
|
433 * Q5.3.1:: How do I turn off the sound?
|
|
434 * Q5.3.2:: How do I get funky sounds instead of a boring beep?
|
|
435 * Q5.3.3:: What are NAS and ESD (EsounD)?
|
|
436 * Q5.3.4:: Sunsite sounds don't play.
|
|
437
|
|
438 5.4: Running an Interior Shell, Invoking Subprocesses
|
|
439 * Q5.4.1:: What is an interior shell?
|
|
440 * Q5.4.2:: How do I start up a second shell buffer?
|
|
441 * Q5.4.3:: Telnet from shell filters too much
|
|
442 * Q5.4.4:: Strange things are happening in Shell Mode.
|
|
443 * Q5.4.5:: XEmacs complains "No such file or directory, diff"
|
|
444
|
|
445 5.5: Multiple Device Support
|
|
446 * Q5.5.1:: How do I open a frame on another screen of my multi-headed display?
|
|
447 * Q5.5.2:: Can I really connect to a running XEmacs after calling up over a modem? How?
|
|
448 * Q5.5.3:: How do I disable gnuserv from opening a new frame?
|
|
449 * Q5.5.4:: How do I start gnuserv so that each subsequent XEmacs is a client?
|
|
450 * Q5.5.5:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
|
|
451
|
|
452 6 Connecting to the Internet
|
|
453
|
|
454 6.0: General Mail and News
|
|
455 * Q6.0.1:: What are the various packages for reading mail?
|
|
456 * Q6.0.2:: How can I send mail?
|
|
457 * Q6.0.3:: How do I get my outgoing mail archived?
|
|
458 * Q6.0.4:: How can I read and/or compose MIME messages?
|
|
459 * Q6.0.5:: How do I customize the From line?
|
|
460 * Q6.0.6:: How do I get my MUA to filter mail for me?
|
|
461 * Q6.0.7:: Remote mail reading with an MUA.
|
|
462 * Q6.0.8:: An MUA gets an error incorporating new mail.
|
|
463 * Q6.0.9:: Why isn't @file{movemail} working?
|
|
464 * Q6.0.10:: How do I make my MUA display graphical smilies?
|
|
465 * Q6.0.11:: How can I get those oh-so-neat X-Face lines?
|
|
466
|
|
467 6.1: Reading Mail with VM
|
|
468 * Q6.1.1:: How do I set up VM to retrieve mail from a remote site using POP?
|
|
469 * Q6.1.2:: How can I get VM to automatically check for new mail?
|
|
470 * Q6.1.3:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
|
|
471 * Q6.1.4:: Is there a mailing list or FAQ for VM?
|
|
472 * Q6.1.5:: How do I make VM stay in a single frame?
|
|
473 * Q6.1.6:: Customization of VM not covered in the manual, or here.
|
|
474
|
|
475 6.2: Reading Netnews and Mail with Gnus
|
|
476 * Q6.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
|
|
477 * Q6.2.2:: How do I make Gnus stay within a single frame?
|
|
478
|
|
479 6.3: FTP Access
|
|
480 * Q6.3.1:: Can I edit files on other hosts?
|
|
481 * Q6.3.2:: What is EFS?
|
|
482
|
|
483 6.4: Web Browsing with W3
|
|
484 * Q6.4.1:: What is W3?
|
|
485 * Q6.4.2:: How do I run W3 from behind a firewall?
|
|
486 * Q6.4.3:: Is it true that W3 supports style sheets and tables?
|
|
487
|
|
488 7 Advanced Customization Using XEmacs Lisp
|
|
489
|
2537
|
490 7.0: Emacs Lisp and @file{init.el}
|
|
491 * Q7.0.1:: What version of Emacs am I running?
|
|
492 * Q7.0.2:: How can I evaluate Emacs-Lisp expressions?
|
|
493 * Q7.0.3:: @code{(setq tab-width 6)} behaves oddly.
|
|
494 * Q7.0.4:: How can I add directories to the @code{load-path}?
|
|
495 * Q7.0.5:: How to check if a lisp function is defined?
|
|
496 * Q7.0.6:: Can I force the output of @code{(face-list)} to a buffer?
|
|
497
|
|
498 7.1: Emacs Lisp Programming Techniques
|
|
499 * Q7.1.1:: What is the difference in key sequences between XEmacs and GNU Emacs?
|
|
500 * Q7.1.2:: Can I generate "fake" keyboard events?
|
|
501 * Q7.1.3:: Could you explain @code{read-kbd-macro} in more detail?
|
|
502 * Q7.1.4:: What is the performance hit of @code{let}?
|
|
503 * Q7.1.5:: What is the recommended use of @code{setq}?
|
|
504 * Q7.1.6:: What is the typical misuse of @code{setq}?
|
|
505 * Q7.1.7:: I like the @code{do} form of cl, does it slow things down?
|
|
506 * Q7.1.8:: I like recursion, does it slow things down?
|
|
507 * Q7.1.9:: How do I put a glyph as annotation in a buffer?
|
|
508 * Q7.1.10:: @code{map-extents} won't traverse all of my extents!
|
|
509 * Q7.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
|
|
510
|
|
511 7.2: Mathematics
|
|
512 * Q7.1.1:: What are bignums, ratios, and bigfloats in Lisp?
|
|
513 * Q7.1.2:: XEmacs segfaults when I use very big numbers!
|
|
514 * Q7.1.3:: Bignums are really slow!
|
|
515 * Q7.1.4:: Equal bignums don't compare as equal! What gives?
|
2459
|
516
|
|
517 8 Other External Packages
|
|
518
|
|
519 8.0: TeX
|
|
520 * Q8.0.1:: Is there something better than LaTeX mode?
|
|
521 * Q8.0.2:: What is AUCTeX? Where do you get it?
|
|
522 * Q8.0.3:: Problems installing AUCTeX.
|
|
523 * Q8.0.4:: How do I turn off current chapter from AUCTeX modeline?
|
|
524
|
|
525 8.1: Other Unbundled Packages
|
|
526 * Q8.1.1:: Is there a reason for an Emacs package not to be included in XEmacs?
|
|
527 * Q8.1.2:: Are there any Emacs Lisp Spreadsheets?
|
|
528 * Q8.1.3:: Is there a MatLab mode?
|
|
529
|
|
530 8.2: Environments Built Around XEmacs
|
|
531 * Q8.2.1:: What are SPARCworks, EOS, and WorkShop?
|
|
532 * Q8.2.2:: How do I start the Sun Workshop support in XEmacs 21?
|
|
533 * Q8.2.3:: What is/was Energize?
|
|
534 * Q8.2.4:: What is Infodock?
|
|
535
|
|
536 9 What the Future Holds
|
|
537
|
|
538 9.0: Changes
|
|
539 * Q9.0.1:: What new features will be in XEmacs soon?
|
|
540 * Q9.0.2:: What's new in XEmacs 21.4?
|
|
541 * Q9.0.3:: What's new in XEmacs 21.1?
|
|
542 * Q9.0.4:: What's new in XEmacs 20.4?
|
|
543 * Q9.0.5:: What's new in XEmacs 20.3?
|
|
544 * Q9.0.6:: What's new in XEmacs 20.2?
|
|
545
|
|
546 10 New information about old XEmacsen
|
|
547
|
|
548 10.0: XEmacs 21.1
|
|
549 * Q10.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1.
|
428
|
550 @end detailmenu
|
|
551 @end menu
|
|
552
|
|
553 @node Introduction, Installation, Top, Top
|
|
554 @unnumbered 1 Introduction, Policy, Credits
|
|
555
|
|
556 Learning XEmacs is a lifelong activity. Even people who have used Emacs
|
|
557 for years keep discovering new features. Therefore this document cannot
|
|
558 be complete. Instead it is aimed at the person who is either
|
|
559 considering XEmacs for their own use, or has just obtained it and is
|
|
560 wondering what to do next. It is also useful as a reference to
|
|
561 available resources.
|
|
562
|
2417
|
563 The previous maintainer of the FAQ was
|
|
564 @email{rossini@@biostat.washington.edu, Anthony Rossini}, who started
|
|
565 it, after getting tired of hearing JWZ complain about repeatedly
|
|
566 having to answer questions. @email{ben@@xemacs.org, Ben Wing} then
|
|
567 took over and did a massive update reorganizing the whole thing. At
|
|
568 this point Anthony took back over, but then had to give it up again.
|
|
569 Some of the other contributors to this FAQ are listed later in this
|
|
570 document.
|
428
|
571
|
|
572 The previous version was converted to hypertext format, and edited by
|
|
573 @email{steve@@xemacs.org, Steven L. Baur}. It was converted back to
|
434
|
574 texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}. The FAQ was then
|
|
575 maintained by @email{andreas@@sccon.com, Andreas Kaempf}, who passed it
|
2417
|
576 on to ChristianNyb@o{}, and then to @email{wambold@@xemacs.org,Sandra Wambold}.
|
|
577
|
|
578 The current version of the FAQ has been heavily redone by
|
|
579 @email{ben@@xemacs.org, Ben Wing}.
|
428
|
580
|
|
581 If you notice any errors or items which should be added or amended to
|
2417
|
582 this FAQ please send email to @email{xemacs-beta@@xemacs.org}.
|
|
583 Include @samp{XEmacs FAQ} on the Subject: line.
|
428
|
584
|
|
585 @menu
|
2537
|
586 1.0: What is XEmacs?
|
2417
|
587 * Q1.0.1:: What is XEmacs?
|
|
588 * Q1.0.2:: What is the current version of XEmacs?
|
2537
|
589 * Q1.0.3:: How do you pronounce XEmacs?
|
|
590 * Q1.0.4:: What does XEmacs look like?
|
|
591 * Q1.0.5:: Who wrote XEmacs?
|
|
592 * Q1.0.6:: Who wrote the FAQ?
|
|
593
|
|
594 1.1: Getting XEmacs
|
|
595 * Q1.1.1:: Where can I find XEmacs?
|
|
596 * Q1.1.2:: Are binaries available?
|
|
597 * Q1.1.3:: How do I get the bleeding-edge sources?
|
|
598 * Q1.1.4:: Where can I obtain a printed copy of the XEmacs User's Manual?
|
|
599
|
|
600 1.2: Versions for Different Operating Systems
|
|
601 * Q1.2.1:: Do I need X11 to run XEmacs?
|
|
602 * Q1.2.2:: What versions of Unix does XEmacs run on?
|
|
603 * Q1.2.3:: Is there a port of XEmacs to Microsoft Windows?
|
|
604 * Q1.2.4:: Can I build XEmacs on MS Windows with X support? Do I need to?
|
|
605 * Q1.2.5:: What are Cygwin and MinGW, and do I need them to run XEmacs?
|
|
606 * Q1.2.6:: What are the differences between the various MS Windows emacsen?
|
|
607 * Q1.2.7:: How does the port cope with differences in the Windows user interface?
|
|
608 * Q1.2.8:: Is there a port of XEmacs to the Macintosh?
|
|
609 * Q1.2.9:: Is there a port of XEmacs to MS-DOS?
|
|
610 * Q1.2.10:: Is there a port of XEmacs to OS/2?
|
|
611 * Q1.2.11:: Is there a port of XEmacs to NextStep?
|
|
612 * Q1.2.12:: Is there a port of XEmacs to VMS?
|
|
613
|
|
614 1.3: Getting Started
|
|
615 * Q1.2.13::
|
|
616 * Q1.3.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one?
|
|
617 * Q1.3.2:: Where do I put my @file{init.el} file?
|
|
618 * Q1.3.3:: Can I use the same @file{init.el} with the other Emacs?
|
|
619 * Q1.3.4:: Any good XEmacs tutorials around?
|
|
620 * Q1.3.5:: May I see an example of a useful XEmacs Lisp function?
|
|
621 * Q1.3.6:: And how do I bind it to a key?
|
|
622 * Q1.3.7:: What's the difference between a macro and a function?
|
|
623 * Q1.3.8:: What is @code{Custom}?
|
|
624
|
|
625 1.4: Getting Help
|
|
626 * Q1.4.1:: Where can I get help?
|
|
627 * Q1.4.2:: Which mailing lists are there?
|
|
628 * Q1.4.3:: How can I get two instances of info?
|
|
629 * Q1.4.4:: How do I add new Info directories?
|
|
630
|
|
631 1.5: Contributing to XEmacs
|
|
632 * Q1.4.5::
|
|
633 * Q1.5.1:: How do I submit changes to the FAQ?
|
|
634 * Q1.5.2:: How do I become a beta tester?
|
|
635 * Q1.5.3:: How do I contribute to XEmacs itself?
|
|
636
|
|
637 1.6: Politics (XEmacs vs. GNU Emacs)
|
|
638 * Q1.6.1:: What is GNU Emacs?
|
|
639 * Q1.6.2:: How does XEmacs differ from GNU Emacs?
|
|
640 * Q1.6.3:: How much does XEmacs differ?
|
|
641 * Q1.6.4:: Is XEmacs "GNU"?
|
|
642 * Q1.6.5:: What is the correct way to refer to XEmacs and GNU Emacs?
|
|
643 * Q1.6.6:: Why haven't XEmacs and GNU Emacs merged?
|
|
644
|
|
645 1.7: External Packages
|
|
646 * Q1.7.1:: Which external packages are there?
|
|
647
|
|
648 1.8: Internationalization
|
|
649 * Q1.8.1:: What is the status of internationalization support aka MULE (including Asian language support)?
|
|
650 * Q1.8.2:: How can I help with internationalization?
|
|
651 * Q1.8.3:: How do I type non-ASCII characters?
|
|
652 * Q1.8.4:: Can XEmacs messages come out in a different language?
|
|
653 * Q1.8.5:: Please explain the various input methods in MULE/XEmacs
|
|
654 * Q1.8.6:: How do I portably code for MULE/XEmacs?
|
|
655 * Q1.8.7:: How about Cyrillic modes?
|
|
656 * Q1.8.8:: Does XEmacs support Unicode?
|
|
657 * Q1.8.9:: How does XEmacs display Unicode?
|
428
|
658 @end menu
|
|
659
|
2537
|
660 @unnumberedsec 1.0: What is XEmacs?
|
2417
|
661
|
428
|
662 @node Q1.0.1, Q1.0.2, Introduction, Introduction
|
|
663 @unnumberedsubsec Q1.0.1: What is XEmacs?
|
|
664
|
479
|
665 XEmacs is a powerful, highly customizable open source text editor and
|
2417
|
666 application development system, with full GUI support. It is
|
|
667 protected under the GNU Public License and related to other versions
|
|
668 of Emacs, in particular GNU Emacs. Its emphasis is on modern
|
|
669 graphical user interface support and an open software development
|
|
670 model, similar to Linux. XEmacs has an active development community
|
|
671 numbering in the hundreds (and thousands of active beta testers on top
|
|
672 of this), and runs on all versions of MS Windows, on Mac OS X, on
|
|
673 Linux, and on nearly every other version of Unix in existence.
|
|
674 Support for XEmacs has been supplied by Sun Microsystems, University
|
|
675 of Illinois, Lucid, ETL/Electrotechnical Laboratory, Amdahl
|
|
676 Corporation, BeOpen, and others, as well as the unpaid time of a great
|
|
677 number of individual developers.
|
428
|
678
|
|
679 @node Q1.0.2, Q1.0.3, Q1.0.1, Introduction
|
|
680 @unnumberedsubsec Q1.0.2: What is the current version of XEmacs?
|
|
681
|
2417
|
682 XEmacs versions 21.4.* are releases made from the current stable
|
|
683 sources. XEmacs versions 21.5.* (which will be released as 22.0) are
|
|
684 releases made from the development sources. Check at
|
|
685 @uref{http://www.xemacs.org} for the current minor version. XEmacs
|
|
686 versions 21.1.* were the previous stable releases, now retired.
|
|
687
|
|
688 XEmacs 20.4, released in February 1998, was the last release of v20.
|
|
689
|
|
690 XEmacs 19.16, released in November, 1997. was the last release of v19,
|
|
691 and was also the last version without international language support.
|
428
|
692
|
|
693 @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction
|
2537
|
694 @unnumberedsubsec Q1.0.3: How do you pronounce XEmacs?
|
|
695
|
|
696 The most common pronounciation is @samp{Eks eemax}.
|
428
|
697
|
|
698 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction
|
2537
|
699 @unnumberedsubsec Q1.0.4: What does XEmacs look like?
|
|
700
|
|
701 Screen snapshots are available at
|
|
702 @uref{http://www.xemacs.org/About/Screenshots/index.html}
|
|
703 as part of the XEmacs website.
|
|
704
|
|
705 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction
|
|
706 @unnumberedsubsec Q1.0.5: Who wrote XEmacs?
|
|
707
|
|
708 XEmacs is the result of the time and effort of many people, and the
|
|
709 active developers have changed over time. There are two major
|
|
710 components of the XEmacs effort -- writing the code itself and providing
|
|
711 all the support work (testing the code, releasing beta and final
|
|
712 versions, handling patches, reading bug reports, maintaining the web
|
|
713 site, managing the mailing lists, etc. etc.). Neither component would
|
|
714 work without the other.
|
|
715
|
|
716 @subheading CODING
|
|
717
|
|
718 The primary code contributor over the years has been Ben Wing (active
|
|
719 since late 1992). Between 1991 and 1995, large amounts of coding was
|
|
720 contributed by Jamie Zawinski and Chuck Thompson. Many other people
|
|
721 have authored major subsystems or otherwise contributed large amounts of
|
|
722 code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris,
|
|
723 Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard
|
|
724 Mlynarik, Stig, William Perry and plenty of others.
|
|
725
|
|
726 Primary XEmacs-specific subsystems and their authors:
|
|
727
|
|
728 @table @asis
|
|
729 @item Objects
|
|
730 @itemize @minus
|
|
731 @item
|
|
732 Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcrecords: Richard Mlynarik, 1994
|
|
733 @item
|
|
734 Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Buchholz
|
|
735 @item
|
|
736 Portable dumper, object descriptions: Olivier Galibert
|
|
737 @item
|
|
738 KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber and students
|
|
739 @item
|
|
740 Random object work (object equal and hash methods, weak lists, lcrecord lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing
|
|
741 @item
|
|
742 Profiling: Ben Wing
|
|
743 @item
|
|
744 Some byte-compilation and hash-table improvements: Martin Buchholz
|
|
745 @item
|
|
746 Bignum: Jerry James
|
|
747 @end itemize
|
|
748
|
|
749 @item Internationalization/Mule
|
|
750 @itemize @minus
|
|
751 @item
|
|
752 mostly Ben Wing; many ideas for future work, Stephen Turnbull
|
|
753 @end itemize
|
|
754
|
|
755 @item I/O
|
|
756 @itemize @minus
|
|
757 @item
|
|
758 Basic event/event-stream implementation: Jamie Zawinski
|
|
759 @item
|
|
760 Most event work since 1994: Ben Wing
|
|
761 @item
|
|
762 Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing
|
|
763 @item
|
|
764 Process method abstraction, Windows process work: Kirill Katsnelson
|
|
765 @item
|
|
766 Misc-user events, async timeouts, most quit-checking and signal code, most other work since 1994: Ben Wing
|
|
767 @item
|
|
768 Lstreams: Ben Wing
|
|
769 @end itemize
|
|
770
|
|
771 @item Display
|
|
772 @itemize @minus
|
|
773 @item
|
|
774 Redisplay mechanism: implementation, Chuck Thompson; additional work, lots of people
|
|
775 @item
|
|
776 Glyphs: mostly Ben Wing
|
|
777 @item
|
|
778 Specifiers: Ben Wing
|
|
779 @item
|
|
780 Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wing
|
|
781 @item
|
|
782 Widgets: Andy Piper
|
|
783 @item
|
|
784 JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, others (see comment in @file{glyphs-eimage.c})
|
|
785 @item
|
|
786 Menus: Jamie Zawinski, someone at Lucid (Lucid menus)
|
|
787 @item
|
|
788 Scrollbars: Chuck Thompson, ??? (Lucid scrollbar)
|
|
789 @item
|
|
790 Multi-device/device-independence work (console/device/etc methods): Ben Wing, prototype by chuck thompson
|
|
791 @item
|
|
792 Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben Wing
|
|
793 @item
|
|
794 Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wing
|
|
795 @item
|
|
796 Toolbars: implementation, chuck, much interface work, Ben Wing
|
|
797 @item
|
|
798 Gutters, tabs: andy piper
|
|
799 @end itemize
|
|
800
|
|
801 @item Device subsystems
|
|
802 @itemize @minus
|
|
803 @item
|
|
804 X Windows: Jamie Zawinksi, Ben Wing, others
|
|
805 @item
|
|
806 GTK: William Perry, Malcolm Purvis
|
|
807 @item
|
|
808 MS Windows: initial implementation, Jonathan Harris; some more work, Andy Piper, Ben Wing
|
|
809 @item
|
|
810 TTY: Chuck Thompson, Ben Wing
|
|
811 @item
|
|
812 Cygwin: Andy Piper
|
|
813 @end itemize
|
|
814
|
|
815 @item Misc
|
|
816 @itemize @minus
|
|
817 @item
|
|
818 Configure: initial porting from fsf, Chuck Thompson; conversion to autoconf 2, much rewriting, Martin Buchholz
|
|
819 @item
|
|
820 Most initialization-related code: Ben Wing
|
|
821 @item
|
|
822 Internals manual, much of Lisp manual: Ben Wing
|
|
823 @item
|
|
824 FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, Ben Wing
|
|
825 @end itemize
|
|
826 @end table
|
|
827
|
|
828 @subheading SUPPORT
|
|
829
|
|
830 Currently, support duties are handled by many different people.
|
|
831
|
|
832 Release managers have been
|
|
833
|
|
834 @itemize @minus
|
|
835 @item
|
|
836 Stephen Turnbull (April 2001 - January 2003, March 2004 - present, 21.2.47 - 21.4.12, 21.5.2 - 21.5.7, 21.5.17 - present)
|
|
837 @item
|
|
838 Vin Shelton (May 2003 - present, 21.4.13 - present)
|
|
839 @item
|
|
840 Steve Youngs (July 2002 - September 2003, 21.5.8 - 21.5.16)
|
|
841 @item
|
|
842 Martin Buchholz (December 1998, November 1999 - May 2001, 21.2.7 - 21.2.8, 21.2.21 - 21.2.46, 21.5.0 - 21.5.1)
|
|
843 @item
|
|
844 Steve Baur (early 1997 - December 1998, February 1999 - November 1999, 19.15 - 21.2.5, 21.2.9 - 21.2.20)
|
|
845 @item
|
|
846 Andy Piper (December 1998, 21.2.6)
|
|
847 @item
|
|
848 Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14)
|
|
849 @item
|
|
850 Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10)
|
|
851 @end itemize
|
|
852
|
|
853 The recent overlapping dates are intentional, since two or three trees
|
|
854 are maintained simultaneously at any point.
|
|
855
|
|
856 Other major support work:
|
|
857
|
|
858 @itemize @minus
|
|
859 @item
|
|
860 Adrian Aichner wrote and maintains the web site.
|
|
861 @item
|
|
862 Stephen Turnbull has produced many of the beta and semi-stable releases
|
|
863 and has attempted to be the "face" of XEmacs on the newsgroups and
|
|
864 mailing lists.
|
|
865 @item
|
|
866 Steve Youngs currently produces the beta releases (???).
|
|
867 @item
|
|
868 Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns
|
|
869 maintaining the packages.
|
|
870 @item
|
|
871 Vin Shelton maintains the stable releases.
|
|
872 @item
|
|
873 Testing - #### Norbert, Adrian, ???
|
|
874 @end itemize
|
|
875
|
|
876 Portraits and email of some of the major developers:
|
|
877
|
|
878 @itemize @bullet
|
|
879 @item @email{andy@@xemacs.org, Andy Piper}
|
|
880 @html
|
|
881 <br><img src="piper.png" alt="Portrait of Andy Piper"><br>
|
|
882 @end html
|
|
883
|
|
884 @item @email{ben@@xemacs.org, Ben Wing}
|
|
885 @html
|
|
886 <br><img src="ben.png" alt="Portrait of Ben Wing"><br>
|
|
887 @end html
|
|
888
|
|
889 @item @email{cthomp@@xemacs.org, Chuck Thompson}
|
|
890 @html
|
|
891 <br><img src="cthomp.png" alt="Portrait of Chuck Thompson"><br>
|
|
892 @end html
|
|
893
|
|
894 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
|
|
895
|
|
896 @html
|
|
897 <br><img src="hniksic.png" alt="Portrait of Hrvoje Niksic"><br>
|
|
898 @end html
|
|
899
|
|
900 @item @email{jwz@@jwz.org, Jamie Zawinski}
|
|
901 @html
|
|
902 <br><img src="jwz.png" alt="Portrait of Jamie Zawinski"><br>
|
|
903 @end html
|
|
904
|
|
905 @item @email{martin@@xemacs.org, Martin Buchholz}
|
|
906 @html
|
|
907 <br><img src="martin.png" alt="Portrait of Martin Buchholz"><br>
|
|
908 @end html
|
|
909
|
|
910 @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
|
|
911 @html
|
|
912 <br><img src="mly.png" alt="Portrait of Richard Mlynarik"><br>
|
|
913 @end html
|
|
914
|
|
915 @item @email{stephen@@xemacs.org, Stephen Turnbull}
|
|
916
|
|
917 @item @email{steve@@xemacs.org, Steve Baur}
|
|
918 @html
|
|
919 <br><img src="slb.png" alt="Portrait of Steve Baur"><br>
|
|
920 @end html
|
|
921 @end itemize
|
|
922
|
|
923 Many other people have contributed to XEmacs; this is partially
|
|
924 enumerated in the @samp{About XEmacs} option in the Help menu.
|
|
925
|
|
926 @node Q1.0.6, Q1.1.1, Q1.0.5, Introduction
|
|
927 @unnumberedsubsec Q1.0.6: Who wrote the FAQ?
|
|
928
|
|
929 The current version of this FAQ was created by @email{ben@@xemacs.org,
|
|
930 Ben Wing}.
|
|
931
|
|
932 Previous contributors to the FAQ include
|
|
933
|
|
934 @itemize @bullet
|
|
935 @item @email{steve@@xemacs.org, SL Baur}
|
|
936
|
|
937 @item @email{hniksic@@xemacs.org, Hrvoje Niksic}
|
|
938
|
|
939 @item @email{binge@@aloft.att.com, Curtis.N.Bingham}
|
|
940
|
|
941 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan}
|
|
942
|
|
943 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley}
|
|
944
|
|
945 @item @email{cognot@@ensg.u-nancy.fr, Richard Cognot}
|
|
946
|
|
947 @item @email{daku@@nortel.ca, Mark Daku}
|
|
948
|
|
949 @item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque}
|
|
950
|
|
951 @item @email{eeide@@cs.utah.edu, Eric Eide}
|
|
952
|
|
953 @item @email{af@@biomath.jussieu.fr, Alain Fauconnet}
|
|
954
|
|
955 @item @email{cflatter@@nrao.edu, Chris Flatters}
|
|
956
|
|
957 @item @email{ginsparg@@adra.com, Evelyn Ginsparg}
|
|
958
|
|
959 @item @email{hall@@aplcenmp.apl.jhu.edu, Marty Hall}
|
|
960
|
|
961 @item @email{dkindred@@cmu.edu, Darrell Kindred}
|
|
962
|
|
963 @item @email{dmoore@@ucsd.edu, David Moore}
|
|
964
|
|
965 @item @email{arup+@@cmu.edu, Arup Mukherjee}
|
|
966
|
|
967 @item @email{nickel@@prz.tu-berlin.de, Juergen Nickelsen}
|
|
968
|
|
969 @item @email{powell@@csl.ncsa.uiuc.edu, Kevin R. Powell}
|
|
970
|
|
971 @item @email{dworkin@@ccs.neu.edu, Justin Sheehy}
|
|
972
|
|
973 @item @email{stig@@hackvan.com, Stig}
|
|
974
|
|
975 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari}
|
|
976 @end itemize
|
|
977
|
|
978 @unnumberedsec 1.1: Getting XEmacs
|
|
979
|
|
980 @node Q1.1.1, Q1.1.2, Q1.0.6, Introduction
|
|
981 @unnumberedsubsec Q1.1.1: Where can I find XEmacs?
|
|
982
|
|
983 To download XEmacs, visit the XEmacs WWW page at
|
|
984 @uref{http://www.xemacs.org/Download/}. The most up-to-date list of
|
|
985 distribution sites can always be found there. Try to pick a site that
|
|
986 is networkologically close to you. If you know of other mirrors of
|
|
987 the XEmacs archives, please send e-mail to
|
|
988 @uref{mailto:webmaster@@xemacs.org} and we will list them here as well.
|
|
989
|
|
990 The canonical distribution point is ftp.xemacs.org, available either
|
|
991 through HTTP (@uref{http://ftp.xemacs.org/}) or anonymous FTP
|
|
992 (@uref{ftp://ftp.xemacs.org/pub/xemacs/}).
|
|
993
|
|
994 @node Q1.1.2, Q1.1.3, Q1.1.1, Introduction
|
|
995 @unnumberedsubsec Q1.1.2: Are binaries available?
|
2417
|
996
|
|
997 MS Windows binaries are available at
|
|
998 @uref{http://www.xemacs.org/Download/win32/} for the native versions
|
|
999 of 21.4 and 21.1. Cygwin binaries are now available as part of the
|
|
1000 standard Cygwin installation process. XEmacs also comes pre-built as
|
|
1001 part of many Linux distributions, such as Red Hat and SuSE.
|
|
1002
|
|
1003 Otherwise, you will need to build XEmacs yourself or get your system
|
|
1004 administrator to do it. Generally, this is not a difficult process
|
|
1005 under Unix and Mac OS X, as XEmacs has been tested under all of the
|
|
1006 common Unix versions and under Mac OS X and comes with an extensive
|
|
1007 configure script that is able to automatically detect most aspects of
|
|
1008 the configuration of your particular system.
|
|
1009
|
2537
|
1010 @node Q1.1.3, Q1.1.4, Q1.1.2, Introduction
|
|
1011 @unnumberedsubsec Q1.1.3: How do I get the bleeding-edge sources?
|
|
1012
|
|
1013 If you are interested in developing XEmacs, or getting the absolutely most
|
|
1014 recent, up-to-the-moment, bleeding-edge source code, you can directly
|
|
1015 access the master CVS source tree (read-only, of course, until you ask for
|
|
1016 and are granted permission to directly modify portions of the source tree)
|
|
1017 at cvs.xemacs.org. Directions on how to access the source tree are located
|
|
1018 at @uref{http://www.xemacs.org/Develop/cvsaccess.html}.
|
|
1019
|
|
1020 Nightly CVS snapshots are available at
|
|
1021 @uref{http://www.dk.xemacs.org/Download/CVS-snapshots/}.
|
|
1022
|
|
1023 @node Q1.1.4, Q1.2.1, Q1.1.3, Introduction
|
|
1024 @unnumberedsubsec Q1.1.4: Where can I obtain a printed copy of the XEmacs User's Manual?
|
|
1025
|
|
1026 Pre-printed manuals are not available. If you are familiar with
|
|
1027 TeX, you can generate your own manual from the XEmacs sources.
|
|
1028
|
|
1029 HTML and Postscript versions of XEmacs manuals are available from the
|
|
1030 XEmacs web site at
|
|
1031 @uref{http://www.xemacs.org/Documentation/index.html}.
|
|
1032
|
|
1033 @unnumberedsec 1.2: Versions for Different Operating Systems
|
|
1034
|
|
1035 @node Q1.2.1, Q1.2.2, Q1.1.4, Introduction
|
|
1036 @unnumberedsubsec Q1.2.1: Do I need X11 to run XEmacs?
|
|
1037
|
|
1038 No. The name @dfn{XEmacs} is unfortunate in the sense that it is
|
|
1039 @strong{not} an X Window System-only version of Emacs. XEmacs has
|
|
1040 full color support on a color-capable character terminal.
|
|
1041
|
|
1042 @node Q1.2.2, Q1.2.3, Q1.2.1, Introduction
|
|
1043 @unnumberedsubsec Q1.2.2: What versions of Unix does XEmacs run on?
|
|
1044
|
|
1045 For problems with particular machines and versions of Unix, see the
|
|
1046 @file{PROBLEMS} file.
|
|
1047
|
|
1048 Much effort has gone into making XEmacs work on as many different
|
|
1049 machines, configurations, and compilers as possible.
|
|
1050
|
|
1051 Much effort has gone into making XEmacs 64-bit clean.
|
|
1052
|
|
1053 Much effort has gone into removing system-specific code, and replacing
|
|
1054 such code with autodetection at configure time.
|
|
1055
|
|
1056 The XEmacs core should build "out of the box" on most Unix-like systems.
|
|
1057
|
|
1058 XEmacs 21.2 was tested and @samp{make check} succeeded on these Unix
|
|
1059 configurations as of 2001-02-10:
|
|
1060
|
|
1061 @example
|
|
1062 alphaev56-dec-osf4.0e (both Compaq C and gcc)
|
|
1063 i386-unknown-freebsd4.2
|
|
1064 i386-unknown-netbsdelf1.5
|
|
1065 i586-sco-sysv5uw7.0.1 (both SCO's cc and gcc)
|
|
1066 i686-pc-linux-gnu
|
|
1067 hppa2.0-hp-hpux10.20 (both HP's ANSI cc and gcc)
|
|
1068 mips-sgi-irix6.5 (both MIPSpro cc and gcc)
|
|
1069 rs6000-ibm-aix4.3.0.0 (both IBM's xlc and gcc)
|
|
1070 sparc-sun-solaris2.6 (both Sun's Forte C and gcc)
|
|
1071 sparc-sun-solaris2.7 (both Sun's Forte C and gcc)
|
|
1072 sparc-sun-sunos4.1.4 (gcc)
|
|
1073 @end example
|
|
1074
|
|
1075 Some systems have a dual mode 32-bit/64-bit compiler. On most of
|
|
1076 these, XEmacs requires the @samp{--pdump} configure option to build
|
|
1077 correctly with the 64-bit version of the compiler.
|
|
1078
|
|
1079 @example
|
|
1080 mips-sgi-irix6.5, CC="gcc -mabi=64"
|
|
1081 mips-sgi-irix6.5, CC="cc -64"
|
|
1082 rs6000-ibm-aix4.3.0.0, CC="cc -q64"
|
|
1083 @end example
|
|
1084
|
|
1085 On most of these systems, XEmacs also builds with a C++ compiler,
|
|
1086 but not "out of the box". This feature is only for use by the
|
|
1087 maintainers.
|
|
1088
|
|
1089 XEmacs 21.2 is known @emph{not} to work on any machines with m680x0
|
|
1090 processors. Sorry, all you sun3 and Unix PC nostalgia buffs out there.
|
|
1091
|
|
1092 VMS has never been supported by XEmacs. In fact, all the old VMS code
|
|
1093 inherited from Emacs has been removed. Sorry, all you VMS fans out there.
|
|
1094
|
|
1095 @node Q1.2.3, Q1.2.4, Q1.2.2, Introduction
|
|
1096 @unnumberedsubsec Q1.2.3: Is there a port of XEmacs to Microsoft Windows?
|
|
1097
|
|
1098 Yes. Beginning with release 21.0, XEmacs has worked under MS Windows
|
|
1099 and is fully-featured and actively developed. A group of dedicated
|
|
1100 developers actively maintains and improves the Windows-specific
|
|
1101 portions of the code. Some of the core developers, in fact, use
|
|
1102 Windows as their only development environment, and some features, such
|
|
1103 as printing, actually work better on Windows than native Unix and Mac
|
|
1104 OS X. The mailing list at @email{xemacs-winnt@@xemacs.org} is dedicated
|
|
1105 to that effort (please use the -request address to
|
|
1106 subscribe). (Despite its name, XEmacs actually works on all versions
|
|
1107 of Windows.)
|
|
1108
|
|
1109 The list name is misleading, as XEmacs supports and has been compiled on
|
|
1110 Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
|
|
1111 XP, and all newer versions of Windows. The MS Windows-specific code is
|
|
1112 based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
|
|
1113 MS-DOS.
|
|
1114
|
|
1115 XEmacs also supports the Cygwin and MinGW development and runtime
|
|
1116 environments, where it also uses native Windows code for graphical
|
|
1117 features. In addition, under Cygwin it is possible to compile XEmacs
|
|
1118 to use an X server (and XFree86 is available as part of the standard
|
|
1119 Cygwin installation).
|
|
1120
|
|
1121 @node Q1.2.4, Q1.2.5, Q1.2.3, Introduction
|
|
1122 @unnumberedsubsec Q1.2.4: Can I build XEmacs on MS Windows with X support? Do I need to?
|
|
1123
|
|
1124 Yes, you can, but no you do not need to. In fact, we recommend that you
|
|
1125 use a native-GUI version unless you have a specific need for an X
|
|
1126 version.
|
|
1127
|
|
1128 @node Q1.2.5, Q1.2.6, Q1.2.4, Introduction
|
|
1129 @unnumberedsubsec Q1.2.5: What are Cygwin and MinGW, and do I need them to run XEmacs?
|
|
1130
|
|
1131 To answer the second part of the question: No, you, you don't need
|
|
1132 Cygwin or MinGW to build or to run XEmacs. But if you have them and
|
|
1133 want to use them, XEmacs supports these environments.
|
|
1134
|
|
1135 (One important reason to support Cygwin is that it lets the MS Windows
|
|
1136 developers test out their code in a Unix environment without actually
|
|
1137 having to have a Unix machine around. For this reason alone, Cygwin
|
|
1138 support is likely to remain supported for a long time in XEmacs. Same
|
|
1139 goes for the X support under Cygwin, for the same reasons. MinGW
|
|
1140 support, on the other hand, depends on volunteers to keep it up to date;
|
|
1141 but this is generally not hard.)
|
|
1142
|
|
1143 Cygwin is a set of tools providing Unix-like API on top of Win32.
|
|
1144 It makes it easy to port large Unix programs without significant
|
|
1145 changes to their source code. It is a development environment as well
|
|
1146 as a runtime environment.
|
|
1147
|
|
1148 When built with Cygwin, XEmacs supports all display types -- TTY, X &
|
|
1149 Win32 GUI, and can be built with support for all three simultaneously.
|
|
1150 If you build with Win32 GUI support then the Cygwin version uses the
|
|
1151 majority of the Windows-specific code, which is mostly related to
|
|
1152 display. If you want to build with X support you need X libraries (and
|
|
1153 an X server to display XEmacs on); see @ref{Q2.2.7}. TTY and Win32 GUI
|
|
1154 require no additional libraries beyond what comes standard with Cygwin.
|
|
1155
|
|
1156 The advantages of the Cygwin version are that it integrates well with
|
|
1157 the Cygwin environment for existing Cygwin users; uses configure so
|
|
1158 building with different features is very easy; and actively supports X &
|
|
1159 TTY. Furthermore, the entire Cygwin environment and compiler are free,
|
|
1160 whereas Visual C++ costs money.
|
|
1161
|
|
1162 The disadvantage is that it requires the whole Cygwin environment,
|
|
1163 whereas the native port requires only a suitable MS Windows compiler.
|
|
1164 Also, it follows the Unix filesystem and process model very closely
|
|
1165 (some will undoubtedly view this as an advantage).
|
|
1166
|
|
1167 See @uref{http://www.cygwin.com/} for more information on
|
|
1168 Cygwin.
|
|
1169
|
|
1170 MinGW is a collection of header files and import libraries that allow
|
|
1171 one to use GCC under the Cygwin environment to compile and produce
|
|
1172 exactly the same native Win32 programs that you can using Visual C++.
|
|
1173 Programs compiled with MinGW make use of the standard Microsoft runtime
|
|
1174 library @file{MSVCRT.DLL}, present on all Windows systems, and look,
|
|
1175 feel, and act like a standard Visual-C-produced application. (The only
|
|
1176 difference is the compiler.) This means that, unlike a
|
|
1177 standardly-compiled Cygwin application, no extra runtime support
|
|
1178 (e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the
|
|
1179 fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
|
|
1180 environment, for those die-hard Unix hackers out there), is the main
|
|
1181 advantage of MinGW. It is also potentially faster than Cygwin because
|
|
1182 it has less overhead when calling Windows, but you lose the POSIX
|
|
1183 emulation layer, which makes Unix programs harder to port. (But this is
|
|
1184 irrelevant for XEmacs since it's already ported to Win32.)
|
|
1185
|
|
1186 See @uref{http://www.mingw.org/} for more information on MinGW.
|
|
1187
|
|
1188 @node Q1.2.6, Q1.2.7, Q1.2.5, Introduction
|
|
1189 @unnumberedsubsec Q1.2.6: What are the differences between the various MS Windows emacsen?
|
|
1190
|
|
1191 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
|
|
1192 Could you briefly explain the differences between them?
|
|
1193
|
|
1194 Here is a recount of various Emacs versions running on MS Windows:
|
|
1195
|
|
1196 @itemize @bullet
|
|
1197
|
|
1198 @item
|
|
1199 XEmacs
|
|
1200
|
|
1201 @itemize @minus
|
|
1202
|
|
1203 @item
|
|
1204 Beginning with XEmacs 19.12, XEmacs' architecture was redesigned
|
|
1205 in such a way to allow clean support of multiple window systems. At
|
|
1206 this time the TTY support was added, making X and TTY the first two
|
|
1207 "window systems" supported by XEmacs. The 19.12 design is the basis for
|
|
1208 the current native MS Windows code.
|
|
1209
|
|
1210 @item
|
|
1211 Some time during 1997, David Hobley (soon joined by Marc Paquette)
|
|
1212 imported some of the NT-specific portions of GNU Emacs, making XEmacs
|
|
1213 with X support compile under Windows NT, and creating the "X" port.
|
|
1214
|
|
1215 @item
|
|
1216 Several months later, Jonathan Harris sent out initial patches to use
|
|
1217 the Win32 API, thus creating the native port. Since then, various
|
|
1218 people have contributed, including Kirill M. Katsnelson (contributed
|
|
1219 support for menubars, subprocesses and network, as well as loads of
|
|
1220 other code), Andy Piper (ported XEmacs to Cygwin environment,
|
|
1221 contributed Windows unexec, Windows-specific glyphs and toolbars code,
|
|
1222 and more), Ben Wing (loads of improvements; primary MS Windows developer
|
|
1223 since 2000), Jeff Sparkes (contributed scrollbars support) and many
|
|
1224 others.
|
|
1225 @end itemize
|
|
1226
|
|
1227 @item
|
|
1228 NT Emacs
|
|
1229
|
|
1230 @itemize @minus
|
|
1231
|
|
1232 @item
|
|
1233 NT Emacs was an early version of GNU Emacs 19 modified to compile and
|
|
1234 run under MS Windows 95 and NT using the native Win32 API. It was
|
|
1235 written by Geoff Voelker, and has long since been incorporated into
|
|
1236 the mainline GNU Emacs distribution.
|
|
1237 @end itemize
|
|
1238
|
|
1239 @item
|
|
1240 Win-Emacs
|
|
1241
|
|
1242 @itemize @minus
|
|
1243
|
|
1244 @item
|
|
1245 Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X
|
|
1246 compatibility libraries. Win-Emacs was written by Ben Wing. The MS
|
|
1247 Windows code never made it back to Lucid Emacs, and its creator (Pearl
|
|
1248 Software) has long since gone out of business.
|
|
1249 @end itemize
|
|
1250
|
|
1251 @item
|
|
1252 GNU Emacs for DOS
|
|
1253
|
|
1254 @itemize @minus
|
|
1255
|
|
1256 @item
|
|
1257 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
|
|
1258 port of GCC). Such an Emacs is heavily underfeatured, because it does
|
|
1259 not support long file names, lacks proper subprocesses support, and
|
|
1260 is far too big compared with typical DOS editors.
|
|
1261 @end itemize
|
|
1262
|
|
1263 @item
|
|
1264 GNU Emacs compiled with Win32
|
|
1265
|
|
1266 @itemize @minus
|
|
1267
|
|
1268 @item
|
|
1269 Starting with GNU Emacs 19.30, it has been possible to compile GNU Emacs
|
|
1270 under MS Windows using the DJGPP compiler and X libraries. The result
|
|
1271 is very similar to GNU Emacs compiled under MS DOS, only it works
|
|
1272 somewhat better because it runs in 32-bit mode, makes use of all the
|
|
1273 system memory, supports long file names, etc.
|
|
1274 @end itemize
|
|
1275
|
|
1276 @end itemize
|
|
1277
|
|
1278 @node Q1.2.7, Q1.2.8, Q1.2.6, Introduction
|
|
1279 @unnumberedsubsec Q1.2.7: How does the port cope with differences in the Windows user interface?
|
|
1280
|
|
1281 The XEmacs (and Emacs in general) user interface is pretty different
|
|
1282 from what is expected of a typical MS Windows program. How does the MS
|
|
1283 Windows port cope with it?
|
|
1284
|
|
1285 As a general rule, we follow native MS Windows conventions as much as
|
|
1286 possible. 21.4 is a fairly complete Windows application, supporting
|
|
1287 native printing, system file dialog boxes, tool tips, etc. In cases
|
|
1288 where there's a clear UI conflict, we currently use normal Unix XEmacs
|
|
1289 behavior by default, but make sure the MS Windows "look and feel" (mark
|
|
1290 via shift-arrow, self-inserting deletes region, Alt selects menu items,
|
|
1291 etc.) is easily configurable (respectively: using the variable
|
|
1292 @code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact
|
|
1293 the default in these versions], or the @file{pc-select} package; using
|
|
1294 the @file{pending-del} package; and setting the variable
|
|
1295 @code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above).
|
|
1296 In fact, if you use the sample @file{init.el} file as your init file,
|
|
1297 you will get all these behaviors automatically turned on.
|
|
1298
|
|
1299 In future versions, some of these features might be turned on by
|
|
1300 default in the MS Windows environment.
|
|
1301
|
|
1302 @node Q1.2.8, Q1.2.9, Q1.2.7, Introduction
|
|
1303 @unnumberedsubsec Q1.2.8: Is there a port of XEmacs to the Macintosh?
|
|
1304
|
|
1305 Yes.
|
|
1306
|
|
1307 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
|
|
1308 will not feel very much like a Mac application as it has no Mac-specific
|
|
1309 code in it.
|
|
1310
|
|
1311 There is also a port of XEmacs 19.14 that works on all recent versions
|
|
1312 of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com,
|
|
1313 Pitts Jarvis} (recently deceased). It runs in an equivalent of TTY
|
|
1314 mode only (one single Macintosh window, 25 colors), but has a large
|
|
1315 number of Mac-specific additions. It's available at
|
|
1316 @uref{http://homepage.mac.com/pjarvis/xemacs.html}.
|
|
1317
|
|
1318 @node Q1.2.9, Q1.2.10, Q1.2.8, Introduction
|
|
1319 @unnumberedsubsec Q1.2.9: Is there a port of XEmacs to the Macintosh?
|
|
1320
|
|
1321 Yes.
|
|
1322
|
|
1323 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly
|
|
1324 will not feel very much like a Mac application as it has no Mac-specific
|
|
1325 code in it.
|
|
1326
|
|
1327 There is also a port of XEmacs 19.14 that works on all recent versions
|
|
1328 of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com,
|
|
1329 Pitts Jarvis} (recently deceased). It runs in an equivalent of TTY
|
|
1330 mode only (one single Macintosh window, 25 colors), but has a large
|
|
1331 number of Mac-specific additions. It's available at
|
|
1332 @uref{http://homepage.mac.com/pjarvis/xemacs.html}.
|
|
1333
|
|
1334 @node Q1.2.10, Q1.2.11, Q1.2.9, Introduction
|
|
1335 @unnumberedsubsec Q1.2.10: Is there a port of XEmacs to MS-DOS?
|
|
1336
|
|
1337 No. We have never supported running on MS-DOS or Windows 3.1, and in
|
|
1338 fact have long since deleted all MS-DOS-related code.
|
|
1339
|
|
1340 @node Q1.2.11, Q1.2.12, Q1.2.10, Introduction
|
|
1341 @unnumberedsubsec Q1.2.11: Is there a port of XEmacs to OS/2?
|
|
1342
|
|
1343 No, but Alexander Nikolaev <avn_1251@@mail.ru> was at one point
|
|
1344 working on it.
|
|
1345
|
|
1346 @node Q1.2.12, Q1.2.13, Q1.2.11, Introduction
|
|
1347 @unnumberedsubsec Q1.2.12: Is there a port of XEmacs to NextStep?
|
|
1348
|
|
1349 Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did
|
|
1350 the port of GNU Emacs to NeXTstep and expressed interest in doing the
|
|
1351 XEmacs port, but never went any farther.
|
|
1352
|
|
1353 @node Q1.2.13, Q1.3.1, Q1.2.12, Introduction
|
|
1354 @unnumberedsubsec Q1.2.13: Is there a port of XEmacs to VMS?
|
|
1355
|
|
1356 VMS has never been supported by XEmacs. In fact, all the old VMS code
|
|
1357 inherited from GNU Emacs has been removed. Sorry, all you VMS fans
|
|
1358 out there.
|
|
1359
|
|
1360 @unnumberedsec 1.3: Getting Started
|
|
1361
|
|
1362 @node Q1.3.1, Q1.3.2, Q1.2.13, Introduction
|
|
1363 @unnumberedsubsec Q1.3.1: What is an @file{init.el} or @file{.emacs} and is there a sample one?
|
|
1364
|
|
1365 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to
|
|
1366 your tastes. Starting in 21.4, the preferred location for the init file
|
|
1367 is @file{~/.xemacs/init.el}; in previous versions, it was
|
|
1368 @file{~/.emacs}. 21.4 still accepts the old location, but the first
|
|
1369 time you run it, it will ask to migrate your file to the new location.
|
|
1370 If you answer yes, the file will be moved, and a "compatibility"
|
|
1371 @file{.emacs} file will be placed in the old location so that you can
|
|
1372 still run older versions of XEmacs, and versions of GNU Emacs, which
|
|
1373 expect the old location. The @file{.emacs} file present is just a stub
|
|
1374 that loads the real file in @file{~/.xemacs/init.el}.
|
|
1375
|
|
1376 No two init files are alike, nor are they expected to be alike, but
|
|
1377 that's the point. The XEmacs distribution contains an excellent starter
|
|
1378 example in the @file{etc/} directory called @file{sample.init.el}
|
|
1379 (starting in 21.4) or @file{sample.emacs} in older versions. Copy this
|
|
1380 file from there to @file{~/.xemacs/init.el} (starting in 21.4) or
|
|
1381 @file{~/.emacs} in older versions, where @samp{~} means your home
|
|
1382 directory, of course. Then edit it to suit.
|
|
1383
|
|
1384 You may bring the @file{sample.init.el} or @file{sample.emacs} file into
|
|
1385 an XEmacs buffer from the menubar. (The menu entry for it is always
|
|
1386 under the @samp{Help} menu, but its location under that has changed in
|
|
1387 various versions. Recently, look under the @samp{Samples} submenu.) To
|
|
1388 determine the location of the @file{etc/} directory type the command
|
|
1389 @kbd{C-h v data-directory @key{RET}}.
|
|
1390
|
|
1391 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction
|
|
1392 @unnumberedsubsec Q1.3.2: Where do I put my @file{init.el} file?
|
|
1393
|
|
1394 @file{init.el} is the name of the init file starting with 21.4, and is
|
|
1395 located in the subdirectory @file{.xemacs/} of your home directory. In
|
|
1396 prior versions, the init file is called @file{.emacs} and is located in
|
|
1397 your home directory.
|
|
1398
|
|
1399 Your home directory under Windows is determined by the @samp{HOME}
|
|
1400 environment variable. If this is not set, it defaults to @samp{C:\}.
|
|
1401 To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
|
|
1402 select @samp{Control Panel->System->Advanced->Environment Variables...}
|
|
1403 under Windows NT/2000.
|
|
1404
|
|
1405 @node Q1.3.3, Q1.3.4, Q1.3.2, Introduction
|
|
1406 @unnumberedsubsec Q1.3.3: Can I use the same @file{init.el} with the other Emacs?
|
|
1407
|
|
1408 Yes. The sample @file{init.el} included in the XEmacs
|
|
1409 distribution will show you how to handle different versions and flavors
|
|
1410 of Emacs.
|
|
1411
|
|
1412 @node Q1.3.4, Q1.3.5, Q1.3.3, Introduction
|
|
1413 @unnumberedsubsec Q1.3.4: Any good XEmacs tutorials around?
|
|
1414
|
|
1415 There's the XEmacs tutorial available from the Help Menu under
|
|
1416 @samp{Help->Tutorials}, or by typing @kbd{C-h t}. To check whether
|
|
1417 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type
|
|
1418 the first letters of your preferred language, then type @key{RET}.
|
|
1419
|
|
1420 @comment There's an Emacs Lisp tutorial at
|
|
1421 @comment
|
|
1422 @comment @example
|
|
1423 @comment @uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar.gz}.
|
|
1424 @comment @end example
|
|
1425 @comment
|
|
1426 @comment @email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tutorial web
|
|
1427 @comment page at
|
|
1428 @comment @iftex
|
|
1429 @comment @*
|
|
1430 @comment @end iftex
|
|
1431 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}.
|
|
1432
|
|
1433 @node Q1.3.5, Q1.3.6, Q1.3.4, Introduction
|
|
1434 @unnumberedsubsec Q1.3.5: May I see an example of a useful XEmacs Lisp function?
|
|
1435
|
|
1436 The following function does a little bit of everything useful. It does
|
|
1437 something with the prefix argument, it examines the text around the
|
|
1438 cursor, and it's interactive so it may be bound to a key. It inserts
|
|
1439 copies of the current word the cursor is sitting on at the cursor. If
|
|
1440 you give it a prefix argument: @kbd{C-u 3 M-x double-word} then it will
|
|
1441 insert 3 copies.
|
|
1442
|
|
1443 @lisp
|
|
1444 (defun double-word (count)
|
|
1445 "Insert a copy of the current word underneath the cursor"
|
|
1446 (interactive "*p")
|
|
1447 (let (here there string)
|
|
1448 (save-excursion
|
|
1449 (forward-word -1)
|
|
1450 (setq here (point))
|
|
1451 (forward-word 1)
|
|
1452 (setq there (point))
|
|
1453 (setq string (buffer-substring here there)))
|
|
1454 (while (>= count 1)
|
|
1455 (insert string)
|
|
1456 (decf count))))
|
|
1457 @end lisp
|
|
1458
|
|
1459 The best way to see what is going on here is to let XEmacs tell you.
|
|
1460 Put the code into an XEmacs buffer, and do a @kbd{C-h f} with the cursor
|
|
1461 sitting just to the right of the function you want explained. Eg. move
|
|
1462 the cursor to the SPACE between @code{interactive} and @samp{"*p"} and
|
|
1463 hit @kbd{C-h f} to see what the function @code{interactive} does. Doing
|
|
1464 this will tell you that the @code{*} requires a writable buffer, and
|
|
1465 @code{p} converts the prefix argument to a number, and
|
|
1466 @code{interactive} allows you to execute the command with @kbd{M-x}.
|
|
1467
|
|
1468 @node Q1.3.6, Q1.3.7, Q1.3.5, Introduction
|
|
1469 @unnumberedsubsec Q1.3.6: And how do I bind it to a key?
|
|
1470
|
|
1471 To bind to a key do:
|
|
1472
|
|
1473 @lisp
|
|
1474 (global-set-key "\C-cd" 'double-word)
|
|
1475 @end lisp
|
|
1476
|
|
1477 Or interactively, @kbd{M-x global-set-key} and follow the prompts.
|
|
1478
|
|
1479 @node Q1.3.7, Q1.3.8, Q1.3.6, Introduction
|
|
1480 @unnumberedsubsec Q1.3.7: What's the difference between a macro and a function?
|
|
1481
|
|
1482 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual:
|
|
1483
|
|
1484 @dfn{Macros} enable you to define new control constructs and other
|
|
1485 language features. A macro is defined much like a function, but instead
|
|
1486 of telling how to compute a value, it tells how to compute another Lisp
|
|
1487 expression which will in turn compute the value. We call this
|
|
1488 expression the @dfn{expansion} of the macro.
|
|
1489
|
|
1490 Macros can do this because they operate on the unevaluated expressions
|
|
1491 for the arguments, not on the argument values as functions do. They can
|
|
1492 therefore construct an expansion containing these argument expressions
|
|
1493 or parts of them.
|
|
1494
|
|
1495 Do not confuse the two terms with @dfn{keyboard macros}, which are
|
|
1496 another matter, entirely. A keyboard macro is a key bound to several
|
|
1497 other keys. Refer to manual for details.
|
|
1498
|
|
1499 @node Q1.3.8, Q1.4.1, Q1.3.7, Introduction
|
|
1500 @unnumberedsubsec Q1.3.8: What is @code{Custom}?
|
|
1501
|
|
1502 @code{Custom} is a system for customizing XEmacs options.
|
|
1503
|
|
1504 You can access @code{Advanced (Customize)} from the @code{Options} menu
|
|
1505 or invoking one of customize commands by typing eg.
|
|
1506 @kbd{M-x customize}, @kbd{M-x customize-face},
|
|
1507 @kbd{M-x customize-variable} or @kbd{M-x customize-apropos}.
|
|
1508
|
|
1509 There is also new @samp{browser} mode for Customize.
|
|
1510 Try it out with @kbd{M-x customize-browse}
|
|
1511
|
|
1512 @unnumberedsec 1.4: Getting Help
|
|
1513
|
|
1514 @node Q1.4.1, Q1.4.2, Q1.3.8, Introduction
|
|
1515 @unnumberedsubsec Q1.4.1: Where can I get help?
|
|
1516
|
|
1517 Probably the easiest way, if everything is installed, is to use Info, by
|
|
1518 pressing @kbd{C-h i}, or looking for an Info item on the
|
|
1519 Help Menu. @kbd{M-x apropos} can be used to look for particular commands.
|
|
1520
|
|
1521 For items not found in the manual, try reading this FAQ
|
|
1522 and reading the Usenet group comp.emacs.xemacs.
|
|
1523
|
|
1524 If you choose to post to a newsgroup, @strong{please use
|
|
1525 comp.emacs.xemacs}. Please do not post XEmacs related questions to
|
|
1526 gnu.emacs.help.
|
|
1527
|
|
1528 If you cannot post or read Usenet news, there is a corresponding mailing
|
|
1529 list @email{xemacs-news@@xemacs.org} which is available. It can be
|
|
1530 subscribed to via the Mailman Web interface or by sending mail to to
|
|
1531 @email{xemacs-news-request@@xemacs.org} with @samp{subscribe} in the
|
|
1532 body of the message. See also
|
|
1533 @uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a
|
|
1534 subscription, you may use the @email{xemacs-news-request@@xemacs.org}
|
|
1535 address or the Web interface. Send a message with a subject of
|
|
1536 @samp{unsubscribe} to be removed.
|
|
1537
|
|
1538 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction
|
|
1539 @unnumberedsubsec Q1.4.2: Which mailing lists are there?
|
|
1540
|
|
1541 For complete, up-to-date info on the lists and how to subscribe, see
|
|
1542 @uref{http://www.xemacs.org/Lists/}.
|
|
1543
|
|
1544 @table @samp
|
|
1545
|
|
1546 @item comp.emacs.xemacs
|
|
1547 is a Usenet newsgroup
|
|
1548 for XEmacs users to discuss problems and issues that arise
|
|
1549 for them. It's not generally an appropriate place to ask
|
|
1550 about apparent bugs (use @samp{xemacs-beta}), or future plans
|
|
1551 (use @samp{xemacs-design}).
|
|
1552
|
|
1553 @item xemacs-announce
|
|
1554 is a read-only, low
|
|
1555 volume list for announcements concerning the XEmacs project
|
|
1556 and new releases of the XEmacs software.
|
|
1557
|
|
1558 @item xemacs-beta
|
|
1559 is an open list for bug
|
|
1560 reports about beta versions of XEmacs. This includes the bug
|
|
1561 reports themselves, by both users and developers, as well as
|
|
1562 queries, follow-ups, and discussions further determining their
|
|
1563 nature and status. This is the primary channel for this kind
|
|
1564 of discussion; related code changes will usually not be
|
|
1565 applied until they have been discussed here. When such
|
|
1566 discussions touch on significant changes to the code (in
|
|
1567 particular, structural changes), or on changes to API's or
|
|
1568 external functionality, they should be moved to
|
|
1569 @samp{xemacs-design}. Requests and proposals for
|
|
1570 non-bug-related changes do not belong on @samp{xemacs-beta},
|
|
1571 and should be sent to @samp{xemacs-design} instead.
|
|
1572
|
|
1573 @item xemacs-beta-ja
|
|
1574 is an open list for bug
|
|
1575 reports and design discussion related to Mule features,
|
|
1576 including Japanese handling, in beta versions of XEmacs.
|
|
1577 Japanese is the preferred language of discussion. For most
|
|
1578 timely presentation to reviewers, please consider sending
|
|
1579 appropriate discussion to @samp{xemacs-mule} or
|
|
1580 @samp{xemacs-design} in English when convenient for
|
|
1581 the participants in discussion. When possible, bug reports
|
|
1582 not related to Mule (including Japanese) should be reported on
|
|
1583 @samp{xemacs-beta} in English.
|
|
1584
|
|
1585 @item xemacs-buildreports
|
|
1586 is an open list for
|
|
1587 submission of build-reports on beta versions of XEmacs. For
|
|
1588 information on what the build-reports should contain, please
|
|
1589 see the `etc/BETA' file which is included in each beta
|
|
1590 distribution.
|
|
1591
|
|
1592 @item xemacs-cvs
|
|
1593 is a read-only list for notices
|
|
1594 and information on what has been committed to the XEmacs CVS
|
|
1595 trees, by whom, and for what.
|
|
1596
|
|
1597 @item xemacs-design
|
|
1598 is an open list for
|
|
1599 discussing the design of XEmacs. This includes discussion
|
|
1600 about planned and ongoing changes to functionality and API
|
|
1601 changes and additions as well as requests for them. This is
|
|
1602 the primary channel for this kind of discussion; related code
|
|
1603 changes will usually not be applied until they have been
|
|
1604 discussed here. This does not include bug reports, which go
|
|
1605 to @samp{xemacs-beta}.
|
|
1606
|
|
1607 @item xemacs-mule
|
|
1608 is an open mailing list for
|
|
1609 discussion of International extensions to XEmacs including
|
|
1610 Mule, XIM, I18n issues, etc, and is not confined to
|
|
1611 developmental issues. This list is not restricted to
|
|
1612 English, postings in all languages are welcome.
|
|
1613
|
|
1614 @item xemacs-news
|
|
1615 is an open list for discussion
|
|
1616 and bug reporting for XEmacs. This mailing list is
|
|
1617 bi-directionally gatewayed with the USENET newsgroup
|
|
1618 comp.emacs.xemacs.
|
|
1619
|
|
1620 @item xemacs-nt
|
|
1621 is a developers-only mailing
|
|
1622 list and is intended for people who wish to work actively on
|
|
1623 the porting of XEmacs to Microsoft Windows NT and Microsoft
|
|
1624 Windows '95.
|
|
1625
|
|
1626 @item xemacs-patches
|
|
1627 is an open, moderated
|
|
1628 list for submission of patches to the XEmacs distribution
|
|
1629 and its packages. Anyone may subscribe or submit to
|
|
1630 xemacs-patches, but all submissions are reviewed by the list
|
|
1631 moderator before they are distributed to the
|
|
1632 list. Discussion is not appropriate on xemacs-patches.
|
|
1633
|
|
1634 @item xemacs-users-ja
|
|
1635 is an open list for
|
|
1636 discussion and bug reporting for XEmacs. Japanese is the
|
|
1637 preferred language of discussion. It is not gated to
|
|
1638 comp.emacs.xemacs or the @samp{xemacs} list. For
|
|
1639 fastest response, bugs not specifically related to Japanese
|
|
1640 or Mule features should be reported on
|
|
1641 @samp{xemacs-beta} (in English).
|
|
1642
|
|
1643 @item xemacs-users-ru
|
|
1644 is an open list for
|
|
1645 discussion and bug reporting for XEmacs. Russian is the
|
|
1646 preferred language of discussion. It is not gated to
|
|
1647 comp.emacs.xemacs or the @samp{xemacs} list. For
|
|
1648 fastest response, bugs not specifically related to Russian
|
|
1649 or Mule features should be reported on
|
|
1650 @samp{xemacs-beta} (in English).
|
|
1651 @end table
|
|
1652
|
|
1653 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction
|
|
1654 @unnumberedsubsec Q1.4.3: Where are the mailing lists archived?
|
|
1655
|
|
1656 The archives can be found at @uref{http://list-archive.xemacs.org}
|
|
1657
|
|
1658 @node Q1.4.4, Q1.4.5, Q1.4.3, Introduction
|
|
1659 @unnumberedsubsec Q1.4.4: How can I get two instances of info?
|
|
1660
|
|
1661 Before 21.4, you can't. The @code{info} package does not provide for
|
|
1662 multiple info buffers. In 21.4, this should be fixed. #### how?
|
|
1663
|
|
1664 @node Q1.4.5, Q1.5.1, Q1.4.4, Introduction
|
|
1665 @unnumberedsubsec Q1.4.5: How do I add new Info directories?
|
|
1666
|
|
1667 You use something like:
|
|
1668
|
|
1669 @lisp
|
|
1670 (setq Info-directory-list (cons
|
|
1671 (expand-file-name "~/info")
|
|
1672 Info-default-directory-list))
|
|
1673 @end lisp
|
|
1674
|
|
1675 @email{davidm@@prism.kla.com, David Masterson} writes:
|
|
1676
|
|
1677 @quotation
|
|
1678 Emacs Info and XEmacs Info do many things differently. If you're trying to
|
|
1679 support a number of versions of Emacs, here are some notes to remember:
|
|
1680
|
|
1681 @enumerate
|
|
1682 @item
|
|
1683 Emacs Info scans @code{Info-directory-list} from right-to-left while
|
|
1684 XEmacs Info reads it from left-to-right, so append to the @emph{correct}
|
|
1685 end of the list.
|
|
1686
|
|
1687 @item
|
|
1688 Use @code{Info-default-directory-list} to initialize
|
|
1689 @code{Info-directory-list} @emph{if} it is available at startup, but not
|
|
1690 all Emacsen define it.
|
|
1691
|
|
1692 @item
|
|
1693 Emacs Info looks for a standard @file{dir} file in each of the
|
|
1694 directories scanned from #1 and magically concatenates them together.
|
|
1695
|
|
1696 @item
|
|
1697 XEmacs Info looks for a @file{localdir} file (which consists of just the
|
|
1698 menu entries from a @file{dir} file) in each of the directories scanned
|
|
1699 from #1 (except the first), does a simple concatenation of them, and
|
|
1700 magically attaches the resulting list to the end of the menu in the
|
|
1701 @file{dir} file in the first directory.
|
|
1702 @end enumerate
|
|
1703
|
|
1704 Another alternative is to convert the documentation to HTML with
|
|
1705 texi2html and read it from a web browser like Lynx or W3.
|
|
1706 @end quotation
|
|
1707
|
|
1708 @unnumberedsec 1.5: Contributing to XEmacs
|
|
1709
|
|
1710 @node Q1.5.1, Q1.5.2, Q1.4.5, Introduction
|
|
1711 @unnumberedsubsec Q1.5.1: How do I submit changes to the FAQ?
|
|
1712
|
|
1713 The FAQ is actively maintained and modified regularly. All links should
|
|
1714 be up to date. Unfortunately, some of the information is out of date --
|
|
1715 a situation which the FAQ maintainer is working on. All submissions are
|
|
1716 welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ
|
|
1717 maintainers}.
|
|
1718
|
|
1719 Please make sure that @samp{XEmacs FAQ} appears on the Subject: line.
|
|
1720 If you think you have a better way of answering a question, or think a
|
|
1721 question should be included, we'd like to hear about it. Questions and
|
|
1722 answers included into the FAQ will be edited for spelling and grammar
|
|
1723 and will be attributed. Answers appearing without attribution are
|
|
1724 either from versions of the FAQ dated before May 1996 or are from
|
|
1725 previous FAQ maintainers. Answers quoted from Usenet news articles will
|
|
1726 always be attributed, regardless of the author.
|
|
1727
|
|
1728 @node Q1.5.2, Q1.5.3, Q1.5.1, Introduction
|
|
1729 @unnumberedsubsec Q1.5.2: How do I become a beta tester?
|
|
1730
|
|
1731 Send an email message to @email{xemacs-beta-request@@xemacs.org} with
|
|
1732 the line @samp{subscribe} in the body of the message.
|
|
1733
|
|
1734 Be prepared to get your hands dirty, as beta testers are expected to
|
|
1735 identify problems as best they can.
|
|
1736
|
|
1737 @node Q1.5.3, Q1.6.1, Q1.5.2, Introduction
|
|
1738 @unnumberedsubsec Q1.5.3: How do I contribute to XEmacs itself?
|
|
1739
|
|
1740 It depends on the knowledge and time you possess. If you are able, by
|
|
1741 all means become a beta tester (@pxref{Q1.5.2}). If you are a
|
|
1742 programmer, try to build XEmacs and see if you can improve it.
|
|
1743
|
|
1744 Otherwise, you can still help by using XEmacs as your everyday editor
|
|
1745 (for pre-built binary versions, @pxref{Q1.1.2}) and reporting bugs you
|
|
1746 find to the mailing list.
|
|
1747
|
|
1748 Another area where we need help is the documentation: We need good
|
|
1749 documentation for building XEmacs and for using it. This FAQ is a
|
|
1750 small step in that direction.
|
|
1751
|
|
1752 Ben Wing @email{ben@@xemacs.org} writes:
|
|
1753
|
|
1754 @quotation
|
|
1755 BTW if you have a wish list of things that you want added, you have to
|
|
1756 speak up about it! More specifically, you can do the following if you
|
|
1757 want a feature added (in increasing order of usefulness):
|
|
1758
|
|
1759 @itemize @bullet
|
|
1760 @item
|
|
1761 Make a posting about a feature you want added.
|
|
1762
|
|
1763 @item
|
|
1764 Become a beta tester and make more postings about those same features.
|
|
1765
|
|
1766 @item
|
|
1767 Convince us that you're going to use the features in some cool and
|
|
1768 useful way.
|
|
1769
|
|
1770 @item
|
|
1771 Come up with a clear and well-thought-out API concerning the features.
|
|
1772
|
|
1773 @item
|
|
1774 Write the code to implement a feature and send us a patch.
|
|
1775 @end itemize
|
|
1776
|
|
1777 (not that we're necessarily requiring you to write the code, but we can
|
|
1778 always hope :)
|
|
1779 @end quotation
|
|
1780
|
|
1781 @unnumberedsec 1.6: Politics (XEmacs vs. GNU Emacs)
|
|
1782
|
|
1783 @node Q1.6.1, Q1.6.2, Q1.5.3, Introduction
|
|
1784 @unnumberedsubsec Q1.6.1: What is GNU Emacs?
|
|
1785
|
|
1786 GNU Emacs and XEmacs are related open-source text editors. Both
|
|
1787 derive from GNU Emacs version 18; the split between the two happened
|
|
1788 in 1991 (for comparison, the oldest versions of GNU Emacs date from
|
|
1789 1984). For information on GNU Emacs, see
|
|
1790 @uref{http://www.gnu.org/software/emacs/emacs.html}.
|
|
1791
|
|
1792 @node Q1.6.2, Q1.6.3, Q1.6.1, Introduction
|
|
1793 @unnumberedsubsec Q1.6.2: How does XEmacs differ from GNU Emacs?
|
428
|
1794
|
|
1795 For a detailed description of the differences between GNU Emacs and
|
|
1796 XEmacs and a detailed history of XEmacs, check out the
|
|
1797 @example
|
430
|
1798 @uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file}
|
428
|
1799 @end example
|
|
1800
|
2417
|
1801 @table @strong
|
|
1802 @item User-Visible Editing Features
|
|
1803 XEmacs in general tries hard to conform to exist user-interface
|
|
1804 standards, and to work "out-of-the-box" without the need for obscure
|
|
1805 customization changes. GNU Emacs, particularly version 21, has gotten
|
|
1806 better about this (in many cases by copying the XEmacs behavior!), but
|
|
1807 still has some weirdnesses. For example, the standard method of
|
|
1808 selecting text using the Shift key works out-of-the-box in XEmacs.
|
|
1809
|
|
1810 XEmacs has a built-in toolbar. Four toolbars can actually be configured
|
|
1811 simultaneously: top, bottom, left, and right toolbars.
|
|
1812
|
|
1813 XEmacs has vertical and horizontal scrollbars. Unlike in GNU Emacs 19
|
|
1814 (which provides a primitive form of vertical scrollbar), these are true
|
|
1815 toolkit scrollbars. A look-alike Motif scrollbar is provided for those
|
|
1816 who don't have Motif. (Even for those who do, the look-alike may be
|
|
1817 preferable as it is faster.)
|
|
1818
|
|
1819 XEmacs has buffer tabs along the top of the frame (although the
|
|
1820 position can be changed) that make it very easy to switch buffers.
|
|
1821
|
|
1822 The menubar under XEmacs is better-designed, with more thought put into
|
|
1823 it.
|
|
1824
|
|
1825 XEmacs can ask questions using popup dialog boxes. Any command executed
|
|
1826 from a menu will ask yes/no questions with dialog boxes, while commands
|
|
1827 executed via the keyboard will use the minibuffer.
|
|
1828
|
|
1829 XEmacs under MS Windows provides uses the standard file-dialog box for
|
|
1830 opening and saving files. Standard menu-accelerator behavior can easily
|
|
1831 be enabled using the Options menu, and integrates well into the existing
|
|
1832 keymap.
|
|
1833
|
|
1834 XEmacs has (still experimental) support for widgets of various sorts --
|
|
1835 buttons, text boxes, sliders, progress bars, etc. A progress bar is
|
|
1836 used in font lock to show the progress.
|
|
1837
|
|
1838 Experimental support for drag-and-drop protocols is provided from
|
|
1839 XEmacs 21.
|
|
1840
|
|
1841 @item General Platform Support
|
|
1842 If you're running on a machine with audio hardware, you can specify
|
|
1843 sound files for XEmacs to play instead of the default X beep. See the
|
|
1844 documentation of the function load-sound-file and the variable
|
|
1845 sound-alist. XEmacs also supports the network sound protocols NAS and
|
|
1846 EsounD.
|
|
1847
|
|
1848 XEmacs 21 supports database protocols with LISP bindings, currently
|
|
1849 including Berkeley DB, LDAP, and PostgreSQL (21.2 only).
|
|
1850
|
|
1851 XEmacs 20 and 21 support the Canna, Wnn, and SJ3 Japanese input method
|
|
1852 servers directly, as well as through the X Input Method (XIM)
|
|
1853 protocol. GNU Emacs 20 supports only the XIM protocol. Both Emacsen
|
|
1854 support the Quail family of input methods (implemented in LISP) for many
|
|
1855 languages.
|
|
1856
|
|
1857 XEmacs provides support for ToolTalk on systems that have
|
|
1858 it.
|
|
1859
|
|
1860 @item Packaged LISP Libraries
|
|
1861 Many more packages are provided standard with XEmacs than with GNU Emacs
|
|
1862 19 or 20.
|
|
1863
|
|
1864 XEmacs 21 supports an integrated package management system which uses
|
|
1865 EFS to download, then automatically install prebuilt LISP
|
|
1866 libraries. This allows XEmacs users much more straightforward access to
|
|
1867 the "latest and greatest" version of any given library.
|
|
1868
|
|
1869 We are working on a standard method for enabling, disabling and
|
|
1870 otherwise controlling packages, which should make them very easy to use.
|
|
1871
|
|
1872 @item LISP Programming
|
|
1873 From XEmacs 20 on, characters are a separate type. Characters can be
|
|
1874 converted to integers (and many integers can be converted to
|
|
1875 characters), but characters are not integers. GNU Emacs 19, XEmacs 19,
|
|
1876 Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and GNU Emacs
|
|
1877 20 (incorporating Mule 3 and later Mule 4) represent them as integers.
|
|
1878
|
|
1879 From XEmacs 20 on, the buffer is treated as an array of characters, and
|
|
1880 the representation of buffer text is not exposed to LISP. The GNU Emacs
|
|
1881 20 functions like buffer-as-multibyte are not supported.
|
|
1882
|
|
1883 In XEmacs, events are first-class objects. GNU Emacs 19 represents them
|
|
1884 as integers, which obscures the differences between a key gesture and
|
|
1885 the ancient ASCII code used to represent a particular overlapping subset
|
|
1886 of them.
|
|
1887
|
|
1888 In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19
|
|
1889 represents them as complicated combinations of association lists and
|
|
1890 vectors. If you use the advertised functional interface to manipulation
|
|
1891 of keymaps, the same code will work in XEmacs, GNU Emacs 18, and GNU
|
|
1892 Emacs 19; if your code depends on the underlying implementation of
|
|
1893 keymaps, it will not.
|
|
1894
|
|
1895 XEmacs uses "extents" to represent all non-textual aspects of buffers;
|
|
1896 GNU Emacs 19 uses two distinct objects, "text properties" and
|
|
1897 "overlays", which divide up the functionality between them. Extents are
|
|
1898 a superset of the union of the functionality of the two GNU Emacs data
|
|
1899 types. The full GNU Emacs 19 interface to text properties and overlays
|
|
1900 is supported in XEmacs (with extents being the underlying
|
|
1901 representation).
|
|
1902
|
|
1903 Extents can be made to be copied into strings, and then restored, by
|
|
1904 kill and yank. Thus, one can specify this behavior on either "extents"
|
|
1905 or "text properties", whereas in GNU Emacs 19 text properties always
|
|
1906 have this behavior and overlays never do.
|
|
1907
|
|
1908 @item Window System Programming Interface
|
|
1909 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which makes
|
|
1910 it be a more well-behaved X citizen (and also improves portability). A
|
|
1911 result of this is that it is possible to include other Xt "Widgets" in
|
|
1912 the XEmacs window. Also, XEmacs understands the standard Xt command-line
|
|
1913 arguments.
|
|
1914
|
|
1915 XEmacs supports Motif applications, generic Xt (e.g. Athena)
|
|
1916 applications, and raw Xlib applications. An XEmacs variant which
|
|
1917 supports GTK+ is available (integration as an option in the XEmacs
|
|
1918 mainline is planned for XEmacs 22), although code to take advantage of
|
|
1919 the support is as yet scarce.
|
|
1920
|
|
1921 An XEmacs frame can be placed within an "external client widget" managed
|
|
1922 by another application. This allows an application to use an XEmacs
|
|
1923 frame as its text pane rather than the standard Text widget that is
|
|
1924 provided with Motif or Athena.
|
|
1925
|
|
1926 @item Community Participation
|
2459
|
1927 Joining the XEmacs development team is simple. Mail to
|
|
1928 @email{xemacs-beta@@xemacs.org, XEmacs Developers}, and you're in! (If
|
|
1929 you want to be, of course. You're also welcome to just post
|
|
1930 development-related questions and bug reports.) The GNU Emacs
|
2417
|
1931 development team and internal mailing lists are still by invitation
|
|
1932 only.
|
|
1933
|
|
1934 The "bleeding edge" of mainline XEmacs development is available by
|
|
1935 anonymous CVS as are some subsidiary branches (check out the xemacs-gtk
|
|
1936 module for the latest in GUI features!)
|
|
1937
|
|
1938 Development and maintenance of Lisp libraries is separated from the core
|
|
1939 editor development at a fairly low level. This provides better
|
|
1940 modularization and a better division of responsibility between external
|
|
1941 library maintainers and the XEmacs core development team. Even for
|
|
1942 packages the size of Gnus, XEmacs users normally have access to a
|
|
1943 pre-built version within a few weeks of a major release, and minor
|
|
1944 updates often within days.
|
|
1945
|
|
1946 CVS commit authority is broadly dispersed. Recognized maintainers of
|
|
1947 LISP libraries who are willing to maintain XEmacs packaged versions
|
|
1948 automatically qualify for CVS accounts for their packages.
|
|
1949 @end table
|
|
1950
|
2537
|
1951 @node Q1.6.3, Q1.6.4, Q1.6.2, Introduction
|
|
1952 @unnumberedsubsec Q1.6.3: How much does XEmacs differ?
|
2417
|
1953
|
|
1954 RMS has asserted at times that XEmacs is merely a "patch" on top of
|
2537
|
1955 GNU Emacs (@pxref{Q1.6.4}). In fact, probably not more than 5% of the
|
2417
|
1956 code, if that, remains unchanged, and nearly 14 years of work has gone
|
|
1957 into XEmacs at this point. (GNU Emacs itself is only than 20 years
|
|
1958 old, and thus XEmacs has existed as a separate product for over 2/3 of
|
|
1959 the lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has
|
|
1960 perhaps 65,000 more lines of C code than GNU Emacs 21.2.
|
|
1961
|
|
1962 However, the XEmacs developers strive to keep their code compatible with
|
|
1963 GNU Emacs, especially on the Lisp level. Much effort goes into
|
|
1964 "synching" the XEmacs Elisp code with recent GNU Emacs releases so as to
|
|
1965 benefit from GNU Emacs development work. (In contrast, almost no code
|
|
1966 from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs
|
|
1967 developers are instructed by RMS not to even look at XEmacs source code!
|
|
1968 This stems from self-imposed licensing restrictions on the part of GNU
|
|
1969 Emacs -- and almost certainly out of hostility, as well.)
|
|
1970
|
2537
|
1971 @node Q1.6.4, Q1.6.5, Q1.6.3, Introduction
|
|
1972 @unnumberedsubsec Q1.6.4: Is XEmacs "GNU"?
|
2417
|
1973
|
|
1974 RMS insists on the term "GNU XEmacs" and maintains that
|
|
1975
|
|
1976 @quotation
|
|
1977 XEmacs is GNU software because it's a modified version of a
|
|
1978 GNU program. And it is GNU software because the FSF is the copyright
|
|
1979 holder for most of it, and therefore the legal responsibility for
|
|
1980 protecting its free status falls on us whether we want it or not. This
|
|
1981 is why the term "GNU XEmacs" is legitimate.
|
|
1982 @end quotation
|
|
1983
|
|
1984 In fact, FSF is @emph{not} the copyright holder for most of the code,
|
2537
|
1985 as very little unmodified FSF code remains (@pxref{Q1.6.3}).
|
2417
|
1986
|
|
1987 Furthermore, RMS's assertion that XEmacs is "GNU" seems rather bizarre
|
|
1988 to the XEmacs developers given RMS's hostility and general lack of
|
|
1989 interest in cooperation. "GNU" software in general is part of the GNU
|
|
1990 Project, is distributed by it on their FTP site, and receives support
|
|
1991 (or at least cooperation), as well as implicit endorsement, from it.
|
|
1992 The GNU Project, however, has never supported XEmacs and never
|
|
1993 distributed XEmacs, and RMS's hostility is the farthest thing possible
|
|
1994 from an endorsement. In fact, the GNU Project distributes a number of
|
|
1995 non-GNU software projects on the FSF web site, but again XEmacs is not
|
|
1996 one of them.
|
|
1997
|
2537
|
1998 @node Q1.6.5, Q1.6.6, Q1.6.4, Introduction
|
|
1999 @unnumberedsubsec Q1.6.5: What is the correct way to refer to XEmacs and GNU Emacs?
|
2417
|
2000
|
|
2001 Unfortunately even the naming of these two applications has become
|
|
2002 politicized. Much of this stems from RMS, who has a history of
|
|
2003 politicizing similar issues. (Compare the controversy over "Lignux"
|
|
2004 and "GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU
|
|
2005 Emacs" be used, which are neutral and acceptable to most people. RMS,
|
|
2006 however, is not willing to accept these terms. He insists that, if
|
|
2007 his product is called "GNU Emacs", then ours must be called "GNU
|
2537
|
2008 XEmacs". (For our opinion of this term, @xref{Q1.6.4}.) On the other
|
2417
|
2009 hand, if our product is to be called "XEmacs", as we prefer, then his
|
|
2010 product must simply be called "Emacs". The intent of this seems
|
|
2011 clear: RMS wants to make sure the names reflect his view that his
|
|
2012 version is the "real" Emacs and ours is merely a derivative,
|
2537
|
2013 second-class product (@pxref{Q1.6.3}).
|
2417
|
2014
|
|
2015 The XEmacs developers hope that you will use the neutral terms
|
|
2016 "XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on
|
|
2017 the other hand, is a generic term for a class of programmable text
|
|
2018 editors with a similar look-and-feel, and usually a Lisp-based
|
|
2019 extension language. These trace themselves back to early editors such
|
|
2020 as EINE, ZWEI, ZMACS and Multics Emacs. @xref{A History of Emacs,,,
|
|
2021 internals, XEmacs Internals Manual}.
|
|
2022
|
|
2023 We also call upon RMS, in the spirit of furthering cooperation, to
|
|
2024 stop politicizing this issue and use the neutral terms "XEmacs" and
|
|
2025 "GNU Emacs". We have already acceded to RMS' wishes in this respect,
|
|
2026 and we expect him to do the same. (In the past, the XEmacs developers
|
|
2027 often used the terms "FSF Emacs" or "FSFmacs" or "RMSmacs" in
|
|
2028 reference to GNU Emacs; these terms were apparently modeled after RMS'
|
|
2029 own usage of "Gosmacs" and "Gosling Emacs" in reference to Unipress
|
|
2030 Emacs, produced by James Gosling. RMS, however, considers such terms
|
|
2031 to be insulting, so we refrain from using them as much as possible in
|
|
2032 preference to GNU Emacs.)
|
|
2033
|
2537
|
2034 @node Q1.6.6, Q1.7.1, Q1.6.5, Introduction
|
|
2035 @unnumberedsubsec Q1.6.6: Why haven't XEmacs and GNU Emacs merged?
|
2417
|
2036
|
|
2037 There are currently irreconcilable differences in the views about
|
|
2038 technical, programming, design, organizational and legal matters
|
|
2039 between Richard Stallman (RMS), the author and leader of the GNU Emacs
|
|
2040 project, and the XEmacs development team which provide little hope for
|
|
2041 a merge to take place in the short-term future. There have been
|
|
2042 repeated attempts at merging by all of the major XEmacs developers,
|
|
2043 starting from the early days of Lucid Emacs (in 1991), but they have
|
|
2044 all failed. RMS has very strong views about how GNU Emacs should be
|
|
2045 structured and how his project should be run, and during the repeated
|
|
2046 merge efforts has never demonstrated any realistic interest in
|
|
2047 sufficiently compromising or ceding control to allow a middle ground
|
|
2048 to be found. The basic problem seems to be the very different goals
|
|
2049 of RMS and the XEmacs project. The primary goals of the XEmacs
|
|
2050 project are technical and organizational -- we want to create the best
|
|
2051 editor possible, and to make it as easy as possible for people around
|
|
2052 the world to contribute. The primary goals of RMS, on the other hand,
|
|
2053 are political, and GNU Emacs, and any potential merge efforts with
|
|
2054 XEmacs, are strictly subservient to these goals. In fact, in many
|
|
2055 ways RMS sees GNU Emacs as the "poster child" of his aims, the one
|
|
2056 program in the GNU project that above all others must set an example
|
|
2057 to the world. (This has to do with the fact that GNU Emacs was the
|
|
2058 first program in the GNU project, and the only one that he is still
|
|
2059 personally involved with on a day-to-day basis.) Given his goals, his
|
|
2060 position is completely reasonable -- but unfortunately, makes any
|
|
2061 merge impossible.
|
|
2062
|
|
2063 From the XEmacs perspective, the most intractable issues appear to be
|
|
2064 legal and organizational, specifically:
|
428
|
2065
|
|
2066 @itemize @bullet
|
|
2067 @item
|
2417
|
2068 RMS requires "legal papers" to be signed for all contributions of code
|
|
2069 to GNU Emacs over 10 lines or so, transferring the copyright and all
|
|
2070 legal rights to the code to the Free Software Foundation. XEmacs does
|
|
2071 not and has never required this, since it has the practical effect of
|
|
2072 discouraging individual and in particular corporate contributions --
|
|
2073 corporations will almost never sign away their legal rights to code
|
|
2074 since it makes it impossible to reuse the code in any product that
|
|
2075 whose license is not compatible with the GNU General Public License.
|
|
2076 Since RMS has shown no inclination to compromise on this issue, a
|
|
2077 merge would require that most of the existing XEmacs code would need
|
|
2078 to be thrown away and rewritten -- something the XEmacs developers are
|
|
2079 understandably reluctant to do.
|
|
2080
|
|
2081 @item
|
|
2082 A repeated stumbling block in the merge talks has been the issue of
|
|
2083 organizational control over the resulting product. RMS has made it
|
|
2084 clear that he intends to have final say over design issues in a merged
|
|
2085 Emacs. Unfortunately, RMS and the XEmacs developers have repeatedly
|
|
2086 clashed over design decisions, and RMS' insistence on getting his way
|
|
2087 in such disagreements was the very reason for the split in the first
|
|
2088 place. This same issue has come up again and again in merge talks and
|
|
2089 we have never been able to come to a satisfactory resolution. To the
|
|
2090 extent that RMS is willing to compromise at all, it appears to be of a
|
|
2091 purely political rather than technical nature -- "If we support this
|
|
2092 feature of yours, we also get to support this other feature of mine."
|
|
2093 The XEmacs developers cannot see how such a process would lead to
|
|
2094 anything but a mess of incompatible things hodgepodged together.
|
|
2095
|
|
2096 @item
|
|
2097 Because of the years of separate development, distinct and
|
|
2098 incompatible interfaces have developed and merging would be extremely
|
|
2099 difficult even with the above non-technical issues resolved. The
|
|
2100 problem has been exacerbated by the issue of legal papers -- because
|
|
2101 XEmacs code is not "kosher" from RMS' perspective, he discourages
|
|
2102 developers from even looking at it out of legal concerns. Although it
|
|
2103 is still possible to read the XEmacs documentation and run the
|
|
2104 program, the practical effect of this prohibition has been to strongly
|
|
2105 discourage code-sharing and cooperative development -- although a
|
|
2106 great deal of GNU Emacs code has been incorporated into XEmacs,
|
|
2107 practically none has gone the other direction.
|
428
|
2108 @end itemize
|
|
2109
|
|
2110 If you have a comment to add regarding the merge, it is a good idea to
|
2417
|
2111 avoid posting to the newsgroups, because of the very heated flamewars
|
|
2112 that often result. Mail your questions to
|
|
2113 @email{xemacs-beta@@xemacs.org} and @email{emacs-devel@@gnu.org}.
|
|
2114
|
2537
|
2115 @unnumberedsec 1.7: External Packages
|
|
2116
|
|
2117 @node Q1.7.1, Q1.8.1, Q1.6.6, Introduction
|
|
2118 @unnumberedsubsec Q1.7.1: Which external packages are there?
|
|
2119
|
|
2120 @subheading Normal Packages
|
|
2121
|
|
2122 A very broad collection of elisp packages.
|
2417
|
2123
|
|
2124 @table @asis
|
2537
|
2125 @item Sun
|
|
2126 Support for Sparcworks.
|
|
2127
|
|
2128 @item ada
|
|
2129 Ada language support.
|
|
2130
|
|
2131 @item apel
|
|
2132 A Portable Emacs Library. Used by XEmacs MIME support.
|
|
2133
|
|
2134 @item auctex
|
|
2135 Basic TeX/LaTeX support.
|
|
2136
|
|
2137 @item bbdb
|
|
2138 The Big Brother Data Base: a rolodex-like database program.
|
|
2139
|
|
2140 @item build
|
|
2141 Build XEmacs from within (UNIX, Windows).
|
|
2142
|
|
2143 @item c-support
|
|
2144 Basic single-file add-ons for editing C code.
|
|
2145
|
|
2146 @item calc
|
|
2147 Emacs calculator.
|
|
2148
|
|
2149 @item calendar
|
|
2150 Calendar and diary support.
|
|
2151
|
|
2152 @item cc-mode
|
|
2153 C, C++, Objective-C, Java, CORBA IDL, Pike and AWK language support.
|
|
2154
|
|
2155 @item clearcase
|
|
2156 New Clearcase Version Control for XEmacs (UNIX, Windows).
|
|
2157
|
|
2158 @item clearcase
|
|
2159 Support for the Clearcase version control system.
|
|
2160
|
|
2161 @item cookie
|
|
2162 "Fortune cookie"-style messages. Includes Spook (suspicious phrases)
|
|
2163 and Yow (Zippy quotes).
|
|
2164
|
|
2165 @item crisp
|
|
2166 Crisp/Brief emulation.
|
|
2167
|
|
2168 @item debug
|
|
2169 GUD, gdb, dbx debugging support.
|
|
2170
|
|
2171 @item dictionary
|
|
2172 Interface to RFC2229 dictionary servers.
|
|
2173
|
|
2174 @item dired
|
|
2175 The DIRectory EDitor is for manipulating, and running commands on
|
|
2176 files in a directory.
|
|
2177
|
|
2178 @item docbookide
|
|
2179 DocBook editing support.
|
|
2180
|
|
2181 @item ecb
|
|
2182 Emacs source code browser.
|
|
2183
|
|
2184 @item ecrypto
|
|
2185 Crypto functionality in Emacs Lisp.
|
|
2186
|
|
2187 @item edebug
|
|
2188 An Emacs Lisp debugger.
|
|
2189
|
|
2190 @item ediff
|
|
2191 Interface over GNU patch.
|
|
2192
|
|
2193 @item edit-utils
|
|
2194 Miscellaneous editor extensions, you probably need this.
|
|
2195
|
|
2196 @item edt
|
|
2197 DEC EDIT/EDT emulation.
|
|
2198
|
|
2199 @item efs
|
|
2200 Treat files on remote systems the same as local files.
|
|
2201
|
|
2202 @item eieio
|
|
2203 Enhanced Implementation of Emacs Interpreted Objects.
|
|
2204
|
|
2205 @item elib
|
|
2206 Portable Emacs Lisp utilities library.
|
|
2207
|
|
2208 @item emerge
|
|
2209 Another interface over GNU patch.
|
|
2210
|
|
2211 @item erc
|
|
2212 ERC is an Emacs InternetRelayChat client.
|
|
2213
|
|
2214 @item escreen
|
|
2215 Multiple editing sessions withing a single frame (like screen).
|
|
2216
|
|
2217 @item eshell
|
|
2218 Command shell implemented entirely in Emacs Lisp.
|
|
2219
|
|
2220 @item ess
|
|
2221 ESS: Emacs Speaks Statistics.
|
|
2222
|
|
2223 @item eterm
|
|
2224 Terminal emulation.
|
|
2225
|
|
2226 @item eudc
|
|
2227 Emacs Unified Directory Client (LDAP, PH).
|
|
2228
|
|
2229 @item footnote
|
|
2230 Footnoting in mail message editing modes.
|
|
2231
|
|
2232 @item forms
|
|
2233 Forms editing support (obsolete, use Widget instead).
|
|
2234
|
|
2235 @item fortran-modes
|
|
2236 Fortran support.
|
|
2237
|
|
2238 @item fortran-modes
|
|
2239 Fortran language support.
|
|
2240
|
|
2241 @item frame-icon
|
|
2242 Set up mode-specific icons for each frame under XEmacs.
|
|
2243
|
|
2244 @item fsf-compat
|
|
2245 GNU Emacs compatibility files.
|
|
2246
|
|
2247 @item games
|
|
2248 Tetris, Sokoban, and Snake.
|
|
2249
|
|
2250 @item general-docs
|
|
2251 General documentation. Presently, empty.
|
|
2252
|
|
2253 @item gnats
|
|
2254 XEmacs bug reports.
|
|
2255
|
|
2256 @item gnus
|
|
2257 The Gnus Newsreader and Mailreader.
|
|
2258
|
|
2259 @item haskell-mode
|
|
2260 Haskell editing support.
|
|
2261
|
|
2262 @item hm--html-menus
|
|
2263 HTML editing.
|
|
2264
|
|
2265 @item hyperbole
|
|
2266 Hyperbole: The Everyday Info Manager.
|
|
2267
|
|
2268 @item ibuffer
|
|
2269 Advanced replacement for buffer-menu.
|
|
2270
|
|
2271 @item idlwave
|
|
2272 Editing and Shell mode for the Interactive Data Language.
|
|
2273
|
|
2274 @item igrep
|
|
2275 Enhanced front-end for Grep.
|
|
2276
|
|
2277 @item ilisp
|
|
2278 Front-end for interacting with Inferior Lisp (external lisps).
|
|
2279
|
|
2280 @item ispell
|
|
2281 Spell-checking with GNU ispell.
|
|
2282
|
|
2283 @item jde
|
|
2284 Integrated Development Environment for Java.
|
|
2285
|
|
2286 @item liece
|
|
2287 IRC (Internet Relay Chat) client for Emacs. Note, this package is
|
|
2288 deprecated and will be removed, use riece instead.
|
|
2289
|
|
2290 @item mail-lib
|
|
2291 Fundamental lisp files for providing email support.
|
|
2292
|
|
2293 @item mailcrypt
|
|
2294 Support for messaging encryption with PGP.
|
|
2295
|
|
2296 @item mew
|
|
2297 Messaging in an Emacs World; a MIME-based email program.
|
|
2298
|
|
2299 @item mh-e
|
|
2300 The XEmacs Interface to the MH Mail System.
|
|
2301
|
|
2302 @item mine
|
|
2303 Elisp implementation of the game 'Minehunt'.
|
|
2304
|
|
2305 @item misc-games
|
|
2306 Other amusements and diversions.
|
|
2307
|
|
2308 @item mmm-mode
|
|
2309 Support for Multiple Major Modes within a single buffer.
|
|
2310
|
|
2311 @item net-utils
|
|
2312 Miscellaneous Networking Utilities.
|
|
2313
|
|
2314 @item ocaml
|
|
2315 Objective Caml editing support.
|
|
2316
|
|
2317 @item oo-browser
|
|
2318 OO-Browser: The Multi-Language Object-Oriented Code Browser.
|
|
2319
|
|
2320 @item ocaml
|
|
2321 Objective Caml editing support.
|
|
2322
|
|
2323 @item os-utils
|
|
2324 Miscellaneous single-file O/S utilities, for printing, archiving,
|
|
2325 compression, remote shells, etc.
|
|
2326
|
|
2327 @item pc
|
|
2328 PC style interface emulation.
|
|
2329
|
|
2330 @item pcl-cvs
|
|
2331 CVS frontend.
|
|
2332
|
|
2333 @item pcomplete
|
|
2334 Provides programmatic completion.
|
|
2335
|
|
2336 @item perl-modes
|
|
2337 Perl support.
|
|
2338
|
|
2339 @item pgg
|
|
2340 Emacs interface to various PGP implementations.
|
|
2341
|
|
2342 @item prog-modes
|
|
2343 Support for various programming languages.
|
|
2344
|
|
2345 @item ps-print
|
|
2346 Printing functions and utilities.
|
|
2347
|
|
2348 @item psgml
|
|
2349 Validated HTML/SGML editing.
|
|
2350
|
|
2351 @item psgml-dtds
|
|
2352 A collection of DTDs for psgml. Note that this package is deprecated
|
|
2353 and will be removed in the future, most likely Q2/2003. Instead of using
|
|
2354 this, you should install needed DTDs yourself.
|
|
2355
|
|
2356 @item python-modes
|
|
2357 Python language support.
|
|
2358
|
|
2359 @item reftex
|
|
2360 Emacs support for LaTeX cross-references, citations.
|
|
2361
|
|
2362 @item riece
|
|
2363 IRC (Internet Relay Chat) client for Emacs.
|
|
2364
|
|
2365 @item rmail
|
|
2366 An obsolete Emacs mailer. If you do not already use it don't start.
|
|
2367
|
|
2368 @item ruby-modes
|
|
2369 Ruby support.
|
|
2370
|
|
2371 @item sasl
|
|
2372 Simple Authentication and Security Layer (SASL) library.
|
|
2373
|
|
2374 @item scheme
|
|
2375 Front-end support for Inferior Scheme.
|
|
2376
|
|
2377 @item semantic
|
|
2378 Semantic bovinator (Yacc/Lex for XEmacs). Includes Senator.
|
|
2379
|
|
2380 @item sgml
|
|
2381 SGML/Linuxdoc-SGML editing.
|
|
2382
|
|
2383 @item sh-script
|
|
2384 Support for editing shell scripts.
|
|
2385
|
|
2386 @item sieve
|
|
2387 Manage Sieve email filtering scripts.
|
|
2388
|
|
2389 @item slider
|
|
2390 User interface tool.
|
|
2391
|
|
2392 @item sml-mode
|
|
2393 SML editing support.
|
|
2394
|
|
2395 @item sounds-au
|
|
2396 XEmacs Sun sound files.
|
|
2397
|
|
2398 @item sounds-wav
|
|
2399 XEmacs Microsoft sound files.
|
|
2400
|
|
2401 @item speedbar
|
|
2402 Provides a separate frame with convenient references.
|
|
2403
|
|
2404 @item strokes
|
|
2405 Mouse enhancement utility.
|
|
2406
|
|
2407 @item supercite
|
|
2408 An Emacs citation tool for News & Mail messages.
|
|
2409
|
|
2410 @item texinfo
|
|
2411 XEmacs TeXinfo support.
|
|
2412
|
|
2413 @item text-modes
|
|
2414 Miscellaneous support for editing text files.
|
|
2415
|
|
2416 @item textools
|
|
2417 Miscellaneous TeX support.
|
|
2418
|
|
2419 @item time
|
|
2420 Display time & date on the modeline.
|
|
2421
|
|
2422 @item tm
|
|
2423 Emacs MIME support. Not needed for gnus >= 5.8.0.
|
|
2424
|
|
2425 @item tooltalk
|
|
2426 Support for building with Tooltalk.
|
|
2427
|
|
2428 @item tpu
|
|
2429 DEC EDIT/TPU support.
|
|
2430
|
|
2431 @item tramp
|
|
2432 Remote shell-based file editing. This is similar to EFS or Ange-FTP,
|
|
2433 but works with rsh/ssh and rcp/scp.
|
|
2434
|
|
2435 @item vc
|
|
2436 Version Control for Free systems.
|
|
2437
|
|
2438 @item vc-cc
|
|
2439 Version Control for ClearCase (UnFree) systems.
|
|
2440
|
|
2441 @item vhdl
|
|
2442 Support for VHDL.
|
|
2443
|
|
2444 @item view-process
|
|
2445 A Unix process browsing tool.
|
|
2446
|
|
2447 @item viper
|
|
2448 VI emulation support.
|
|
2449
|
|
2450 @item vm
|
|
2451 An Emacs mailer.
|
|
2452
|
|
2453 @item w3
|
|
2454 A Web browser.
|
|
2455
|
|
2456 @item x-symbol
|
|
2457 Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts.
|
|
2458
|
|
2459 @item xemacs-base
|
|
2460 Fundamental XEmacs support, you almost certainly need this.
|
|
2461
|
|
2462 @item xemacs-devel
|
|
2463 XEmacs Lisp developer support. This package contains utilities for
|
|
2464 supporting Lisp development. It is a single-file package so it may be
|
|
2465 tailored.
|
|
2466
|
|
2467 @item xlib
|
|
2468 Emacs interface to X server.
|
|
2469
|
|
2470 @item xslide
|
|
2471 XSL editing support.
|
|
2472
|
|
2473 @item xslt-process
|
|
2474 A minor mode for (X)Emacs which allows running an XSLT processor on a
|
|
2475 buffer.
|
|
2476
|
|
2477 @item xwem
|
|
2478 X Emacs Window Manager.
|
|
2479
|
|
2480 @item zenirc
|
|
2481 ZENIRC IRC Client.
|
2417
|
2482 @end table
|
|
2483
|
2537
|
2484 @subheading Mule Support (mule)
|
|
2485
|
|
2486 MULti-lingual Enhancement. Support for world scripts such as
|
|
2487 Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
|
|
2488 To use these packages your XEmacs must be compiled with Mule
|
|
2489 support.
|
|
2490
|
|
2491 @table @asis
|
|
2492 @item edict
|
|
2493 MULE: Lisp Interface to EDICT, Kanji Dictionary.
|
|
2494
|
|
2495 @item egg-its
|
|
2496 MULE: Wnn (4.2 and 6) support. SJ3 support.
|
|
2497
|
|
2498 @item latin-unity
|
|
2499 MULE: find single ISO 8859 character set to encode a buffer.
|
|
2500
|
|
2501 @item latin-unity
|
|
2502 Unify character sets in a buffer. When characters belong to disjoint
|
|
2503 character sets, this attempts to translate the characters so
|
|
2504 that they belong to one character set. If the buffer coding system is
|
|
2505 not sufficient, this suggests different coding systems.
|
|
2506
|
|
2507 @item leim
|
|
2508 MULE: Quail. All non-English and non-Japanese language support.
|
|
2509
|
|
2510 @item locale
|
|
2511 MULE: Localized menubars and localized splash screens.
|
|
2512
|
|
2513 @item lookup
|
|
2514 Dictionary support. (This isn't an English dictionary program)
|
|
2515
|
|
2516 @item mule-base
|
|
2517 MULE: Basic Mule support, required for building with Mule.
|
|
2518
|
|
2519 @item mule-ucs
|
|
2520 MULE: Extended coding systems (including Unicode) for XEmacs.
|
|
2521
|
|
2522 @item mule-ucs
|
|
2523 Extended coding systems (including Unicode) for XEmacs.
|
|
2524
|
|
2525 @item skk
|
|
2526 Another Japanese Language Input Method. Can be used without a
|
|
2527 separate process running as a dictionary server.
|
|
2528 @end table
|
|
2529
|
|
2530 @unnumberedsec 1.8: Internationalization
|
|
2531
|
|
2532 @node Q1.8.1, Q1.8.2, Q1.7.1, Introduction
|
|
2533 @unnumberedsubsec Q1.8.1: What is the status of internationalization support aka MULE (including Asian language support)?
|
442
|
2534
|
|
2535 Both the stable and development versions of XEmacs include
|
1135
|
2536 internationalization support (aka MULE). MULE currently (21.4) works on
|
|
2537 UNIX and Linux systems. It is possible to build with MULE on Windows
|
|
2538 systems, but if you really need MULE on Windows, it is recommended that
|
|
2539 you build and use the development (21.5) version, and deal with the
|
|
2540 instability of the development tree. Binaries compiled without MULE
|
|
2541 support run faster than MULE capable XEmacsen.
|
428
|
2542
|
2537
|
2543 @node Q1.8.2, Q1.8.3, Q1.8.1, Introduction
|
|
2544 @unnumberedsubsec Q1.8.2: How can I help with internationalization?
|
430
|
2545
|
|
2546 If you would like to help, you may want to join the
|
|
2547 @email{xemacs-mule@@xemacs.org} mailing list. Especially needed are
|
|
2548 people who speak/write languages other than English, who are willing to
|
|
2549 use XEmacs/MULE regularly, and have some experience with Elisp.
|
428
|
2550
|
1135
|
2551 Translations of the TUTORIAL and man page are welcome, and XEmacs does
|
|
2552 support multilingual menus, but we have few current translations.
|
|
2553
|
2537
|
2554 @xref{Q1.5.2, How do I become a Beta Tester?}.
|
|
2555
|
|
2556 @node Q1.8.3, Q1.8.4, Q1.8.2, Introduction
|
|
2557 @unnumberedsubsec Q1.8.3: How do I type non-ASCII characters?
|
2417
|
2558
|
2459
|
2559 @xref{Q3.0.6, How can you type in special characters in XEmacs?}, in
|
2417
|
2560 part 3 of this FAQ, for some simple methods that also work in non-MULE
|
|
2561 builds of XEmacs (but only for one-octet coded character sets, and
|
|
2562 mostly for ISO 8859/1). Many of the methods available for Cyrillic
|
2537
|
2563 (@pxref{Q1.8.7, How about Cyrillic modes?}) work without MULE. MULE
|
|
2564 has more general capabilities. @xref{Q1.8.5, Please explain the
|
2417
|
2565 various input methods in MULE/XEmacs}.
|
|
2566
|
2459
|
2567 @xref{Q4.0.8, How do I display non-ASCII characters?}, which covers
|
2417
|
2568 display of non-ASCII characters.
|
|
2569
|
2537
|
2570 @node Q1.8.4, Q1.8.5, Q1.8.3, Introduction
|
|
2571 @unnumberedsubsec Q1.8.4: Can XEmacs messages come out in a different language?
|
428
|
2572
|
1135
|
2573 The message-catalog support was written but is badly bit-rotted. XEmacs
|
|
2574 20 and 21 did @emph{not} support it, and early releases of XEmacs 22
|
|
2575 will not either.
|
|
2576
|
|
2577 However, menubar localization @emph{does} work. To enable it, add to
|
|
2578 your @file{Emacs} file entries like this:
|
428
|
2579
|
|
2580 @example
|
440
|
2581 Emacs*XlwMenu.resourceLabels: True
|
|
2582 Emacs*XlwMenu.file.labelString: Fichier
|
442
|
2583 Emacs*XlwMenu.openInOtherWindow.labelString: In anderem Fenster oeffnen
|
428
|
2584 @end example
|
|
2585
|
|
2586 The name of the resource is derived from the non-localized entry by
|
|
2587 removing punctuation and capitalizing as above.
|
|
2588
|
2537
|
2589 @node Q1.8.5, Q1.8.6, Q1.8.4, Introduction
|
|
2590 @unnumberedsubsec Q1.8.5: Please explain the various input methods in MULE/XEmacs
|
428
|
2591
|
1135
|
2592 Mule supports a wide variety of input methods. There are three basic
|
|
2593 classes: Lisp implementations, generic platform support, and library
|
|
2594 interfaces.
|
|
2595
|
|
2596 @emph{Lisp implementations} include Quail, which provides table-driven input
|
|
2597 methods for almost all the character sets that Mule supports (including
|
|
2598 all of the ISO 8859 family, the Indic languages, Thai, and so on), and
|
|
2599 SKK, for Japanese. (SKK also supports an interface to an external
|
|
2600 "dictionary server" process.) Quail supports both typical "dead-key"
|
|
2601 methods (eg, in the "latin-1-prefix" method, @kbd{" a} produces ä, LATIN
|
|
2602 SMALL LETTER A WITH DIAERESIS), and the complex dictionary-based phonetic
|
|
2603 methods used for Asian ideographic languages like Chinese.
|
|
2604
|
|
2605 Lisp implementations can be less powerful (but they are not perceptibly
|
|
2606 inefficient), and of course are not portable to non-Emacs applications.
|
|
2607 The incompatibility can be very annoying. On the other hand, they
|
|
2608 require no special platform support or external libraries, so if you can
|
|
2609 display the characters, Mule can input them for you and you can edit,
|
|
2610 anywhere.
|
|
2611
|
|
2612 @emph{Generic platform support} is currently limited to the X Input
|
|
2613 Method (XIM) framework, although support for MSIME (for MS Windows) is
|
|
2614 planned, and IIIMF (Sun's Internet-Intranet Input Method Framework)
|
|
2615 support is extremely desirable. XIM is enabled at build time by use of
|
|
2616 the @samp{--with-xim} flag to @code{configure}. For use of XIM, see
|
|
2617 your platform documentation. However, normally the input method you use
|
|
2618 is specified via the @samp{LANG} and @samp{XMODIFIERS} environment
|
|
2619 variables.
|
|
2620
|
|
2621 Of course, input skills are portable across most applications. However,
|
|
2622 especially in modern GUI systems the habit of using bucky bits has
|
|
2623 fallen into sad disuse, and many XIM systems are poorly configured for
|
|
2624 use with Emacs. For example, the kinput2 input manager (a separate
|
|
2625 process providing an interface between Japanese dictionary servers such
|
|
2626 as Canna and Wnn, and the application) tends to gobble up keystrokes
|
|
2627 generating Meta characters. This means that to edit while using an XIM
|
|
2628 input method, you must toggle the input method off every time you want
|
|
2629 to use @kbd{M-f}. Your mileage may vary.
|
|
2630
|
|
2631 @emph{Library interfaces} are most common for Japanese, although Wnn
|
|
2632 supports Chinese (traditional and simplified) and Korean. There are
|
|
2633 Chinese and Korean input servers available, but we do not know of any
|
|
2634 patches for XEmacs to use them directly. You can use them via
|
|
2635 IM-enabled terminals, by manipulating the terminal coding systems. We
|
|
2636 describe only the Japanese-oriented systems here. The advantage of
|
|
2637 these systems is that they are very powerful, and on platforms where
|
|
2638 they are available there is typically a wide range of applications that
|
|
2639 support them. Thus your input skills are portable across applications.
|
|
2640
|
|
2641 Mule provides built-in interfaces to the following input methods: Wnn4,
|
|
2642 Wnn6, Canna, and SJ3. These can be configured at build time. There are
|
|
2643 patches available (no URL, sorry) to support the SKK server, as well.
|
|
2644 Wnn and SJ3 use the @code{egg} user interface. The interface for Canna
|
|
2645 is specialized to Canna.
|
428
|
2646
|
|
2647 Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Kyôto
|
1135
|
2648 University. It is a powerful and complex system. Wnn4 is free and Wnn6
|
|
2649 is not. Wnn uses grammatical hints and probability of word association,
|
|
2650 so in principle Wnn can be cleverer than other methods.
|
|
2651
|
|
2652 Canna, made by NEC, supports only Japanese. It is a simple and powerful
|
|
2653 system. Canna uses only grammar, but its grammar and dictionary are
|
|
2654 quite sophisticated. So for standard modern Japanese, Canna seems
|
|
2655 cleverer than Wnn4. In addition, the UNIX version of Canna is free (now
|
|
2656 there is a Microsoft Windows version).
|
|
2657
|
|
2658 SJ3, by Sony, supports only Japanese.
|
428
|
2659
|
|
2660 Egg consists of following parts:
|
|
2661
|
|
2662 @enumerate
|
|
2663 @item
|
|
2664 Input character Translation System (ITS) layer.
|
|
2665 It translates ASCII inputs to Kana/PinYin/Hangul characters.
|
|
2666
|
|
2667 @item
|
|
2668 Kana/PinYin/Hangul to Kanji transfer layer.
|
1135
|
2669 The interface layer to network Kana-Kanji server (Wnn and Sj3).
|
428
|
2670 @end enumerate
|
|
2671
|
1135
|
2672 These input methods are modal. They have a raw (alphabet) mode, a
|
|
2673 phonetic input mode, and Kana-Kanji transfer mode. However there are
|
|
2674 mode-less input methods for Egg and Canna. @samp{boiled-egg} is a
|
|
2675 mode-less input method running on Egg. For Canna, @samp{canna.el} has a
|
|
2676 tiny boiled-egg-like command, @code{(canna-boil)}, and there are some
|
|
2677 boiled-egg-like utilities.
|
|
2678
|
|
2679 Much of this information was provided by @email{morioka@@jaist.ac.jp,
|
|
2680 MORIOKA Tomohiko}.
|
428
|
2681
|
2537
|
2682 @node Q1.8.6, Q1.8.7, Q1.8.5, Introduction
|
|
2683 @unnumberedsubsec Q1.8.6: How do I portably code for MULE/XEmacs?
|
428
|
2684
|
1135
|
2685 MULE has evolved rapidly over the last few years, and the original third
|
|
2686 party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite
|
|
2687 different implementations. The APIs also vary although recent versions
|
|
2688 of XEmacs have tended to converge to the GNU Emacs standard.
|
|
2689
|
|
2690 MULE implementations are going to continue to evolve. Both GNU Emacs
|
|
2691 and XEmacs are working hard on Unicode support, which will involve new
|
|
2692 APIs and probably variations on old ones. For XEmacs 22, the old ISO
|
|
2693 2022-based system for recognizing encodings will be replaced by a much
|
|
2694 more flexible system, which should improve accuracy of automatic coding
|
|
2695 detections, but will also involve new APIs.
|
|
2696
|
428
|
2697 @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes:
|
|
2698
|
|
2699 @quotation
|
1135
|
2700 The application implementor must write separate code for these mule
|
|
2701 variants. [Please don't hesitate to report these variants to us; they
|
|
2702 are not, strictly speaking, bugs, but they give third-party developers
|
|
2703 the same kind of creepy-crawly feeling. We'll do what we can. -- Ed.]
|
428
|
2704
|
|
2705 MULE and the next version of Emacs are similar but the symbols are very
|
|
2706 different---requiring separate code as well.
|
|
2707
|
|
2708 Namely we must support 3 kinds of mule variants and 4 or 5 or 6 kinds of
|
|
2709 emacs variants... (;_;) I'm shocked, so I wrote a wrapper package called
|
1135
|
2710 @code{emu} to provide a common interface. [There is an XEmacs package
|
|
2711 of APEL which provides much more comprehensive coverage. Be careful,
|
|
2712 however; APEL has problems of its own. -- Ed.]
|
428
|
2713
|
|
2714 I have the following suggestions about dealing with mule variants:
|
|
2715
|
|
2716 @itemize @bullet
|
|
2717 @item
|
|
2718 @code{(featurep 'mule)} @code{t} on all mule variants
|
|
2719
|
|
2720 @item
|
|
2721 @code{(boundp 'MULE)} is @code{t} on only MULE. Maybe the next version
|
|
2722 of Emacs will not have this symbol.
|
|
2723
|
|
2724 @item
|
|
2725 MULE has a variable @code{mule-version}. Perhaps the next version of
|
|
2726 Emacs will have this variable as well.
|
|
2727 @end itemize
|
|
2728
|
|
2729 Following is a sample to distinguish mule variants:
|
|
2730
|
|
2731 @lisp
|
|
2732 (if (featurep 'mule)
|
|
2733 (cond ((boundp 'MULE)
|
|
2734 ;; for original Mule
|
|
2735 )
|
440
|
2736 ((string-match "XEmacs" emacs-version)
|
|
2737 ;; for XEmacs with Mule
|
|
2738 )
|
|
2739 (t
|
|
2740 ;; for next version of Emacs
|
|
2741 ))
|
428
|
2742 ;; for old emacs variants
|
|
2743 )
|
|
2744 @end lisp
|
|
2745 @end quotation
|
|
2746
|
2537
|
2747 @node Q1.8.7, Q1.8.8, Q1.8.6, Introduction
|
|
2748 @unnumberedsubsec Q1.8.7: How about Cyrillic modes?
|
428
|
2749
|
|
2750 @email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes:
|
|
2751
|
|
2752 @quotation
|
|
2753 There is a cyrillic mode in the file @file{mysetup.zip} in
|
|
2754 @iftex
|
|
2755 @*
|
|
2756 @end iftex
|
|
2757 @uref{ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/}. This is a
|
|
2758 modification to @email{ava@@math.jhu.ed, Valery Alexeev's} @file{russian.el}
|
|
2759 which can be obtained from
|
|
2760 @end quotation
|
|
2761
|
871
|
2762 @uref{http://www.math.uga.edu/~valery/russian.el}.
|
428
|
2763
|
|
2764 @email{d.barsky@@ee.surrey.ac.uk, Dima Barsky} writes:
|
|
2765
|
|
2766 @quotation
|
|
2767 There is another cyrillic mode for both GNU Emacs and XEmacs by
|
|
2768 @email{manin@@camelot.mssm.edu, Dmitrii
|
|
2769 (Mitya) Manin} at
|
|
2770 @iftex
|
|
2771
|
|
2772 @end iftex
|
|
2773 @uref{http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el}.
|
|
2774 @c Link above, <URL:http://camelot.mssm.edu/~manin/cyr.el> was dead.
|
|
2775 @c Changed to russian host instead
|
|
2776 @end quotation
|
|
2777
|
|
2778 @email{rebecca.ore@@op.net, Rebecca Ore} writes:
|
|
2779
|
|
2780 @quotation
|
|
2781 The fullest resource I found on Russian language use (in and out of
|
661
|
2782 XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html}
|
428
|
2783 @end quotation
|
|
2784
|
2537
|
2785 @node Q1.8.8, Q1.8.9, Q1.8.7, Introduction
|
|
2786 @unnumberedsubsec Q1.8.8: Does XEmacs support Unicode?
|
2417
|
2787
|
|
2788 To get Unicode support, you need a Mule-enabled XEmacs.
|
|
2789
|
|
2790 21.5 has internal support for Unicode and supports it fully, although we
|
|
2791 don't yet use it as the internal encoding.
|
|
2792
|
|
2793 21.4 supports Unicode partially -- as an external encoding for files,
|
2537
|
2794 processes, and terminals, but without font support. @xref{Q1.8.9, How
|
2417
|
2795 does XEmacs display Unicode?}. To get Unicode support in 21.4,
|
|
2796 install Mule-UCS from packages in the usual way, and put
|
745
|
2797
|
1616
|
2798 @example
|
745
|
2799 (require 'un-define)
|
|
2800 (set-coding-priority-list '(utf-8))
|
1616
|
2801 (set-coding-category-system 'utf-8 'utf-8)
|
|
2802 @end example
|
|
2803
|
|
2804 in your init file to enable the UTF-8 coding system. You may wish to
|
|
2805 view the documentation of @code{set-coding-priority-list} if you find
|
|
2806 that files that are not UTF-8 are being mis-recognized as UTF-8.
|
745
|
2807
|
2417
|
2808 Install standard national fonts (not Unicode fonts) for all character
|
2537
|
2809 sets you use. @xref{Q1.8.9, How does XEmacs display Unicode??}.
|
745
|
2810
|
|
2811 Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not
|
|
2812 support 31-bit forms of Unicode (UTF-32 or UCS-4).
|
|
2813
|
2537
|
2814 @node Q1.8.9, , Q1.8.8, Introduction
|
|
2815 @unnumberedsubsec Q1.8.9: How does XEmacs display Unicode?
|
745
|
2816
|
|
2817 Mule doesn't have a Unicode charset internally, so there's nothing to
|
|
2818 bind a Unicode registry to. It would not be straightforward to create,
|
|
2819 either, because Unicode is not ISO 2022-compatible. You'd have to
|
|
2820 translate it to multiple 96x96 pages.
|
|
2821
|
|
2822 This means that Mule-UCS uses ordinary national fonts for display. This
|
|
2823 is not really a problem, except for those languages that use the Unified
|
|
2824 Han characters. The problem here is that Mule-UCS maps from Unicode
|
|
2825 code points to national character sets in a deterministic way. By
|
|
2826 default, this means that Japanese fonts are tried first, then Chinese,
|
|
2827 then Korean. To change the priority ordering, use the command
|
|
2828 `un-define-change-charset-order'.
|
|
2829
|
|
2830 It also means you can't use Unicode fonts directly, at least not without
|
|
2831 extreme hackery. You can run -nw with (set-terminal-coding-system
|
|
2832 'utf-8) if you really want a Unicode font for some reason.
|
|
2833
|
|
2834 Real Unicode support will be introduced in XEmacs 22.0.
|
|
2835
|
2459
|
2836 @node Installation, Editing, Introduction, Top
|
2417
|
2837 @unnumbered 2 Installation and Troubleshooting
|
428
|
2838
|
|
2839 This is part 2 of the XEmacs Frequently Asked Questions list. This
|
2417
|
2840 section is devoted to Installation, Maintenance and Troubleshooting.
|
428
|
2841
|
|
2842 @menu
|
2417
|
2843 2.0: Installation (General), Packages
|
|
2844 * Q2.0.1:: How do I install the packages?
|
|
2845 * Q2.0.2:: I don't need no steenkin' packages. Do I?
|
|
2846 * Q2.0.3:: Where do I find external libraries?
|
|
2847 * Q2.0.4:: How do I specify the paths that XEmacs uses for finding files?
|
|
2848 * Q2.0.5:: Running XEmacs without installing
|
|
2849 * Q2.0.6:: XEmacs is too big
|
|
2850 * Q2.0.7:: EFS fails with "500 AUTH not understood" (NEW)
|
|
2851
|
|
2852 2.1: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
|
|
2853 * Q2.1.1:: Libraries in non-standard locations
|
|
2854 * Q2.1.2:: Why can't I strip XEmacs?
|
|
2855
|
|
2856 2.2: Windows Installation (Windows, Cygwin, MinGW)
|
|
2857 * Q2.2.1:: What exactly are all the different ways to build XEmacs under Windows?
|
|
2858 * Q2.2.2:: What compiler/libraries do I need to compile XEmacs?
|
|
2859 * Q2.2.3:: How do I compile the native port?
|
|
2860 * Q2.2.4:: What do I need for Cygwin?
|
|
2861 * Q2.2.5:: How do I compile under Cygwin?
|
|
2862 * Q2.2.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
|
|
2863 * Q2.2.7:: How do I compile with X support?
|
|
2864 * Q2.2.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
|
|
2865
|
|
2866 2.3: General Troubleshooting
|
|
2867 * Q2.3.1:: Help! XEmacs just crashed on me!
|
|
2868 * Q2.3.2:: XEmacs crashes and I compiled it myself.
|
|
2869 * Q2.3.3:: How to debug an XEmacs problem with a debugger
|
|
2870 * Q2.3.4:: I get a cryptic error message when trying to do something.
|
|
2871 * Q2.3.5:: XEmacs hangs when I try to do something.
|
|
2872 * Q2.3.6:: I get an error message when XEmacs is running in batch mode.
|
|
2873 * Q2.3.7:: The keyboard or mouse is not working properly, or I have some other event-related problem.
|
|
2874 * Q2.3.8:: @kbd{C-g} doesn't work for me. Is it broken?
|
|
2875 * Q2.3.9:: How do I debug process-related problems?
|
|
2876 * Q2.3.10:: XEmacs is outputting lots of X errors.
|
|
2877 * Q2.3.11:: After upgrading, XEmacs won't do `foo' any more!
|
|
2878
|
|
2879 2.4: Startup-Related Problems
|
|
2880 * Q2.4.1:: XEmacs cannot connect to my X Terminal!
|
|
2881 * Q2.4.2:: XEmacs won't start on Windows.
|
|
2882 * Q2.4.3:: XEmacs won't start without network.
|
|
2883 * Q2.4.4:: Startup warnings about deducing proper fonts?
|
|
2884 * Q2.4.5:: Warnings from incorrect key modifiers.
|
|
2885 * Q2.4.6:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
|
428
|
2886 @end menu
|
|
2887
|
2417
|
2888 @unnumberedsec 2.0: Installation (General), Packages
|
|
2889
|
428
|
2890 @node Q2.0.1, Q2.0.2, Installation, Installation
|
2417
|
2891 @unnumberedsubsec Q2.0.1: How do I install the packages?
|
|
2892
|
|
2893 Many people really liked the old way that packages were bundled and do
|
|
2894 not want to mess with packages at all. You can grab all the packages at
|
|
2895 once like you used to with old XEmacs versions. Download the file
|
|
2896
|
|
2897 @file{xemacs-sumo.tar.gz}
|
|
2898
|
|
2899 For an XEmacs compiled with Mule you also need
|
|
2900
|
|
2901 @file{xemacs-mule-sumo.tar.gz}
|
|
2902
|
|
2903 These are in the @file{packages} directory on your XEmacs mirror
|
|
2904 archive. N.B. They are called 'Sumo Tarballs' for good reason. They
|
|
2905 are currently about 15MB and 2.3MB (gzipped) respectively.
|
|
2906
|
|
2907 Install them on Unix and Mac OS X using the shell/Terminal command
|
|
2908
|
|
2909 @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -}
|
|
2910
|
|
2911 Where @samp{$prefix} is what you gave to the @samp{--prefix} flag to
|
|
2912 @file{configure}, and defaults to @file{/usr/local}.
|
|
2913
|
|
2914 If you have the packages somewhere nonstandard and don't want to
|
|
2915 bother with @samp{$prefix} (for example, you're a developer and are
|
|
2916 compiling the packages yourself, and want your own private copy of
|
|
2917 everything), you can also directly specify this using @file{configure}.
|
|
2918 To do this under 21.5 and above use the @samp{--package-prefix} parameter
|
|
2919 to specify the directory under which you untarred the above tarballs.
|
|
2920 Under 21.4 and previous you need to use @samp{--package-path},
|
|
2921 something like this:
|
|
2922
|
|
2923 @example
|
|
2924 configure --package-path="~/.xemacs::/src/xemacs/site-packages:/src/xemacs/xemacs-packages:/src/xemacs/mule-packages" ...
|
|
2925 @end example
|
|
2926
|
|
2927 Under Windows, you need to place the above @samp{tar.gz} files in the
|
|
2928 directory specified using the @samp{PACKAGE_PREFIX} value in
|
|
2929 @file{nt/config.inc} and by default is @file{\Program Files\XEmacs}.
|
|
2930 (To untar a @samp{tar.gz} file you will need to use a utility such as
|
|
2931 WinZip, unless you have Cygwin or a similar environment installed, in
|
|
2932 which case the above Unix shell command should work fine.) If you want
|
|
2933 the packages somewhere else, just change @samp{PACKAGE_PREFIX}.
|
|
2934
|
|
2935 Note that XEmacs finds the packages automatically anywhere underneath
|
|
2936 the directory tree where it expects to find the packages. All you
|
|
2937 need to do is put stuff there; you don't need to run any program to
|
|
2938 tell XEmacs to find the packges, or do anything of that sort.
|
|
2939
|
|
2940 See @file{README.packages} in the top-level source directory for more
|
|
2941 detailed installation instructions.
|
|
2942
|
|
2943 As the Sumo tarballs are not regenerated as often as the individual
|
|
2944 packages, it is recommended that you use the automatic package tools
|
|
2945 afterwards to pick up any recent updates.
|
|
2946
|
|
2947 @emph{More detailed info}: If the package path is not explicitly
|
|
2948 specified, XEmacs looks for the package directory
|
|
2949 @file{xemacs-packages} (and @file{mule-packages}, etc.) first under
|
|
2950 @samp{~/.xemacs}, then for a sister directory
|
|
2951 @file{lib/xemacs-VERSION} of the directory in which the XEmacs
|
|
2952 executable is located, then for a sister directory @file{lib/xemacs}.
|
|
2953 The XEmacs executable (under Unix at least) is installed by default in
|
|
2954 @file{/usr/local/bin}; this explains why XEmacs in its default
|
|
2955 installation will find packages that you put under
|
|
2956 @file{/usr/local/lib/xemacs}.
|
|
2957
|
|
2958 #### I'm not sure what exactly happens when the package path is
|
|
2959 specifically given, as is the case when the @samp{--package-prefix} or
|
|
2960 @samp{--package-path} options are given to @file{configure}, and
|
|
2961 always under Microsoft Windows.
|
|
2962
|
|
2963 @emph{NOTE}: For detailed information about how the package
|
|
2964 hierarchies work, @xref{Package Overview,,,lispref, the XEmacs Lisp
|
|
2965 Reference Manual}.
|
|
2966
|
|
2967 @node Q2.0.2, Q2.0.3, Q2.0.1, Installation
|
|
2968 @unnumberedsubsec Q2.0.2: I don't need no steenkin' packages. Do I?
|
|
2969
|
|
2970 Strictly speaking, no. XEmacs will build and install just fine without
|
|
2971 any packages installed. However, only the most basic editing functions
|
|
2972 will be available with no packages installed, so installing packages is
|
|
2973 an essential part of making your installed XEmacs _useful_.
|
|
2974
|
|
2975 @node Q2.0.3, Q2.0.4, Q2.0.2, Installation
|
|
2976 @unnumberedsubsec Q2.0.3: Where do I find external libraries?
|
|
2977
|
2459
|
2978 All external libraries used by XEmacs can be found on the XEmacs web
|
2417
|
2979 site
|
|
2980 @iftex
|
|
2981 @*
|
|
2982 @end iftex
|
2459
|
2983 @uref{http://www.xemacs.org/Download/optLibs.html}.
|
2417
|
2984
|
|
2985 The library versions available here are known to work with XEmacs.
|
|
2986 (Newer versions will probably work as well but we can't guarantee it.)
|
|
2987 We try to keep the libraries up-to-date but may not always succeed.
|
2459
|
2988 Check the above page for the canonical locations of the external libraries,
|
|
2989 allowing you to download the latest, bleeding-edge versions.
|
2417
|
2990
|
|
2991 @node Q2.0.4, Q2.0.5, Q2.0.3, Installation
|
|
2992 @unnumberedsubsec Q2.0.4: How do I specify the paths that XEmacs uses for finding files?
|
|
2993
|
|
2994 You can specify what paths to use by using a number of different flags
|
|
2995 when running configure. See the section MAKE VARIABLES in the top-level
|
|
2996 file INSTALL in the XEmacs distribution for a listing of those flags.
|
|
2997
|
|
2998 Most of the time, however, the simplest fix is: @strong{do not} specify
|
|
2999 paths as you might for GNU Emacs. XEmacs can generally determine the
|
|
3000 necessary paths dynamically at run time. The only path that generally
|
|
3001 needs to be specified is the root directory to install into. That can
|
|
3002 be specified by passing the @code{--prefix} flag to configure. For a
|
|
3003 description of the XEmacs install tree, please consult the @file{NEWS}
|
|
3004 file.
|
|
3005
|
|
3006 @node Q2.0.5, Q2.0.6, Q2.0.4, Installation
|
|
3007 @unnumberedsubsec Q2.0.5: Running XEmacs without installing
|
442
|
3008
|
|
3009 How can I just try XEmacs without installing it?
|
428
|
3010
|
|
3011 XEmacs will run in place without requiring installation and copying of
|
|
3012 the Lisp directories, and without having to specify a special build-time
|
|
3013 flag. It's the copying of the Lisp directories that requires so much
|
|
3014 space. XEmacs is largely written in Lisp.
|
|
3015
|
|
3016 A good method is to make a shell alias for xemacs:
|
|
3017
|
|
3018 @example
|
2459
|
3019 alias xemacs=/src/xemacs-21.5/src/xemacs
|
428
|
3020 @end example
|
|
3021
|
|
3022 (You will obviously use whatever directory you downloaded the source
|
2459
|
3023 tree to instead of @file{/src/xemacs-21.5}).
|
428
|
3024
|
|
3025 This will let you run XEmacs without massive copying.
|
|
3026
|
2417
|
3027 @node Q2.0.6, Q2.0.7, Q2.0.5, Installation
|
|
3028 @unnumberedsubsec Q2.0.6: XEmacs is too big
|
428
|
3029
|
442
|
3030 The space required by the installation directories can be
|
428
|
3031 reduced dramatically if desired. Gzip all the .el files. Remove all
|
442
|
3032 the packages you'll never want to use. Remove the TexInfo manuals.
|
428
|
3033 Remove the Info (and use just hardcopy versions of the manual). Remove
|
|
3034 most of the stuff in etc. Remove or gzip all the source code. Gzip or
|
|
3035 remove the C source code. Configure it so that copies are not made of
|
1138
|
3036 the support lisp.
|
428
|
3037
|
|
3038 These are all Emacs Lisp source code and bytecompiled object code. You
|
|
3039 may safely gzip everything named *.el here. You may remove any package
|
|
3040 you don't use. @emph{Nothing bad will happen if you delete a package
|
|
3041 that you do not use}. You must be sure you do not use it though, so be
|
|
3042 conservative at first.
|
|
3043
|
1648
|
3044 Any package with the possible exceptions of xemacs-base, and EFS are
|
|
3045 candidates for removal. Ask yourself, @emph{Do I ever want to use this
|
|
3046 package?} If the answer is no, then it is a candidate for removal.
|
428
|
3047
|
|
3048 First, gzip all the .el files. Then go about package by package and
|
|
3049 start gzipping the .elc files. Then run XEmacs and do whatever it is
|
1648
|
3050 you normally do. If nothing bad happens, then remove the package. You
|
|
3051 can remove a package via the PUI interface
|
|
3052 (@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages
|
|
3053 you wish to delete, and then @kbd{x} to delete them.
|
|
3054
|
|
3055 Another method is to do @code{M-x package-get-delete-package}.
|
428
|
3056
|
2417
|
3057 @node Q2.0.7, Q2.1.1, Q2.0.6, Installation
|
|
3058 @unnumberedsubsec Q2.0.7: EFS fails with "500 AUTH not understood" (NEW)
|
|
3059
|
|
3060 A typical error: FTP Error: USER request failed; 500 AUTH not understood.
|
|
3061
|
|
3062 Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends
|
|
3063 on comp.emacs.xemacs:
|
|
3064
|
|
3065 tell your ftp client to not attempt AUTH authentication (or do not
|
|
3066 use FTP servers that don't understand AUTH)
|
|
3067
|
|
3068 and notes that you need to add an element (often "-u") to
|
|
3069 `efs-ftp-program-args'. Use M-x customize-variable, and verify the
|
|
3070 needed flag with `man ftp' or other local documentation.
|
|
3071
|
|
3072 @unnumberedsec 2.1: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
|
|
3073
|
|
3074 @node Q2.1.1, Q2.1.2, Q2.0.7, Installation
|
|
3075 @unnumberedsubsec Q2.1.1: Libraries in non-standard locations
|
428
|
3076
|
2459
|
3077 If your libraries are in a non-standard location, you can specify the location
|
|
3078 using the following flags to @file{configure}:
|
|
3079
|
|
3080 @example
|
|
3081 --site-libraries=WHATEVER
|
|
3082 --site-includes=WHATEVER
|
|
3083 @end example
|
|
3084
|
|
3085 If you have multiple paths to specify, use the following syntax:
|
428
|
3086
|
|
3087 @example
|
|
3088 --site-libraries='/path/one /path/two /path/etc'
|
|
3089 @end example
|
|
3090
|
2459
|
3091 @node Q2.1.2, Q2.2.1, Q2.1.1, Installation
|
2417
|
3092 @unnumberedsubsec Q2.1.2: Why can't I strip XEmacs?
|
428
|
3093
|
|
3094 @email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes:
|
|
3095
|
|
3096 @quotation
|
|
3097 Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The
|
|
3098 link gives you a bare-boned emacs (called temacs). temacs is then run,
|
|
3099 preloading some of the lisp files. The result is then dumped into a new
|
|
3100 executable, named xemacs, which will contain all of the preloaded lisp
|
|
3101 functions and data.
|
|
3102
|
|
3103 Now, during the dump itself, the executable (code+data+symbols) is
|
|
3104 written on disk using a special unexec() function. This function is
|
|
3105 obviously heavily system dependent. And on some systems, it leads to an
|
|
3106 executable which, although valid, cannot be stripped without damage. If
|
|
3107 memory serves, this is especially the case for AIX binaries. On other
|
462
|
3108 architectures it might work OK.
|
428
|
3109
|
|
3110 The Right Way to strip the emacs binary is to strip temacs prior to
|
|
3111 dumping xemacs. This will always work, although you can do that only if
|
|
3112 you install from sources (as temacs is @file{not} part of the binary
|
|
3113 kits).
|
|
3114 @end quotation
|
|
3115
|
|
3116 @email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes:
|
|
3117
|
|
3118 @quotation
|
|
3119 Here is the trick:
|
|
3120
|
|
3121 @enumerate
|
|
3122 @item
|
|
3123 [ ./configure; make ]
|
|
3124
|
|
3125 @item
|
|
3126 rm src/xemacs
|
|
3127
|
|
3128 @item
|
|
3129 strip src/temacs
|
|
3130
|
|
3131 @item
|
|
3132 make
|
|
3133
|
|
3134 @item
|
|
3135 cp src/xemacs /usr/local/bin/xemacs
|
|
3136
|
|
3137 @item
|
|
3138 cp lib-src/DOC-19.16-XEmacs
|
|
3139 @iftex
|
|
3140 \ @*
|
|
3141 @end iftex
|
|
3142 /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
|
|
3143 @end enumerate
|
|
3144 @end quotation
|
|
3145
|
2417
|
3146 @unnumberedsec 2.2: Windows Installation (Windows, Cygwin, MinGW)
|
|
3147
|
2459
|
3148 @node Q2.2.1, Q2.2.2, Q2.1.2, Installation
|
2417
|
3149 @unnumberedsubsec Q2.2.1: What exactly are all the different ways to build XEmacs under Windows?
|
|
3150
|
|
3151 XEmacs can be built in several ways in the MS Windows environment.
|
|
3152
|
|
3153 The standard way is what we call the "native" port. It uses the Win32
|
|
3154 API and has no connection with X whatsoever -- it does not require X
|
|
3155 libraries to build, nor does it require an X server to run. The native
|
|
3156 port is the most reliable version and provides the best graphical
|
|
3157 support. Almost all development is geared towards this version, and
|
|
3158 there is little reason not to use it.
|
|
3159
|
|
3160 The second way to build is the Cygwin port. It takes advantage of
|
2537
|
3161 Cygnus emulation library under Win32. @xref{Q1.2.5, What are Cygwin
|
2417
|
3162 and MinGW, and do I need them to run XEmacs?}, for more information.
|
|
3163
|
|
3164 A third way is the MinGW port. It uses the Cygwin environment to
|
2537
|
3165 build but does not require it at runtime. @xref{Q1.2.5, What are
|
2417
|
3166 Cygwin and MinGW, and do I need them to run XEmacs?}, for more
|
|
3167 information.
|
|
3168
|
|
3169 Finally, you might also be able to build the non-Cygwin, non-MinGW "X"
|
|
3170 port. This was actually the first version of XEmacs that ran under MS
|
|
3171 Windows, and although the code is still in XEmacs, it's essentially
|
|
3172 orphaned and it's unlikely it will compile without a lot of work. If
|
|
3173 you want an MS Windows versin of XEmacs that supports X, use the Cygwin
|
|
3174 version. (The X support there is actively maintained, so that Windows
|
|
3175 developers can test the X support in XEmacs.)
|
|
3176
|
|
3177 @node Q2.2.2, Q2.2.3, Q2.2.1, Installation
|
|
3178 @unnumberedsubsec Q2.2.2: What compiler/libraries do I need to compile XEmacs?
|
|
3179
|
|
3180 You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
|
|
3181 some beta testers currently trying to compile with VC.NET, aka version
|
|
3182 7.0, but we can't yet report complete success.) For the Cygwin and
|
|
3183 MinGW versions, you need the Cygwin environment, which comes with GCC,
|
2537
|
3184 the compiler used for those versions. @xref{Q1.2.5, What are Cygwin
|
2417
|
3185 and MinGW, and do I need them to run XEmacs?}, for more information on
|
|
3186 Cygwin and MinGW.
|
|
3187
|
|
3188 @node Q2.2.3, Q2.2.4, Q2.2.2, Installation
|
|
3189 @unnumberedsubsec Q2.2.3: How do I compile the native port?
|
|
3190
|
|
3191 Please read the file @file{nt/README} in the XEmacs distribution, which
|
|
3192 contains the full description.
|
|
3193
|
|
3194 @node Q2.2.4, Q2.2.5, Q2.2.3, Installation
|
|
3195 @unnumberedsubsec Q2.2.4: What do I need for Cygwin?
|
|
3196
|
|
3197 You can find the Cygwin tools and compiler at:
|
|
3198
|
|
3199 @uref{http://www.cygwin.com/}
|
|
3200
|
|
3201 Click on the @samp{Install or update now!} link, which will download a
|
|
3202 file @file{setup.exe}, which you can use to download everything
|
|
3203 else. (You will need to pick a mirror site; @samp{mirrors.rcn.net} is
|
|
3204 probably the best.) You should go ahead and install everything --
|
|
3205 you'll get various ancillary libraries that XEmacs needs or likes,
|
|
3206 e.g. XPM, PNG, JPEG, TIFF, etc. You can also get X Windows here, if you
|
|
3207 want to compile under X.
|
|
3208
|
|
3209 If you want to compile without X, you will need the @file{xpm-nox}
|
|
3210 library, which must be specifically selected in the Cygwin netinstaller;
|
|
3211 it is not selected by default. The package has had various names.
|
|
3212 Currently it is called @file{cygXpm-noX4.dll}.
|
|
3213
|
|
3214 @node Q2.2.5, Q2.2.6, Q2.2.4, Installation
|
|
3215 @unnumberedsubsec Q2.2.5: How do I compile under Cygwin?
|
|
3216
|
|
3217 Similar as on Unix; use the usual `configure' and `make' process.
|
|
3218 Some problems to watch out for:
|
|
3219
|
|
3220 @itemize @bullet
|
|
3221 @item
|
|
3222 make sure HOME is set. This controls where you
|
|
3223 @file{init.el} file comes from;
|
|
3224
|
|
3225 @item
|
|
3226 @samp{CYGWIN} needs to be set to @samp{tty} for process support to work;
|
|
3227
|
|
3228 @item
|
|
3229 picking up some other grep or other UNIX-like tools can kill configure;
|
|
3230
|
|
3231 @item
|
|
3232 static heap too small, adjust @file{src/sheap-adjust.h} to a more positive
|
|
3233 number;
|
|
3234
|
|
3235 @item
|
|
3236 (Unconfirmed) The Cygwin version doesn't understand
|
|
3237 @file{//machine/path} type paths so you will need to manually mount a
|
|
3238 directory of this form under a unix style directory for a build to work
|
|
3239 on the directory;
|
|
3240
|
|
3241 @item
|
|
3242 If you're building @strong{WITHOUT} X11, don't forget to change symlinks
|
|
3243 @file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to
|
|
3244 the non-X versions of these libraries. By default they point to the X
|
|
3245 versions. So:
|
|
3246
|
|
3247 @example
|
|
3248 /usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a
|
|
3249 /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
|
|
3250 @end example
|
|
3251
|
|
3252 (This advice may now be obsolete because of the availability of the
|
|
3253 cygXpm-noX4.dll package from Cygwin. Send confirmation to
|
|
3254 @email{faq@@xemacs.org}.)
|
|
3255
|
|
3256 @item
|
|
3257 Other problems are listed in the @file{PROBLEMS} file, in the top-level
|
|
3258 directory of the XEmacs sources.
|
|
3259
|
|
3260 @end itemize
|
|
3261
|
|
3262
|
|
3263 @node Q2.2.6, Q2.2.7, Q2.2.5, Installation
|
|
3264 @unnumberedsubsec Q2.2.6: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
|
|
3265
|
|
3266 Similar to the method for Unix. Things to remember:
|
|
3267
|
|
3268 @itemize @bullet
|
|
3269 @item
|
|
3270 Specify the target host on the command line for @file{./configure}, e.g.
|
|
3271 @samp{./configure i586-pc-mingw32}.
|
|
3272
|
|
3273 @item
|
|
3274 Be sure that your build directory is mounted such that it has the
|
|
3275 same path either as a cygwin path (@file{/build/xemacs}) or as a Windows
|
|
3276 path (@file{c:\build\xemacs}).
|
|
3277
|
|
3278 @item
|
|
3279 Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng},
|
|
3280 @file{compface}, etc.
|
|
3281
|
|
3282 @item
|
|
3283 Specify the target location of the extra libs on the command line
|
|
3284 to @file{configure}, e.g.
|
|
3285 @samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}.
|
|
3286 @end itemize
|
|
3287
|
|
3288 @node Q2.2.7, Q2.2.8, Q2.2.6, Installation
|
|
3289 @unnumberedsubsec Q2.2.7: How do I compile with X support?
|
|
3290
|
|
3291 To compile under Cygwin, all you need to do is install XFree86, which
|
|
3292 is available as part of the standard Cygwin installation.
|
|
3293 @uref{http://www.cygwin.com/}. Once installed, @file{configure}
|
|
3294 should automatically find the X libraries and compile with X support.
|
|
3295
|
|
3296 As noted above, the non-Cygwin X support is basically orphaned, and
|
|
3297 probably won't work. But if it want to try, it's described in
|
|
3298 @file{nt/README} in some detail. Basically, you need to get X11
|
2459
|
3299 libraries from @uref{http://ftp.x.org}, and compile them. If the
|
2417
|
3300 precompiled versions are available somewhere, we don't know of it.
|
|
3301
|
|
3302 @node Q2.2.8, Q2.3.1, Q2.2.7, Installation
|
|
3303 @unnumberedsubsec Q2.2.8: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
|
1058
|
3304
|
|
3305 The Cygwin binary distributed with the netinstaller uses an external DLL
|
|
3306 to handle XPM images (such as toolbar buttons). You may get an error like
|
|
3307
|
|
3308 This application has failed to start because cygXpm-noX4.dll was not found.
|
|
3309 Re-installing the application may fix this problem.
|
|
3310
|
|
3311 Andy Piper <andy@@xemacs.org> sez:
|
|
3312
|
|
3313 cygXpm-noX4 is part of the cygwin distribution under libraries or
|
|
3314 graphics, but is not installed by default. You need to run the
|
|
3315 cygwin setup again and select this package.
|
|
3316
|
|
3317 Ie, reinstalling XEmacs won't help because it is not part of the XEmacs
|
|
3318 distribution.
|
|
3319
|
2417
|
3320 @unnumberedsec 2.3: General Troubleshooting
|
|
3321
|
|
3322 @node Q2.3.1, Q2.3.2, Q2.2.8, Installation
|
|
3323 @unnumberedsubsec Q2.3.1: Help! XEmacs just crashed on me!
|
428
|
3324
|
|
3325 First of all, don't panic. Whenever XEmacs crashes, it tries extremely
|
|
3326 hard to auto-save all of your files before dying. (The main time that
|
|
3327 this will not happen is if the machine physically lost power or if you
|
|
3328 killed the XEmacs process using @code{kill -9}). The next time you try
|
|
3329 to edit those files, you will be informed that a more recent auto-save
|
|
3330 file exists. You can use @kbd{M-x recover-file} to retrieve the
|
|
3331 auto-saved version of the file.
|
|
3332
|
462
|
3333 You can use the command @kbd{M-x recover-session} after a crash to pick
|
|
3334 up where you left off.
|
428
|
3335
|
|
3336 Now, XEmacs is not perfect, and there may occasionally be times, or
|
|
3337 particular sequences of actions, that cause it to crash. If you can
|
|
3338 come up with a reproducible way of doing this (or even if you have a
|
|
3339 pretty good memory of exactly what you were doing at the time), the
|
2417
|
3340 maintainers would be very interested in knowing about it. The best
|
|
3341 way to report a bug is using @kbd{M-x report-emacs-bug} (or by
|
|
3342 selecting @samp{Send Bug Report...} from the Help menu). If that
|
|
3343 won't work (e.g. you can't get XEmacs working at all), send ordinary
|
|
3344 mail to @email{xemacs-beta@@xemacs.org}. @emph{MAKE SURE} to include
|
|
3345 the output from the crash, especially including the Lisp backtrace, as
|
|
3346 well as the XEmacs configuration from @kbd{M-x describe-installation}
|
|
3347 (or equivalently, the file @file{Installation} in the top of the build
|
|
3348 tree). Note that the developers do @emph{not} usually follow
|
|
3349 @samp{comp.emacs.xemacs} on a regular basis; thus, this is better for
|
|
3350 general questions about XEmacs than bug reports.
|
428
|
3351
|
1183
|
3352 If at all possible, include a C stack backtrace of the core dump that
|
2417
|
3353 was produced. This shows where exactly things went wrong, and makes
|
|
3354 it much easier to diagnose problems. To do this under Unix and Mac OS
|
|
3355 X, you need to locate the core file (it's called @file{core}, and is
|
|
3356 usually sitting in the directory that you started XEmacs from, or your
|
|
3357 home directory if that other directory was not writable). Then, go to
|
|
3358 that directory and execute a command like:
|
428
|
3359
|
|
3360 @example
|
|
3361 gdb `which xemacs` core
|
|
3362 @end example
|
|
3363
|
|
3364 and then issue the command @samp{where} to get the stack backtrace. You
|
|
3365 might have to use @code{dbx} or some similar debugger in place of
|
|
3366 @code{gdb}. If you don't have any such debugger available, complain to
|
|
3367 your system administrator.
|
|
3368
|
2417
|
3369 It's possible that a core file didn't get produced or the stack trace
|
|
3370 from gdb is garbage, in which case you're out of luck unless you can
|
|
3371 reproduce the bug. A nonexistent core file can happen in some
|
|
3372 circumstances on some operating systems, depending on what exactly
|
|
3373 triggered the crash. It's also possible, however, that your limits
|
|
3374 are set to turn them off. You may be able to reenable them using a
|
|
3375 command like @samp{unlimit coredumpsize} or @samp{ulimit -c}. (To find
|
|
3376 out how your limits are set, use the command @samp{limit}.) However, if
|
|
3377 you didn't explicitly set your limits this way, go complain to your
|
|
3378 system administrator and tell him not to disable core files by
|
|
3379 default.
|
|
3380
|
|
3381 A garbaged stack trace can happen for various reasons. Some versions
|
|
3382 of gdb are broken on certain operating systems and aren't able to read
|
|
3383 the core file. It's also possible that the stack got overwritten
|
|
3384 during the crash. A very simple reason, however, is that your version
|
|
3385 of XEmacs was compiled without debugging information or had the
|
|
3386 debugging information stripped. A compilation with optimization can
|
|
3387 also result in partly or completely garbaged stack trace. In such
|
|
3388 cases, you will need to recompile XEmacs with debugging information
|
|
3389 and without optimization; @xref{Q2.3.3, How to debug an XEmacs problem
|
|
3390 with a debugger}. Note also that core files currently don't work at
|
|
3391 all under Cygwin, and the only way to get a backtrace is to run XEmacs
|
|
3392 from gdb.
|
|
3393
|
|
3394 If you cannot get a backtrace from the core dump, but can reproduce
|
|
3395 the problem, try running XEmacs under gdb. The goal is to get clean C
|
|
3396 and Lisp backtraces and submit a bug report including full
|
|
3397 configuration information as described above, as this will greatly
|
|
3398 assist in the process of tracking down the bug. However, even partial
|
|
3399 information is better than none. The process of getting backtraces
|
|
3400 from gdb is described in detail in @ref{Q2.3.3, How to debug an XEmacs
|
|
3401 problem with a debugger}.
|
428
|
3402
|
1183
|
3403 If you're under Microsoft Windows, you're out of luck unless you happen
|
|
3404 to have a debugging aid installed on your system, for example Visual
|
|
3405 C++. In this case, the crash will result in a message giving you the
|
|
3406 option to enter a debugger (for example, by pressing @samp{Cancel}). Do
|
|
3407 this and locate the stack-trace window. (If your XEmacs was built
|
|
3408 without debugging information, the stack trace may not be very useful.)
|
|
3409
|
428
|
3410 When making a problem report make sure that:
|
|
3411
|
|
3412 @enumerate
|
|
3413 @item
|
|
3414 Report @strong{all} of the information output by XEmacs during the
|
|
3415 crash.
|
|
3416
|
|
3417 @item
|
2417
|
3418 You mention what O/S and Hardware you are running XEmacs on.
|
428
|
3419
|
|
3420 @item
|
|
3421 What version of XEmacs you are running.
|
|
3422
|
|
3423 @item
|
|
3424 What build options you are using.
|
|
3425
|
|
3426 @item
|
2417
|
3427 If the problem is related to graphics and you are running Unix or Mac
|
|
3428 OS X, we will also need to know what version of the X Window System
|
|
3429 you are running, and what window manager you are using.
|
1183
|
3430
|
|
3431 @item
|
|
3432 If the problem happened on a TTY, please include the terminal type.
|
2417
|
3433
|
|
3434 @item
|
|
3435 Try very hard to get both C and Lisp backtraces, as described above.
|
428
|
3436 @end enumerate
|
|
3437
|
1135
|
3438 Much of the information above is automatically generated by @kbd{M-x
|
|
3439 report-emacs-bug}. Even more, and often useful, information can be
|
|
3440 generated by redirecting the output of @code{make} and @code{make check}
|
|
3441 to a file (@file{beta.err} is the default used by @code{build-report}),
|
|
3442 and executing @kbd{M-x build-report}.
|
|
3443
|
2417
|
3444
|
|
3445 @node Q2.3.2, Q2.3.3, Q2.3.1, Installation
|
|
3446 @unnumberedsubsec Q2.3.2: XEmacs crashes and I compiled it myself.
|
|
3447
|
|
3448 There have been a variety of reports of crashes due to compilers with
|
|
3449 buggy optimizers. If you are compiling with optimization, consider
|
|
3450 turning it off (@pxref{Q2.3.3, How to debug an XEmacs problem with a
|
|
3451 debugger}) and recompiling.
|
|
3452
|
|
3453 Please see the @file{PROBLEMS} file that comes with XEmacs (it's in
|
|
3454 the top-level source directory) to read what it says about your
|
|
3455 platform.
|
|
3456
|
|
3457 If you compiled XEmacs using @samp{--use-union-type} (or the option
|
|
3458 @samp{USE_UNION_TYPE} in @file{config.inc} under Windows), try
|
|
3459 recompiling again without it. The union type has been known to trigger
|
|
3460 compiler errors in a number of cases.
|
|
3461
|
|
3462 @node Q2.3.3, Q2.3.4, Q2.3.2, Installation
|
|
3463 @unnumberedsubsec Q2.3.3: How to debug an XEmacs problem with a debugger
|
428
|
3464
|
|
3465 If XEmacs does crash on you, one of the most productive things you can
|
|
3466 do to help get the bug fixed is to poke around a bit with the debugger.
|
|
3467 Here are some hints:
|
|
3468
|
|
3469 @itemize @bullet
|
|
3470 @item
|
|
3471 First of all, if the crash is at all reproducible, consider very
|
563
|
3472 strongly recompiling your XEmacs with debugging symbols and with no
|
|
3473 optimization (e.g. with GCC use the compiler flags @samp{-g -O0} --
|
|
3474 that's an "oh" followed by a zero), and with the configure options
|
2417
|
3475 @samp{--debug=yes} and @samp{--error-checking=all}. This will make
|
|
3476 your XEmacs run somewhat slower, but you are a lot more likely to
|
|
3477 catch the problem earlier (closer to its source). It makes it a lot
|
|
3478 easier to determine what's going on with a debugger. The way to
|
|
3479 control the compiler flags is with the configuration option
|
|
3480 @samp{--cflags}. If you have a recent version of 21.5, you should use
|
|
3481 @samp{--without-optimization} in preference to directly setting
|
|
3482 @samp{--cflags}.
|
1258
|
3483
|
|
3484 @item
|
|
3485 If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie
|
|
3486 process), or it's inconvenient to run XEmacs again because XEmacs is
|
|
3487 already running or is running in batch mode as part of a bunch of
|
|
3488 scripts, you may be able to attach to the existing process with your
|
2417
|
3489 debugger. Under Unix and Mac OS X, the typical way to do this is to
|
|
3490 first use some variant of the @samp{ps} command to figure out the
|
|
3491 process ID of XEmacs, for example @samp{ps -auxww | grep xemacs} under
|
|
3492 a BSD variant, @samp{ps -elf | grep xemacs} under Linux or System V,
|
|
3493 or @samp{ps -aW | grep xemacs} under Cygwin. Then run
|
|
3494
|
|
3495 @example
|
|
3496 gdb /path/to/xemacs/xemacs ####
|
|
3497 @end example
|
|
3498
|
|
3499 Where @code{####} is the process id of your XEmacs. (If you're not
|
|
3500 sure, try using @samp{which xemacs}.) When gdb attaches, the xemacs
|
|
3501 will stop and you can type @samp{where} in gdb to get a stack trace as
|
|
3502 usual. To get things moving again, you can just type @samp{quit} in
|
|
3503 gdb. It'll tell you the program is running and ask if you want to
|
|
3504 quit anyways. Say @samp{y} and it'll quit and have your emacs
|
|
3505 continue from where it was at.
|
|
3506
|
|
3507 If you're running another debugger, a similar method may work, or you
|
|
3508 may have to run the debugger first and then use the @code{attach}
|
|
3509 command or something similar.
|
|
3510
|
|
3511 Under Microsoft Windows, use the menu item @samp{Build->Start
|
|
3512 Debug->Attach to Process...} and select the XEmacs process from the list
|
|
3513 given.
|
1258
|
3514
|
|
3515 @item
|
|
3516 If you're able to run XEmacs under a debugger and reproduce the crash,
|
|
3517 here are some things you can do:
|
428
|
3518
|
|
3519 @item
|
|
3520 If XEmacs is hitting an assertion failure, put a breakpoint on
|
|
3521 @code{assert_failed()}.
|
|
3522
|
|
3523 @item
|
|
3524 If XEmacs is hitting some weird Lisp error that's causing it to crash
|
|
3525 (e.g. during startup), put a breakpoint on @code{signal_1()}---this is
|
2417
|
3526 declared static in @file{eval.c}.
|
428
|
3527
|
|
3528 @item
|
563
|
3529 If XEmacs is outputting lots of X errors, put a breakpoint on
|
2417
|
3530 @code{x_error_handler()}; that will tell you which call is causing
|
|
3531 them. Note that the result may not be very useful by default because
|
|
3532 X Windows normally operates asynchronously: A bunch of commands are
|
|
3533 buffered up and then sent to the server all at once. This greatly
|
|
3534 improves performance over a network but means that an error may not be
|
|
3535 reported until the server receives the commands, which can be long
|
|
3536 after XEmacs made the erroneous calls. For best results, you need to
|
|
3537 make the X server synchronous before getting the backtrace. This can
|
|
3538 be done by starting XEmacs with the @samp{-sync} option or executing
|
|
3539 the Lisp code @code{(x-debug-mode t)}.
|
563
|
3540
|
|
3541 @item
|
428
|
3542 Internally, you will probably see lots of variables that hold objects of
|
1258
|
3543 type @code{Lisp_Object}. These are references to Lisp objects.
|
|
3544 Printing them out with the debugger probably won't be too
|
|
3545 useful---you'll likely just see a number. To decode them, do this:
|
428
|
3546
|
|
3547 @example
|
2417
|
3548 call debug_print (OBJECT)
|
428
|
3549 @end example
|
|
3550
|
|
3551 where @var{OBJECT} is whatever you want to decode (it can be a variable,
|
1258
|
3552 a function call, etc.). This uses the Lisp printing routines to out a
|
|
3553 readable representation on the TTY from which the xemacs process was
|
|
3554 invoked.
|
428
|
3555
|
2417
|
3556 Under 21.5 and later, @code{dp} is defined as an easier-to-type equivalent
|
|
3557 of @code{debug_print}. You can also try @code{dpa} if you can't see
|
|
3558 the output from @code{debug_print} (this will return a string containing
|
|
3559 the output), or use @code{debug_p3} if @code{debug_print} itself triggers
|
|
3560 a crash (this is a less comprehensive but super-safe way to print out
|
|
3561 a Lisp object).
|
|
3562
|
428
|
3563 @item
|
|
3564 If you want to get a Lisp backtrace showing the Lisp call
|
|
3565 stack, do this:
|
|
3566
|
|
3567 @example
|
2417
|
3568 call debug_backtrace ()
|
428
|
3569 @end example
|
|
3570
|
2417
|
3571 Under 21.5 and later, @code{db} is defined as an easier-to-type equivalent
|
|
3572 of @code{debug_backtrace}.
|
|
3573
|
|
3574 @item
|
|
3575 Using @code{debug_print} and @code{debug_backtrace} has two
|
|
3576 disadvantages - they can only be used with a running (including hung
|
|
3577 or zombie) xemacs process, and they do not display the internal C
|
|
3578 structure of a Lisp Object. Even if all you've got is a core dump,
|
|
3579 all is not lost.
|
428
|
3580
|
|
3581 If you're using GDB, there are some macros in the file
|
438
|
3582 @file{src/.gdbinit} in the XEmacs source distribution that should make
|
|
3583 it easier for you to decode Lisp objects. This file is automatically
|
|
3584 read by gdb if gdb is run in the directory where xemacs was built, and
|
|
3585 contains these useful macros to inspect the state of xemacs:
|
|
3586
|
|
3587 @table @code
|
|
3588 @item pobj
|
|
3589 Usage: pobj lisp_object @*
|
|
3590 Print the internal C representation of a lisp object.
|
|
3591
|
|
3592 @item xtype
|
|
3593 Usage: xtype lisp_object @*
|
|
3594 Print the Lisp type of a lisp object.
|
|
3595
|
|
3596 @item lbt
|
|
3597 Usage: lbt @*
|
|
3598 Print the current Lisp stack trace.
|
1258
|
3599 Requires a running xemacs process. (It works by calling the db
|
|
3600 routine described above.)
|
438
|
3601
|
|
3602 @item ldp
|
|
3603 Usage: ldp lisp_object @*
|
|
3604 Print a Lisp Object value using the Lisp printer.
|
1258
|
3605 Requires a running xemacs process. (It works by calling the dp
|
|
3606 routine described above.)
|
438
|
3607
|
|
3608 @item run-temacs
|
|
3609 Usage: run-temacs @*
|
|
3610 Run temacs interactively, like xemacs.
|
|
3611 Use this with debugging tools (like purify) that cannot deal with dumping,
|
|
3612 or when temacs builds successfully, but xemacs does not.
|
|
3613
|
|
3614 @item dump-temacs
|
|
3615 Usage: dump-temacs @*
|
|
3616 Run the dumping part of the build procedure.
|
|
3617 Use when debugging temacs, not xemacs!
|
|
3618 Use this when temacs builds successfully, but xemacs does not.
|
|
3619
|
|
3620 @item check-xemacs
|
|
3621 Usage: check-xemacs @*
|
|
3622 Run the test suite. Equivalent to 'make check'.
|
|
3623
|
|
3624 @item check-temacs
|
|
3625 Usage: check-temacs @*
|
|
3626 Run the test suite on temacs. Equivalent to 'make check-temacs'.
|
|
3627 Use this with debugging tools (like purify) that cannot deal with dumping,
|
|
3628 or when temacs builds successfully, but xemacs does not.
|
|
3629 @end table
|
428
|
3630
|
|
3631 If you are using Sun's @file{dbx} debugger, there is an equivalent file
|
438
|
3632 @file{src/.dbxrc}, which defines the same commands for dbx.
|
428
|
3633
|
|
3634 @item
|
|
3635 If you're using a debugger to get a C stack backtrace and you're seeing
|
|
3636 stack traces with some of the innermost frames mangled, it may be due to
|
|
3637 dynamic linking. (This happens especially under Linux.) Consider
|
|
3638 reconfiguring with @samp{--dynamic=no}. Also, sometimes (again under
|
|
3639 Linux), stack backtraces of core dumps will have the frame where the
|
|
3640 fatal signal occurred mangled; if you can obtain a stack trace while
|
|
3641 running the XEmacs process under a debugger, the stack trace should be
|
|
3642 clean.
|
|
3643
|
1183
|
3644 @email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so
|
|
3645 version 1.8 if dynamic linking and debugging is a problem on Linux.
|
428
|
3646
|
|
3647 @item
|
|
3648 If you're using a debugger to get a C stack backtrace and you're
|
|
3649 getting a completely mangled and bogus stack trace, it's probably due to
|
|
3650 one of the following:
|
|
3651
|
|
3652 @enumerate a
|
|
3653 @item
|
|
3654 Your executable has been stripped. Bad news. Tell your sysadmin not to
|
|
3655 do this---it doesn't accomplish anything except to save a bit of disk
|
|
3656 space, and makes debugging much much harder.
|
|
3657
|
|
3658 @item
|
|
3659 Your stack is getting trashed. Debugging this is hard; you have to do a
|
|
3660 binary-search type of narrowing down where the crash occurs, until you
|
|
3661 figure out exactly which line is causing the problem. Of course, this
|
1258
|
3662 only works if the bug is highly reproducible. Also, in many cases if
|
|
3663 you run XEmacs from the debugger, the debugger can protect the stack
|
|
3664 somewhat. However, if the stack is being smashed, it is typically the
|
|
3665 case that there is a wild pointer somewhere in the program, often quite
|
|
3666 far from where the crash occurs.
|
428
|
3667
|
|
3668 @item
|
|
3669 If your stack trace has exactly one frame in it, with address 0x0, this
|
|
3670 could simply mean that XEmacs attempted to execute code at that address,
|
|
3671 e.g. through jumping to a null function pointer. Unfortunately, under
|
|
3672 those circumstances, GDB under Linux doesn't know how to get a stack
|
1183
|
3673 trace. (Yes, this is the fourth Linux-related problem I've mentioned. I
|
428
|
3674 have no idea why GDB under Linux is so bogus. Complain to the GDB
|
1183
|
3675 authors, or to comp.os.linux.development.system.) Again, you'll have to
|
428
|
3676 use the narrowing-down process described above.
|
|
3677
|
|
3678 @item
|
462
|
3679 You will get a Lisp backtrace output when XEmacs crashes, so you'll have
|
|
3680 something useful.
|
428
|
3681
|
|
3682 @end enumerate
|
|
3683
|
|
3684 @item
|
|
3685 If you compile with the newer gcc variants gcc-2.8 or egcs, you will
|
438
|
3686 also need gdb 4.17 or above. Earlier releases of gdb can't handle the
|
|
3687 debug information generated by the newer compilers.
|
428
|
3688
|
|
3689 @item
|
438
|
3690 In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named
|
|
3691 @file{src/gdbinit}. This had the disadvantage of not being sourced
|
|
3692 automatically by gdb, so you had to set that up yourself.
|
428
|
3693
|
1183
|
3694 @item
|
|
3695 If you are running Microsoft Windows, the the file @file{nt/README} for
|
|
3696 further information about debugging XEmacs.
|
|
3697
|
428
|
3698 @end itemize
|
|
3699
|
2417
|
3700 @node Q2.3.4, Q2.3.5, Q2.3.3, Installation
|
|
3701 @unnumberedsubsec Q2.3.4: I get a cryptic error message when trying to do something.
|
|
3702
|
|
3703 When I try to use some particular option of some particular package, I
|
|
3704 get a cryptic error message in the minibuffer.
|
|
3705
|
|
3706 If the message went by too quickly, use @samp{Help->Recent Messages}
|
|
3707 from the menubar (or type @kbd{C-h l}) to see recent messages.
|
|
3708
|
|
3709 If you can't figure out what's going on, select
|
|
3710 @samp{Options->Troubleshooting->Debug on Error} from the menubar (or
|
|
3711 type @kbd{M-:} then @kbd{(setq debug-on-error t)}) then try and make
|
|
3712 the error happen again. This will put in the debugger (you can get
|
|
3713 out of this and continue what you were doing before by typing @kbd{c})
|
|
3714 and give you a backtrace that may be enlightening. If not, try
|
|
3715 reading through this FAQ; if that fails, you could try posting to
|
|
3716 @samp{comp.emacs.xemacs} (making sure to include the backtrace) and
|
|
3717 someone may be able to help. If you can identify which XEmacs Lisp
|
|
3718 source file the error is coming from you can get a more detailed stack
|
|
3719 backtrace by doing the following:
|
428
|
3720
|
|
3721 @enumerate
|
|
3722 @item
|
2417
|
3723 Visit the .el file in an XEmacs buffer.
|
|
3724
|
|
3725 @item
|
|
3726 Issue the command @kbd{M-x eval-current-buffer}.
|
|
3727
|
|
3728 @item
|
|
3729 Reproduce the error.
|
428
|
3730 @end enumerate
|
|
3731
|
2417
|
3732 For more information on debugging Lisp code, @xref{Debugging,,,
|
|
3733 lispref, XEmacs Lisp Reference Manual}.
|
|
3734
|
|
3735 @node Q2.3.5, Q2.3.6, Q2.3.4, Installation
|
|
3736 @unnumberedsubsec Q2.3.5: XEmacs hangs when I try to do something.
|
|
3737
|
|
3738 XEmacs might just be slow; some operations take a long time. XEmacs
|
|
3739 may also be waiting on a response from the network, for example when
|
|
3740 you are trying to send mail.
|
|
3741
|
|
3742 You can usually interrupt XEmacs by typing @kbd{C-g}. If not (for
|
|
3743 example, Lisp code explicitly disabled this by setting
|
|
3744 @code{inhibit-quit}), you can use the "critical quit" mechanism by
|
|
3745 typing @kbd{Control-Shift-G}. This should also pop you into the
|
|
3746 debugger and give you a backtrace, which can tell you where the
|
|
3747 problem is (@pxref{Q2.3.3, How to debug an XEmacs problem with a
|
|
3748 debugger}). (Note that setting @code{debug-on-quit} or selecting
|
|
3749 @samp{Options->Troubleshooting->Debug on Quit} will also cause regular
|
|
3750 @kbd{C-g} to enter the debugger and give you a backtrace.)
|
|
3751
|
|
3752 If you can't interrupt XEmacs this way, or for some reason XEmacs is
|
|
3753 not talking to the keyboard, you can try sending the @samp{SIGINT}
|
|
3754 signal using the @samp{kill} command.
|
|
3755
|
|
3756 If the Lisp backtrace isn't enlightening, or if XEmacs is so hung that
|
|
3757 you can't interrupt it at all, you could try attaching to the process
|
|
3758 and getting a C stack backtrace. @xref{Q2.3.3, How to debug an XEmacs
|
|
3759 problem with a debugger}.
|
|
3760
|
|
3761 @node Q2.3.6, Q2.3.7, Q2.3.5, Installation
|
|
3762 @unnumberedsubsec Q2.3.6: I get an error message when XEmacs is running in batch mode.
|
|
3763
|
|
3764 Typically this happens when you are trying to compile some Elisp code.
|
|
3765 If you are doing this as part of XEmacs or the XEmacs packages, you
|
|
3766 should automatically get a backtrace, which can help you determine the
|
|
3767 source of the problem. In other cases, you can get equivalent results
|
|
3768 by setting the environment variable @samp{XEMACSDEBUG} to @samp{(setq
|
|
3769 stack-trace-on-error t load-always-display-messages t
|
|
3770 load-ignore-out-of-date-elc-files t load-show-full-path-in-messages
|
|
3771 t)} (this needs to be all on one line; to set an environment variable,
|
|
3772 use @samp{export XEMACSDEBUG='FOO'} under @samp{bash}, @samp{zsh},
|
|
3773 etc. or @samp{setenv XEMACSDEBUG 'FOO'} under @samp{csh} and
|
|
3774 @samp{tcsh}). @samp{XEMACSDEBUG} specifies Lisp code that will be
|
|
3775 executed at startup time.
|
|
3776
|
|
3777 If the backtrace is not sufficiently useful in helping you diagnose
|
|
3778 the problem, you should consider using a debugger such as GDB.
|
|
3779 @xref{Q2.3.3, How to debug an XEmacs problem with a debugger}. You
|
|
3780 probably want to set a breakpoint on @code{signal_1}. Since such
|
|
3781 errors often occur during compiling, which is often triggered by a
|
|
3782 complex command run from a make suite, it may be easier to attach to
|
|
3783 the process once it's running.
|
|
3784
|
|
3785 Under Microsoft Windows (and perhaps other operating systems), there
|
|
3786 is another useful trick you can do if you have configured with
|
|
3787 debugging support (configure option @samp{--debug} or setting
|
|
3788 @samp{DEBUG_XEMACS} in @file{nt/config.inc}). Set the environment
|
|
3789 variable @samp{XEMACSDEBUG} (as described above) to @samp{(setq
|
|
3790 debug-on-error t)}. Then, when an error occurs noninteractively,
|
|
3791 instead of trying to invoke the Lisp debugger (which obviously won't
|
|
3792 work), XEmacs will break out to a C debugger using
|
|
3793 @code{(force-debugging-signal t)}. @emph{NOTE}: This runs
|
|
3794 @code{abort()}!!! (As well as and after executing INT 3 under MS
|
|
3795 Windows, which should invoke a debugger if it's active.) This is
|
|
3796 guaranteed to kill XEmacs! (But in this situation, XEmacs is about to
|
|
3797 die anyway, and if no debugger is present, this will usefully dump
|
|
3798 core.)
|
|
3799
|
|
3800 @node Q2.3.7, Q2.3.8, Q2.3.6, Installation
|
|
3801 @unnumberedsubsec Q2.3.7: The keyboard or mouse is not working properly, or I have some other event-related problem.
|
|
3802
|
|
3803 XEmacs has various facilities for debugging event handling.
|
|
3804
|
|
3805 First, try setting the variable @code{debug-emacs-events} to non-zero.
|
|
3806 This will output various information showing which events are being
|
|
3807 received and how they are being translated. This may show you, for
|
|
3808 example, that a key command is getting intercepted using
|
|
3809 @code{key-translation-map}; this problem can otherwise be very tricky
|
|
3810 to debug.
|
|
3811
|
|
3812 Under X, you can see exactly which events are being received from the
|
|
3813 window system by setting @code{x-debug-events} to non-zero. (The value
|
|
3814 @samp{1} gives you regular output, and @samp{2} gives you verbose
|
|
3815 output, including all parameters.)
|
|
3816
|
|
3817 A similar facility exists under MS Windows: Set
|
|
3818 @code{debug-mswindows-events} to non-zero. (The value @samp{1} gives
|
|
3819 you regular output. The value @samp{2} gives you verbose output,
|
|
3820 including all parameters. The value @samp{3} gives you
|
|
3821 super-gorily-detailed output.)
|
|
3822
|
|
3823 @node Q2.3.8, Q2.3.9, Q2.3.7, Installation
|
|
3824 @unnumberedsubsec Q2.3.8: @kbd{C-g} doesn't work for me. Is it broken?
|
|
3825
|
|
3826 @kbd{C-g} does work for most people in most circumstances. If it
|
|
3827 doesn't, there are two possible explanations:
|
|
3828
|
|
3829 @enumerate
|
|
3830 @item
|
|
3831 XEmacs is hung in a way that prevents @kbd{C-g} from working. This
|
|
3832 can happen when code is wrapped with a binding of @code{inhibit-quit}
|
|
3833 to @code{t}; you should still be able interrupt XEmacs using "critical
|
|
3834 quit". On the other hand, XEmacs may be seriously wedged. (If you're
|
|
3835 lucky, sending @samp{SIGINT} to the XEmacs process will interrupt it.)
|
|
3836 @xref{Q2.3.5, XEmacs hangs when I try to do something.}.
|
|
3837
|
|
3838 @item
|
|
3839 @kbd{C-g} is indeed broken on your system. To test, try executing
|
|
3840 @code{(while t)} from the @samp{*scratch*} buffer. If @kbd{C-g}
|
|
3841 doesn't interrupt, then it's broken. This used to happen with systems
|
|
3842 where @samp{SIGIO} was broken, but @samp{BROKEN_SIGIO} wasn't defined.
|
|
3843 However, there may not be very many such systems nowadays.
|
|
3844 @end enumerate
|
|
3845
|
|
3846 @node Q2.3.9, Q2.3.10, Q2.3.8, Installation
|
|
3847 @unnumberedsubsec Q2.3.9: How do I debug process-related problems?
|
|
3848
|
|
3849 Under MS Windows, you can set the variable
|
|
3850 @code{debug-mswindows-process-command-lines} to non-@samp{nil} to get
|
|
3851 information on exactly what is getting passed to a process. This can
|
|
3852 be useful in determining problems with quoting. (Under Unix, a process
|
|
3853 receives each argument separately, but under MS Windows a single
|
|
3854 command line is received, and arguments with spaces or other special
|
|
3855 characters in them must be quoted. Unfortunately this means that each
|
|
3856 process, potentially at least, has its own quoting conventions, and
|
|
3857 the code to process quoting conventions in @file{cmd.exe}, the Visual
|
|
3858 C++ startup code and the like is baroque and poorly documented.
|
|
3859 XEmacs uses the variable
|
|
3860 @code{mswindows-construct-process-command-line-alist} to construct a
|
|
3861 command line from a list of arguments based on the command to be run,
|
|
3862 but it is (and cannot be) a perfect solution.)
|
|
3863
|
|
3864 @node Q2.3.10, Q2.3.11, Q2.3.9, Installation
|
|
3865 @unnumberedsubsec Q2.3.10: XEmacs is outputting lots of X errors.
|
563
|
3866
|
|
3867 If this is happening, we would very much like to know what's causing
|
2417
|
3868 them. To find this out, see @ref{Q2.3.3, How to debug an XEmacs
|
|
3869 problem with a debugger}. Try to get both a C and Lisp backtrace, and
|
|
3870 send them along with the full error output to
|
|
3871 @email{xemacs-beta@@xemacs.org}.
|
|
3872
|
|
3873 @node Q2.3.11, Q2.4.1, Q2.3.10, Installation
|
|
3874 @unnumberedsubsec Q2.3.11: After upgrading, XEmacs won't do `foo' any more!
|
|
3875
|
|
3876 You have been used to doing `foo', but now when you invoke it (or
|
|
3877 click the toolbar button or select the menu item), nothing (or an
|
|
3878 error) happens. The simplest explanation is that you are missing a
|
|
3879 package that is essential to you. You can either track it down and
|
|
3880 install it (there is a list of packages and brief descriptions of
|
|
3881 their contents in @file{etc/PACKAGES}), or install the `Sumo Tarball'
|
|
3882 (@pxref{Q2.0.2, How do I figure out which packages to install?}).
|
|
3883
|
|
3884 @c #### should xref to XEmacs manual here
|
|
3885
|
|
3886 @unnumberedsec 2.4: Startup-Related Problems
|
|
3887
|
|
3888 @node Q2.4.1, Q2.4.2, Q2.3.11, Installation
|
|
3889 @unnumberedsubsec Q2.4.1: XEmacs cannot connect to my X Terminal!
|
|
3890
|
|
3891 Help! I can not get XEmacs to display on my Envizex X-terminal!
|
|
3892
|
|
3893 Try setting the @code{DISPLAY} variable using the numeric IP address of
|
|
3894 the host you are running XEmacs from.
|
|
3895
|
|
3896 @node Q2.4.2, Q2.4.3, Q2.4.1, Installation
|
|
3897 @unnumberedsubsec Q2.4.2: XEmacs won't start on Windows.
|
|
3898
|
|
3899 XEmacs relies on a process called "dumping" to generate a working
|
|
3900 executable. Under MS-Windows this process effectively fixes the memory
|
|
3901 addresses of information in the executable. When XEmacs starts up it tries
|
|
3902 to reserve these memory addresses so that the dumping process can be
|
|
3903 reversed -- putting the information back at the correct addresses.
|
|
3904 Unfortunately some .DLLs (for instance the soundblaster driver) occupy
|
|
3905 memory addresses that can conflict with those needed by the dumped XEmacs
|
|
3906 executable. In this instance XEmacs will fail to start without any
|
|
3907 explanation. Note that this is extremely machine specific.
|
|
3908
|
|
3909 21.1.10 includes a fix for this that makes more intelligent guesses
|
|
3910 about which memory addresses will be free, and this should cure the
|
|
3911 problem for most people. 21.4 implements "portable dumping", which
|
|
3912 eliminates the problem altogether. We recommend you use the 21.4
|
|
3913 binaries, but you can use the 21.1 binaries if you are very paranoid
|
2537
|
3914 about stability. @xref{Q1.1.2, Are binaries available?}.
|
2417
|
3915
|
|
3916 @node Q2.4.3, Q2.4.4, Q2.4.2, Installation
|
|
3917 @unnumberedsubsec Q2.4.3: XEmacs won't start without network.
|
434
|
3918
|
|
3919 If XEmacs starts when you're on the network, but fails when you're not
|
|
3920 on the network, you may be missing a "localhost" entry in your
|
|
3921 @file{/etc/hosts} file. The file should contain an entry like:
|
|
3922
|
|
3923 @example
|
|
3924 127.0.0.1 localhost
|
|
3925 @end example
|
|
3926
|
|
3927 Add that line, and XEmacs will be happy.
|
|
3928
|
2417
|
3929 @node Q2.4.4, Q2.4.5, Q2.4.3, Installation
|
|
3930 @unnumberedsubsec Q2.4.4: Startup warnings about deducing proper fonts?
|
|
3931
|
|
3932 How can I avoid the startup warnings about deducing proper fonts?
|
|
3933
|
|
3934 This is highly dependent on your installation, but try with the
|
|
3935 following font as your base font for XEmacs and see what it does:
|
|
3936
|
|
3937 @format
|
|
3938 -adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
|
|
3939 @end format
|
|
3940
|
|
3941 More precisely, do the following in your resource file:
|
|
3942
|
|
3943 @format
|
|
3944 Emacs.default.attributeFont: \
|
|
3945 -adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
|
|
3946 @end format
|
|
3947
|
|
3948 If you just don't want to see the @samp{*Warnings*} buffer at startup
|
|
3949 time, you can set this:
|
428
|
3950
|
|
3951 @lisp
|
2417
|
3952 (setq display-warning-minimum-level 'error)
|
428
|
3953 @end lisp
|
|
3954
|
2417
|
3955 The buffer still exists; it just isn't in your face.
|
|
3956
|
|
3957 @node Q2.4.5, Q2.4.6, Q2.4.4, Installation
|
|
3958 @unnumberedsubsec Q2.4.5: Warnings from incorrect key modifiers.
|
|
3959
|
|
3960 The following information comes from the @file{PROBLEMS} file that comes
|
|
3961 with XEmacs.
|
|
3962
|
|
3963 If you're having troubles with HP/UX it is because HP/UX defines the
|
|
3964 modifiers wrong in X. Here is a shell script to fix the problem; be
|
|
3965 sure that it is run after VUE configures the X server.
|
428
|
3966
|
|
3967 @example
|
2417
|
3968 #! /bin/sh
|
|
3969 xmodmap 2> /dev/null - << EOF
|
|
3970 keysym Alt_L = Meta_L
|
|
3971 keysym Alt_R = Meta_R
|
|
3972 EOF
|
|
3973
|
|
3974 xmodmap - << EOF
|
|
3975 clear mod1
|
|
3976 keysym Mode_switch = NoSymbol
|
|
3977 add mod1 = Meta_L
|
|
3978 keysym Meta_R = Mode_switch
|
|
3979 add mod2 = Mode_switch
|
|
3980 EOF
|
428
|
3981 @end example
|
|
3982
|
2417
|
3983 @node Q2.4.6, , Q2.4.5, Installation
|
|
3984 @unnumberedsubsec Q2.4.6: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
|
|
3985
|
|
3986 Yes.
|
|
3987
|
|
3988 The console was there because @file{temacs} (and in turn, @file{xemacs})
|
|
3989 was a console application, and Windows typically creates a new
|
|
3990 console for a console process unless the creating process requests that
|
|
3991 one isn't created. This used to be fixed with @file{runemacs}, a small
|
|
3992 Windows application that existed merely to start @file{xemacs}, stating
|
|
3993 that it didn't want a console.
|
|
3994
|
|
3995 XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
|
|
3996 application. The explanation of what that means is included for
|
|
3997 educational value.
|
|
3998
|
|
3999 When building an application to be run in a Win32 environment, you must
|
|
4000 state which sub-system it is to run in. Valid subsystems include
|
|
4001 "console" and "gui". The subsystem you use affects the run time
|
|
4002 libraries linked into your application, the start up function that is
|
|
4003 run before control is handed over to your application, the entry point
|
|
4004 to your program, and how Windows normally invokes your program. (Console
|
|
4005 programs automatically get a console created for them at startup if
|
|
4006 their stdin/stdout don't point anywhere useful, which is the case when
|
|
4007 run from the GUI. This is a stupid design, of course -- instead, the
|
|
4008 console should get created only when the first I/O actually occurs!
|
|
4009 GUI programs have an equally stupid design: When called from
|
|
4010 @file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to
|
|
4011 point nowhere useful, even though the command shell has its own
|
|
4012 stdin/stdout. It's as if someone who had learned a bit about stdio but
|
|
4013 had no actual knowledge of interprocess communication designed the
|
|
4014 scheme; unfortunately, the whole process-communication aspect of the
|
|
4015 Win32 API is equally badly designed.) For example, the entry point for a
|
|
4016 console app is "main" (which is what you'd expect for a C/C++ program),
|
|
4017 but the entry point for a "gui" app is "WinMain". This confuses and
|
|
4018 annoys a lot of programmers who've grown up on Unix systems, where the
|
|
4019 kernel doesn't really care whether your application is a gui program or
|
|
4020 not.
|
|
4021
|
|
4022 For reasons not altogether clear, and are lost in the mists of time and
|
|
4023 tradition, XEmacs on Win32 started out as a console application, and
|
|
4024 therefore a console was automatically created for it. (It may have been
|
|
4025 made a console application partly because a console is needed in some
|
|
4026 circumstances, especially under Win95, to interrupt, terminate, or send
|
|
4027 signals to a child process, and because of the bogosity mentioned above
|
|
4028 with GUI programs and the standard command shell. Currently, XEmacs
|
|
4029 just creates and immediately hides a console when necessary, and
|
|
4030 works around the "no useful stdio" problem by creating its own console
|
|
4031 window as necessary to display messages in.)
|
|
4032
|
2459
|
4033 @node Editing, Display, Installation, Top
|
|
4034 @unnumbered 3 Editing Functions
|
2417
|
4035
|
|
4036 This is part 3 of the XEmacs Frequently Asked Questions list. This
|
2459
|
4037 section is devoted to the editing-related capabilities of XEmacs (the
|
|
4038 keyboard, mouse, buffers, text selections, etc.) and how to customize
|
|
4039 them.
|
2417
|
4040
|
|
4041 @menu
|
|
4042 3.0: The Keyboard
|
2459
|
4043 * Q3.0.1:: How can I customize the keyboard?
|
|
4044 * Q3.0.2:: How can I bind complex functions (or macros) to keys?
|
|
4045 * Q3.0.3:: How do I bind C-. and C-; to scroll one line up and down?
|
|
4046 * Q3.0.4:: Globally binding @kbd{Delete}?
|
|
4047 * Q3.0.5:: How to map @kbd{Help} key alone on Sun type4 keyboard?
|
|
4048 * Q3.0.6:: How can you type in special characters in XEmacs?
|
|
4049 * Q3.0.7:: Can I turn on @dfn{sticky} modifier keys?
|
|
4050 * Q3.0.8:: How do I map the arrow keys?
|
|
4051 * Q3.0.9:: HP Alt key as Meta.
|
|
4052 * Q3.0.10:: Why does edt emulation not work?
|
|
4053 * Q3.0.11:: How can I emulate VI and use it as my default mode?
|
2417
|
4054
|
|
4055 3.1: The Mouse
|
|
4056 * Q3.1.1:: How can I turn off Mouse pasting?
|
|
4057 * Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons?
|
|
4058 * Q3.1.3:: Clicking the left button does not do anything in buffer list.
|
|
4059 * Q3.1.4:: How can I get a list of buffers when I hit mouse button 3?
|
2459
|
4060 * Q3.1.5:: How can I set XEmacs up so that it pastes where the text cursor is?
|
|
4061
|
|
4062 3.2: Buffers, Text Editing
|
|
4063 * Q3.2.1:: Can I have the end of the buffer delimited in some way?
|
|
4064 * Q3.2.2:: How do I insert today's date into a buffer?
|
|
4065 * Q3.2.3:: How do I get a single minibuffer frame?
|
|
4066 * Q3.2.4:: How can I enable auto-indent and/or Filladapt?
|
|
4067 * Q3.2.5:: How can I get XEmacs to come up in text/auto-fill mode by default?
|
|
4068
|
|
4069 3.3: Text Selections
|
|
4070 * Q3.3.1:: How do I select a rectangular region?
|
|
4071 * Q3.3.2:: How can I turn off or change highlighted selections?
|
|
4072 * Q3.3.3:: How do I cause typing on an active region to remove it?
|
|
4073 * Q3.3.4:: Can I turn off the highlight during isearch?
|
|
4074 * Q3.3.5:: Why is killing so slow?
|
|
4075 * Q3.3.6:: Why does @kbd{M-w} take so long?
|
|
4076
|
|
4077 3.4: Editing Source Code
|
|
4078 * Q3.4.1:: I do not like cc-mode. How do I use the old c-mode?
|
|
4079 * Q3.4.2:: How do you make XEmacs indent CL if-clauses correctly?
|
2417
|
4080 @end menu
|
|
4081
|
|
4082 @unnumberedsec 3.0: The Keyboard
|
|
4083
|
2459
|
4084 @node Q3.0.1, Q3.0.2, Editing, Editing
|
|
4085 @unnumberedsubsec Q3.0.1: How can I customize the keyboard?
|
|
4086
|
|
4087 #### Write me.
|
|
4088
|
|
4089 @node Q3.0.2, Q3.0.3, Q3.0.1, Editing
|
|
4090 @unnumberedsubsec Q3.0.2: How can I bind complex functions (or macros) to keys?
|
428
|
4091
|
|
4092 As an example, say you want the @kbd{paste} key on a Sun keyboard to
|
|
4093 insert the current Primary X selection at point. You can accomplish this
|
|
4094 with:
|
|
4095
|
|
4096 @lisp
|
|
4097 (define-key global-map [f18] 'x-insert-selection)
|
|
4098 @end lisp
|
|
4099
|
|
4100 However, this only works if there is a current X selection (the
|
|
4101 selection will be highlighted). The functionality I like is for the
|
|
4102 @kbd{paste} key to insert the current X selection if there is one,
|
|
4103 otherwise insert the contents of the clipboard. To do this you need to
|
|
4104 pass arguments to @code{x-insert-selection}. This is done by wrapping
|
|
4105 the call in a 'lambda form:
|
|
4106
|
|
4107 @lisp
|
|
4108 (global-set-key [f18]
|
|
4109 (lambda () (interactive) (x-insert-selection t nil)))
|
|
4110 @end lisp
|
|
4111
|
|
4112 This binds the f18 key to a @dfn{generic} functional object. The
|
|
4113 interactive spec is required because only interactive functions can be
|
|
4114 bound to keys.
|
|
4115
|
|
4116 For the FAQ example you could use:
|
|
4117
|
|
4118 @lisp
|
|
4119 (global-set-key [(control ?.)]
|
|
4120 (lambda () (interactive) (scroll-up 1)))
|
440
|
4121 (global-set-key [(control ?;)]
|
|
4122 (lambda () (interactive) (scroll-up -1)))
|
428
|
4123 @end lisp
|
|
4124
|
|
4125 This is fine if you only need a few functions within the lambda body.
|
2417
|
4126 If you're doing more it's cleaner to define a separate function.
|
2459
|
4127 @xref{Q3.0.3, How do I bind C-. and C-; to scroll one line up and
|
2417
|
4128 down?}.
|
|
4129
|
2459
|
4130 @node Q3.0.3, Q3.0.4, Q3.0.2, Editing
|
|
4131 @unnumberedsubsec Q3.0.3: How do I bind C-. and C-; to scroll one line up and down?
|
428
|
4132
|
|
4133 Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and
|
|
4134 @email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}:
|
|
4135
|
|
4136 @lisp
|
|
4137 (defun scroll-up-one-line ()
|
|
4138 (interactive)
|
|
4139 (scroll-up 1))
|
|
4140
|
|
4141 (defun scroll-down-one-line ()
|
|
4142 (interactive)
|
|
4143 (scroll-down 1))
|
|
4144
|
|
4145 (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
|
440
|
4146 (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
|
428
|
4147 @end lisp
|
|
4148
|
|
4149 The key point is that you can only bind simple functions to keys; you
|
2417
|
4150 can not bind a key to a function that you're also passing arguments
|
2459
|
4151 to. (@pxref{Q3.0.2, How can I bind complex functions (or macros) to
|
2417
|
4152 keys?} for a better answer).
|
|
4153
|
2459
|
4154 @node Q3.0.4, Q3.0.5, Q3.0.3, Editing
|
|
4155 @unnumberedsubsec Q3.0.4: Globally binding @kbd{Delete}?
|
428
|
4156
|
|
4157 I cannot manage to globally bind my @kbd{Delete} key to something other
|
|
4158 than the default. How does one do this?
|
|
4159
|
462
|
4160 Answer: The problem is that many modes explicitly bind @kbd{Delete}. To
|
|
4161 get around this, try the following:
|
|
4162
|
428
|
4163 @lisp
|
|
4164 (defun foo ()
|
|
4165 (interactive)
|
|
4166 (message "You hit DELETE"))
|
|
4167
|
462
|
4168 (define-key key-translation-map 'delete 'redirected-delete)
|
|
4169 (global-set-key 'redirected-delete 'foo)
|
428
|
4170 @end lisp
|
|
4171
|
2459
|
4172 @node Q3.0.5, Q3.0.6, Q3.0.4, Editing
|
|
4173 @unnumberedsubsec Q3.0.5: How to map @kbd{Help} key alone on Sun type4 keyboard?
|
428
|
4174
|
|
4175 The following works in GNU Emacs 19:
|
|
4176
|
|
4177 @lisp
|
|
4178 (global-set-key [help] 'help-command);; Help
|
|
4179 @end lisp
|
|
4180
|
462
|
4181 The following works in XEmacs with the addition of shift:
|
428
|
4182
|
|
4183 @lisp
|
|
4184 (global-set-key [(shift help)] 'help-command);; Help
|
|
4185 @end lisp
|
|
4186
|
|
4187 But it doesn't work alone. This is in the file @file{PROBLEMS} which
|
|
4188 should have come with your XEmacs installation: @emph{Emacs ignores the
|
|
4189 @kbd{help} key when running OLWM}.
|
|
4190
|
|
4191 OLWM grabs the @kbd{help} key, and retransmits it to the appropriate
|
|
4192 client using
|
|
4193 @iftex
|
|
4194 @*
|
|
4195 @end iftex
|
|
4196 @code{XSendEvent}. Allowing Emacs to react to synthetic
|
|
4197 events is a security hole, so this is turned off by default. You can
|
|
4198 enable it by setting the variable @code{x-allow-sendevents} to t. You
|
|
4199 can also cause fix this by telling OLWM to not grab the help key, with
|
|
4200 the null binding @code{OpenWindows.KeyboardCommand.Help:}.
|
|
4201
|
2459
|
4202 @node Q3.0.6, Q3.0.7, Q3.0.5, Editing
|
|
4203 @unnumberedsubsec Q3.0.6: How can you type in special characters in XEmacs?
|
428
|
4204 One way is to use the package @code{x-compose}. Then you can use
|
|
4205 sequences like @kbd{Compose " a} to get ä, etc.
|
|
4206
|
462
|
4207 Another way is to use the @code{iso-insert} package. Then you can use
|
|
4208 sequences like @kbd{C-x 8 " a} to get ä, etc.
|
428
|
4209
|
|
4210 @email{glynn@@sensei.co.uk, Glynn Clements} writes:
|
|
4211
|
|
4212 @quotation
|
|
4213 It depends upon your X server.
|
|
4214
|
|
4215 Generally, the simplest way is to define a key as Multi_key with
|
|
4216 xmodmap, e.g.
|
|
4217 @c hey, show some respect, willya -- there's xkeycaps, isn't there? --
|
|
4218 @c chr ;)
|
|
4219 @example
|
440
|
4220 xmodmap -e 'keycode 0xff20 = Multi_key'
|
428
|
4221 @end example
|
|
4222
|
|
4223 You will need to pick an appropriate keycode. Use xev to find out the
|
|
4224 keycodes for each key.
|
|
4225
|
|
4226 [NB: On a `Windows' keyboard, recent versions of XFree86 automatically
|
|
4227 define the right `Windows' key as Multi_key'.]
|
|
4228
|
|
4229 Once you have Multi_key defined, you can use e.g.
|
|
4230 @example
|
440
|
4231 Multi a ' => á
|
|
4232 Multi e " => ë
|
|
4233 Multi c , => ç
|
428
|
4234 @end example
|
|
4235
|
|
4236 etc.
|
|
4237
|
|
4238 Also, recent versions of XFree86 define various AltGr-<key>
|
|
4239 combinations as dead keys, i.e.
|
|
4240 @example
|
440
|
4241 AltGr [ => dead_diaeresis
|
|
4242 AltGr ] => dead_tilde
|
|
4243 AltGr ; => dead_acute
|
428
|
4244 @end example
|
|
4245 etc.
|
|
4246
|
|
4247 Running @samp{xmodmap -pk} will list all of the defined keysyms.
|
|
4248 @end quotation
|
|
4249
|
1135
|
4250 For the related problem of @emph{displaying} non-ASCII characters in a
|
2459
|
4251 non-Mule XEmacs, @xref{Q4.0.8, How do I display non-ASCII characters?}.
|
|
4252
|
|
4253 @node Q3.0.7, Q3.0.8, Q3.0.6, Editing
|
|
4254 @unnumberedsubsec Q3.0.7: Can I turn on @dfn{sticky} modifier keys?
|
428
|
4255
|
|
4256 Yes, with @code{(setq modifier-keys-are-sticky t)}. This will give the
|
|
4257 effect of being able to press and release Shift and have the next
|
|
4258 character typed come out in upper case. This will affect all the other
|
|
4259 modifier keys like Control and Meta as well.
|
|
4260
|
|
4261 @email{ben@@xemacs.org, Ben Wing} writes:
|
|
4262
|
|
4263 @quotation
|
|
4264 One thing about the sticky modifiers is that if you move the mouse out
|
|
4265 of the frame and back in, it cancels all currently ``stuck'' modifiers.
|
|
4266 @end quotation
|
|
4267
|
2459
|
4268 @node Q3.0.8, Q3.0.9, Q3.0.7, Editing
|
|
4269 @unnumberedsubsec Q3.0.8: How do I map the arrow keys?
|
428
|
4270 @c New
|
|
4271 Say you want to map @kbd{C-@key{right}} to forward-word:
|
|
4272
|
|
4273 @email{sds@@usa.net, Sam Steingold} writes:
|
|
4274
|
|
4275 @quotation
|
|
4276 @lisp
|
|
4277 ; both XEmacs and Emacs
|
|
4278 (define-key global-map [(control right)] 'forward-word)
|
|
4279 @end lisp
|
|
4280 or
|
|
4281 @lisp
|
|
4282 ; Emacs only
|
|
4283 (define-key global-map [C-right] 'forward-word)
|
|
4284 @end lisp
|
|
4285 or
|
|
4286 @lisp
|
|
4287 ; ver > 20, both
|
|
4288 (define-key global-map (kbd "C-<right>") 'forward-word)
|
|
4289 @end lisp
|
|
4290 @end quotation
|
|
4291
|
2459
|
4292 @node Q3.0.9, Q3.0.10, Q3.0.8, Editing
|
|
4293 @unnumberedsubsec Q3.0.9: HP Alt key as Meta.
|
2417
|
4294
|
|
4295 How can I make XEmacs recognize the Alt key of my HP workstation as a
|
|
4296 Meta key?
|
|
4297
|
|
4298 Put the following line into a file and load it with xmodmap(1) before
|
|
4299 starting XEmacs:
|
428
|
4300
|
|
4301 @example
|
2417
|
4302 remove Mod1 = Mode_switch
|
428
|
4303 @end example
|
|
4304
|
2459
|
4305 @node Q3.0.10, Q3.0.11, Q3.0.9, Editing
|
|
4306 @unnumberedsubsec Q3.0.10: Why does edt emulation not work?
|
2417
|
4307
|
|
4308 We don't know, but you can use tpu-edt emulation instead, which works
|
|
4309 fine and is a little fancier than the standard edt emulation. To do
|
|
4310 this, add the following line to your @file{init.el}:
|
|
4311
|
|
4312 @lisp
|
|
4313 (tpu-edt)
|
|
4314 @end lisp
|
|
4315
|
|
4316 If you don't want it to replace @kbd{C-h} with an edt-style help menu
|
|
4317 add this as well:
|
428
|
4318
|
|
4319 @lisp
|
2417
|
4320 (global-set-key [(control h)] 'help-for-help)
|
428
|
4321 @end lisp
|
|
4322
|
2459
|
4323 @node Q3.0.11, Q3.1.1, Q3.0.10, Editing
|
|
4324 @unnumberedsubsec Q3.0.11: How can I emulate VI and use it as my default mode?
|
2417
|
4325
|
|
4326 Our recommended VI emulator is viper. To make viper-mode the default,
|
|
4327 add this to your @file{init.el}:
|
428
|
4328
|
|
4329 @lisp
|
2417
|
4330 (viper-mode)
|
428
|
4331 @end lisp
|
|
4332
|
2417
|
4333 @email{kifer@@CS.SunySB.EDU, Michael Kifer} writes:
|
|
4334
|
|
4335 @quotation
|
|
4336 This should be added as close to the top of @file{init.el} as you can get
|
|
4337 it, otherwise some minor modes may not get viper-ized.
|
|
4338 @end quotation
|
|
4339
|
|
4340 @unnumberedsec 3.1: The Mouse
|
|
4341
|
2459
|
4342 @node Q3.1.1, Q3.1.2, Q3.0.11, Editing
|
2417
|
4343 @unnumberedsubsec Q3.1.1: How can I turn off Mouse pasting?
|
428
|
4344
|
|
4345 I keep hitting the middle mouse button by accident and getting stuff
|
|
4346 pasted into my buffer so how can I turn this off?
|
|
4347
|
|
4348 Here is an alternative binding, whereby the middle mouse button selects
|
|
4349 (but does not cut) the expression under the mouse. Clicking middle on a
|
|
4350 left or right paren will select to the matching one. Note that you can
|
|
4351 use @code{define-key} or @code{global-set-key}.
|
|
4352
|
|
4353 @lisp
|
|
4354 (defun mouse-set-point-and-select (event)
|
|
4355 "Sets the point at the mouse location, then marks following form"
|
|
4356 (interactive "@@e")
|
|
4357 (mouse-set-point event)
|
|
4358 (mark-sexp 1))
|
|
4359 (define-key global-map [button2] 'mouse-set-point-and-select)
|
|
4360 @end lisp
|
|
4361
|
2459
|
4362 @node Q3.1.2, Q3.1.3, Q3.1.1, Editing
|
2417
|
4363 @unnumberedsubsec Q3.1.2: How do I set control/meta/etc modifiers on mouse buttons?
|
428
|
4364
|
|
4365 Use, for instance, @code{[(meta button1)]}. For example, here is a common
|
|
4366 setting for Common Lisp programmers who use the bundled @code{ilisp}
|
|
4367 package, whereby meta-button1 on a function name will find the file where
|
|
4368 the function name was defined, and put you at that location in the source
|
|
4369 file.
|
|
4370
|
|
4371 [Inside a function that gets called by the lisp-mode-hook and
|
|
4372 ilisp-mode-hook]
|
|
4373
|
|
4374 @lisp
|
|
4375 (local-set-key [(meta button1)] 'edit-definitions-lisp)
|
|
4376 @end lisp
|
|
4377
|
2459
|
4378 @node Q3.1.3, Q3.1.4, Q3.1.2, Editing
|
2417
|
4379 @unnumberedsubsec Q3.1.3: Clicking the left button does not do anything in buffer list.
|
428
|
4380
|
|
4381 I do @kbd{C-x C-b} to get a list of buffers and the entries get
|
|
4382 highlighted when I move the mouse over them but clicking the left mouse
|
|
4383 does not do anything.
|
|
4384
|
|
4385 Use the middle mouse button.
|
|
4386
|
2459
|
4387 @node Q3.1.4, Q3.1.5, Q3.1.3, Editing
|
2417
|
4388 @unnumberedsubsec Q3.1.4: How can I get a list of buffers when I hit mouse button 3?
|
428
|
4389
|
|
4390 The following code will replace the default popup on button3:
|
|
4391
|
|
4392 @lisp
|
|
4393 (global-set-key [button3] 'popup-buffer-menu)
|
|
4394 @end lisp
|
|
4395
|
2459
|
4396 @node Q3.1.5, Q3.2.1, Q3.1.4, Editing
|
|
4397 @unnumberedsubsec Q3.1.5: How can I set XEmacs up so that it pastes where the text cursor is?
|
428
|
4398
|
|
4399 By default XEmacs pastes X selections where the mouse pointer is. How
|
|
4400 do I disable this?
|
|
4401
|
|
4402 Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank
|
|
4403 @key{RET}}.
|
|
4404
|
2417
|
4405 To get XEmacs to paste at the text cursor, add this your @file{init.el}:
|
428
|
4406
|
|
4407 @lisp
|
|
4408 (setq mouse-yank-at-point t)
|
|
4409 @end lisp
|
|
4410
|
2459
|
4411 You can also change this with Customize. Select from the
|
|
4412 @code{Options} menu @code{Advanced
|
|
4413 (Customize)->Emacs->Editing->Mouse->Yank At Point...} or type @kbd{M-x
|
|
4414 customize @key{RET} mouse @key{RET}}.
|
|
4415
|
|
4416 @unnumberedsec 3.2: Buffers, Text Editing
|
|
4417
|
|
4418 @node Q3.2.1, Q3.2.2, Q3.1.5, Editing
|
|
4419 @unnumberedsubsec Q3.2.1: Can I have the end of the buffer delimited in some way?
|
|
4420
|
|
4421 Say, with: @samp{[END]}?
|
|
4422
|
|
4423 Try this:
|
|
4424
|
|
4425 @lisp
|
|
4426 (let ((ext (make-extent (point-min) (point-max))))
|
|
4427 (set-extent-property ext 'start-closed t)
|
|
4428 (set-extent-property ext 'end-closed t)
|
|
4429 (set-extent-property ext 'detachable nil)
|
|
4430 (set-extent-end-glyph ext (make-glyph [string :data "[END]"])))
|
|
4431 @end lisp
|
|
4432
|
|
4433 Since this is XEmacs, you can specify an icon to be shown on
|
|
4434 window-system devices. To do so, change the @code{make-glyph} call to
|
|
4435 something like this:
|
|
4436
|
|
4437 @lisp
|
|
4438 (make-glyph '([xpm :file "~/something.xpm"]
|
|
4439 [string :data "[END]"]))
|
|
4440 @end lisp
|
|
4441
|
|
4442 You can inline the @sc{xpm} definition yourself by specifying
|
|
4443 @code{:data} instead of @code{:file}. Here is such a full-featured
|
|
4444 version that works on both X and TTY devices:
|
|
4445
|
|
4446 @lisp
|
|
4447 (let ((ext (make-extent (point-min) (point-max))))
|
|
4448 (set-extent-property ext 'start-closed t)
|
|
4449 (set-extent-property ext 'end-closed t)
|
|
4450 (set-extent-property ext 'detachable nil)
|
|
4451 (set-extent-end-glyph ext (make-glyph '([xpm :data "\
|
|
4452 /* XPM */
|
|
4453 static char* eye = @{
|
|
4454 \"20 11 7 2\",
|
|
4455 \"__ c None\"
|
|
4456 \"_` c #7f7f7f\",
|
|
4457 \"_a c #fefefe\",
|
|
4458 \"_b c #7f0000\",
|
|
4459 \"_c c #fefe00\",
|
|
4460 \"_d c #fe0000\",
|
|
4461 \"_e c #bfbfbf\",
|
|
4462 \"___________`_`_`___b_b_b_b_________`____\",
|
|
4463 \"_________`_`_`___b_c_c_c_b_b____________\",
|
|
4464 \"_____`_`_`_e___b_b_c_c_c___b___b_______`\",
|
|
4465 \"___`_`_e_a___b_b_d___b___b___b___b______\",
|
|
4466 \"_`_`_e_a_e___b_b_d_b___b___b___b___b____\",
|
|
4467 \"_`_`_a_e_a___b_b_d___b___b___b___b___b__\",
|
|
4468 \"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\",
|
|
4469 \"___`_`_e_a___b_b_b_d_c___b___b___d_b____\",
|
|
4470 \"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\",
|
|
4471 \"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\",
|
|
4472 \"___`_____`_`_`_`___b_b_b_b_b_b__________\",
|
|
4473 @} ;"]
|
|
4474 [string :data "[END]"]))))
|
|
4475 @end lisp
|
|
4476
|
|
4477 Note that you might want to make this a function, and put it to a hook.
|
|
4478 We leave that as an exercise for the reader.
|
|
4479
|
|
4480 @node Q3.2.2, Q3.2.3, Q3.2.1, Editing
|
|
4481 @unnumberedsubsec Q3.2.2: How do I insert today's date into a buffer?
|
2417
|
4482
|
|
4483 Like this:
|
428
|
4484
|
|
4485 @lisp
|
2459
|
4486 (insert (current-time-string))
|
2417
|
4487 @end lisp
|
|
4488
|
2459
|
4489 @node Q3.2.3, Q3.2.4, Q3.2.2, Editing
|
|
4490 @unnumberedsubsec Q3.2.3: How do I get a single minibuffer frame?
|
|
4491
|
|
4492 @email{acs@@acm.org, Vin Shelton} writes:
|
2417
|
4493
|
|
4494 @lisp
|
2459
|
4495 (setq initial-frame-plist '(minibuffer nil))
|
|
4496 (setq default-frame-plist '(minibuffer nil))
|
|
4497 (setq default-minibuffer-frame
|
|
4498 (make-frame
|
|
4499 '(minibuffer only
|
|
4500 width 86
|
|
4501 height 1
|
|
4502 menubar-visible-p nil
|
|
4503 default-toolbar-visible-p nil
|
|
4504 name "minibuffer"
|
|
4505 top -2
|
|
4506 left -2
|
|
4507 has-modeline-p nil)))
|
|
4508 (frame-notice-user-settings)
|
2417
|
4509 @end lisp
|
|
4510
|
2459
|
4511 @strong{Please note:} The single minibuffer frame may not be to everyone's
|
|
4512 taste, and there any number of other XEmacs options settings that may
|
|
4513 make it difficult or inconvenient to use.
|
|
4514
|
|
4515 @node Q3.2.4, Q3.2.5, Q3.2.3, Editing
|
|
4516 @unnumberedsubsec Q3.2.4: How can I enable auto-indent and/or Filladapt?
|
|
4517
|
|
4518 Put the following line in your @file{init.el}:
|
428
|
4519
|
|
4520 @lisp
|
2459
|
4521 (setq indent-line-function 'indent-relative-maybe)
|
428
|
4522 @end lisp
|
|
4523
|
2459
|
4524 If you want to get fancy, try the @code{filladapt} package available
|
|
4525 standard with XEmacs. Put this into your @file{init.el}:
|
428
|
4526
|
|
4527 @lisp
|
2459
|
4528 (require 'filladapt)
|
|
4529 (setq-default filladapt-mode t)
|
|
4530 (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
|
428
|
4531 @end lisp
|
|
4532
|
2459
|
4533 This will enable Filladapt for all modes except C mode, where it doesn't
|
|
4534 work well. To turn Filladapt on only in particular major modes, remove
|
|
4535 the @code{(setq-default ...)} line and use
|
|
4536 @code{turn-on-filladapt-mode}, like this:
|
428
|
4537
|
|
4538 @lisp
|
2459
|
4539 (add-hook 'text-mode-hook 'turn-on-filladapt-mode)
|
428
|
4540 @end lisp
|
2417
|
4541
|
2459
|
4542 You can customize filling and adaptive filling with Customize.
|
|
4543 Select from the @code{Options} menu
|
|
4544 @code{Advanced (Customize)->Emacs->Editing->Fill->Fill...}
|
|
4545 or type @kbd{M-x customize @key{RET} fill @key{RET}}.
|
|
4546
|
|
4547 Note that well-behaving text-lookalike modes will run
|
|
4548 @code{text-mode-hook} by default (e.g. that's what Message does). For
|
|
4549 the nasty ones, you'll have to provide the @code{add-hook}s yourself.
|
|
4550
|
|
4551 Please note that the @code{fa-extras} package is no longer useful.
|
|
4552
|
|
4553 @node Q3.2.5, Q3.3.1, Q3.2.4, Editing
|
|
4554 @unnumberedsubsec Q3.2.5: How can I get XEmacs to come up in text/auto-fill mode by default?
|
|
4555
|
|
4556 Try the following lisp in your @file{init.el}:
|
2417
|
4557
|
|
4558 @lisp
|
2459
|
4559 (setq default-major-mode 'text-mode)
|
|
4560 (setq text-mode-hook 'turn-on-auto-fill)
|
2417
|
4561 @end lisp
|
|
4562
|
2459
|
4563 @strong{WARNING}: note that changing the value of
|
|
4564 @code{default-major-mode} from @code{fundamental-mode} can break a large
|
|
4565 amount of built-in code that expects newly created buffers to be in
|
|
4566 @code{fundamental-mode}. (Changing from @code{fundamental-mode} to
|
|
4567 @code{text-mode} might not wreak too much havoc, but changing to
|
|
4568 something more exotic like a lisp-mode would break many Emacs packages).
|
|
4569
|
|
4570 Note that Emacs by default starts up in buffer @code{*scratch*} in
|
|
4571 @code{initial-major-mode}, which defaults to
|
|
4572 @code{lisp-interaction-mode}. Thus adding the following form to your
|
|
4573 Emacs init file will cause the initial @code{*scratch*} buffer to be put
|
|
4574 into auto-fill'ed @code{text-mode}:
|
2417
|
4575
|
|
4576 @lisp
|
2459
|
4577 (setq initial-major-mode
|
|
4578 (lambda ()
|
|
4579 (text-mode)
|
|
4580 (turn-on-auto-fill)))
|
2417
|
4581 @end lisp
|
|
4582
|
2459
|
4583 Note that after your init file is loaded, if
|
|
4584 @code{inhibit-startup-message} is @code{nil} (the default) and the
|
|
4585 startup buffer is @code{*scratch*} then the startup message will be
|
|
4586 inserted into @code{*scratch*}; it will be removed after a timeout by
|
|
4587 erasing the entire @code{*scratch*} buffer. Keep in mind this default
|
|
4588 usage of @code{*scratch*} if you desire any prior manipulation of
|
|
4589 @code{*scratch*} from within your Emacs init file. In particular,
|
|
4590 anything you insert into @code{*scratch*} from your init file will be
|
|
4591 later erased. Also, if you change the mode of the @code{*scratch*}
|
|
4592 buffer, be sure that this will not interfere with possible later
|
|
4593 insertion of the startup message (e.g. if you put @code{*scratch*} into
|
|
4594 a nonstandard mode that has automatic font lock rules, then the startup
|
|
4595 message might get fontified in a strange foreign manner, e.g. as code in
|
|
4596 some programming language).
|
|
4597
|
|
4598 @unnumberedsec 3.3: Text Selections
|
|
4599
|
|
4600 @node Q3.3.1, Q3.3.2, Q3.2.5, Editing
|
|
4601 @unnumberedsubsec Q3.3.1: How do I select a rectangular region?
|
2417
|
4602
|
|
4603 Just select the region normally, then use the rectangle commands (e.g.
|
|
4604 @code{kill-rectangle} on it. The region does not highlight as a
|
|
4605 rectangle, but the commands work just fine.
|
|
4606
|
|
4607 To actually sweep out rectangular regions with the mouse you can use
|
|
4608 @code{mouse-track-do-rectangle} which is assigned to @kbd{M-button1}.
|
|
4609 Then use rectangle commands.
|
|
4610
|
|
4611 You can also do the following to change default behavior to sweep out
|
|
4612 rectangular regions:
|
|
4613
|
|
4614 @lisp
|
|
4615 (setq mouse-track-rectangle-p t)
|
|
4616 @end lisp
|
|
4617
|
2459
|
4618 You can also change this with Customize.
|
2417
|
4619 Select from the @code{Options} menu
|
|
4620 @code{Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...} or type
|
|
4621 @kbd{M-x customize @key{RET} mouse @key{RET}}.
|
|
4622
|
|
4623
|
|
4624 @example
|
|
4625 mouse-track-do-rectangle: (event)
|
|
4626 -- an interactive compiled Lisp function.
|
|
4627 Like `mouse-track' but selects rectangles instead of regions.
|
|
4628 @end example
|
|
4629
|
2459
|
4630 @node Q3.3.2, Q3.3.3, Q3.3.1, Editing
|
|
4631 @unnumberedsubsec Q3.3.2: How can I turn off or change highlighted selections?
|
428
|
4632
|
|
4633 The @code{zmacs} mode allows for what some might call gratuitous
|
|
4634 highlighting for selected regions (either by setting mark or by using
|
|
4635 the mouse). This is the default behavior. To turn off, add the
|
2417
|
4636 following line to your @file{init.el} file:
|
428
|
4637
|
|
4638 @lisp
|
|
4639 (setq zmacs-regions nil)
|
|
4640 @end lisp
|
|
4641
|
2417
|
4642 You can also change this with Customize. Select from the
|
|
4643 @code{Options} menu
|
|
4644 @code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs Regions}
|
|
4645 or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
|
|
4646
|
|
4647 To change the face for selection, look at @code{Options->Advanced (Customize)}
|
|
4648 on the menubar.
|
|
4649
|
2459
|
4650 @node Q3.3.3, Q3.3.4, Q3.3.2, Editing
|
|
4651 @unnumberedsubsec Q3.3.3: How do I cause typing on an active region to remove it?
|
428
|
4652
|
|
4653 I want to change things so that if I select some text and start typing,
|
|
4654 the typed text replaces the selected text, similar to Motif.
|
|
4655
|
|
4656 You want to use something called @dfn{pending delete}. Pending delete
|
|
4657 is what happens when you select a region (with the mouse or keyboard)
|
|
4658 and you press a key to replace the selected region by the key you typed.
|
|
4659 Usually backspace kills the selected region.
|
|
4660
|
2164
|
4661 To get this behavior, ensure that you have the @file{pc} package
|
|
4662 installed, and add the following lines to your
|
2417
|
4663 @file{init.el}:
|
428
|
4664
|
|
4665 @lisp
|
438
|
4666 (cond
|
|
4667 ((fboundp 'turn-on-pending-delete)
|
|
4668 (turn-on-pending-delete))
|
|
4669 ((fboundp 'pending-delete-on)
|
|
4670 (pending-delete-on t)))
|
428
|
4671 @end lisp
|
|
4672
|
1138
|
4673 Note that this will work with both Backspace and Delete. This code is a
|
438
|
4674 tad more complicated than it has to be for XEmacs in order to make it
|
|
4675 more portable.
|
428
|
4676
|
2459
|
4677 @node Q3.3.4, Q3.3.5, Q3.3.3, Editing
|
|
4678 @unnumberedsubsec Q3.3.4: Can I turn off the highlight during isearch?
|
428
|
4679
|
|
4680 I do not like my text highlighted while I am doing isearch as I am not
|
|
4681 able to see what's underneath. How do I turn it off?
|
|
4682
|
2417
|
4683 Put the following in your @file{init.el}:
|
428
|
4684
|
|
4685 @lisp
|
|
4686 (setq isearch-highlight nil)
|
|
4687 @end lisp
|
|
4688
|
2459
|
4689 You can also change this with Customize. Type
|
428
|
4690 @kbd{M-x customize-variable @key{RET} isearch-highlight @key{RET}}.
|
|
4691
|
|
4692 Note also that isearch-highlight affects query-replace and ispell.
|
|
4693 Instead of disabling isearch-highlight you may find that a better
|
|
4694 solution consists of customizing the @code{isearch} face.
|
|
4695
|
2459
|
4696 @node Q3.3.5, Q3.3.6, Q3.3.4, Editing
|
|
4697 @unnumberedsubsec Q3.3.5: Why is killing so slow?
|
892
|
4698
|
|
4699 This actually is an X Windows question, although you'll notice it with
|
|
4700 keyboard operations as well as while using the GUI. Basically, there
|
|
4701 are four ways to communicate interprogram via the X server:
|
|
4702
|
|
4703 @table @strong
|
|
4704 @item Primary selection
|
|
4705 a transient selection that gets replaced every time a new selection is made
|
|
4706
|
|
4707 @item Secondary selection
|
|
4708 for "exchanging" with the primary selection
|
|
4709
|
|
4710 @item Cut buffers
|
|
4711 a clipboard internal to the X server (deprecated)
|
|
4712
|
|
4713 @item Clipboard selection
|
|
4714 a selection with a notification protocol that allows a separate app to
|
|
4715 manage the clipboard
|
|
4716 @end table
|
|
4717
|
|
4718 The cut buffers are deprecated because managing them is even more
|
|
4719 inefficient than the clipboard notification protocol. The primary
|
|
4720 selection works fine for many users and applications, but is not very
|
|
4721 robust under intensive or sophisticated use.
|
|
4722
|
|
4723 In Motif and MS Windows, a clipboard has become the primary means for
|
|
4724 managing cut and paste. These means that "modern" applications tend to
|
|
4725 be oriented toward a true clipboard, rather than the primary selection.
|
|
4726 (On Windows, there is nothing equivalent to the primary selection.)
|
|
4727 It's not that XEmacs doesn't support the simple primary selection
|
|
4728 method, it's that more and more other applications don't.
|
|
4729
|
|
4730 So the slowdown occurs because XEmacs now engages in the clipboard
|
|
4731 notification protocol on @emph{every} kill. This is especially slow on
|
|
4732 Motif.
|
|
4733
|
|
4734 With most people running most clients and server on the same host, and
|
|
4735 many of the rest working over very fast communication, you may expect
|
|
4736 that the situation is not going to improve.
|
|
4737
|
|
4738 There are a number of workarounds. The most effective is to use a
|
|
4739 special command to do selection ownership only when you intend to paste
|
|
4740 to another application. Useful commands are @code{kill-primary-selection}
|
|
4741 and @code{copy-primary-selection}. These work only on text selected
|
|
4742 with the mouse (probably; experiment), and are bound by default to the
|
|
4743 @kbd{Cut} and @kbd{Copy}, respectively, buttons on the toolbar.
|
|
4744 @code{copy-primary-selection} is also bound to @kbd{C-Insert}. You can
|
|
4745 yank the clipboard contents with @code{yank-primary-selection}, bound to
|
|
4746 the @kbd{Paste} toolbar button and @kbd{Sh-Insert}.
|
|
4747
|
|
4748 If you are communicating by cut and paste with applications that use the
|
|
4749 primary selection, then you can customize
|
|
4750 @code{interprogram-cut-function} to @code{nil}, restoring the XEmacs
|
|
4751 version 20 behavior. How can you tell if a program will support this?
|
|
4752 Motifly-correct programs require the clipboard; you lose. For others,
|
|
4753 only by trying it. You also need to customize the complementary
|
|
4754 @code{interprogram-paste-function} to @code{nil}. (Otherwise
|
|
4755 XEmacs-to-XEmacs pastes will not work correctly.)
|
|
4756
|
|
4757 You may get some relief on Motif by setting
|
|
4758 @code{x-selection-strict-motif-ownership} to nil, but this means you will
|
|
4759 only intermittently be able to paste XEmacs kills to Motif applications.
|
|
4760
|
|
4761 Thanks to Jeff Mincy and Glynn Clements for corrections.
|
|
4762
|
2459
|
4763 @node Q3.3.6, Q3.4.1, Q3.3.5, Editing
|
|
4764 @unnumberedsubsec Q3.3.6: Why does @kbd{M-w} take so long?
|
2417
|
4765
|
|
4766 It actually doesn't. It leaves the region visible for a second so that
|
|
4767 you can see what area is being yanked. If you start working, though, it
|
|
4768 will immediately complete its operation. In other words, it will only
|
|
4769 delay for a second if you let it.
|
|
4770
|
2459
|
4771 @unnumberedsec 3.4: Editing Source Code
|
|
4772
|
|
4773 @node Q3.4.1, Q3.4.2, Q3.3.6, Editing
|
|
4774 @unnumberedsubsec Q3.4.1: I do not like cc-mode. How do I use the old c-mode?
|
2417
|
4775
|
|
4776 Well, first off, consider if you really want to do this. cc-mode is
|
|
4777 much more powerful than the old c-mode. If you're having trouble
|
|
4778 getting your old offsets to work, try using @code{c-set-offset} instead.
|
|
4779 You might also consider using the package @code{cc-compat}.
|
|
4780
|
|
4781 But, if you still insist, add the following lines to your @file{init.el}:
|
|
4782
|
|
4783 @lisp
|
|
4784 (fmakunbound 'c-mode)
|
|
4785 (makunbound 'c-mode-map)
|
|
4786 (fmakunbound 'c++-mode)
|
|
4787 (makunbound 'c++-mode-map)
|
|
4788 (makunbound 'c-style-alist)
|
|
4789 (load-library "old-c-mode")
|
|
4790 (load-library "old-c++-mode")
|
|
4791 @end lisp
|
|
4792
|
|
4793 This must be done before any other reference is made to either c-mode or
|
|
4794 c++-mode.
|
|
4795
|
2459
|
4796 @node Q3.4.2, , Q3.4.1, Editing
|
|
4797 @unnumberedsubsec Q3.4.2: How do you make XEmacs indent CL if-clauses correctly?
|
2417
|
4798
|
|
4799 I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the
|
|
4800 same amount instead of indenting the 3rd clause differently from the
|
|
4801 first two.
|
|
4802
|
2459
|
4803 The package @code{cl-indent} that comes with XEmacs sets up this kind
|
|
4804 of indentation by default. @code{cl-indent} also knows about many
|
|
4805 other CL-specific forms. To use @code{cl-indent}, one can do this:
|
2417
|
4806
|
|
4807 @lisp
|
2459
|
4808 (setq lisp-indent-function 'common-lisp-indent-function)
|
2417
|
4809 @end lisp
|
|
4810
|
|
4811 One can also customize @file{cl-indent.el} so it mimics the default
|
|
4812 @code{if} indentation @code{then} indented more than the @code{else}.
|
|
4813 Here's how:
|
|
4814
|
|
4815 @lisp
|
|
4816 (put 'if 'common-lisp-indent-function '(nil nil &body))
|
|
4817 @end lisp
|
|
4818
|
2459
|
4819 @node Display, External Subsystems, Editing, Top
|
|
4820 @unnumbered 4 Display Functions
|
428
|
4821
|
|
4822 This is part 4 of the XEmacs Frequently Asked Questions list. This
|
2459
|
4823 section is devoted to the display-related capabilities of XEmacs
|
|
4824 (fonts, colors, modeline, menubar, toolbar, scrollbar, etc.) and how
|
|
4825 to customize them.
|
|
4826
|
|
4827 @menu
|
|
4828 4.0: Textual Fonts and Colors
|
|
4829 * Q4.0.1:: How do I specify a font?
|
|
4830 * Q4.0.2:: How do I set the text, menu and modeline fonts?
|
|
4831 * Q4.0.3:: How can I set color options from @file{init.el}?
|
|
4832 * Q4.0.4:: How can I set the colors when highlighting a region?
|
|
4833 * Q4.0.5:: How can I limit color map usage?
|
|
4834 * Q4.0.6:: My tty supports color, but XEmacs doesn't use them.
|
|
4835 * Q4.0.7:: Can I have pixmap backgrounds in XEmacs?
|
|
4836 * Q4.0.8:: How do I display non-ASCII characters?
|
|
4837 * Q4.0.9:: Font selections in don't get saved after @code{Save Options}.
|
|
4838
|
|
4839 4.1: Syntax Highlighting (Font Lock)
|
|
4840 * Q4.1.1:: How can I do source code highlighting using font-lock?
|
|
4841 * Q4.1.2:: How do I get @samp{More} Syntax Highlighting on by default?
|
|
4842
|
|
4843 4.2: The Modeline
|
|
4844 * Q4.2.1:: How can I make the modeline go away?
|
|
4845 * Q4.2.2:: How do you have XEmacs display the line number in the modeline?
|
|
4846 * Q4.2.3:: How do I get XEmacs to put the time of day on the modeline?
|
|
4847 * Q4.2.4:: How can I change the modeline color based on the mode used?
|
|
4848
|
|
4849 4.3: The Cursor
|
|
4850 * Q4.3.1:: Is there a way to make the bar cursor thicker?
|
|
4851 * Q4.3.2:: Is there a way to get back the block cursor?
|
|
4852 * Q4.3.3:: Can I make the cursor blink?
|
|
4853
|
|
4854 4.4: The Menubar
|
|
4855 * Q4.4.1:: How do I get rid of the menubar?
|
|
4856 * Q4.4.2:: How can I customize the menubar?
|
|
4857 * Q4.4.3:: How do I enable use of the keyboard (@kbd{Alt}) to access menu items?
|
|
4858 * Q4.4.4:: How do I control how many buffers are listed in the menu @code{Buffers List}?
|
|
4859 * Q4.4.5:: Resources like @code{Emacs*menubar*font} are not working?
|
|
4860
|
|
4861 4.5: The Toolbar
|
|
4862 * Q4.5.1:: How do I get rid of the toolbar?
|
|
4863 * Q4.5.2:: How can I customize the toolbar?
|
|
4864 * Q4.5.3:: How can I bind a key to a function to toggle the toolbar?
|
|
4865 * Q4.5.4:: @samp{Can't instantiate image error...} in toolbar
|
|
4866
|
|
4867 4.6: Scrollbars and Scrolling
|
|
4868 * Q4.6.1:: How can I disable the scrollbar?
|
|
4869 * Q4.6.2:: How can I change the scrollbar width?
|
|
4870 * Q4.6.3:: How can I use resources to change scrollbar colors?
|
|
4871 * Q4.6.4:: Moving the scrollbar can move the point; can I disable this?
|
|
4872 * Q4.6.5:: Scrolling one line at a time.
|
|
4873 * Q4.6.6:: How can I turn off automatic horizontal scrolling in specific modes?
|
|
4874 * Q4.6.7:: I find auto-show-mode disconcerting. How do I turn it off?
|
|
4875
|
|
4876 4.7: The Gutter Tabs, The Progress Bar, Widgets
|
|
4877 * Q4.7.1:: How can I disable the gutter tabs?
|
|
4878 * Q4.7.2:: How can I disable the progress bar?
|
|
4879 * Q4.7.3:: There are bugs in the gutter or widgets.
|
|
4880 * Q4.7.4:: How can I customize the gutter or gutter tabs?
|
|
4881 @end menu
|
|
4882
|
|
4883 @unnumberedsec 4.0: Textual Fonts and Colors
|
|
4884
|
|
4885 @node Q4.0.1, Q4.0.2, Display, Display
|
|
4886 @unnumberedsubsec Q4.0.1: How do I specify a font?
|
|
4887
|
|
4888 #### Update me.
|
|
4889
|
|
4890 In 21.4 and above, you can use the @samp{Options} menu to change the font.
|
|
4891 You can also do it in your init file, e.g. like this (for MS Windows):
|
|
4892
|
|
4893 @display
|
|
4894 (set-face-font 'default "Lucida Console:Regular:10")
|
|
4895 (set-face-font 'modeline "MS Sans Serif:Regular:10")
|
|
4896 @end display
|
|
4897
|
|
4898 @node Q4.0.2, Q4.0.3, Q4.0.1, Display
|
|
4899 @unnumberedsubsec Q4.0.2: How do I set the text, menu and modeline fonts?
|
|
4900
|
|
4901 #### Update me.
|
|
4902
|
|
4903 Note that you should use @samp{Emacs.} and not @samp{Emacs*} when
|
|
4904 setting face values.
|
|
4905
|
|
4906 In @file{.Xresources}:
|
|
4907
|
|
4908 @example
|
|
4909 Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
|
|
4910 Emacs*menubar*font: fixed
|
|
4911 Emacs.modeline.attributeFont: fixed
|
|
4912 @end example
|
|
4913
|
|
4914 This is confusing because @samp{default} and @samp{modeline} are face
|
|
4915 names, and can be found listed with all faces in the current mode by
|
|
4916 using @kbd{M-x set-face-font (enter) ?}. They use the face-specific
|
|
4917 resource @samp{attributeFont}.
|
|
4918
|
|
4919 On the other hand, @samp{menubar} is a normal X thing that uses the
|
|
4920 resource @samp{font}. With Motif it @emph{may be} necessary to use
|
|
4921 @samp{fontList} @emph{instead of} @samp{font}. In @emph{non-Motif}
|
|
4922 configurations with Mule it @emph{is} necessary to use @samp{fontSet}
|
|
4923 instead of @samp{font}. (Sorry, there just is no simple recipe here.)
|
|
4924
|
|
4925 @node Q4.0.3, Q4.0.4, Q4.0.2, Display
|
|
4926 @unnumberedsubsec Q4.0.3: How can I set color options from @file{init.el}?
|
|
4927
|
|
4928 How can I set the most commonly used color options from my
|
|
4929 @file{init.el} instead of from my @file{.Xresources}?
|
|
4930
|
|
4931 Like this:
|
|
4932
|
|
4933 @lisp
|
|
4934 (set-face-background 'default "bisque") ; frame background
|
|
4935 (set-face-foreground 'default "black") ; normal text
|
|
4936 (set-face-background 'zmacs-region "red") ; When selecting w/
|
|
4937 ; mouse
|
|
4938 (set-face-foreground 'zmacs-region "yellow")
|
|
4939 (set-face-font 'default "*courier-bold-r*120-100-100*")
|
|
4940 (set-face-background 'highlight "blue") ; Ie when selecting
|
|
4941 ; buffers
|
|
4942 (set-face-foreground 'highlight "yellow")
|
|
4943 (set-face-background 'modeline "blue") ; Line at bottom
|
|
4944 ; of buffer
|
|
4945 (set-face-foreground 'modeline "white")
|
|
4946 (set-face-font 'modeline "*bold-r-normal*140-100-100*")
|
|
4947 (set-face-background 'isearch "yellow") ; When highlighting
|
|
4948 ; while searching
|
|
4949 (set-face-foreground 'isearch "red")
|
|
4950 (setq x-pointer-foreground-color "black") ; Adds to bg color,
|
|
4951 ; so keep black
|
|
4952 (setq x-pointer-background-color "blue") ; This is color
|
|
4953 ; you really
|
|
4954 ; want ptr/crsr
|
|
4955 @end lisp
|
|
4956
|
|
4957 @node Q4.0.4, Q4.0.5, Q4.0.3, Display
|
|
4958 @unnumberedsubsec Q4.0.4: How can I set the colors when highlighting a region?
|
|
4959
|
|
4960 How can I set the background/foreground colors when highlighting a
|
|
4961 region?
|
|
4962
|
|
4963 You can change the face @code{zmacs-region} either in your
|
|
4964 @file{.Xresources}:
|
|
4965
|
|
4966 @example
|
|
4967 Emacs.zmacs-region.attributeForeground: firebrick
|
|
4968 Emacs.zmacs-region.attributeBackground: lightseagreen
|
|
4969 @end example
|
|
4970
|
|
4971 or in your @file{init.el}:
|
|
4972
|
|
4973 @lisp
|
|
4974 (set-face-background 'zmacs-region "red")
|
|
4975 (set-face-foreground 'zmacs-region "yellow")
|
|
4976 @end lisp
|
|
4977
|
|
4978 @node Q4.0.5, Q4.0.6, Q4.0.4, Display
|
|
4979 @unnumberedsubsec Q4.0.5: How can I limit color map usage?
|
|
4980
|
|
4981 I'm using Netscape (or another color grabber like XEmacs);
|
|
4982 is there any way to limit the number of available colors in the color map?
|
|
4983
|
|
4984 Answer: No, but you can start Netscape before XEmacs, and it will use
|
|
4985 the closest available color if the colormap is full. You can also limit
|
|
4986 the number of colors Netscape uses, using the flags -mono, -ncols <#> or
|
|
4987 -install (for mono, limiting to <#> colors, or for using a private color
|
|
4988 map).
|
|
4989
|
|
4990 If you have the money, another solution would be to use a truecolor or
|
|
4991 direct color video.
|
|
4992
|
|
4993 @node Q4.0.6, Q4.0.7, Q4.0.5, Display
|
|
4994 @unnumberedsubsec Q4.0.6: My tty supports color, but XEmacs doesn't use them.
|
|
4995
|
|
4996 XEmacs tries to automatically determine whether your tty supports color,
|
|
4997 but sometimes guesses wrong. In that case, you can make XEmacs Do The
|
|
4998 Right Thing using this Lisp code:
|
|
4999
|
|
5000 @lisp
|
|
5001 (if (eq 'tty (device-type))
|
|
5002 (set-device-class nil 'color))
|
|
5003 @end lisp
|
|
5004
|
|
5005 @node Q4.0.7, Q4.0.8, Q4.0.6, Display
|
|
5006 @unnumberedsubsec Q4.0.7: Can I have pixmap backgrounds in XEmacs?
|
|
5007 @c New
|
|
5008 @email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes:
|
|
5009
|
|
5010 @quotation
|
|
5011 There are several ways to do it. For example, you could specify a
|
|
5012 default pixmap image to use in your @file{~/.Xresources}, e.g.,
|
|
5013
|
|
5014
|
|
5015 @example
|
|
5016 Emacs*EmacsFrame.default.attributeBackgroundPixmap: /path/to/image.xpm
|
|
5017 @end example
|
|
5018
|
|
5019
|
|
5020 and then reload ~/.Xresources and restart XEmacs. Alternatively,
|
|
5021 since each face can have its own pixmap background, a better way
|
|
5022 would be to set a face's pixmap within your XEmacs init file, e.g.,
|
|
5023
|
|
5024 @lisp
|
|
5025 (set-face-background-pixmap 'default "/path/to/image.xpm")
|
|
5026 (set-face-background-pixmap 'bold "/path/to/another_image.xpm")
|
|
5027 @end lisp
|
|
5028
|
|
5029 and so on. You can also do this interactively via @kbd{M-x edit-faces}.
|
|
5030
|
|
5031 @end quotation
|
|
5032
|
|
5033 @node Q4.0.8, Q4.0.9, Q4.0.7, Display
|
|
5034 @unnumberedsubsec Q4.0.8: How do I display non-ASCII characters?
|
|
5035 @c New
|
|
5036
|
|
5037 If you're using a Mule-enabled XEmacs, then display is automatic. If
|
|
5038 you're not seeing the characters you expect, either (1) you don't have
|
|
5039 appropriate fonts available or (2) XEmacs did not correctly detect the
|
|
5040 coding system (@pxref{Recognize Coding, , , xemacs}). In case (1),
|
|
5041 install fonts as is customary for your platform. In case (2), you
|
|
5042 need to tell XEmacs explicitly what coding systems you're using.
|
|
5043 @ref{Specify Coding, , , xemacs}.
|
|
5044
|
|
5045 If your XEmacs is not Mule-enabled, and for some reason getting a
|
|
5046 Mule-enabled XEmacs seems like the wrong thing to do, all is not lost.
|
|
5047 You can arrange it by brute force. In @file{event-Xt.c} (suppress the
|
|
5048 urge to look in this file---play Doom instead, because you'll survive
|
|
5049 longer), it is written:
|
|
5050
|
|
5051 @quotation
|
|
5052 In a non-Mule world, a user can still have a multi-lingual editor, by
|
|
5053 doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all
|
|
5054 their Latin-2 buffers, etc.
|
|
5055 @end quotation
|
|
5056
|
|
5057 For the related problem of @emph{inputting} non-ASCII characters in a
|
|
5058 non-Mule XEmacs, @xref{Q3.0.6, How can you type in special characters
|
|
5059 in XEmacs?}.
|
|
5060
|
|
5061 @node Q4.0.9, Q4.1.1, Q4.0.8, Display
|
|
5062 @unnumberedsubsec Q4.0.9: Font selections in don't get saved after @code{Save Options}.
|
|
5063
|
|
5064 @email{mannj@@ll.mit.edu, John Mann} writes:
|
|
5065
|
|
5066 @quotation
|
|
5067 You have to go to @samp{Options->Menubars} and unselect
|
|
5068 @samp{Frame-Local Font Menu}. If this option is selected, font changes
|
|
5069 are only applied to the @emph{current} frame and do @emph{not} get saved
|
|
5070 when you save options.
|
|
5071 @end quotation
|
|
5072
|
|
5073 Also, set the following in your @file{init.el}:
|
|
5074
|
|
5075 @lisp
|
|
5076 (setq options-save-faces t)
|
|
5077 @end lisp
|
|
5078
|
|
5079 @unnumberedsec 4.1: Syntax Highlighting (Font Lock)
|
|
5080
|
|
5081 @node Q4.1.1, Q4.1.2, Q4.0.9, Display
|
|
5082 @unnumberedsubsec Q4.1.1: How can I do source code highlighting using font-lock?
|
|
5083
|
|
5084 For most modes, font-lock is already set up and just needs to be turned
|
|
5085 on. This can be done by adding the line:
|
|
5086
|
|
5087 @lisp
|
|
5088 (require 'font-lock)
|
|
5089 @end lisp
|
|
5090
|
|
5091 to your @file{init.el}. (You can turn it on for the
|
|
5092 current buffer and session only by @kbd{M-x font-lock-mode}.) See the
|
|
5093 file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs
|
|
5094 versions prior to 21.4) for more information.
|
|
5095
|
|
5096 @c the old way:
|
|
5097 @c (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
|
|
5098 @c (add-hook 'dired-mode-hook 'turn-on-font-lock)
|
|
5099
|
|
5100 See also @code{Syntax Highlighting} from the @code{Options} menu.
|
|
5101 Remember to save options.
|
|
5102
|
|
5103 @node Q4.1.2, Q4.2.1, Q4.1.1, Display
|
|
5104 @unnumberedsubsec Q4.1.2: How do I get @samp{More} Syntax Highlighting on by default?
|
|
5105
|
|
5106 Use the following code in your @file{init.el}:
|
|
5107
|
|
5108 @lisp
|
|
5109 (setq-default font-lock-maximum-decoration t)
|
|
5110 @end lisp
|
|
5111
|
|
5112 See also @code{Syntax Highlighting} from the @code{Options} menu.
|
|
5113 Remember to save options.
|
|
5114
|
|
5115 @unnumberedsec 4.2: The Modeline
|
|
5116
|
|
5117 @node Q4.2.1, Q4.2.2, Q4.1.2, Display
|
|
5118 @unnumberedsubsec Q4.2.1: How can I make the modeline go away?
|
|
5119
|
|
5120 @lisp
|
|
5121 (set-specifier has-modeline-p nil)
|
|
5122 @end lisp
|
|
5123
|
|
5124 @node Q4.2.2, Q4.2.3, Q4.2.1, Display
|
|
5125 @unnumberedsubsec Q4.2.2: How do you have XEmacs display the line number in the modeline?
|
|
5126
|
|
5127 Add the following line to your @file{init.el} file to
|
|
5128 display the line number:
|
|
5129
|
|
5130 @lisp
|
|
5131 (line-number-mode 1)
|
|
5132 @end lisp
|
|
5133
|
|
5134 Use the following to display the column number:
|
|
5135
|
|
5136 @lisp
|
|
5137 (column-number-mode 1)
|
|
5138 @end lisp
|
|
5139
|
|
5140 Or select from the @code{Options} menu
|
|
5141 @iftex
|
|
5142 @*
|
|
5143 @end iftex
|
|
5144 @code{Advanced (Customize)->Emacs->Editing->Basics->Line Number Mode}
|
|
5145 and/or
|
|
5146 @iftex
|
|
5147 @*
|
|
5148 @end iftex
|
|
5149 @code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode}
|
|
5150
|
|
5151 Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
|
|
5152
|
|
5153 @node Q4.2.3, Q4.2.4, Q4.2.2, Display
|
|
5154 @unnumberedsubsec Q4.2.3: How do I get XEmacs to put the time of day on the modeline?
|
|
5155
|
|
5156 Add the following line to your @file{init.el} file to
|
|
5157 display the time:
|
|
5158
|
|
5159 @lisp
|
|
5160 (display-time)
|
|
5161 @end lisp
|
|
5162
|
|
5163 See @code{Customize} from the @code{Options} menu for customization.
|
|
5164
|
|
5165 @node Q4.2.4, Q4.3.1, Q4.2.3, Display
|
|
5166 @unnumberedsubsec Q4.2.4: How can I change the modeline color based on the mode used?
|
|
5167
|
|
5168 You can use something like the following:
|
|
5169
|
|
5170 @lisp
|
|
5171 (add-hook 'lisp-mode-hook
|
|
5172 (lambda ()
|
|
5173 (set-face-background 'modeline "red" (current-buffer))))
|
|
5174 @end lisp
|
|
5175
|
|
5176 Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
|
|
5177 colors change from the default set in your @file{init.el}.
|
|
5178 The change will only be made in the buffer you just entered (which
|
|
5179 contains the Lisp file you are editing) and will not affect the modeline
|
|
5180 colors anywhere else.
|
|
5181
|
|
5182 Notes:
|
|
5183
|
|
5184 @itemize @bullet
|
|
5185
|
|
5186 @item The hook is the mode name plus @code{-hook}. eg. c-mode-hook,
|
|
5187 c++-mode-hook, emacs-lisp-mode-hook (used for your
|
|
5188 @file{init.el} or a @file{xx.el} file),
|
|
5189 lisp-interaction-mode-hook (the @samp{*scratch*} buffer),
|
|
5190 text-mode-hook, etc.
|
|
5191
|
|
5192 @item
|
|
5193 Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)},
|
|
5194 otherwise you will erase anything that anybody has already put on the
|
|
5195 hook.
|
|
5196
|
|
5197 @item
|
|
5198 You can also do @code{(set-face-font 'modeline @var{font})},
|
|
5199 eg. @code{(set-face-font 'modeline "*bold-r-normal*140-100-100*"
|
|
5200 (current-buffer))} if you wish the modeline font to vary based on the
|
|
5201 current mode.
|
|
5202 @end itemize
|
|
5203
|
|
5204 There are additional modeline faces, @code{modeline-buffer-id},
|
|
5205 @code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which
|
|
5206 you may want to customize.
|
|
5207
|
|
5208 @unnumberedsec 4.3: The Cursor
|
|
5209
|
|
5210 @node Q4.3.1, Q4.3.2, Q4.2.4, Display
|
|
5211 @unnumberedsubsec Q4.3.1: Is there a way to make the bar cursor thicker?
|
|
5212
|
|
5213 I'd like to have the bar cursor a little thicker, as I tend to "lose" it
|
|
5214 often.
|
|
5215
|
|
5216 For a 1 pixel bar cursor, use:
|
|
5217
|
|
5218 @lisp
|
|
5219 (setq bar-cursor t)
|
|
5220 @end lisp
|
|
5221
|
|
5222 For a 2 pixel bar cursor, use:
|
|
5223
|
|
5224 @lisp
|
|
5225 (setq bar-cursor 'anything-else)
|
|
5226 @end lisp
|
|
5227
|
|
5228 You can also change these with Customize.
|
|
5229 Select from the @code{Options} menu
|
|
5230 @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
|
|
5231 @kbd{M-x customize @key{RET} display @key{RET}}.
|
|
5232
|
|
5233 You can use a color to make it stand out better:
|
|
5234
|
|
5235 @example
|
|
5236 Emacs*cursorColor: Red
|
|
5237 @end example
|
|
5238
|
|
5239 @node Q4.3.2, Q4.3.3, Q4.3.1, Display
|
|
5240 @unnumberedsubsec Q4.3.2: Is there a way to get back the block cursor?
|
|
5241
|
|
5242 @lisp
|
|
5243 (setq bar-cursor nil)
|
|
5244 @end lisp
|
|
5245
|
|
5246 You can also change this with Customize.
|
|
5247 Select from the @code{Options} menu
|
|
5248 @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
|
|
5249 @kbd{M-x customize @key{RET} display @key{RET}}.
|
|
5250
|
|
5251 @node Q4.3.3, Q4.4.1, Q4.3.2, Display
|
|
5252 @unnumberedsubsec Q4.3.3: Can I make the cursor blink?
|
|
5253
|
|
5254 Yes, like this:
|
|
5255
|
|
5256 @lisp
|
|
5257 (blink-cursor-mode)
|
|
5258 @end lisp
|
|
5259
|
|
5260 This function toggles between a steady cursor and a blinking cursor.
|
|
5261 You may also set this mode from the menu bar by selecting
|
|
5262 @samp{Options->Display->Blinking Cursor}. Remember to save options.
|
|
5263
|
|
5264 @unnumberedsec 4.4: The Menubar
|
|
5265
|
|
5266 @node Q4.4.1, Q4.4.2, Q4.3.3, Display
|
|
5267 @unnumberedsubsec Q4.4.1: How do I get rid of the menubar?
|
|
5268
|
|
5269 @lisp
|
|
5270 (set-specifier menubar-visible-p nil)
|
|
5271 @end lisp
|
|
5272
|
|
5273 @node Q4.4.2, Q4.4.3, Q4.4.1, Display
|
|
5274 @unnumberedsubsec Q4.4.2: How can I customize the menubar?
|
|
5275
|
|
5276 For an extensive menubar, add this line to your @file{init.el}:
|
|
5277
|
|
5278 @lisp
|
|
5279 (load "big-menubar")
|
|
5280 @end lisp
|
|
5281
|
|
5282 If you'd like to write your own, this file provides as good a set of
|
|
5283 examples as any to start from. The file is located in edit-utils
|
|
5284 package.
|
|
5285
|
|
5286 @node Q4.4.3, Q4.4.4, Q4.4.2, Display
|
|
5287 @unnumberedsubsec Q4.4.3: How do I enable use of the keyboard (@kbd{Alt}) to access menu items?
|
|
5288
|
|
5289 #### Write me.
|
|
5290
|
|
5291 @node Q4.4.4, Q4.4.5, Q4.4.3, Display
|
|
5292 @unnumberedsubsec Q4.4.4: How do I control how many buffers are listed in the menu @code{Buffers List}?
|
|
5293
|
|
5294 Add the following to your @file{init.el} (suit to fit):
|
|
5295
|
|
5296 @lisp
|
|
5297 (setq buffers-menu-max-size 20)
|
|
5298 @end lisp
|
|
5299
|
|
5300 For no limit, use an argument of @samp{nil}.
|
|
5301
|
|
5302 You can also change this with Customize. Select from the
|
|
5303 @code{Options} menu
|
|
5304 @code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...}
|
|
5305 or type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}.
|
|
5306
|
|
5307 @node Q4.4.5, Q4.5.1, Q4.4.4, Display
|
|
5308 @unnumberedsubsec Q4.4.5: Resources like @code{Emacs*menubar*font} are not working?
|
|
5309
|
|
5310 I am trying to use a resource like @code{Emacs*menubar*font} to set the
|
|
5311 font of the menubar but it's not working.
|
|
5312
|
|
5313 In Motif, the use of @samp{font} resources is obsoleted in order to
|
|
5314 support internationalization. If you are using the real Motif menubar,
|
|
5315 this resource is not recognized at all; you have to say:
|
|
5316
|
|
5317 @example
|
|
5318 Emacs*menubar*fontList: FONT
|
|
5319 @end example
|
|
5320
|
|
5321 If you are using the Lucid menubar, for backward compatibility with
|
|
5322 existing user configurations, the @samp{font} resource is recognized.
|
|
5323 Since this is not supported by Motif itself, the code is a kludge and
|
|
5324 the @samp{font} resource will be recognized only if the @samp{fontList}
|
|
5325 resource resource is unset. This means that the resource
|
|
5326
|
|
5327 @example
|
|
5328 *fontList: FONT
|
|
5329 @end example
|
|
5330
|
|
5331 will override
|
|
5332
|
|
5333 @example
|
|
5334 Emacs*menubar*font: FONT
|
|
5335 @end example
|
|
5336
|
|
5337 even though the latter is more specific.
|
|
5338
|
|
5339 In non-Motif configurations using @samp{--with-mule} and
|
|
5340 @samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet}
|
|
5341 resource @emph{instead of} the @code{font} resource. The backward
|
|
5342 compatibility kludge was never implemented for non-Motif builds.
|
|
5343 Example:
|
|
5344
|
|
5345 @example
|
|
5346 *fontSet: FONT
|
|
5347 @end example
|
|
5348
|
|
5349 @unnumberedsec 4.5: The Toolbar
|
|
5350
|
|
5351 @node Q4.5.1, Q4.5.2, Q4.4.5, Display
|
|
5352 @unnumberedsubsec Q4.5.1: How do I get rid of the toolbar?
|
|
5353
|
|
5354 #### Write me.
|
|
5355
|
|
5356 @node Q4.5.2, Q4.5.3, Q4.5.1, Display
|
|
5357 @unnumberedsubsec Q4.5.2: How can I customize the toolbar?
|
|
5358
|
|
5359 #### Write me.
|
|
5360
|
|
5361 @node Q4.5.3, Q4.5.4, Q4.5.2, Display
|
|
5362 @unnumberedsubsec Q4.5.3: How can I bind a key to a function to toggle the toolbar?
|
|
5363
|
|
5364 Try something like:
|
|
5365
|
|
5366 @lisp
|
|
5367 (defun my-toggle-toolbar ()
|
|
5368 (interactive)
|
|
5369 (set-specifier default-toolbar-visible-p
|
|
5370 (not (specifier-instance default-toolbar-visible-p))))
|
|
5371 (global-set-key "\C-xT" 'my-toggle-toolbar)
|
|
5372 @end lisp
|
|
5373
|
|
5374 @ignore
|
|
5375 @c Probably not relevant any more
|
|
5376 There are redisplay bugs in 19.14 that may make the preceding result in
|
|
5377 a messed-up display, especially for frames with multiple windows. You
|
|
5378 may need to resize the frame before XEmacs completely realizes the
|
|
5379 toolbar is really gone.
|
|
5380 @end ignore
|
|
5381
|
|
5382 Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct
|
|
5383 code.
|
|
5384
|
|
5385 @node Q4.5.4, Q4.6.1, Q4.5.3, Display
|
|
5386 @unnumberedsubsec Q4.5.4: @samp{Can't instantiate image error...} in toolbar
|
|
5387
|
|
5388 @email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes:
|
|
5389
|
|
5390 I just installed the XEmacs (20.4-2) RPMS that I downloaded from
|
|
5391 @uref{http://www.xemacs.org/}. Everything works fine, except that when
|
|
5392 I place my mouse over the toolbar, it beeps and gives me this message:
|
|
5393
|
|
5394 @example
|
|
5395 Can't instantiate image (probably cached):
|
|
5396 [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
|
|
5397 (16 16 <strange control characters> ...
|
|
5398 @end example
|
|
5399
|
|
5400 @email{kyle_jones@@wonderworks.com, Kyle Jones} writes:
|
|
5401 @quotation
|
|
5402 This is problem specific to some Chips and Technologies video
|
|
5403 chips, when running XFree86. Putting
|
|
5404
|
|
5405 @code{Option "sw_cursor"}
|
|
5406
|
|
5407 in @file{XF86Config} gets rid of the problem.
|
|
5408 @end quotation
|
|
5409
|
|
5410 @unnumberedsec 4.6: Scrollbars and Scrolling
|
|
5411
|
|
5412 @node Q4.6.1, Q4.6.2, Q4.5.4, Display
|
|
5413 @unnumberedsubsec Q4.6.1: How can I disable the scrollbar?
|
|
5414
|
|
5415 To disable them for all frames, add the following line to
|
|
5416 your @file{.Xresources}:
|
|
5417
|
|
5418 @example
|
|
5419 Emacs.scrollBarWidth: 0
|
|
5420 @end example
|
|
5421
|
|
5422 Or select @samp{Options->Display->Scrollbars}.
|
|
5423 Remember to save options.
|
|
5424
|
|
5425 To turn the scrollbar off on a per-frame basis, use the following
|
|
5426 function:
|
|
5427
|
|
5428 @lisp
|
|
5429 (set-specifier scrollbar-width 0 (selected-frame))
|
|
5430 @end lisp
|
|
5431
|
|
5432 You can actually turn the scrollbars on at any level you want by
|
|
5433 substituting for (selected-frame) in the above command. For example, to
|
|
5434 turn the scrollbars off only in a single buffer:
|
|
5435
|
|
5436 @lisp
|
|
5437 (set-specifier scrollbar-width 0 (current-buffer))
|
|
5438 @end lisp
|
|
5439
|
|
5440 @node Q4.6.2, Q4.6.3, Q4.6.1, Display
|
|
5441 @unnumberedsubsec Q4.6.2: How can I change the scrollbar width?
|
|
5442
|
|
5443 #### Write me.
|
|
5444
|
|
5445 @node Q4.6.3, Q4.6.4, Q4.6.2, Display
|
|
5446 @unnumberedsubsec Q4.6.3: How can I use resources to change scrollbar colors?
|
|
5447
|
|
5448 Here's a recap of how to use resources to change your scrollbar colors:
|
|
5449
|
|
5450 @example
|
|
5451 ! Motif scrollbars
|
|
5452
|
|
5453 Emacs*XmScrollBar.Background: skyblue
|
|
5454 Emacs*XmScrollBar.troughColor: lightgray
|
|
5455
|
|
5456 ! Athena scrollbars
|
|
5457
|
|
5458 Emacs*Scrollbar.Foreground: skyblue
|
|
5459 Emacs*Scrollbar.Background: lightgray
|
|
5460 @end example
|
|
5461
|
|
5462 Note the capitalization of @code{Scrollbar} for the Athena widget.
|
|
5463
|
|
5464 @node Q4.6.4, Q4.6.5, Q4.6.3, Display
|
|
5465 @unnumberedsubsec Q4.6.4: Moving the scrollbar can move the point; can I disable this?
|
|
5466
|
|
5467 When I move the scrollbar in an XEmacs window, it moves the point as
|
|
5468 well, which should not be the default behavior. Is this a bug or a
|
|
5469 feature? Can I disable it?
|
|
5470
|
|
5471 The current behavior is a feature, not a bug. Point remains at the same
|
|
5472 buffer position as long as that position does not scroll off the screen.
|
|
5473 In that event, point will end up in either the upper-left or lower-left
|
|
5474 hand corner.
|
|
5475
|
|
5476 This cannot be changed.
|
|
5477
|
|
5478 @node Q4.6.5, Q4.6.6, Q4.6.4, Display
|
|
5479 @unnumberedsubsec Q4.6.5: Scrolling one line at a time.
|
|
5480
|
|
5481 Can the cursor keys scroll the screen a line at a time, rather than the
|
|
5482 default half page jump? I tend it to find it disorienting.
|
|
5483
|
|
5484 Use the following:
|
|
5485
|
|
5486 @lisp
|
|
5487 (setq scroll-step 1)
|
|
5488 @end lisp
|
|
5489
|
|
5490 You can also change this with Customize. Select from the
|
|
5491 @code{Options} menu
|
|
5492 @code{Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...}
|
|
5493 or type @kbd{M-x customize @key{RET} windows @key{RET}}.
|
|
5494
|
|
5495 @node Q4.6.6, Q4.6.7, Q4.6.5, Display
|
|
5496 @unnumberedsubsec Q4.6.6: How can I turn off automatic horizontal scrolling in specific modes?
|
|
5497
|
|
5498 Do @code{(setq truncate-lines t)} in the mode-hooks for any modes
|
|
5499 in which you want lines truncated.
|
|
5500
|
|
5501 More precisely: If @code{truncate-lines} is nil, horizontal scrollbars
|
|
5502 will never appear. Otherwise, they will appear only if the value of
|
|
5503 @code{scrollbar-height} for that buffer/window/etc. is non-zero. If you
|
|
5504 do
|
|
5505
|
|
5506 @lisp
|
|
5507 (set-specifier scrollbar-height 0)
|
|
5508 @end lisp
|
|
5509
|
|
5510 then horizontal scrollbars will not appear in truncated buffers unless
|
|
5511 the package specifically asked for them.
|
|
5512
|
|
5513 @node Q4.6.7, Q4.7.1, Q4.6.6, Display
|
|
5514 @unnumberedsubsec Q4.6.7: I find auto-show-mode disconcerting. How do I turn it off?
|
|
5515
|
|
5516 @code{auto-show-mode} controls whether or not a horizontal scrollbar
|
|
5517 magically appears when a line is too long to be displayed. This is
|
|
5518 enabled by default. To turn it off, put the following in your
|
|
5519 @file{init.el}:
|
|
5520
|
|
5521 @lisp
|
|
5522 (setq auto-show-mode nil)
|
|
5523 (setq-default auto-show-mode nil)
|
|
5524 @end lisp
|
|
5525
|
|
5526 @unnumberedsec 4.7: The Gutter Tabs, The Progress Bar, Widgets
|
|
5527
|
|
5528 @node Q4.7.1, Q4.7.2, Q4.6.7, Display
|
|
5529 @unnumberedsubsec Q4.7.1: How can I disable the gutter tabs?
|
|
5530
|
|
5531 #### Write me.
|
|
5532
|
|
5533 @node Q4.7.2, Q4.7.3, Q4.7.1, Display
|
|
5534 @unnumberedsubsec Q4.7.2: How can I disable the progress bar?
|
|
5535
|
|
5536 #### Write me.
|
|
5537
|
|
5538 @node Q4.7.3, Q4.7.4, Q4.7.2, Display
|
|
5539 @unnumberedsubsec Q4.7.3: There are bugs in the gutter or widgets.
|
|
5540
|
|
5541 #### Write me.
|
|
5542
|
|
5543 @node Q4.7.4, , Q4.7.3, Display
|
|
5544 @unnumberedsubsec Q4.7.4: How can I customize the gutter or gutter tabs?
|
|
5545
|
|
5546 #### Write me.
|
|
5547
|
|
5548 @node External Subsystems, Internet, Display, Top
|
|
5549 @unnumbered 5 Interfacing with the Operating System and External Devices
|
|
5550
|
|
5551 This is part 5 of the XEmacs Frequently Asked Questions list. This
|
2417
|
5552 section is devoted to the various ways that XEmacs interfaces with the
|
|
5553 operating system, with other processes and with external devices such
|
|
5554 as speakers and the printer.
|
428
|
5555
|
|
5556 @menu
|
2459
|
5557 5.0: X Window System and Resources
|
|
5558 * Q5.0.1:: Where is a list of X resources?
|
|
5559 * Q5.0.2:: How can I detect a color display?
|
|
5560 * Q5.0.3:: How can I get the icon to just say @samp{XEmacs}?
|
|
5561 * Q5.0.4:: How can I have the window title area display the full path?
|
|
5562 * Q5.0.5:: @samp{xemacs -name junk} doesn't work?
|
|
5563 * Q5.0.6:: @samp{-iconic} doesn't work.
|
|
5564
|
|
5565 5.1: Microsoft Windows
|
|
5566 * Q5.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
|
|
5567 * Q5.1.2:: How do I get Windows Explorer to associate a file type with XEmacs?
|
|
5568
|
|
5569 5.2: Printing
|
|
5570 * Q5.2.1:: What do I need to change to make printing work?
|
|
5571 * Q5.2.2:: How can I print WYSIWYG a font-locked buffer?
|
|
5572 * Q5.2.3:: Getting @kbd{M-x lpr} to work with postscript printer.
|
|
5573 * Q5.2.4:: Can you print under MS Windows?
|
|
5574
|
|
5575 5.3: Sound
|
|
5576 * Q5.3.1:: How do I turn off the sound?
|
|
5577 * Q5.3.2:: How do I get funky sounds instead of a boring beep?
|
|
5578 * Q5.3.3:: What are NAS and ESD (EsounD)?
|
|
5579 * Q5.3.4:: Sunsite sounds don't play.
|
|
5580
|
|
5581 5.4: Running an Interior Shell, Invoking Subprocesses
|
|
5582 * Q5.4.1:: What is an interior shell?
|
|
5583 * Q5.4.2:: How do I start up a second shell buffer?
|
|
5584 * Q5.4.3:: Telnet from shell filters too much
|
|
5585 * Q5.4.4:: Strange things are happening in Shell Mode.
|
|
5586 * Q5.4.5:: XEmacs complains "No such file or directory, diff"
|
|
5587
|
|
5588 5.5: Multiple Device Support
|
|
5589 * Q5.5.1:: How do I open a frame on another screen of my multi-headed display?
|
|
5590 * Q5.5.2:: Can I really connect to a running XEmacs after calling up over a modem? How?
|
|
5591 * Q5.5.3:: How do I disable gnuserv from opening a new frame?
|
|
5592 * Q5.5.4:: How do I start gnuserv so that each subsequent XEmacs is a client?
|
|
5593 * Q5.5.5:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
|
428
|
5594 @end menu
|
|
5595
|
2459
|
5596 @unnumberedsec 5.0: X Window System and Resources
|
|
5597
|
|
5598 @node Q5.0.1, Q5.0.2, External Subsystems, External Subsystems
|
|
5599 @unnumberedsubsec Q5.0.1: Where is a list of X resources?
|
2417
|
5600
|
|
5601 Search through the @file{NEWS} file for @samp{X Resources}. A fairly
|
|
5602 comprehensive list is given after it.
|
|
5603
|
|
5604 In addition, an @file{app-defaults} file @file{etc/Emacs.ad} is
|
|
5605 supplied, listing the defaults. The file @file{etc/sample.Xresources}
|
|
5606 gives a different set of defaults that you might consider for
|
|
5607 installation in your @file{~/.Xresources} file. It is nearly the same
|
|
5608 as @file{etc/Emacs.ad}, but a few entries are altered. Be careful about
|
|
5609 installing the contents of this file into your @file{.Xresources} (or
|
|
5610 legacy @file{.Xdefaults}) file if you use GNU Emacs under X11 as well.
|
|
5611
|
2459
|
5612 @node Q5.0.2, Q5.0.3, Q5.0.1, External Subsystems
|
|
5613 @unnumberedsubsec Q5.0.2: How can I detect a color display?
|
2417
|
5614
|
|
5615 You can test the return value of the function @code{(device-class)}, as
|
|
5616 in:
|
|
5617
|
|
5618 @lisp
|
|
5619 (when (eq (device-class) 'color)
|
|
5620 (set-face-foreground 'font-lock-comment-face "Grey")
|
|
5621 (set-face-foreground 'font-lock-string-face "Red")
|
|
5622 ....
|
|
5623 )
|
|
5624 @end lisp
|
|
5625
|
2459
|
5626 @node Q5.0.3, Q5.0.4, Q5.0.2, External Subsystems
|
|
5627 @unnumberedsubsec Q5.0.3: How can I get the icon to just say @samp{XEmacs}?
|
2417
|
5628
|
|
5629 I'd like the icon to just say @samp{XEmacs}, and not include the name of
|
|
5630 the current file in it.
|
|
5631
|
|
5632 Add the following line to your @file{init.el}:
|
|
5633
|
|
5634 @lisp
|
|
5635 (setq frame-icon-title-format "XEmacs")
|
|
5636 @end lisp
|
|
5637
|
2459
|
5638 @node Q5.0.4, Q5.0.5, Q5.0.3, External Subsystems
|
|
5639 @unnumberedsubsec Q5.0.4: How can I have the window title area display the full path?
|
2417
|
5640
|
|
5641 I'd like to have the window title area display the full directory/name
|
|
5642 of the current buffer file and not just the name.
|
|
5643
|
|
5644 Add the following line to your @file{init.el}:
|
|
5645
|
|
5646 @lisp
|
|
5647 (setq frame-title-format "%S: %f")
|
|
5648 @end lisp
|
|
5649
|
|
5650 A more sophisticated title might be:
|
|
5651
|
|
5652 @lisp
|
|
5653 (setq frame-title-format
|
|
5654 '("%S: " (buffer-file-name "%f"
|
|
5655 (dired-directory dired-directory "%b"))))
|
|
5656 @end lisp
|
|
5657
|
|
5658 That is, use the file name, or the dired-directory, or the buffer name.
|
|
5659
|
2459
|
5660 @node Q5.0.5, Q5.0.6, Q5.0.4, External Subsystems
|
|
5661 @unnumberedsubsec Q5.0.5: @samp{xemacs -name junk} doesn't work?
|
2417
|
5662
|
|
5663 When I run @samp{xterm -name junk}, I get an xterm whose class name
|
|
5664 according to xprop, is @samp{junk}. This is the way it's supposed to
|
|
5665 work, I think. When I run @samp{xemacs -name junk} the class name is
|
|
5666 not set to @samp{junk}. It's still @samp{emacs}. What does
|
|
5667 @samp{xemacs -name} really do? The reason I ask is that my window
|
|
5668 manager (fvwm) will make a window sticky and I use XEmacs to read my
|
|
5669 mail. I want that XEmacs window to be sticky, without having to use the
|
|
5670 window manager's function to set the window sticky. What gives?
|
|
5671
|
|
5672 @samp{xemacs -name} sets the application name for the program (that is,
|
|
5673 the thing which normally comes from @samp{argv[0]}). Using @samp{-name}
|
|
5674 is the same as making a copy of the executable with that new name. The
|
|
5675 @code{WM_CLASS} property on each frame is set to the frame-name, and the
|
|
5676 application-class. So, if you did @samp{xemacs -name FOO} and then
|
|
5677 created a frame named @var{BAR}, you'd get an X window with WM_CLASS =
|
|
5678 @code{( "BAR", "Emacs")}. However, the resource hierarchy for this
|
|
5679 widget would be:
|
|
5680
|
|
5681 @example
|
|
5682 Name: FOO .shell .container .BAR
|
|
5683 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
|
|
5684 @end example
|
|
5685
|
|
5686 instead of the default
|
|
5687
|
|
5688 @example
|
|
5689 Name: xemacs.shell .container .emacs
|
|
5690 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
|
|
5691 @end example
|
|
5692
|
|
5693
|
|
5694 It is arguable that the first element of WM_CLASS should be set to the
|
|
5695 application-name instead of the frame-name, but I think that's less
|
|
5696 flexible, since it does not give you the ability to have multiple frames
|
|
5697 with different WM_CLASS properties. Another possibility would be for
|
|
5698 the default frame name to come from the application name instead of
|
|
5699 simply being @samp{emacs}. However, at this point, making that change
|
|
5700 would be troublesome: it would mean that many users would have to make
|
|
5701 yet another change to their resource files (since the default frame name
|
|
5702 would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever
|
|
5703 the executable happened to be named), so we'd rather avoid it.
|
|
5704
|
|
5705 To make a frame with a particular name use:
|
|
5706
|
|
5707 @lisp
|
|
5708 (make-frame '((name . "the-name")))
|
|
5709 @end lisp
|
|
5710
|
2459
|
5711 @node Q5.0.6, Q5.1.1, Q5.0.5, External Subsystems
|
|
5712 @unnumberedsubsec Q5.0.6: @samp{-iconic} doesn't work.
|
2417
|
5713
|
|
5714 When I start up XEmacs using @samp{-iconic} it doesn't work right.
|
|
5715 Using @samp{-unmapped} on the command line, and setting the
|
|
5716 @code{initiallyUnmapped} X Resource don't seem to help much either...
|
|
5717
|
|
5718 @email{ben@@xemacs.org, Ben Wing} writes:
|
|
5719
|
|
5720 @quotation
|
|
5721 Ugh, this stuff is such an incredible mess that I've about given up
|
|
5722 getting it to work. The principal problem is numerous window-manager
|
|
5723 bugs...
|
|
5724 @end quotation
|
|
5725
|
2459
|
5726 @unnumberedsec 5.1: Microsoft Windows
|
|
5727
|
|
5728 @node Q5.1.1, Q5.1.2, Q5.0.6, External Subsystems
|
|
5729 @unnumberedsubsec Q5.1.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
|
2417
|
5730
|
|
5731 In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*}
|
|
5732 symbols to @samp{w32-*}. Does XEmacs do the same?
|
|
5733
|
|
5734 We consider such a move counter-productive, thus we do not use the
|
|
5735 @samp{w32} prefix. (His rather questionable justification was that he
|
|
5736 did not consider Windows to be a "winning" platform.) However, the name
|
|
5737 @samp{Win32} is not particularly descriptive outside the Windows world,
|
|
5738 and using just @samp{windows-} would be too generic. So we chose a
|
|
5739 compromise, the prefix @samp{mswindows-} for Windows-related variables
|
|
5740 and functions.
|
|
5741
|
|
5742 Thus all the XEmacs variables and functions directly related to either
|
|
5743 the Windows GUI or OS are prefixed @samp{mswindows-} (except for a
|
|
5744 couple of debugging variables, prefixed @samp{debug-mswindows-}). From
|
|
5745 an architectural perspective, however, we believe that this is mostly a
|
|
5746 non-issue because there should be a very small number of
|
|
5747 window-systems-specific variables anyway. Whenever possible, we try to
|
|
5748 provide generic interfaces that apply to all window systems.
|
|
5749
|
|
5750 @c not true:
|
|
5751 @c The user variables
|
|
5752 @c that share functionality with existing NT Emacs variables are be named
|
|
5753 @c with our convention, but we provide the GNU Emacs names as
|
|
5754 @c compatibility aliases.
|
|
5755
|
2459
|
5756 @node Q5.1.2, Q5.2.1, Q5.1.1, External Subsystems
|
|
5757 @unnumberedsubsec Q5.1.2: How do I get Windows Explorer to associate a file type with XEmacs?
|
2417
|
5758
|
|
5759 @unnumberedsubsubsec Associating a new file type with XEmacs.
|
|
5760
|
|
5761 In Explorer select @samp{View->Options->File Types}, press @samp{[New
|
|
5762 Type...]} and fill in the dialog box, e.g.:
|
|
5763
|
|
5764 @example
|
|
5765 Description of type: Emacs Lisp source
|
|
5766 Associated extension: el
|
|
5767 Content Type (MIME): text/plain
|
|
5768 @end example
|
|
5769
|
|
5770 then press @samp{[New...]} and fill in the @samp{Action} dialog box as
|
|
5771 follows:
|
|
5772
|
|
5773 @example
|
|
5774 Action:
|
|
5775 Open
|
|
5776
|
|
5777 Application used to perform action:
|
|
5778 D:\Full\path\for\xemacs.exe "%1"
|
|
5779
|
|
5780 [x] Use DDE
|
|
5781
|
|
5782 DDE Message:
|
|
5783 open("%1")
|
|
5784
|
|
5785 Application:
|
|
5786 <leave blank>
|
|
5787
|
|
5788 DDE Application Not Running:
|
|
5789 <leave blank>
|
|
5790
|
|
5791 Topic:
|
|
5792 <leave blank>
|
|
5793 @end example
|
|
5794
|
|
5795 @unnumberedsubsubsec Associating an existing file type with XEmacs.
|
|
5796
|
|
5797 In Explorer select @samp{View->Options->File Types}. Click on the file
|
|
5798 type in the list and press @samp{[Edit...]}. If the file type already
|
|
5799 has an @samp{Open} action, double click on it and fill in the
|
|
5800 @samp{Action} dialog box as described above; otherwise create a new
|
|
5801 action.
|
|
5802
|
|
5803 If the file type has more than one action listed, you probably want to
|
|
5804 make the @samp{Open} action that you just edited the default by clicking on
|
|
5805 it and pressing @samp{Set Default}.
|
|
5806
|
|
5807 Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types}
|
|
5808 using @samp{Control Panel->Folder Options->File Types}.
|
|
5809
|
2459
|
5810 @unnumberedsec 5.2: Printing
|
|
5811
|
|
5812 @node Q5.2.1, Q5.2.2, Q5.1.2, External Subsystems
|
|
5813 @unnumberedsubsec Q5.2.1: What do I need to change to make printing work?
|
2417
|
5814
|
|
5815 For regular printing there are two variables that can be customized.
|
|
5816
|
|
5817 @table @code
|
|
5818 @item lpr-command
|
|
5819 This should be set to a command that takes standard input and sends
|
|
5820 it to a printer. Something like:
|
|
5821
|
|
5822 @lisp
|
|
5823 (setq lpr-command "lp")
|
|
5824 @end lisp
|
|
5825
|
|
5826 @item lpr-switches
|
|
5827 This should be set to a list that contains whatever the print command
|
|
5828 requires to do its job. Something like:
|
|
5829
|
|
5830 @lisp
|
|
5831 (setq lpr-switches '("-depson"))
|
|
5832 @end lisp
|
|
5833 @end table
|
|
5834
|
|
5835 For postscript printing there are three analogous variables to
|
|
5836 customize.
|
|
5837
|
|
5838 @table @code
|
|
5839 @item ps-lpr-command
|
|
5840 This should be set to a command that takes postscript on standard input
|
|
5841 and directs it to a postscript printer.
|
|
5842
|
|
5843 @item ps-lpr-switches
|
|
5844 This should be set to a list of switches required for
|
|
5845 @code{ps-lpr-command} to do its job.
|
|
5846
|
|
5847 @item ps-print-color-p
|
|
5848 This boolean variable should be set @code{t} if printing will be done in
|
|
5849 color, otherwise it should be set to @code{nil}.
|
|
5850 @end table
|
|
5851
|
|
5852 NOTE: It is an undocumented limitation in XEmacs that postscript
|
|
5853 printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a
|
|
5854 window system environment. It cannot be used outside of X11.
|
|
5855
|
2459
|
5856 @node Q5.2.2, Q5.2.3, Q5.2.1, External Subsystems
|
|
5857 @unnumberedsubsec Q5.2.2: How can I print WYSIWYG a font-locked buffer?
|
2417
|
5858
|
|
5859 Font-lock looks nice. How can I print (WYSIWYG) the highlighted
|
|
5860 document?
|
|
5861
|
|
5862 The package @code{ps-print}, which is now included with XEmacs, provides
|
|
5863 the ability to do this. The source code contains complete instructions
|
|
5864 on its use, in
|
|
5865 @file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el},
|
|
5866 being the default location of an installed ps-print package.
|
|
5867
|
2459
|
5868 @node Q5.2.3, Q5.2.4, Q5.2.2, External Subsystems
|
|
5869 @unnumberedsubsec Q5.2.3: Getting @kbd{M-x lpr} to work with postscript printer.
|
2417
|
5870
|
|
5871 My printer is a Postscript printer and @code{lpr} only works for
|
|
5872 Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x
|
|
5873 lpr-buffer} to work?
|
|
5874
|
|
5875 Put something like this in your @file{init.el}:
|
428
|
5876
|
|
5877 @lisp
|
2417
|
5878 (setq lpr-command "a2ps")
|
|
5879 (setq lpr-switches '("-p" "-1"))
|
|
5880 @end lisp
|
|
5881
|
|
5882 If you don't use a2ps to convert ASCII to postscript (why not, it's
|
|
5883 free?), replace with the command you do use. Note also that some
|
|
5884 versions of a2ps require a @samp{-Pprinter} to ensure spooling.
|
|
5885
|
2459
|
5886 @node Q5.2.4, Q5.3.1, Q5.2.3, External Subsystems
|
|
5887 @unnumberedsubsec Q5.2.4: Can you print under MS Windows?
|
2417
|
5888
|
|
5889 As of 21.4, printing works on Windows, using simply
|
|
5890 @samp{File->Print BUFFER...}, and can be configured with
|
|
5891 @samp{File->Page Setup...}.
|
|
5892
|
|
5893 Prior to 21.4, there is no built-in support, but there are some clever
|
|
5894 hacks out there. If you know how, please let us know and we'll put it
|
|
5895 here.
|
|
5896
|
2459
|
5897 @unnumberedsec 5.3: Sound
|
|
5898
|
|
5899 @node Q5.3.1, Q5.3.2, Q5.2.4, External Subsystems
|
|
5900 @unnumberedsubsec Q5.3.1: How do I turn off the sound?
|
2417
|
5901
|
|
5902 Add the following line to your @file{init.el}:
|
|
5903
|
|
5904 @lisp
|
|
5905 (setq bell-volume 0)
|
|
5906 (setq sound-alist nil)
|
|
5907 @end lisp
|
|
5908
|
|
5909 That will make your XEmacs totally silent---even the default ding sound
|
|
5910 (TTY beep on TTY-s) will be gone.
|
|
5911
|
|
5912 You can also change these with Customize. Select from the
|
|
5913 @code{Options} menu @code{Advanced
|
|
5914 (Customize)->Emacs->Environment->Sound->Sound...} or type @kbd{M-x
|
|
5915 customize @key{RET} sound @key{RET}}.
|
|
5916
|
|
5917
|
2459
|
5918 @node Q5.3.2, Q5.3.3, Q5.3.1, External Subsystems
|
|
5919 @unnumberedsubsec Q5.3.2: How do I get funky sounds instead of a boring beep?
|
2417
|
5920
|
|
5921 Make sure your XEmacs was compiled with sound support, and then put this
|
|
5922 in your @file{init.el}:
|
|
5923
|
|
5924 @lisp
|
|
5925 (load-default-sounds)
|
|
5926 @end lisp
|
|
5927
|
2459
|
5928 @node Q5.3.3, Q5.3.4, Q5.3.2, External Subsystems
|
|
5929 @unnumberedsubsec Q5.3.3: What are NAS and ESD (EsounD)?
|
|
5930
|
|
5931 @dfn{Network Audio System} (NAS) is a client-server sound library for X.
|
|
5932
|
|
5933 @uref{http://radscan.com/nas.html}.
|
|
5934
|
|
5935 To build XEmacs with it, use the @file{configure} flag @samp{--with-sound=nas}.
|
|
5936
|
|
5937 @dfn{Enlightened Sound Daemon} (ESD or EsounD) is yet another sound system.
|
|
5938
|
|
5939 @uref{http://www.tux.org/~ricdude/EsounD.html}.
|
|
5940
|
|
5941 To build XEmacs with it, use the @file{configure} flag @samp{--with-sound=esd}.
|
|
5942
|
|
5943 You can specify support for both with a flag like @samp{--with-sound=nas,esd}.
|
|
5944
|
|
5945 @node Q5.3.4, Q5.4.1, Q5.3.3, External Subsystems
|
|
5946 @unnumberedsubsec Q5.3.4: Sunsite sounds don't play.
|
2417
|
5947
|
|
5948 I'm having some trouble with sounds I've downloaded from sunsite. They
|
|
5949 play when I run them through @code{showaudio} or cat them directly to
|
|
5950 @file{/dev/audio}, but XEmacs refuses to play them.
|
|
5951
|
|
5952 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes:
|
|
5953
|
|
5954 @quotation
|
|
5955 [Many of] These files have an (erroneous) 24byte header that tells about
|
|
5956 the format that they have been recorded in. If you cat them to
|
|
5957 @file{/dev/audio}, the header will be ignored and the default behavior
|
|
5958 for /dev/audio will be used. This happens to be 8kHz uLaw. It is
|
|
5959 probably possible to fix the header by piping through @code{sox} and
|
|
5960 passing explicit parameters for specifying the sampling format; you then
|
|
5961 need to perform a 'null' conversion from SunAudio to SunAudio.
|
|
5962 @end quotation
|
|
5963
|
2459
|
5964 @unnumberedsec 5.4: Running an Interior Shell, Invoking Subprocesses
|
|
5965
|
|
5966 @node Q5.4.1, Q5.4.2, Q5.3.4, External Subsystems
|
|
5967 @unnumberedsubsec Q5.4.1: What is an interior shell?
|
2417
|
5968
|
|
5969 #### Write me.
|
|
5970
|
2459
|
5971 @node Q5.4.2, Q5.4.3, Q5.4.1, External Subsystems
|
|
5972 @unnumberedsubsec Q5.4.2: How do I start up a second shell buffer?
|
2417
|
5973
|
|
5974 In the @code{*shell*} buffer:
|
|
5975
|
|
5976 @lisp
|
|
5977 M-x rename-buffer @key{RET} *shell-1* @key{RET}
|
|
5978 M-x shell RET
|
|
5979 @end lisp
|
|
5980
|
|
5981 This will then start a second shell. The key is that no buffer named
|
|
5982 @samp{*shell*} can exist. It might be preferable to use @kbd{M-x
|
|
5983 rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x
|
|
5984 rename-buffer}.
|
|
5985
|
|
5986 Alternately, you can set the variable @code{shell-multiple-shells}.
|
|
5987 If the value of this variable is non-nil, each time shell mode is invoked,
|
|
5988 a new shell is made
|
|
5989
|
2459
|
5990 @node Q5.4.3, Q5.4.4, Q5.4.2, External Subsystems
|
|
5991 @unnumberedsubsec Q5.4.3: Telnet from shell filters too much
|
2417
|
5992
|
|
5993 I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke
|
|
5994 and use a telnet session within it. Everything works fine except that
|
|
5995 now all @samp{^M}'s are filtered out by Emacs. Fixes?
|
|
5996
|
|
5997 Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather
|
|
5998 than doing rsh or telnet within the local shell buffer. You can also
|
|
5999 use @kbd{M-x ssh} to open secure remote session if you have @code{ssh}
|
|
6000 installed.
|
|
6001
|
2459
|
6002 @node Q5.4.4, Q5.4.5, Q5.4.3, External Subsystems
|
|
6003 @unnumberedsubsec Q5.4.4: Strange things are happening in Shell Mode.
|
2417
|
6004
|
|
6005 Sometimes (i.e. it's not repeatable, and I can't work out why it
|
|
6006 happens) when I'm typing into shell mode, I hit return and only a
|
|
6007 portion of the command is given to the shell, and a blank prompt is
|
|
6008 returned. If I hit return again, the rest of the previous command is
|
|
6009 given to the shell.
|
|
6010
|
|
6011 @email{martin@@xemacs.org, Martin Buchholz} writes:
|
|
6012
|
|
6013 @quotation
|
|
6014 There is a known problem with interaction between @code{csh} and the
|
|
6015 @code{filec} option and XEmacs. You should add the following to your
|
|
6016 @file{.cshrc}:
|
|
6017
|
|
6018 @example
|
|
6019 if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
|
|
6020 @end example
|
|
6021 @end quotation
|
|
6022
|
2459
|
6023 @node Q5.4.5, Q5.5.1, Q5.4.4, External Subsystems
|
|
6024 @unnumberedsubsec Q5.4.5: XEmacs complains "No such file or directory, diff"
|
2417
|
6025
|
|
6026 or "ispell" or other commands that seem related to whatever you just
|
|
6027 tried to do (M-x ediff or M-$, for example).
|
|
6028
|
|
6029 There are a large number of common (in the sense that "everyone has
|
|
6030 these, they really do") Unix utilities that are not provided with
|
|
6031 XEmacs. The GNU Project's implementations are available for Windows in
|
|
6032 the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also
|
|
6033 provides a complete Unix emulation environment (and thus makes ports of
|
|
6034 Unix utilities nearly trivial). Another implementation is that from
|
|
6035 MinGW (@uref{http://www.mingw.org/msys.shtml}). If you know of others,
|
|
6036 please let us know!
|
|
6037
|
2459
|
6038 @unnumberedsec 5.5: Multiple Device Support
|
|
6039
|
|
6040 @node Q5.5.1, Q5.5.2, Q5.4.5, External Subsystems
|
|
6041 @unnumberedsubsec Q5.5.1: How do I open a frame on another screen of my multi-headed display?
|
2417
|
6042
|
|
6043 Use the command @kbd{M-x make-frame-on-display}. This command is also
|
|
6044 on the File menu in the menubar.
|
|
6045
|
|
6046 The command @code{make-frame-on-tty} also exists, which will establish a
|
|
6047 connection to any tty-like device. Opening the TTY devices should be
|
|
6048 left to @code{gnuclient}, though.
|
|
6049
|
2459
|
6050 @node Q5.5.2, Q5.5.3, Q5.5.1, External Subsystems
|
|
6051 @unnumberedsubsec Q5.5.2: Can I really connect to a running XEmacs after calling up over a modem? How?
|
|
6052
|
|
6053 Yes. Use @code{gnuclient -nw}.
|
|
6054
|
|
6055 Also see @ref{Q5.5.3, How do I disable gnuserv from opening a new frame?}.
|
|
6056
|
|
6057 @node Q5.5.3, Q5.5.4, Q5.5.2, External Subsystems
|
|
6058 @unnumberedsubsec Q5.5.3: How do I disable gnuserv from opening a new frame?
|
2417
|
6059
|
|
6060 If you set the @code{gnuserv-frame} variable to the frame that should be
|
|
6061 used to display buffers that are pulled up, a new frame will not be
|
|
6062 created. For example, you could put
|
|
6063
|
|
6064 @lisp
|
|
6065 (setq gnuserv-frame (selected-frame))
|
428
|
6066 @end lisp
|
|
6067
|
2417
|
6068 early on in your @file{init.el}, to ensure that the first frame created
|
|
6069 is the one used for your gnuserv buffers.
|
|
6070
|
|
6071 There is an option to set the gnuserv target to the current frame. See
|
|
6072 @code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target}
|
|
6073
|
|
6074 You can also change this with Customize. Select from the
|
|
6075 @code{Options} menu @code{Advanced
|
|
6076 (Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...} or type
|
|
6077 @kbd{M-x customize @key{RET} gnuserv @key{RET}}.
|
|
6078
|
|
6079
|
2459
|
6080 @node Q5.5.4, Q5.5.5, Q5.5.3, External Subsystems
|
|
6081 @unnumberedsubsec Q5.5.4: How do I start gnuserv so that each subsequent XEmacs is a client?
|
2417
|
6082
|
|
6083 Put the following in your @file{init.el} file to start the server:
|
|
6084
|
|
6085 @lisp
|
|
6086 (gnuserv-start)
|
|
6087 @end lisp
|
|
6088
|
|
6089 Start your first XEmacs as usual. After that, you can do:
|
|
6090
|
|
6091 @example
|
|
6092 gnuclient randomfilename
|
|
6093 @end example
|
|
6094
|
|
6095 from the command line to get your existing XEmacs process to open a new
|
|
6096 frame and visit randomfilename in that window. When you're done editing
|
|
6097 randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the
|
|
6098 frame.
|
|
6099
|
|
6100 See also man page of gnuclient.
|
|
6101
|
2459
|
6102 @node Q5.5.5, , Q5.5.4, External Subsystems
|
|
6103 @unnumberedsubsec Q5.5.5: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
|
2417
|
6104
|
|
6105 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
|
|
6106 @quotation
|
|
6107 Here is one of the solutions, we have this in a script called
|
|
6108 @file{etc/editclient.sh}.
|
|
6109 @example
|
|
6110 #!/bin/sh
|
|
6111 if gnuclient -batch -eval t >/dev/null 2>&1
|
|
6112 then
|
|
6113 exec gnuclient $@{1+"$@@"@}
|
|
6114 else
|
|
6115 xemacs -unmapped -f gnuserv-start &
|
|
6116 until gnuclient -batch -eval t >/dev/null 2>&1
|
|
6117 do
|
|
6118 sleep 1
|
|
6119 done
|
|
6120 exec gnuclient $@{1+"$@@"@}
|
|
6121 fi
|
|
6122 @end example
|
|
6123
|
|
6124 Note that there is a known problem when running XEmacs and 'gnuclient
|
|
6125 -nw' on the same TTY.
|
|
6126 @end quotation
|
|
6127
|
2459
|
6128 @node Internet, Advanced, External Subsystems, Top
|
|
6129 @unnumbered 6 Connecting to the Internet
|
|
6130
|
|
6131 This is part 6 of the XEmacs Frequently Asked Questions list. This
|
|
6132 section is devoted connecting to the Internet.
|
|
6133
|
|
6134 @menu
|
|
6135 6.0: General Mail and News
|
|
6136 * Q6.0.1:: What are the various packages for reading mail?
|
|
6137 * Q6.0.2:: How can I send mail?
|
|
6138 * Q6.0.3:: How do I get my outgoing mail archived?
|
|
6139 * Q6.0.4:: How can I read and/or compose MIME messages?
|
|
6140 * Q6.0.5:: How do I customize the From line?
|
|
6141 * Q6.0.6:: How do I get my MUA to filter mail for me?
|
|
6142 * Q6.0.7:: Remote mail reading with an MUA.
|
|
6143 * Q6.0.8:: An MUA gets an error incorporating new mail.
|
|
6144 * Q6.0.9:: Why isn't @file{movemail} working?
|
|
6145 * Q6.0.10:: How do I make my MUA display graphical smilies?
|
|
6146 * Q6.0.11:: How can I get those oh-so-neat X-Face lines?
|
|
6147
|
|
6148 6.1: Reading Mail with VM
|
|
6149 * Q6.1.1:: How do I set up VM to retrieve mail from a remote site using POP?
|
|
6150 * Q6.1.2:: How can I get VM to automatically check for new mail?
|
|
6151 * Q6.1.3:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
|
|
6152 * Q6.1.4:: Is there a mailing list or FAQ for VM?
|
|
6153 * Q6.1.5:: How do I make VM stay in a single frame?
|
|
6154 * Q6.1.6:: Customization of VM not covered in the manual, or here.
|
|
6155
|
|
6156 6.2: Reading Netnews and Mail with Gnus
|
|
6157 * Q6.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
|
|
6158 * Q6.2.2:: How do I make Gnus stay within a single frame?
|
|
6159
|
|
6160 6.3: FTP Access
|
|
6161 * Q6.3.1:: Can I edit files on other hosts?
|
|
6162 * Q6.3.2:: What is EFS?
|
|
6163
|
|
6164 6.4: Web Browsing with W3
|
|
6165 * Q6.4.1:: What is W3?
|
|
6166 * Q6.4.2:: How do I run W3 from behind a firewall?
|
|
6167 * Q6.4.3:: Is it true that W3 supports style sheets and tables?
|
|
6168 @end menu
|
|
6169
|
|
6170 @unnumberedsec 6.0: General Mail and News
|
|
6171
|
|
6172 @node Q6.0.1, Q6.0.2, Internet, Internet
|
|
6173 @unnumberedsubsec Q6.0.1: What are the various packages for reading mail?
|
|
6174
|
|
6175 #### Write me.
|
|
6176
|
|
6177 @node Q6.0.2, Q6.0.3, Q6.0.1, Internet
|
|
6178 @unnumberedsubsec Q6.0.2: How can I send mail?
|
|
6179
|
|
6180 Under Unix and Mac OS X, the @samp{sendmail} package is normally used
|
|
6181 for this.
|
|
6182 #### Write me.
|
|
6183
|
|
6184 Under Windows, you need to use @samp{smtpmail}, which communicates
|
|
6185 directly with the mail server, as there is no @file{sendmail} program
|
|
6186 running. To get it working, use code like the following in your
|
|
6187 @file{init.el} file:
|
|
6188
|
|
6189 @lisp
|
|
6190 ;; Get mail working under Windows.
|
|
6191 (setq message-send-mail-function 'smtpmail-send-it) ; for message/Gnus
|
|
6192 (setq send-mail-function 'smtpmail-send-it) ; for C-x m, etc.
|
|
6193 ;; the following ensures that mail problems can be debugged: it logs a trace
|
|
6194 ;; of the SMTP conversation to *trace of SMTP session to <somewhere>*.
|
|
6195 (setq smtpmail-debug-info t)
|
|
6196 ;; Substitute your info here.
|
|
6197 ;(setq user-mail-address "ben@@xemacs.org")
|
|
6198 ;(setq user-full-name "Ben Wing")
|
|
6199 ;(setq smtpmail-default-smtp-server "smtp.myserver.myisp.com")
|
|
6200 ;; The following two aren't completely necessary but may help.
|
|
6201 ;(setq smtpmail-local-domain "666.com")
|
|
6202 ;(setq smtpmail-sendto-domain "666.com")
|
|
6203 ;; If your SMTP server requires a username/password to authenticate, as
|
|
6204 ;; many do nowadays, set them like this:
|
|
6205 ;(setq smtpmail-auth-credentials ; or use ~/.authinfo
|
|
6206 ; '(("smtp.myserver.myisp.com" 25 "USER@@SOMEWHERE" "PASSWORD")))
|
|
6207
|
|
6208 ;; Other possibilities for getting smtpmail to work:
|
|
6209 ;;
|
|
6210 ;; If for some reason you need to authenticate using the STARTTLS protocol
|
|
6211 ;; (don't look into this unless you know what it is), use
|
|
6212 ;; (setq smtpmail-starttls-credentials
|
|
6213 ;; '(("YOUR SMTP HOST" 25 "~/.my_smtp_tls.key" "~/.my_smtp_tls.cert")))
|
|
6214 ;; Requires external program
|
|
6215 ;; ftp://ftp.opaopa.org/pub/elisp/starttls-*.tar.gz.
|
|
6216 ;; See http://www.ietf.org/rfc/rfc2246.txt,
|
|
6217 ;; http://www.ietf.org/rfc/rfc2487.txt
|
|
6218 @end lisp
|
|
6219
|
|
6220 The lines you need to care about are those that set
|
|
6221 @code{user-mail-address}, @code{user-full-name},
|
|
6222 @code{smtpmail-default-smtp-server}, and
|
|
6223 @code{smtpmail-auth-credentials}. You need to set these with,
|
|
6224 respectively, your email address, your full name, the SMTP server you
|
|
6225 use for outgoing mail, and the username and password you need to log
|
|
6226 in to your SMTP server. (If for some reason your SMTP server doesn't
|
|
6227 require logging in to send mail, don't uncomment this last line.)
|
|
6228
|
|
6229 The other settings may be useful in specific cases, but you should know what
|
|
6230 you're doing before enabling them.
|
|
6231
|
|
6232 @node Q6.0.3, Q6.0.4, Q6.0.2, Internet
|
|
6233 @unnumberedsubsec Q6.0.3: How do I get my outgoing mail archived?
|
|
6234
|
|
6235 @lisp
|
|
6236 (setq mail-archive-file-name "~/outbox")
|
|
6237 @end lisp
|
|
6238
|
|
6239 @node Q6.0.4, Q6.0.5, Q6.0.3, Internet
|
|
6240 @unnumberedsubsec Q6.0.4: How can I read and/or compose MIME messages?
|
|
6241
|
|
6242 VM, MH-E and GNUS support MIME natively. Other MUAs may or may not
|
|
6243 have MIME support; refer to their documentation and other resources,
|
|
6244 such as web pages and mailing lists. Packages like SEMI/WEMI may be
|
|
6245 useful in connection with MUAs like mew and Wanderlust.
|
|
6246
|
|
6247 @node Q6.0.5, Q6.0.6, Q6.0.4, Internet
|
|
6248 @unnumberedsubsec Q6.0.5: How do I customize the From line?
|
|
6249
|
|
6250 How do I change the @samp{From:} line? I have set gnus-user-from-line
|
|
6251 to
|
|
6252 @example
|
|
6253 Gail Gurman <gail.gurman@@sybase.com>
|
|
6254 @end example
|
|
6255 @noindent , but XEmacs Gnus doesn't use
|
|
6256 it. [This should apply to all MUA's. --ed] Instead it uses
|
|
6257 @example
|
|
6258 Gail Mara Gurman @email{gailg@@deall}
|
|
6259 @end example
|
|
6260 @noindent and then complains
|
|
6261 that it's incorrect. Also, as you perhaps can see, my Message-ID is
|
|
6262 screwy. How can I change that?
|
|
6263
|
|
6264 @email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes:
|
|
6265
|
|
6266 @quotation
|
|
6267 Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or
|
|
6268 @code{mail-host-address} to @samp{sybase.com}.
|
|
6269 @end quotation
|
|
6270
|
|
6271 @node Q6.0.6, Q6.0.7, Q6.0.5, Internet
|
|
6272 @unnumberedsubsec Q6.0.6: How do I get my MUA to filter mail for me?
|
|
6273
|
|
6274 One possibility is to use procmail to split your mail before it gets to
|
|
6275 the MUA. I prefer this personally, since there are many strange and
|
|
6276 wonderful things one can do with procmail. Procmail may be found at
|
|
6277 @uref{http://www.procmail.org/}.
|
|
6278
|
|
6279 Also see the Mail Filtering FAQ at:
|
|
6280 @iftex
|
|
6281 @*
|
|
6282 @end iftex
|
|
6283 @uref{http://www.faqs.org/faqs/mail/filtering-faq/}.
|
|
6284
|
|
6285 @node Q6.0.7, Q6.0.8, Q6.0.6, Internet
|
|
6286 @unnumberedsubsec Q6.0.7: Remote mail reading with an MUA.
|
|
6287
|
|
6288 My mailbox lives at the office on a big honkin server. My regular INBOX
|
|
6289 lives on my honkin desktop machine. I now can PPP to the office from
|
|
6290 home which is far from honking... I'd like to be able to read mail at
|
|
6291 home without storing it here and I'd like to use xemacs and the MUA at
|
|
6292 home... Is there a recommended setup?
|
|
6293
|
|
6294 @email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes:
|
|
6295
|
|
6296 @quotation
|
|
6297 There are several ways to do this.
|
|
6298
|
|
6299 @enumerate
|
|
6300 @item
|
|
6301 Set your display to your home machine and run dxpc or one of the other X
|
|
6302 compressors.
|
|
6303
|
|
6304 @item
|
|
6305 NFS mount your desktop machine on your home machine and modify your pop
|
|
6306 command on your home machine to rsh to your desktop machine and actually
|
|
6307 do the pop get's.
|
|
6308
|
|
6309 @item
|
|
6310 Run a POP server on your desktop machine as well and do a sort of two
|
|
6311 tiered POP get.
|
|
6312 @end enumerate
|
|
6313 @end quotation
|
|
6314
|
|
6315 @email{wmperry@@monolith.spry.com, William Perry} adds:
|
|
6316
|
|
6317 @quotation
|
|
6318 Or you could run a pop script periodically on your desktop machine, and
|
|
6319 just use ange-ftp or NFS to get to your mailbox. I used to do this all
|
|
6320 the time back at IU.
|
|
6321 @end quotation
|
|
6322
|
|
6323 @node Q6.0.8, Q6.0.9, Q6.0.7, Internet
|
|
6324 @unnumberedsubsec Q6.0.8: An MUA gets an error incorporating new mail.
|
|
6325
|
|
6326 rmail and VM, and probably other MUA's as well, get new mail from
|
|
6327 your mailbox (called @file{/var/mail/$USER} or @file{/var/spool/mail/$USER}
|
|
6328 or something similar) using a program called @code{movemail}.
|
|
6329 This program interlocks with @code{/bin/mail} using the protocol
|
|
6330 defined by @code{/bin/mail}.
|
|
6331
|
|
6332 There are various different protocols in general use, which you need to
|
|
6333 specify using the @samp{--mail-locking} option to @file{configure}:
|
|
6334
|
|
6335 @table @samp
|
|
6336 @item lockf
|
|
6337 POSIX file locking with @code{lockf()}
|
|
6338 @item flock
|
|
6339 BSD file locking with @code{flock()}
|
|
6340 @item dot
|
|
6341 To manipulate mail file @file{foo}, first create file @file{foo.lock}
|
|
6342 @item locking
|
|
6343 Use @code{locking()}, Microsoft's renamed @code{flock()}
|
|
6344 @item mmdf
|
|
6345 Use @code{lk_open()} and @code{lk_close()} as defined by the Multi-channel
|
|
6346 Memo Distribution Facility
|
|
6347 @item pop
|
|
6348 Retrieve mail using POP (the Post Office Protocol). This is the
|
|
6349 default for Cygwin/MinGW.
|
|
6350 @end table
|
|
6351
|
|
6352 @strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
|
|
6353 SYSTEM, YOU CAN LOSE MAIL!}
|
|
6354
|
|
6355 Usually the value is correctly determined automatically:
|
|
6356 @file{configure} tries to detect the method in use, and defaults exist
|
|
6357 on systems for which this doesn't work.
|
|
6358
|
|
6359 However, if you run into problems incorporating new mail, it may be
|
|
6360 because an incorrect method is being used.
|
|
6361
|
|
6362 If your system uses the lock file protocol, and permissions are set
|
|
6363 so that ordinary users cannot write lock files in the mail spool
|
|
6364 directory, you may need to make @file{movemail} setgid to a
|
|
6365 suitable group such as @samp{mail}. You can use these commands (as
|
|
6366 root):
|
|
6367
|
|
6368 @example
|
|
6369 chgrp mail movemail
|
|
6370 chmod 2755 movemail
|
|
6371 @end example
|
|
6372
|
|
6373 If you are using the @samp{pop} locking method, @file{movemail} must
|
|
6374 be setuid root.
|
|
6375
|
|
6376 Installation normally copies movemail from the build directory to an
|
|
6377 installation directory which is usually under @file{/usr/local/lib}.
|
|
6378 The installed copy of @file{movemail} is usually in the directory
|
|
6379 @file{/usr/local/lib/xemacs-VERSION/TARGET} (for example,
|
|
6380 @file{/usr/local/lib/xemacs-21.4.15/i686-pc-cygwin}). You must change
|
|
6381 the group and mode of the installed copy; changing the group and mode
|
|
6382 of the build directory copy is ineffective.
|
|
6383
|
|
6384 @node Q6.0.9, Q6.0.10, Q6.0.8, Internet
|
|
6385 @unnumberedsubsec Q6.0.9: Why isn't @file{movemail} working?
|
|
6386
|
|
6387 @xref{Q6.0.8}.
|
|
6388
|
|
6389 Note also that older versions of Mozilla came with a @file{movemail}
|
|
6390 program that is @strong{not} compatible with XEmacs. Do not use it.
|
|
6391 Always use the @file{movemail} installed with your XEmacs. Failure to
|
|
6392 do so can result in lost mail.
|
|
6393
|
|
6394 @node Q6.0.10, Q6.0.11, Q6.0.9, Internet
|
|
6395 @unnumberedsubsec Q6.0.10: How do I make my MUA display graphical smilies?
|
|
6396 For mh-e use the following:
|
|
6397
|
|
6398 @lisp
|
|
6399 (add-hook 'mh-show-mode-hook '(lambda ()
|
|
6400 (smiley-region (point-min)
|
|
6401 (point-max))))
|
|
6402 @end lisp
|
|
6403
|
|
6404 @email{bill@@carpenter.ORG, WJCarpenter} writes:
|
|
6405 For VM use the following:
|
|
6406 @lisp
|
|
6407 (autoload 'smiley-region "smiley" nil t)
|
|
6408 (add-hook 'vm-select-message-hook
|
|
6409 '(lambda ()
|
|
6410 (smiley-region (point-min)
|
|
6411 (point-max))))
|
|
6412 @end lisp
|
|
6413
|
|
6414 For tm use the following:
|
|
6415 @lisp
|
|
6416 (autoload 'smiley-buffer "smiley" nil t)
|
|
6417 (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
|
|
6418 @end lisp
|
|
6419
|
|
6420 @node Q6.0.11, Q6.1.1, Q6.0.10, Internet
|
|
6421 @unnumberedsubsec Q6.0.11: How can I get those oh-so-neat X-Face lines?
|
|
6422
|
|
6423 Firstly there is an ftp site which describes X-faces and has the
|
|
6424 associated tools mentioned below, at
|
|
6425 @uref{http://ftp.cs.indiana.edu/pub/faces/}.
|
|
6426
|
|
6427 Then the steps are
|
|
6428
|
|
6429 @enumerate
|
|
6430 @item
|
|
6431 Create 48x48x1 bitmap with your favorite tool
|
|
6432
|
|
6433 @item
|
|
6434 Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc.,
|
|
6435 and then compile the face.
|
|
6436
|
|
6437 @item
|
|
6438 @example
|
|
6439 cat file.xbm | xbm2ikon |compface > file.face
|
|
6440 @end example
|
|
6441
|
|
6442 @item
|
|
6443 Then be sure to quote things that are necessary for emacs strings:
|
|
6444
|
|
6445 @example
|
|
6446 cat ./file.face | sed 's/\\/\\\\/g'
|
|
6447 @iftex
|
|
6448 \ @*
|
|
6449 @end iftex
|
|
6450 | sed 's/\"/\\\"/g' > ./file.face.quoted
|
|
6451 @end example
|
|
6452
|
|
6453 @item
|
|
6454 Then set up emacs to include the file as a mail header - there were a
|
|
6455 couple of suggestions here---either something like:
|
|
6456
|
|
6457 @lisp
|
|
6458 (setq mail-default-headers
|
|
6459 "X-Face: @email{Ugly looking text string here}")
|
|
6460 @end lisp
|
|
6461
|
|
6462 Or, alternatively, as:
|
|
6463
|
|
6464 @lisp
|
|
6465 (defun mail-insert-x-face ()
|
|
6466 (save-excursion
|
|
6467 (goto-char (point-min))
|
|
6468 (search-forward mail-header-separator)
|
|
6469 (beginning-of-line)
|
|
6470 (insert "X-Face:")
|
|
6471 (insert-file-contents "~/.face")))
|
|
6472
|
|
6473 (add-hook 'mail-setup-hook 'mail-insert-x-face)
|
|
6474 @end lisp
|
|
6475 @end enumerate
|
|
6476
|
|
6477 However, 2 things might be wrong:
|
|
6478
|
|
6479 Some versions of pbmtoicon produces some header lines that is not
|
|
6480 expected by the version of compface that I grabbed. So I found I had to
|
|
6481 include a @code{tail +3} in the pipeline like this:
|
|
6482
|
|
6483 @example
|
|
6484 cat file.xbm | xbm2ikon | tail +3 |compface > file.face
|
|
6485 @end example
|
|
6486
|
|
6487 Some people have also found that if one uses the @code{(insert-file)}
|
|
6488 method, one should NOT quote the face string using the sed script .
|
|
6489
|
|
6490 It might also be helpful to use @email{stig@@hackvan.com, Stig's} script
|
|
6491 xbm2face (included in the compface distribution at XEmacs.org) to do the
|
|
6492 conversion.
|
|
6493
|
|
6494 Contributors for this item:
|
|
6495
|
|
6496 Paul Emsley,
|
|
6497 Ricardo Marek,
|
|
6498 Amir J. Katz,
|
|
6499 Glen McCort,
|
|
6500 Heinz Uphoff,
|
|
6501 Peter Arius,
|
|
6502 Paul Harrison, and
|
|
6503 Vegard Vesterheim
|
|
6504
|
|
6505 @unnumberedsec 6.1: Reading Mail with VM
|
|
6506
|
|
6507 @node Q6.1.1, Q6.1.2, Q6.0.11, Internet
|
|
6508 @unnumberedsubsec Q6.1.1: How do I set up VM to retrieve mail from a remote site using POP?
|
|
6509
|
|
6510 Use @code{vm-spool-files}, like this for example:
|
|
6511
|
|
6512 @lisp
|
|
6513 (setq vm-spool-files '("/var/spool/mail/wing"
|
|
6514 "netcom23.netcom.com:110:pass:wing:MYPASS"))
|
|
6515 @end lisp
|
|
6516
|
|
6517 Of course substitute your actual password for MYPASS.
|
|
6518
|
|
6519 @node Q6.1.2, Q6.1.3, Q6.1.1, Internet
|
|
6520 @unnumberedsubsec Q6.1.2: How can I get VM to automatically check for new mail?
|
|
6521
|
|
6522 @email{turner@@lanl.gov, John Turner} writes:
|
|
6523
|
|
6524 @quotation
|
|
6525 Use the following:
|
|
6526
|
|
6527 @lisp
|
|
6528 (setq vm-auto-get-new-mail 60)
|
|
6529 @end lisp
|
|
6530 @end quotation
|
|
6531
|
|
6532 @node Q6.1.3, Q6.1.4, Q6.1.2, Internet
|
|
6533 @unnumberedsubsec Q6.1.3: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
|
|
6534
|
|
6535 Set @code{vm-reply-ignored-addresses} to a list, like
|
|
6536
|
|
6537 @lisp
|
|
6538 (setq vm-reply-ignored-addresses
|
|
6539 '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
|
|
6540 "wing@@netcom.com" "wing@@xemacs.org"))
|
|
6541 @end lisp
|
|
6542
|
|
6543 Note that each string is a regular expression.
|
|
6544
|
|
6545 @node Q6.1.4, Q6.1.5, Q6.1.3, Internet
|
|
6546 @unnumberedsubsec Q6.1.4: Is there a mailing list or FAQ for VM?
|
|
6547
|
|
6548 A FAQ for VM exists at @uref{http://www.wonderworks.com/vm/FAQ.html}.
|
|
6549
|
|
6550 VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
|
|
6551
|
|
6552 @node Q6.1.5, Q6.1.6, Q6.1.4, Internet
|
|
6553 @unnumberedsubsec Q6.1.5: How do I make VM stay in a single frame?
|
|
6554
|
|
6555 John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes:
|
|
6556
|
|
6557 @quotation
|
|
6558 @lisp
|
|
6559 ; Don't use multiple frames
|
|
6560 (setq vm-frame-per-composition nil)
|
|
6561 (setq vm-frame-per-folder nil)
|
|
6562 (setq vm-frame-per-edit nil)
|
|
6563 (setq vm-frame-per-summary nil)
|
|
6564 @end lisp
|
|
6565 @end quotation
|
|
6566
|
|
6567 @node Q6.1.6, Q6.2.1, Q6.1.5, Internet
|
|
6568 @unnumberedsubsec Q6.1.6: Customization of VM not covered in the manual, or here.
|
|
6569
|
|
6570 @email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes:
|
|
6571
|
|
6572 @quotation
|
|
6573 The meta-answer is to look into the file @file{vm-vars.el}, in the vm
|
|
6574 directory of the lisp library.
|
|
6575
|
|
6576 @file{vm-vars.el} contains, initializes and carefully describes, with
|
|
6577 examples of usage, the plethora of user options that @emph{fully}
|
|
6578 control VM's behavior.
|
|
6579
|
|
6580 Enter vm-vars, @code{forward-search} for toolbar, find the variables
|
|
6581 that control the toolbar placement, appearance, existence, copy to your
|
|
6582 @file{init.el} or @file{.vm} and modify according to the
|
|
6583 detailed instructions.
|
|
6584
|
|
6585 The above also applies to all the various features of VM: search for
|
|
6586 some keywords, maybe the first you conjure isn't appropriate, find the
|
|
6587 appropriate variables, copy and experiment.
|
|
6588 @end quotation
|
|
6589
|
|
6590 @unnumberedsec 6.2: Reading Netnews and Mail with Gnus
|
|
6591
|
|
6592 @node Q6.2.1, Q6.2.2, Q6.1.6, Internet
|
|
6593 @unnumberedsubsec Q6.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
|
|
6594
|
|
6595 The Gnus numbering issues are not meant for mere mortals to know them.
|
|
6596 If you feel you @emph{must} enter the muddy waters of Gnus, visit the
|
|
6597 excellent FAQ, maintained by Justin Sheehy, at:
|
|
6598
|
|
6599 @example
|
|
6600 @uref{http://my.gnus.org/FAQ/}
|
|
6601 @end example
|
|
6602
|
|
6603 See also Gnus home page
|
|
6604 @example
|
|
6605 @uref{http://www.gnus.org/}
|
|
6606 @end example
|
|
6607
|
|
6608 @node Q6.2.2, Q6.3.1, Q6.2.1, Internet
|
|
6609 @unnumberedsubsec Q6.2.2: How do I make Gnus stay within a single frame?
|
|
6610
|
|
6611 The toolbar code to start Gnus opens the new frame---and it's a feature
|
|
6612 rather than a bug. If you don't like it, but would still like to click
|
|
6613 on the seemly icon, use the following code:
|
|
6614
|
|
6615 @lisp
|
|
6616 (defun toolbar-news ()
|
|
6617 (gnus))
|
|
6618 @end lisp
|
|
6619
|
|
6620 It will redefine the callback function of the icon to just call
|
|
6621 @code{gnus}, without all the fancy frame stuff.
|
|
6622
|
|
6623 @unnumberedsec 6.3: FTP Access
|
|
6624
|
|
6625 @node Q6.3.1, Q6.3.2, Q6.2.2, Internet
|
|
6626 @unnumberedsubsec Q6.3.1: Can I edit files on other hosts?
|
|
6627
|
|
6628 Yes. Of course XEmacs can use any network file system (such as NFS or
|
|
6629 Windows file sharing) you have available, and includes some
|
|
6630 optimizations and safety features appropriate to those environments.
|
|
6631
|
|
6632 It is also possible to transparently edit files via FTP, ssh, or rsh. That
|
|
6633 is, XEmacs makes a local copy using the transport in the background, and
|
|
6634 automatically refreshes the remote original from that copy when you save
|
|
6635 it. XEmacs also is capable of doing file system manipulations like
|
|
6636 creating and removing directories and files. The FTP interface is
|
|
6637 provided by the standard @samp{efs} package @ref{Top, EFS, , efs}. The
|
|
6638 ssh/rsh interface is provided by the optional @samp{tramp} package
|
|
6639 @ref{Top, TRAMP, , tramp}.
|
|
6640
|
|
6641 @node Q6.3.2, Q6.4.1, Q6.3.1, Internet
|
|
6642 @unnumberedsubsec Q6.3.2: What is EFS?
|
|
6643
|
|
6644 #### Write me.
|
|
6645
|
|
6646 @unnumberedsec 6.4: Web Browsing with W3
|
|
6647
|
|
6648 @node Q6.4.1, Q6.4.2, Q6.3.2, Internet
|
|
6649 @unnumberedsubsec Q6.4.1: What is W3?
|
|
6650
|
|
6651 W3 is an advanced graphical browser written in Emacs lisp that runs on
|
|
6652 XEmacs. It has full support for cascaded style sheets, and more...
|
|
6653
|
|
6654 It has a home web page at
|
|
6655 @uref{http://www.cs.indiana.edu/elisp/w3/docs.html}.
|
|
6656
|
|
6657 @node Q6.4.2, Q6.4.3, Q6.4.1, Internet
|
|
6658 @unnumberedsubsec Q6.4.2: How do I run W3 from behind a firewall?
|
|
6659
|
|
6660 There is a long, well-written, detailed section in the W3 manual that
|
|
6661 describes how to do this. Look in the section entitled "Firewalls".
|
|
6662
|
|
6663 @node Q6.4.3, , Q6.4.2, Internet
|
|
6664 @unnumberedsubsec Q6.4.3: Is it true that W3 supports style sheets and tables?
|
|
6665
|
|
6666 Yes, and much more. W3, as distributed with the latest XEmacs is a
|
|
6667 full-featured web browser.
|
|
6668
|
|
6669 @node Advanced, Other Packages, Internet, Top
|
|
6670 @unnumbered 7 Advanced Customization Using XEmacs Lisp
|
|
6671
|
|
6672 This is part 7 of the XEmacs Frequently Asked Questions list. This
|
|
6673 section is devoted to advanced customization using XEmacs Lisp.
|
|
6674
|
|
6675 @menu
|
2537
|
6676 7.0: Emacs Lisp and @file{init.el}
|
|
6677 * Q7.0.1:: What version of Emacs am I running?
|
|
6678 * Q7.0.2:: How can I evaluate Emacs-Lisp expressions?
|
|
6679 * Q7.0.3:: @code{(setq tab-width 6)} behaves oddly.
|
|
6680 * Q7.0.4:: How can I add directories to the @code{load-path}?
|
|
6681 * Q7.0.5:: How to check if a lisp function is defined?
|
|
6682 * Q7.0.6:: Can I force the output of @code{(face-list)} to a buffer?
|
|
6683
|
|
6684 7.1: Emacs Lisp Programming Techniques
|
|
6685 * Q7.1.1:: What is the difference in key sequences between XEmacs and GNU Emacs?
|
|
6686 * Q7.1.2:: Can I generate "fake" keyboard events?
|
|
6687 * Q7.1.3:: Could you explain @code{read-kbd-macro} in more detail?
|
|
6688 * Q7.1.4:: What is the performance hit of @code{let}?
|
|
6689 * Q7.1.5:: What is the recommended use of @code{setq}?
|
|
6690 * Q7.1.6:: What is the typical misuse of @code{setq}?
|
|
6691 * Q7.1.7:: I like the @code{do} form of cl, does it slow things down?
|
|
6692 * Q7.1.8:: I like recursion, does it slow things down?
|
|
6693 * Q7.1.9:: How do I put a glyph as annotation in a buffer?
|
|
6694 * Q7.1.10:: @code{map-extents} won't traverse all of my extents!
|
|
6695 * Q7.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
|
|
6696
|
|
6697 7.2: Mathematics
|
|
6698 * Q7.2.1:: What are bignums, ratios, and bigfloats in Lisp?
|
|
6699 * Q7.2.2:: XEmacs segfaults when I use very big numbers!
|
|
6700 * Q7.2.3:: Bignums are really slow!
|
|
6701 * Q7.2.4:: Equal bignums don't compare as equal! What gives?
|
2459
|
6702 @end menu
|
|
6703
|
2537
|
6704 @unnumberedsec 7.0: Emacs Lisp and @file{init.el}
|
2459
|
6705
|
|
6706 @node Q7.0.1, Q7.0.2, Advanced, Advanced
|
2537
|
6707 @unnumberedsubsec Q7.0.1: What version of Emacs am I running?
|
2459
|
6708
|
|
6709 How can @file{init.el} determine which of the family of
|
|
6710 Emacsen I am using?
|
|
6711
|
|
6712 To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
|
|
6713 XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
|
|
6714 example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in
|
|
6715 XEmacs versions prior to 21.4). There are other nifty things in there
|
|
6716 as well!
|
|
6717
|
|
6718 For all new code, all you really need to do is:
|
|
6719
|
|
6720 @lisp
|
|
6721 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
|
|
6722 @end lisp
|
|
6723
|
2537
|
6724 @node Q7.0.2, Q7.0.3, Q7.0.1, Advanced
|
|
6725 @unnumberedsubsec Q7.0.2: How can I evaluate Emacs-Lisp expressions?
|
2459
|
6726
|
|
6727 I know I can evaluate Elisp expressions from @code{*scratch*} buffer
|
|
6728 with @kbd{C-j} after the expression. How do I do it from another
|
|
6729 buffer?
|
|
6730
|
|
6731 Press @kbd{M-:} (the default binding of @code{eval-expression}), and
|
|
6732 enter the expression to the minibuffer.
|
|
6733
|
2537
|
6734 @node Q7.0.3, Q7.0.4, Q7.0.2, Advanced
|
|
6735 @unnumberedsubsec Q7.0.3: @code{(setq tab-width 6)} behaves oddly.
|
2459
|
6736
|
|
6737 If you put @code{(setq tab-width 6)} in your
|
|
6738 @file{init.el} file it does not work! Is there a reason
|
|
6739 for this? If you do it at the EVAL prompt it works fine!! How strange.
|
|
6740
|
|
6741 Use @code{setq-default} instead, since @code{tab-width} is
|
|
6742 all-buffer-local.
|
|
6743
|
2537
|
6744 @node Q7.0.4, Q7.0.5, Q7.0.3, Advanced
|
|
6745 @unnumberedsubsec Q7.0.4: How can I add directories to the @code{load-path}?
|
2459
|
6746
|
|
6747 Here are two ways to do that, one that puts your directories at the
|
|
6748 front of the load-path, the other at the end:
|
|
6749
|
|
6750 @lisp
|
|
6751 ;;; Add things at the beginning of the load-path, do not add
|
|
6752 ;;; duplicate directories:
|
|
6753 (pushnew "bar" load-path :test 'equal)
|
|
6754
|
|
6755 (pushnew "foo" load-path :test 'equal)
|
|
6756
|
|
6757 ;;; Add things at the end, unconditionally
|
|
6758 (setq load-path (nconc load-path '("foo" "bar")))
|
|
6759 @end lisp
|
|
6760
|
|
6761 @email{keithh@@nortel.ca, keith (k.p.) hanlan} writes:
|
|
6762
|
|
6763 @quotation
|
|
6764 To add directories using Unix shell metacharacters use
|
|
6765 @file{expand-file-name} like this:
|
|
6766
|
|
6767 @lisp
|
|
6768 (push (expand-file-name "~keithh/.emacsdir") load-path)
|
|
6769 @end lisp
|
|
6770 @end quotation
|
|
6771
|
2537
|
6772 @node Q7.0.5, Q7.0.6, Q7.0.4, Advanced
|
|
6773 @unnumberedsubsec Q7.0.5: How to check if a lisp function is defined?
|
2459
|
6774
|
|
6775 Use the following elisp:
|
|
6776
|
|
6777 @lisp
|
|
6778 (fboundp 'foo)
|
|
6779 @end lisp
|
|
6780
|
|
6781 It's almost always a mistake to test @code{emacs-version} or any similar
|
|
6782 variables.
|
|
6783
|
|
6784 Instead, use feature-tests, such as @code{featurep}, @code{boundp},
|
|
6785 @code{fboundp}, or even simple behavioral tests, eg.:
|
|
6786
|
|
6787 @lisp
|
|
6788 (defvar foo-old-losing-code-p
|
|
6789 (condition-case nil (progn (losing-code t) nil)
|
|
6790 (wrong-number-of-arguments t)))
|
|
6791 @end lisp
|
|
6792
|
|
6793 There is an incredible amount of broken code out there which could work
|
|
6794 much better more often in more places if it did the above instead of
|
|
6795 trying to divine its environment from the value of one variable.
|
|
6796
|
2537
|
6797 @node Q7.0.6, Q7.1.1, Q7.0.5, Advanced
|
|
6798 @unnumberedsubsec Q7.0.6: Can I force the output of @code{(face-list)} to a buffer?
|
2459
|
6799
|
|
6800 It would be good having it in a buffer, as the output of
|
|
6801 @code{(face-list)} is too wide to fit to a minibuffer.
|
|
6802
|
|
6803 Evaluate the expression in the @samp{*scratch*} buffer with point after
|
|
6804 the rightmost paren and typing @kbd{C-j}.
|
|
6805
|
|
6806 If the minibuffer smallness is the only problem you encounter, you can
|
|
6807 simply press @kbd{C-h l} to get the former minibuffer contents in a
|
|
6808 buffer.
|
|
6809
|
2537
|
6810 @unnumberedsec 7.1: Emacs Lisp Programming Techniques
|
|
6811
|
|
6812 @node Q7.1.1, Q7.1.2, Q7.0.6, Advanced
|
|
6813 @unnumberedsubsec Q7.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
|
2459
|
6814
|
|
6815 @email{clerik@@naggum.no, Erik Naggum} writes;
|
|
6816
|
|
6817 @quotation
|
|
6818 Emacs has a legacy of keyboards that produced characters with modifier
|
|
6819 bits, and therefore map a variety of input systems into this scheme even
|
|
6820 today. XEmacs is instead optimized for X events. This causes an
|
|
6821 incompatibility in the way key sequences are specified, but both Emacs
|
|
6822 and XEmacs will accept a key sequence as a vector of lists of modifiers
|
|
6823 that ends with a key, e.g., to bind @kbd{M-C-a}, you would say
|
|
6824 @code{[(meta control a)]} in both Emacsen. XEmacs has an abbreviated
|
|
6825 form for a single key, just (meta control a). Emacs has an abbreviated
|
|
6826 form for the Control and the Meta modifiers to string-characters (the
|
|
6827 ASCII characters), as in @samp{\M-\C-a}. XEmacs users need to be aware
|
|
6828 that the abbreviated form works only for one-character key sequences,
|
|
6829 while Emacs users need to be aware that the string-character is rather
|
|
6830 limited. Specifically, the string-character can accommodate only 256
|
|
6831 different values, 128 of which have the Meta modifier and 128 of which
|
|
6832 have not. In each of these blocks, only 32 characters have the Control
|
|
6833 modifier. Whereas @code{[(meta control A)]} differs from @code{[(meta
|
|
6834 control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A}
|
|
6835 do not. Programmers are advised to use the full common form, both
|
|
6836 because it is more readable and less error-prone, and because it is
|
|
6837 supported by both Emacsen.
|
|
6838 @end quotation
|
|
6839
|
|
6840 Another (even safer) way to be sure of the key-sequences is to use the
|
|
6841 @code{read-kbd-macro} function, which takes a string like @samp{C-c
|
|
6842 <up>}, and converts it to the internal key representation of the Emacs
|
|
6843 you use. The function is available both on XEmacs and GNU Emacs.
|
|
6844
|
2537
|
6845 @node Q7.1.2, Q7.1.3, Q7.1.1, Advanced
|
|
6846 @unnumberedsubsec Q7.1.2: Can I generate "fake" keyboard events?
|
2459
|
6847
|
|
6848 I wonder if there is an interactive function that can generate
|
|
6849 @dfn{fake} keyboard events. This way, I could simply map them inside
|
|
6850 XEmacs.
|
|
6851
|
|
6852 This seems to work:
|
|
6853
|
|
6854 @lisp
|
|
6855 (defun cg--generate-char-event (ch)
|
|
6856 "Generate an event, as if ch has been typed"
|
|
6857 (dispatch-event (character-to-event ch)))
|
|
6858
|
|
6859 ;; Backspace and Delete stuff
|
|
6860 (global-set-key [backspace]
|
|
6861 (lambda () (interactive) (cg--generate-char-event 127)))
|
|
6862 (global-set-key [unknown_keysym_0x4]
|
|
6863 (lambda () (interactive) (cg--generate-char-event 4)))
|
|
6864 @end lisp
|
|
6865
|
2537
|
6866 @node Q7.1.3, Q7.1.4, Q7.1.2, Advanced
|
|
6867 @unnumberedsubsec Q7.1.3: Could you explain @code{read-kbd-macro} in more detail?
|
2459
|
6868
|
|
6869 The @code{read-kbd-macro} function returns the internal Emacs
|
|
6870 representation of a human-readable string (which is its argument).
|
|
6871 Thus:
|
|
6872
|
|
6873 @lisp
|
|
6874 (read-kbd-macro "C-c C-a")
|
|
6875 @result{} [(control ?c) (control ?a)]
|
|
6876
|
|
6877 (read-kbd-macro "C-c C-. <up>")
|
|
6878 @result{} [(control ?c) (control ?.) up]
|
|
6879 @end lisp
|
|
6880
|
|
6881 In GNU Emacs the same forms will be evaluated to what GNU Emacs
|
|
6882 understands internally---the sequences @code{"\C-x\C-c"} and @code{[3
|
|
6883 67108910 up]}, respectively.
|
|
6884
|
|
6885 The exact @dfn{human-readable} syntax is defined in the docstring of
|
|
6886 @code{edmacro-mode}. I'll repeat it here, for completeness.
|
|
6887
|
|
6888 @quotation
|
|
6889 Format of keyboard macros during editing:
|
|
6890
|
|
6891 Text is divided into @dfn{words} separated by whitespace. Except for
|
|
6892 the words described below, the characters of each word go directly as
|
|
6893 characters of the macro. The whitespace that separates words is
|
|
6894 ignored. Whitespace in the macro must be written explicitly, as in
|
|
6895 @kbd{foo @key{SPC} bar @key{RET}}.
|
|
6896
|
|
6897 @itemize @bullet
|
|
6898 @item
|
|
6899 The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD},
|
|
6900 @kbd{ESC}, and @kbd{NUL} represent special control characters. The
|
|
6901 words must be written in uppercase.
|
|
6902
|
|
6903 @item
|
|
6904 A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or
|
|
6905 @code{<f1>}, represents a function key. (Note that in the standard
|
|
6906 configuration, the function key @code{<return>} and the control key
|
|
6907 @key{RET} are synonymous.) You can use angle brackets on the words
|
|
6908 @key{RET}, @key{SPC}, etc., but they are not required there.
|
|
6909
|
|
6910 @item
|
|
6911 Keys can be written by their @sc{ascii} code, using a backslash followed
|
|
6912 by up to six octal digits. This is the only way to represent keys with
|
|
6913 codes above \377.
|
|
6914
|
|
6915 @item
|
|
6916 One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-}
|
|
6917 (shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may
|
|
6918 precede a character or key notation. For function keys, the prefixes
|
|
6919 may go inside or outside of the brackets: @code{C-<down>} @equiv{}
|
|
6920 @code{<C-down>}. The prefixes may be written in any order: @kbd{M-C-x}
|
|
6921 @equiv{} @kbd{C-M-x}.
|
|
6922
|
|
6923 Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except
|
|
6924 that the Meta prefix is allowed on a sequence of digits and optional
|
|
6925 minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}.
|
|
6926
|
|
6927 @item
|
|
6928 The @code{^} notation for control characters also works: @kbd{^M}
|
|
6929 @equiv{} @kbd{C-m}.
|
|
6930
|
|
6931 @item
|
|
6932 Double angle brackets enclose command names: @code{<<next-line>>} is
|
|
6933 shorthand for @kbd{M-x next-line @key{RET}}.
|
|
6934
|
|
6935 @item
|
|
6936 Finally, @code{REM} or @code{;;} causes the rest of the line to be
|
|
6937 ignored as a comment.
|
|
6938 @end itemize
|
|
6939
|
|
6940 Any word may be prefixed by a multiplier in the form of a decimal number
|
|
6941 and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>},
|
|
6942 and @code{10*foo} @equiv{}
|
|
6943 @iftex
|
|
6944 @*
|
|
6945 @end iftex
|
|
6946 @code{foofoofoofoofoofoofoofoofoofoo}.
|
|
6947
|
|
6948 Multiple text keys can normally be strung together to form a word, but
|
|
6949 you may need to add whitespace if the word would look like one of the
|
|
6950 above notations: @code{; ; ;} is a keyboard macro with three semicolons,
|
|
6951 but @code{;;;} is a comment. Likewise, @code{\ 1 2 3} is four keys but
|
|
6952 @code{\123} is a single key written in octal, and @code{< right >} is
|
|
6953 seven keys but @code{<right>} is a single function key. When in doubt,
|
|
6954 use whitespace.
|
|
6955 @end quotation
|
|
6956
|
2537
|
6957 @node Q7.1.4, Q7.1.5, Q7.1.3, Advanced
|
|
6958 @unnumberedsubsec Q7.1.4: What is the performance hit of @code{let}?
|
2459
|
6959
|
|
6960 In most cases, not noticeable. Besides, there's no avoiding
|
|
6961 @code{let}---you have to bind your local variables, after all. Some
|
|
6962 pose a question whether to nest @code{let}s, or use one @code{let} per
|
|
6963 function. I think because of clarity and maintenance (and possible
|
|
6964 future implementation), @code{let}-s should be used (nested) in a way to
|
|
6965 provide the clearest code.
|
|
6966
|
2537
|
6967 @node Q7.1.5, Q7.1.6, Q7.1.4, Advanced
|
|
6968 @unnumberedsubsec Q7.1.5: What is the recommended use of @code{setq}?
|
2459
|
6969
|
|
6970 @itemize @bullet
|
|
6971 @item Global variables
|
|
6972
|
|
6973 You will typically @code{defvar} your global variable to a default
|
|
6974 value, and use @code{setq} to set it later.
|
|
6975
|
|
6976 It is never a good practice to @code{setq} user variables (like
|
|
6977 @code{case-fold-search}, etc.), as it ignores the user's choice
|
|
6978 unconditionally. Note that @code{defvar} doesn't change the value of a
|
|
6979 variable if it was bound previously. If you wish to change a
|
|
6980 user-variable temporarily, use @code{let}:
|
|
6981
|
|
6982 @lisp
|
|
6983 (let ((case-fold-search nil))
|
|
6984 ... ; code with searches that must be case-sensitive
|
|
6985 ...)
|
|
6986 @end lisp
|
|
6987
|
|
6988 You will notice the user-variables by their docstrings beginning with an
|
|
6989 asterisk (a convention).
|
|
6990
|
|
6991 @item Local variables
|
|
6992
|
|
6993 Bind them with @code{let}, which will unbind them (or restore their
|
|
6994 previous value, if they were bound) after exiting from the @code{let}
|
|
6995 form. Change the value of local variables with @code{setq} or whatever
|
|
6996 you like (e.g. @code{incf}, @code{setf} and such). The @code{let} form
|
|
6997 can even return one of its local variables.
|
|
6998
|
|
6999 Typical usage:
|
|
7000
|
|
7001 @lisp
|
|
7002 ;; iterate through the elements of the list returned by
|
|
7003 ;; `hairy-function-that-returns-list'
|
|
7004 (let ((l (hairy-function-that-returns-list)))
|
|
7005 (while l
|
|
7006 ... do something with (car l) ...
|
|
7007 (setq l (cdr l))))
|
|
7008 @end lisp
|
|
7009
|
|
7010 Another typical usage includes building a value simply to work with it.
|
|
7011
|
|
7012 @lisp
|
|
7013 ;; Build the mode keymap out of the key-translation-alist
|
|
7014 (let ((inbox (file-truename (expand-file-name box)))
|
|
7015 (i 0))
|
|
7016 ... code dealing with inbox ...
|
|
7017 inbox)
|
|
7018 @end lisp
|
|
7019
|
|
7020 This piece of code uses the local variable @code{inbox}, which becomes
|
|
7021 unbound (or regains old value) after exiting the form. The form also
|
|
7022 returns the value of @code{inbox}, which can be reused, for instance:
|
|
7023
|
|
7024 @lisp
|
|
7025 (setq foo-processed-inbox
|
|
7026 (let .....))
|
|
7027 @end lisp
|
|
7028 @end itemize
|
|
7029
|
2537
|
7030 @node Q7.1.6, Q7.1.7, Q7.1.5, Advanced
|
|
7031 @unnumberedsubsec Q7.1.6: What is the typical misuse of @code{setq}?
|
2459
|
7032
|
|
7033 A typical misuse is probably @code{setq}ing a variable that was meant to
|
|
7034 be local. Such a variable will remain bound forever, never to be
|
|
7035 garbage-collected. For example, the code doing:
|
|
7036
|
|
7037 @lisp
|
|
7038 (defun my-function (whatever)
|
|
7039 (setq a nil)
|
|
7040 ... build a large list ...
|
|
7041 ... and exit ...)
|
|
7042 @end lisp
|
|
7043
|
|
7044 does a bad thing, as @code{a} will keep consuming memory, never to be
|
|
7045 unbound. The correct thing is to do it like this:
|
|
7046
|
|
7047 @lisp
|
|
7048 (defun my-function (whatever)
|
|
7049 (let (a) ; default initialization is to nil
|
|
7050 ... build a large list ...
|
|
7051 ... and exit, unbinding `a' in the process ...)
|
|
7052 @end lisp
|
|
7053
|
|
7054 Not only is this prettier syntactically, but it makes it possible for
|
|
7055 Emacs to garbage-collect the objects which @code{a} used to reference.
|
|
7056
|
|
7057 Note that even global variables should not be @code{setq}ed without
|
|
7058 @code{defvar}ing them first, because the byte-compiler issues warnings.
|
|
7059 The reason for the warning is the following:
|
|
7060
|
|
7061 @lisp
|
|
7062 (defun flurgoze nil) ; ok, global internal variable
|
|
7063 ...
|
|
7064
|
|
7065 (setq flurghoze t) ; ops! a typo, but semantically correct.
|
|
7066 ; however, the byte-compiler warns.
|
|
7067
|
|
7068 While compiling toplevel forms:
|
|
7069 ** assignment to free variable flurghoze
|
|
7070 @end lisp
|
|
7071
|
2537
|
7072 @node Q7.1.7, Q7.1.8, Q7.1.6, Advanced
|
|
7073 @unnumberedsubsec Q7.1.7: I like the @code{do} form of cl, does it slow things down?
|
2459
|
7074
|
|
7075 It shouldn't. Here is what Dave Gillespie has to say about cl.el
|
|
7076 performance:
|
|
7077
|
|
7078 @quotation
|
|
7079 Many of the advanced features of this package, such as @code{defun*},
|
|
7080 @code{loop}, and @code{setf}, are implemented as Lisp macros. In
|
|
7081 byte-compiled code, these complex notations will be expanded into
|
|
7082 equivalent Lisp code which is simple and efficient. For example, the
|
|
7083 forms
|
|
7084
|
|
7085 @lisp
|
|
7086 (incf i n)
|
|
7087 (push x (car p))
|
|
7088 @end lisp
|
|
7089
|
|
7090 are expanded at compile-time to the Lisp forms
|
|
7091
|
|
7092 @lisp
|
|
7093 (setq i (+ i n))
|
|
7094 (setcar p (cons x (car p)))
|
|
7095 @end lisp
|
|
7096
|
|
7097 which are the most efficient ways of doing these respective operations
|
|
7098 in Lisp. Thus, there is no performance penalty for using the more
|
|
7099 readable @code{incf} and @code{push} forms in your compiled code.
|
|
7100
|
|
7101 @emph{Interpreted} code, on the other hand, must expand these macros
|
|
7102 every time they are executed. For this reason it is strongly
|
|
7103 recommended that code making heavy use of macros be compiled. (The
|
|
7104 features labelled @dfn{Special Form} instead of @dfn{Function} in this
|
|
7105 manual are macros.) A loop using @code{incf} a hundred times will
|
|
7106 execute considerably faster if compiled, and will also garbage-collect
|
|
7107 less because the macro expansion will not have to be generated, used,
|
|
7108 and thrown away a hundred times.
|
|
7109
|
|
7110 You can find out how a macro expands by using the @code{cl-prettyexpand}
|
|
7111 function.
|
|
7112 @end quotation
|
|
7113
|
2537
|
7114 @node Q7.1.8, Q7.1.9, Q7.1.7, Advanced
|
|
7115 @unnumberedsubsec Q7.1.8: I like recursion, does it slow things down?
|
2459
|
7116
|
|
7117 Yes. The Emacs byte-compiler cannot do much to optimize recursion. But
|
|
7118 think well whether this is a real concern in Emacs. Much of the Emacs
|
|
7119 slowness comes from internal mechanisms such as redisplay, or from the
|
|
7120 fact that it is an interpreter.
|
|
7121
|
|
7122 Please try not to make your code much uglier to gain a very small speed
|
|
7123 gain. It's not usually worth it.
|
|
7124
|
2537
|
7125 @node Q7.1.9, Q7.1.10, Q7.1.8, Advanced
|
|
7126 @unnumberedsubsec Q7.1.9: How do I put a glyph as annotation in a buffer?
|
2459
|
7127
|
|
7128 Here is a solution that will insert the glyph annotation at the
|
|
7129 beginning of buffer:
|
|
7130
|
|
7131 @lisp
|
|
7132 (make-annotation (make-glyph '([FORMAT :file FILE]
|
|
7133 [string :data "fallback-text"]))
|
|
7134 (point-min)
|
|
7135 'text
|
|
7136 (current-buffer))
|
|
7137 @end lisp
|
|
7138
|
|
7139 Replace @samp{FORMAT} with an unquoted symbol representing the format of
|
|
7140 the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.)
|
|
7141 Instead of @samp{FILE}, use the image file name
|
|
7142 (e.g.
|
|
7143 @iftex
|
|
7144 @*
|
|
7145 @end iftex
|
|
7146 @file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}).
|
|
7147
|
|
7148 You can turn this to a function (that optionally prompts you for a file
|
|
7149 name), and inserts the glyph at @code{(point)} instead of
|
|
7150 @code{(point-min)}.
|
|
7151
|
2537
|
7152 @node Q7.1.10, Q7.1.11, Q7.1.9, Advanced
|
|
7153 @unnumberedsubsec Q7.1.10: @code{map-extents} won't traverse all of my extents!
|
2459
|
7154
|
|
7155 I tried to use @code{map-extents} to do an operation on all the extents
|
|
7156 in a region. However, it seems to quit after processing a random number
|
|
7157 of extents. Is it buggy?
|
|
7158
|
|
7159 No. The documentation of @code{map-extents} states that it will iterate
|
|
7160 across the extents as long as @var{function} returns @code{nil}.
|
|
7161 Unexperienced programmers often forget to return @code{nil} explicitly,
|
|
7162 which results in buggy code. For instance, the following code is
|
|
7163 supposed to delete all the extents in a buffer, and issue as many
|
|
7164 @samp{fubar!} messages.
|
|
7165
|
|
7166 @lisp
|
|
7167 (map-extents (lambda (ext ignore)
|
|
7168 (delete-extent ext)
|
|
7169 (message "fubar!")))
|
|
7170 @end lisp
|
|
7171
|
|
7172 Instead, it will delete only the first extent, and stop right there --
|
|
7173 because @code{message} will return a non-nil value. The correct code
|
|
7174 is:
|
|
7175
|
|
7176 @lisp
|
|
7177 (map-extents (lambda (ext ignore)
|
|
7178 (delete-extent ext)
|
|
7179 (message "fubar!")
|
|
7180 nil))
|
|
7181 @end lisp
|
|
7182
|
2537
|
7183 @node Q7.1.11, Q7.2.1, Q7.1.10, Advanced
|
|
7184 @unnumberedsubsec Q7.1.11: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
|
2459
|
7185 @c New
|
|
7186
|
|
7187 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
|
|
7188 @quotation
|
|
7189 Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence},
|
|
7190 press a key (say @key{RET} in the Gnus Group buffer), and get the
|
|
7191 results using @kbd{M-x profile-results}. It should give you an idea of
|
|
7192 where the time is being spent.
|
|
7193 @end quotation
|
|
7194
|
2537
|
7195 @unnumberedsec 7.2: Mathematics
|
|
7196
|
|
7197 @node Q7.2.1, Q7.2.2, Q7.1.11, Advanced
|
|
7198 @unnumberedsubsec Q7.2.1: What are bignums, ratios, and bigfloats in Lisp?
|
2459
|
7199
|
|
7200 Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and
|
|
7201 later can use the capabilities of multiple-precision libraries that may
|
|
7202 be available for your platform. The GNU Multiple Precision (GMP) and
|
|
7203 BSD Multiple Precision (MP) libraries are partially supported. GMP
|
|
7204 gives you @dfn{bignums} (arbitrary precision integers), @dfn{ratios}
|
|
7205 (arbitrary precision fractions), and @dfn{bigfloats} (arbitrary
|
|
7206 precision floating point numbers). GNU MP is better-supported by XEmacs
|
|
7207 at the time of writing (2004-04-06). BSD MP support does not include
|
|
7208 ratios or bigfloats, and it throws errors that aren't understood.
|
|
7209
|
|
7210 In most cases, bignum support should be transparent to users and Lisp
|
|
7211 programmers. A bignum-enabled XEmacs will automatically convert from
|
|
7212 fixnums to bignums and back in pure integer arithmetic, and for GNU MP,
|
|
7213 from floats to bigfloats. (Bigfloats must be explicitly coerced to
|
|
7214 other types, even if they are exactly representable by less precise
|
|
7215 types.) The Lisp reader and printer have been enhanced to handle
|
|
7216 bignums, as have the mathematical functions. Rationals (fixnums,
|
|
7217 bignums, and ratios) are printed using the @samp{%d}, @samp{%o},
|
|
7218 @samp{%x}, and @samp{%u} format conversions. The read syntax for ratios
|
|
7219 is @samp{3/5}.
|
|
7220
|
|
7221 User-visible changes in behavior include (in probable order of annoyance)
|
|
7222
|
|
7223 @itemize
|
|
7224 @item
|
|
7225 Arithmetic can cause a segfault, depending on your MP library
|
2537
|
7226 @ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}.
|
2459
|
7227
|
|
7228 @item
|
|
7229 Terminology is not Common-Lisp-conforming. For example, ``integer'' for
|
|
7230 Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being
|
|
7231 investigated, but the use of ``integer'' for fixnum is pervasive and may
|
|
7232 cause backward-compatibility and GNU-Emacs-compatibility problems.
|
|
7233
|
|
7234 @item
|
|
7235 Many operations that used to cause a range error now succeed, with
|
|
7236 intermediate results and return values coerced to bignums as needed.
|
|
7237
|
|
7238 @item
|
|
7239 An atom with ratio read syntax now returns a number, not a symbol.
|
|
7240
|
|
7241 @item
|
|
7242 The @samp{%u} format conversion will now give an error if its argument
|
|
7243 is negative. (Without MP, it prints a number which Lisp can't read.)
|
|
7244 @end itemize
|
|
7245
|
|
7246 @emph{Surgeon General's Warning}: The automatic conversions cannot be
|
|
7247 disabled at runtime. New functions have been added which produce
|
|
7248 ratios, so there should be few surprises with type conflicts, but they
|
|
7249 can't be ruled out. ``Arbitrary'' precision means precisely what it
|
|
7250 says. If you work with extremely large numbers, your machine may
|
|
7251 arbitrarily decide to hand you an unpleasant surprise rather than a
|
2537
|
7252 bignum @ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}.
|
2459
|
7253
|
|
7254 To configure with GNU MP, add
|
|
7255 @samp{--use-number-lib=gmp}
|
|
7256 to your invocation of @file{configure}. For BSD MP, use
|
|
7257 @samp{--use-number-lib=mp}.
|
|
7258
|
|
7259 If you would like to help with bignum support, especially on BSD MP,
|
|
7260 please subscribe to the @uref{http://www.xemacs.org/Lists/#xemacs-beta,
|
|
7261 XEmacs Beta mailing list}, and book up on @file{number-gmp.h} and
|
|
7262 @file{number-mp.h}. Jerry has promised to write internals documentation
|
|
7263 eventually, but if your skills run more to analysis and documentation
|
|
7264 than to writing new code, feel free to fill in the gap!
|
|
7265
|
|
7266
|
2537
|
7267 @node Q7.2.2, Q7.2.3, Q7.2.1, Advanced
|
|
7268 @unnumberedsubsec Q7.2.2: XEmacs segfaults when I use very big numbers!
|
2459
|
7269
|
|
7270 GMP by default allocates temporaries on the stack. If you run out of
|
|
7271 stack space, you're dead; there is no way that we know of to reliably
|
|
7272 detect this condition, because @samp{alloca} is typically implemented to
|
|
7273 be @emph{fast} rather than robust. If you just need a little more
|
|
7274 oomph, use a bigger stack (@emph{e.g.}, the @file{ulimit -s} command in
|
|
7275 bash(1)). If you want robustness at the cost of speed, configure GMP
|
|
7276 with @samp{--disable-alloca} and rebuild the GMP library.
|
|
7277
|
|
7278 We do not know whether BSD MP uses @samp{alloca} or not. Please send
|
|
7279 any information you have as a bug report (@kbd{M-x report-xemacs-bug
|
|
7280 @key{RET}}), which will give us platform information. (We do know that
|
|
7281 BSD MP implementations vary across vendors, but how much, we do not know
|
|
7282 yet.)
|
|
7283
|
|
7284
|
2537
|
7285 @node Q7.2.3, Q7.2.4, Q7.2.2, Advanced
|
|
7286 @unnumberedsubsec Q7.2.3: Bignums are really slow!
|
2459
|
7287
|
|
7288 Many Linux distributions compile all their packages for the i386, and
|
|
7289 this is costly. An optimized version can give you two or three orders
|
|
7290 of magnitude better performance for a Pentium III or IV. (Yes, really.
|
|
7291 See @uref{http://www.swox.com/gmp/gmp-speed.html}.)
|
|
7292
|
|
7293
|
2537
|
7294 @node Q7.2.4, , Q7.2.3, Advanced
|
|
7295 @unnumberedsubsec Q7.2.4: Equal bignums don't compare as equal! What gives?
|
2459
|
7296
|
|
7297 Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva
|
|
7298 CLTL2 warned of the illusion that equal numbers would be @samp{eq}!
|
|
7299 Meditate on the deeper truths of @samp{eql}, in which numbers of the same
|
|
7300 type which have equal values compare equal, and @samp{=}, which does any
|
|
7301 necessary type coercions before comparing for equality.
|
|
7302
|
|
7303 Yeah, yeah, it has always worked for integer types, because fixnums and
|
|
7304 characters have an immediate representation. Sorry about that;
|
|
7305 arbitrary precision obviously requires consing new objects because the
|
|
7306 objects are ``large'' and of variable size, and the definition of
|
|
7307 @samp{eq} does not permit different objects to compare as equal.
|
|
7308
|
|
7309 @node Other Packages, Current Events, Advanced, Top
|
|
7310 @unnumbered 8 Other External Packages
|
|
7311
|
|
7312 This is part 8 of the XEmacs Frequently Asked Questions list. This
|
|
7313 section is devoted to miscellaneous external packages not covered
|
|
7314 elsewhere in XEmacs.
|
|
7315
|
|
7316 @menu
|
2537
|
7317 8.0: TeX
|
2459
|
7318 * Q8.0.1:: Is there something better than LaTeX mode?
|
|
7319 * Q8.0.2:: What is AUCTeX? Where do you get it?
|
|
7320 * Q8.0.3:: Problems installing AUCTeX.
|
|
7321 * Q8.0.4:: How do I turn off current chapter from AUCTeX modeline?
|
|
7322
|
|
7323 8.1: Other Unbundled Packages
|
|
7324 * Q8.1.1:: Is there a reason for an Emacs package not to be included in XEmacs?
|
|
7325 * Q8.1.2:: Are there any Emacs Lisp Spreadsheets?
|
|
7326 * Q8.1.3:: Is there a MatLab mode?
|
|
7327
|
|
7328 8.2: Environments Built Around XEmacs
|
|
7329 * Q8.2.1:: What are SPARCworks, EOS, and WorkShop?
|
|
7330 * Q8.2.2:: How do I start the Sun Workshop support in XEmacs 21?
|
|
7331 * Q8.2.3:: What is/was Energize?
|
|
7332 * Q8.2.4:: What is Infodock?
|
|
7333 @end menu
|
|
7334
|
|
7335 @unnumberedsec 8.0: TeX
|
|
7336
|
|
7337 @node Q8.0.1, Q8.0.2, Other Packages, Other Packages
|
|
7338 @unnumberedsubsec Q8.0.1: Is there something better than LaTeX mode?
|
2417
|
7339
|
|
7340 @email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes:
|
|
7341
|
|
7342 @quotation
|
|
7343 The standard TeX modes leave much to be desired, and are somewhat
|
2459
|
7344 leniently maintained. Serious TeX users use AUCTeX (@pxref{Q8.0.2,
|
2417
|
7345 What is AUCTeX? Where do you get it?}).
|
|
7346 @end quotation
|
|
7347
|
2459
|
7348 @node Q8.0.2, Q8.0.3, Q8.0.1, Other Packages
|
|
7349 @unnumberedsubsec Q8.0.2: What is AUCTeX? Where do you get it?
|
2417
|
7350
|
|
7351 AUCTeX is a complex and sophisticated editing package dedicated to TeX
|
|
7352 and related text formatting languages, including LaTeX and Texinfo.
|
|
7353 It provides support for running TeX on a file or part of a file,
|
|
7354 include files, and of course shortcuts for entering common TeX macros,
|
|
7355 LaTeX environments, etc, and for fontlock.
|
|
7356
|
|
7357 AUCTeX is a standard package provided by XEmacs. You can get it as
|
|
7358 usual through the @kbd{M-x list-packages} interface. It is also
|
|
7359 included in the (non-Mule) SUMO package. The AUCTeX XEmacs package is
|
|
7360 maintained by Uwe Brauer <GET MAIL ADDRESS>.
|
|
7361
|
|
7362 AUCTeX is extremely complicated, and its developers primarily
|
|
7363 use GNU Emacs. Not all features of the bleeding edge version
|
|
7364 of AUCTeX are immediately ported to XEmacs; if you need
|
|
7365 these, you may be better off getting the most recent versions
|
|
7366 from the GNU AUCTeX project on @uref{http://savannah.gnu.org}.
|
|
7367
|
2459
|
7368 @node Q8.0.3, Q8.0.4, Q8.0.2, Other Packages
|
|
7369 @unnumberedsubsec Q8.0.3: Problems installing AUCTeX.
|
2417
|
7370
|
|
7371 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes:
|
|
7372
|
|
7373 @quotation
|
|
7374 AUCTeX works fine on both stock Emacs and XEmacs has been doing so for
|
|
7375 a very very long time. This is mostly due to the work of
|
|
7376 @email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu}
|
|
7377 package. Which leads to what is probably the problem...
|
|
7378 @end quotation
|
|
7379
|
|
7380 Most problems with AUCTeX are one of two things:
|
|
7381
|
|
7382 @itemize @bullet
|
|
7383 @item
|
|
7384 The TeX-lisp-directory in @file{tex-site.el} and the makefile don't
|
|
7385 match.
|
|
7386
|
|
7387 Fix: make sure you configure AUCTeX properly @strong{before} installing.
|
|
7388
|
|
7389 @item
|
|
7390 You have an old version of easymenu.el in your path.
|
|
7391
|
|
7392 Fix: use @code{locate-library} and remove old versions to make sure it
|
|
7393 @strong{only} finds the one that came with XEmacs.
|
|
7394 @end itemize
|
|
7395
|
2459
|
7396 @node Q8.0.4, Q8.1.1, Q8.0.3, Other Packages
|
|
7397 @unnumberedsubsec Q8.0.4: How do I turn off current chapter from AUCTeX modeline?
|
2417
|
7398
|
|
7399 With AUCTeX, fast typing is hard because the current chapter, section
|
|
7400 etc. are given in the modeline. How can I turn this off?
|
|
7401
|
|
7402 It's not AUCTeX, it comes from @code{func-menu} in @file{func-menu.el}.
|
|
7403
|
|
7404 @c Add this code to your @file{init.el} to turn it off:
|
|
7405 @c
|
|
7406 @c @lisp
|
|
7407 @c (setq fume-display-in-modeline-p nil)
|
|
7408 @c @end lisp
|
|
7409 @c
|
|
7410 @c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX
|
|
7411 @c mode:
|
|
7412 @c
|
|
7413 @c @lisp
|
|
7414 @c (add-hook 'TeX-mode-hook
|
|
7415 @c '(lambda () (setq fume-display-in-modeline-p nil)))
|
|
7416 @c @end lisp
|
|
7417 @c
|
|
7418 @email{dhughes@@origin-at.co.uk, David Hughes} writes:
|
|
7419
|
|
7420 @quotation
|
|
7421 Try this; you'll still get the function name displayed in the modeline,
|
|
7422 but it won't attempt to keep track when you modify the file. To refresh
|
|
7423 when it gets out of synch, you simply need click on the @samp{Rescan
|
|
7424 Buffer} option in the function-menu.
|
|
7425
|
|
7426 @lisp
|
|
7427 (setq-default fume-auto-rescan-buffer-p nil)
|
|
7428 @end lisp
|
|
7429 @end quotation
|
|
7430
|
2459
|
7431 @unnumberedsec 8.1: Other Unbundled Packages
|
|
7432
|
|
7433 @node Q8.1.1, Q8.1.2, Q8.0.4, Other Packages
|
|
7434 @unnumberedsubsec Q8.1.1: Is there a reason for an Emacs package not to be included in XEmacs?
|
2417
|
7435
|
|
7436 The reason for an Emacs package not to be included in XEmacs is
|
|
7437 usually one or more of the following:
|
|
7438
|
|
7439 @enumerate
|
|
7440 @item
|
|
7441 The package has not been ported to XEmacs. This will typically happen
|
|
7442 when it uses GNU-Emacs-specific features, which make it fail under
|
|
7443 XEmacs.
|
|
7444
|
|
7445 Porting a package to XEmacs can range from a trivial amount of change to
|
|
7446 a partial or full rewrite. Fortunately, the authors of modern packages
|
|
7447 usually choose to support both Emacsen themselves.
|
|
7448
|
|
7449 @item
|
|
7450 The package has been decided not to be appropriate for XEmacs. It may
|
|
7451 have an equivalent or better replacement within XEmacs, in which case
|
|
7452 the developers may choose not to burden themselves with supporting an
|
|
7453 additional package.
|
|
7454
|
|
7455 Each package bundled with XEmacs means more work for the maintainers,
|
|
7456 whether they want it or not. If you are ready to take over the
|
|
7457 maintenance responsibilities for the package you port, be sure to say
|
|
7458 so---we will more likely include it.
|
|
7459
|
|
7460 @item
|
|
7461 The package simply hasn't been noted by the XEmacs development. If
|
|
7462 that's the case, the messages like yours are very useful for attracting
|
|
7463 our attention.
|
|
7464
|
|
7465 @item
|
|
7466 The package was noted by the developers, but they simply haven't yet
|
|
7467 gotten around to including/porting it. Wait for the next release or,
|
|
7468 even better, offer your help. It will be gladly accepted and
|
|
7469 appreciated.
|
|
7470 @end enumerate
|
|
7471
|
2459
|
7472 @node Q8.1.2, Q8.1.3, Q8.1.1, Other Packages
|
|
7473 @unnumberedsubsec Q8.1.2: Are there any Emacs Lisp Spreadsheets?
|
2417
|
7474
|
|
7475 Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at
|
428
|
7476 @iftex
|
|
7477 @*
|
|
7478 @end iftex
|
2459
|
7479 @uref{http://acs.ist.psu.edu/dismal/dismal.html}.
|
|
7480
|
|
7481 @node Q8.1.3, Q8.2.1, Q8.1.2, Other Packages
|
|
7482 @unnumberedsubsec Q8.1.3: Is there a MatLab mode?
|
2417
|
7483
|
|
7484 Yes, a matlab mode and other items are available at the
|
2459
|
7485 @uref{http://www.mathworks.com/matlabcentral/files/104/matlab.el}.
|
|
7486
|
|
7487 @unnumberedsec 8.2: Environments Built Around XEmacs
|
|
7488
|
|
7489 @node Q8.2.1, Q8.2.2, Q8.1.3, Other Packages
|
|
7490 @unnumberedsubsec Q8.2.1: What are SPARCworks, EOS, and WorkShop?
|
2417
|
7491
|
|
7492 SPARCworks was a development environment from Sun (circa 1993-1996)
|
|
7493 and consisted of compilers (C, C++, FORTRAN 77, Fortran 90, Ada, and
|
|
7494 Pascal), a debugger, and other tools such as TeamWare (for
|
|
7495 configuration management), MakeTool, etc.
|
428
|
7496
|
|
7497 EOS is the integration of XEmacs with the SPARCworks debugger. It
|
|
7498 allows one to use an XEmacs frame to view code (complete with
|
|
7499 fontification, etc.), set breakpoints, print variables, etc., while
|
2417
|
7500 using the SPARCworks debugger.
|
|
7501
|
|
7502 EOS stands for "Era on SPARCworks"; Era stood for "Emacs Rewritten
|
|
7503 Again" and was the name used by Sun for its modified version of Lucid
|
|
7504 Emacs (later XEmacs) in the early-mid 90's. This is documented in
|
|
7505 more detail in the history section of the XEmacs About page.
|
|
7506
|
|
7507 EOS was replaced around 1996 with a newer graphical development
|
|
7508 environment called Sun WorkShop. The current status of this is
|
|
7509 unknown.
|
|
7510
|
2459
|
7511 @node Q8.2.2, Q8.2.3, Q8.2.1, Other Packages
|
|
7512 @unnumberedsubsec Q8.2.2: How do I start the Sun Workshop support in XEmacs 21?
|
428
|
7513
|
|
7514 Add the switch ---with-workshop to the configure command when building
|
|
7515 XEmacs and put the following in one of your startup files
|
|
7516 (e.g. site-start.el or .emacs):
|
|
7517
|
|
7518 @lisp
|
|
7519 (when (featurep 'tooltalk)
|
|
7520 (load "tooltalk-macros")
|
|
7521 (load "tooltalk-util")
|
|
7522 (load "tooltalk-init"))
|
|
7523 (when (featurep 'sparcworks)
|
|
7524 (load "sunpro-init")
|
|
7525 (load "ring")
|
|
7526 (load "comint")
|
|
7527 (load "annotations")
|
|
7528 (sunpro-startup))
|
|
7529 @end lisp
|
|
7530
|
|
7531 If you are not using the latest Workshop (5.0) you have to apply the
|
|
7532 following patch:
|
|
7533
|
|
7534 @format
|
|
7535 --- /opt/SUNWspro/lib/eserve.el.ORIG Fri May 14 15:23:26 1999
|
|
7536 +++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999
|
|
7537 @@@@ -42,7 +42,7 @@@@
|
|
7538 (defvar running-xemacs nil "t if we're running XEmacs")
|
|
7539 (defvar running-emacs nil "t if we're running GNU Emacs 19")
|
438
|
7540
|
428
|
7541 -(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
|
|
7542 +(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
|
|
7543 (setq running-xemacs t)
|
|
7544 (setq running-emacs t))
|
438
|
7545 @end format
|
428
|
7546
|
2459
|
7547 @node Q8.2.3, Q8.2.4, Q8.2.2, Other Packages
|
|
7548 @unnumberedsubsec Q8.2.3: What is/was Energize?
|
2417
|
7549
|
|
7550 The "Energize Programming System" was a C and C++ development environment
|
|
7551 sold by Lucid, Inc. It was the reason why Lucid Emacs, now XEmacs, was
|
|
7552 created in the first place. Unfortunately, Lucid went out of business in
|
|
7553 1994. The rights to sell it in Japan were purchased by INS
|
|
7554 Engineering (which briefly employed Stig Hackvan aka Jonathan
|
|
7555 Stigelman to work on Japanese support for XEmacs, in late 1994 and
|
|
7556 early 1995) and Tartan bought the rights to sell it in the rest of the
|
|
7557 world. However, INS is not selling Energize at this point and may or
|
|
7558 may not have ever done so; Tartan certainly never did.
|
|
7559
|
2459
|
7560 @node Q8.2.4, , Q8.2.3, Other Packages
|
|
7561 @unnumberedsubsec Q8.2.4: What is Infodock?
|
428
|
7562
|
660
|
7563 @uref{http://sourceforge.net/projects/infodock/, InfoDock} is an
|
|
7564 integrated productivity toolset, mainly aimed at technical people,
|
|
7565 hosted at SourceForge.
|
428
|
7566
|
|
7567 InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of
|
|
7568 the power of Emacs, but with an easier to use and more comprehensive
|
|
7569 menu-based user interface. The bottom portion of this text describes
|
|
7570 how it differs from XEmacs and GNU Emacs from the Free Software
|
|
7571 Foundation.
|
|
7572
|
|
7573 InfoDock is aimed at people who want a free, turn-key productivity
|
|
7574 environment. Although InfoDock is customizable, it is not intended for
|
|
7575 people who like basic versions of Emacs which need to be customized
|
|
7576 extensively for local use; standard Emacs distributions are better for
|
|
7577 such uses. InfoDock is for those people who want a complete,
|
|
7578 pre-customized environment in one package, which they need not touch
|
|
7579 more than once or twice a year to update to new revisions.
|
|
7580
|
|
7581 InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX,
|
|
7582 and Intel Linux systems. It is intended for use on a color display,
|
|
7583 although most features will work on monochrome monitors. Simply unpack
|
|
7584 InfoDock according to the instructions in the ID-INSTALL file and you
|
|
7585 are ready to run.
|
|
7586
|
|
7587 The InfoDock Manual is concise, yet sufficient as a user guide for users
|
|
7588 who have never used an Emacs-type editor before. For users who are
|
|
7589 already familiar with Emacs, it supplements the information in the GNU
|
|
7590 Emacs Manual.
|
|
7591
|
|
7592 InfoDock menus are much more extensive and more mature than standard
|
|
7593 Emacs menus. Each menu offers a @samp{Manual} item which displays
|
|
7594 documentation associated with the menu's functions.
|
|
7595
|
|
7596 @noindent
|
|
7597 Four types of menubars are provided:
|
|
7598 @enumerate
|
|
7599 @item
|
|
7600 An extensive menubar providing access to global InfoDock commands.
|
|
7601 @item
|
|
7602 Mode-specific menubars tailored to the current major mode.
|
|
7603 @item
|
|
7604 A simple menubar for basic editing to help novices get started with InfoDock.
|
|
7605 @item
|
|
7606 The standard XEmacs menubar.
|
|
7607 @end enumerate
|
|
7608
|
|
7609 Most modes also include mode-specific popup menus. Additionally, region and
|
|
7610 rectangle popup menus are included.
|
|
7611
|
|
7612 @samp{Hyperbole}, the everyday information manager, is a core part of
|
|
7613 InfoDock. This provides context-sensitive mouse keys, a rolodex-type
|
|
7614 contact manager, programmable hypertext buttons, and an autonumbered
|
|
7615 outliner with embedded hyperlink anchors.
|
|
7616
|
|
7617 The @samp{OO-Browser}, a multi-language object-oriented code browser, is a
|
|
7618 standard part of InfoDock.
|
|
7619
|
|
7620 InfoDock saves a more extensive set of user options than other Emacs
|
|
7621 versions.
|
|
7622
|
|
7623 InfoDock inserts a useful file header in many file types, showing the
|
|
7624 author, summary, and last modification time of each file. A summary
|
|
7625 program can then be used to summarize all of the files in a directory,
|
|
7626 for easy MANIFEST file creation.
|
|
7627
|
|
7628 Your working set of buffers is automatically saved and restored (if you
|
|
7629 answer yes to a prompt) between InfoDock sessions.
|
|
7630
|
|
7631 Refined color choices for code highlighting are provided for both dark and
|
|
7632 light background display frames.
|
|
7633
|
|
7634 The @kbd{C-z} key prefix performs frame-based commands which parallel the
|
|
7635 @kbd{C-x} key prefix for window-based commands.
|
|
7636
|
|
7637 The Smart Menu system is included for producing command menus on dumb
|
|
7638 terminals.
|
|
7639
|
|
7640 Lisp libraries are better categorized according to function.
|
|
7641
|
|
7642 Extensions and improvements to many areas of Emacs are included, such as:
|
|
7643 paragraph filling, mail reading with Rmail, shell handling, outlining, code
|
|
7644 highlighting and browsing, and man page browsing.
|
|
7645
|
|
7646 InfoDock questions, answers and discussion should go to the mail list
|
|
7647 @iftex
|
|
7648 @*
|
|
7649 @end iftex
|
|
7650 @email{infodock@@infodock.com}. Use
|
|
7651 @email{infodock-request@@infodock.com} to be added or removed from the
|
|
7652 list. Always include your InfoDock version number when sending help
|
|
7653 requests.
|
|
7654
|
2459
|
7655 @node Current Events, Legacy Versions, Other Packages, Top
|
|
7656 @unnumbered 9 What the Future Holds
|
|
7657
|
|
7658 This is part 9 of the XEmacs Frequently Asked Questions list. This
|
611
|
7659 section will change frequently, and (in theory) should contain any
|
|
7660 interesting items that have transpired recently. (But in practice it's
|
|
7661 not getting updated like this.)
|
|
7662
|
|
7663 This section also contains descriptions of the new features in all the
|
|
7664 recent releases of XEmacs. For the most part, the information below is
|
|
7665 a synopsis of the more complete information that can be found in the
|
|
7666 file @file{NEWS} in the @file{etc} directory of the XEmacs distribution.
|
|
7667 You can view this file in XEmacs using @kbd{C-h n} or the @samp{Help}
|
|
7668 menu.
|
|
7669
|
|
7670 Information on older versions of XEmacs can be find in @file{ONEWS} in
|
|
7671 the same directory, or @file{OONEWS} for really old versions.
|
|
7672
|
428
|
7673 @menu
|
2537
|
7674 9.0: Changes
|
2459
|
7675 * Q9.0.1:: What new features will be in XEmacs soon?
|
|
7676 * Q9.0.2:: What's new in XEmacs 21.4?
|
|
7677 * Q9.0.3:: What's new in XEmacs 21.1?
|
|
7678 * Q9.0.4:: What's new in XEmacs 20.4?
|
|
7679 * Q9.0.5:: What's new in XEmacs 20.3?
|
|
7680 * Q9.0.6:: What's new in XEmacs 20.2?
|
428
|
7681 @end menu
|
|
7682
|
2459
|
7683 @unnumberedsec 9.0: Changes
|
|
7684
|
|
7685 @node Q9.0.1, Q9.0.2, Current Events, Current Events
|
|
7686 @unnumberedsubsec Q9.0.1: What new features will be in XEmacs soon?
|
611
|
7687
|
2417
|
7688 #### Write me.
|
428
|
7689
|
2459
|
7690 @node Q9.0.2, Q9.0.3, Q9.0.1, Current Events
|
|
7691 @unnumberedsubsec Q9.0.2: What's new in XEmacs 21.4?
|
611
|
7692
|
|
7693 21.4 was the "stable" version of the 21.2 series, which was considered
|
|
7694 "experimental" throughout its life; thus there were no "official"
|
|
7695 releases at all. In essence, XEmacs is now following the "alternating"
|
|
7696 scheme of Linux, where at any point there are at least two different
|
|
7697 development branches, one "stable" and one "experimental". Periodic
|
|
7698 releases happen in both branches, but those in the experimental branch
|
|
7699 are not tested as well, and there's no guarantee they will work at all.
|
|
7700 The experiemental branch is open to any and all code that's acceptable
|
|
7701 to the developers; the stable branch, however, is in general limited
|
|
7702 only to bug fixes, and all contributions are carefully reviewed to make
|
|
7703 sure they will increase and not decrease stability.
|
|
7704
|
|
7705 21.3 never existed at all; it was decided to follow the Linux scheme
|
|
7706 exactly, where odd-numbered series are experimental and even-numbered
|
|
7707 ones stable.
|
|
7708
|
|
7709 The following lists summarizes the essential changes made in this
|
|
7710 version. For a fuller list, see the @file{NEWS} in the @file{etc}
|
|
7711 directory of the XEmacs distribution, or use @kbd{C-h n} or the
|
|
7712 @samp{Help} menu to view this file inside of XEmacs.
|
|
7713
|
676
|
7714 @unnumberedsubsubsec User-visible changes in XEmacs 21.4
|
611
|
7715
|
|
7716 @itemize @bullet
|
|
7717
|
|
7718 @item
|
|
7719 The delete key now deletes forward by default.
|
|
7720 @item
|
|
7721 Shifted motion keys now select text by default.
|
|
7722 @item
|
|
7723 You can now build XEmacs with support for GTK+ widget set.
|
|
7724 @item
|
|
7725 ~/.xemacs/init.el is now the preferred location for the init
|
|
7726 file. (XEmacs now supports a `~/.xemacs/init.el' startup file. Custom
|
|
7727 file will move to ~/.xemacs/custom.el.)
|
|
7728 @item
|
|
7729 Much-improved sample init.el, showing how to use many useful features.
|
|
7730 @item
|
|
7731 XEmacs support for menu accelerators has been much improved.
|
|
7732 @item
|
|
7733 Default menubar improvements. (Default menubar has many new commands and
|
|
7734 better organization. The font-menu is now available under MS Windows.)
|
|
7735 @item
|
2417
|
7736 Dialog box improvements, including a real file dialog box. (XEmacs now
|
|
7737 has a proper file dialog box under MS Windows (and GTK)! The old
|
|
7738 clunky file dialog box is improved. Keyboard traversal now works
|
|
7739 correctly in MS Windows dialog boxes. There is a Search dialog box
|
|
7740 available from @samp{Edit->Find...})
|
611
|
7741 @item
|
|
7742 New buffer tabs.
|
|
7743 @item
|
|
7744 There is a new MS Windows installer, netinstall, ported from Cygwin.
|
|
7745 @item
|
|
7746 The subprocess quote-handling mechanism under Windows is much improved.
|
|
7747 @item
|
|
7748 Printing support now available under MS Windows.
|
|
7749 @item
|
|
7750 Selection improvements. (Kill and yank now interact with the clipboard under Windows. MS Windows support for selection is now much more robust. Motif selection support is now more correct (but slower).)
|
|
7751 @item
|
|
7752 Mail spool locking now works correctly.
|
|
7753 @item
|
|
7754 International support changes. (The default coding-priority-list is now
|
|
7755 safer. International keysyms are now supported under X. MS Windows
|
|
7756 1251 code page now supported. Czech, Thai, Cyrillic-KOI8, Vietnamese,
|
|
7757 Ethiopic now supported. Proper support for words in Latin 3 and Latin
|
|
7758 4.)
|
|
7759 @item
|
|
7760 Help buffers contain hyperlinks, and other changes.
|
|
7761 @item
|
|
7762 The modeline's text is now scrollable.
|
|
7763 @item
|
|
7764 The mouse wheel under MS Windows now functions correctly.
|
|
7765 @item
|
|
7766 Interactive searching and matching case improvements. (Incremental search will now highlight all visible matches. Interactive searches always respect uppercase characters.)
|
|
7767 @item
|
|
7768 Rectangle functions rewritten to avoid inserting extra spaces.
|
|
7769 @item
|
|
7770 New command `kill-entire-line' that always kills the entire line.
|
|
7771 @item
|
|
7772 Default values correctly stored in minibuffer histories.
|
|
7773 @item
|
|
7774 You can now create "indirect buffers", like in GNU Emacs.
|
|
7775 @item
|
|
7776 Pixel-based scrolling has been implemented.
|
|
7777 @item
|
|
7778 Operation progress can be displayed using graphical widgets.
|
|
7779 @item
|
|
7780 User names following a tilde can now be completed at file name prompts.
|
|
7781 @item
|
|
7782 XEmacs can now play sound using Enlightenment Sound Daemon (ESD).
|
|
7783 @item
|
|
7784 X-Face support is now available under MS Windows.
|
|
7785 @item
|
|
7786 The PostgreSQL Relational Database Management System is now supported.
|
|
7787 @item
|
|
7788 Indentation no longer indents comments that begin at column zero.
|
|
7789 @item
|
|
7790 Face and variable settings can have comments in Customize.
|
|
7791 @item
|
|
7792 New locations for early package hierarchies.
|
|
7793 @item
|
|
7794 The `auto-save' library has been greatly improved.
|
|
7795 @item
|
|
7796 New variable `mswindows-alt-by-itself-activates-menu'.
|
|
7797 @item
|
|
7798 Other init-file-related changes. (Init file in your home directory may be called `.emacs.el'. New command-line switches -user-init-file and -user-init-directory.)
|
|
7799 @item
|
|
7800 Etags changes. See @file{NEWS} for full details.
|
|
7801 @end itemize
|
|
7802
|
676
|
7803 @unnumberedsubsubsec Lisp and internal changes in XEmacs 21.4
|
611
|
7804
|
|
7805 Not yet written.
|
|
7806
|
661
|
7807 @c APA: Texi2html produces invalid HTML from an empty list of bullets!
|
|
7808 @c Please uncomment following list when it does contain bullets.
|
|
7809 @c @itemize @bullet
|
|
7810 @c @end itemize
|
611
|
7811
|
2459
|
7812 @node Q9.0.3, Q9.0.4, Q9.0.2, Current Events
|
|
7813 @unnumberedsubsec Q9.0.3: What's new in XEmacs 21.1?
|
611
|
7814
|
|
7815 21.1 was the "stable" version of "experimental" 21.0 series.
|
2459
|
7816 @xref{Q9.0.2, What's new in XEmacs 21.4?}.
|
611
|
7817
|
|
7818 The following lists summarizes the essential changes made in this
|
|
7819 version. For a fuller list, see the @file{NEWS} in the @file{etc}
|
|
7820 directory of the XEmacs distribution, or use @kbd{C-h n} or the
|
|
7821 @samp{Help} menu to view this file inside of XEmacs.
|
|
7822
|
676
|
7823 @unnumberedsubsubsec User-visible changes in XEmacs 21.1
|
611
|
7824
|
|
7825 @itemize @bullet
|
|
7826
|
|
7827 @item
|
2459
|
7828 XEmacs is now supported under Microsoft Windows 95/98 and Windows
|
2417
|
7829 NT/2000/XP operating systems. To discuss Windows-specific issues,
|
|
7830 subscribe to the mailing list at
|
|
7831 @email{xemacs-winnt-request@@xemacs.org}.
|
611
|
7832
|
|
7833 @item
|
|
7834 XEmacs has been unbundled into constituent installable packages.
|
|
7835
|
|
7836 @item
|
|
7837 @strong{Other notable changes}: The @samp{Options} menu has been ported to
|
|
7838 Custom; XEmacs now is able to choose X visuals and use private
|
|
7839 colormaps; You can drag the vertical divider of "horizontally"
|
|
7840 (side-by-side) split windows.
|
|
7841
|
|
7842 @item
|
|
7843 @strong{Building changes}: XEmacs can be built with support for 31-bit Lisp
|
|
7844 integers and 32-bit pointers (previously, it was 28-bit integers and
|
|
7845 pointers); XEmacs can be built with LDAP support; @file{dir} files can be
|
|
7846 removed in the Info subsystem, and will be regenerated on-the-fly.
|
|
7847
|
|
7848 @item
|
|
7849 @strong{New packages}: @file{imenu}, @file{popper}, @file{gdb-highlight}
|
|
7850
|
|
7851 @item
|
|
7852 @strong{Package changes}: Many changes to @file{cc-mode}, @file{gnus},
|
|
7853 @file{gnuclient}. See @file{NEWS} for full details.
|
|
7854
|
|
7855 @item
|
|
7856 @strong{New commands, variables and functions}:
|
|
7857 @code{center-to-window-line} (like @code{recenter} but doesn't force a
|
|
7858 redisplay); variable @code{user-full-name} (customize what your full
|
|
7859 name looks like in mail); @kbd{M-x customize-changed-options} (customize
|
|
7860 options whose default values changes because you upgraded your XEmacs);
|
|
7861 @kbd{M-x add-log-convert} (converts an old-style ChangeLog buffer to
|
|
7862 new-style); @kbd{M-x zap-up-to-char} (like @code{zap-to-char} but
|
|
7863 doesn't delete the char searched for); commands to store, retrieve and
|
|
7864 increment numbers in registers, useful for macros.
|
|
7865
|
|
7866 @item
|
|
7867 @strong{Changes to commands, variables, and functions}: @kbd{M-x
|
|
7868 query-replace} and friends operate only on the region when it's active;
|
|
7869 @code{echo-keystrokes} can now be a floating-point number; @kbd{M-.}
|
|
7870 searches exact tag matches before inexact ones; function
|
|
7871 @code{user-full-name} with no arguments returns the var
|
|
7872 @code{user-full-name}; a prefix arg to @kbd{M-:} and @kbd{C-h c} inserts
|
|
7873 the result in the current buffer.
|
1138
|
7874
|
611
|
7875 @item
|
|
7876 @strong{Other changes}: Under X, new application class @samp{XEmacs};
|
|
7877 byte-compilation of user-specs now works.
|
|
7878
|
|
7879 @item
|
|
7880 @strong{XEmacs/Mule (internationalization) changes}: Mule support now
|
|
7881 works on TTY's; Egg/SJ3 input method now officially supported (Quail and
|
|
7882 Egg/Skk already available through LEIM since 20.3); localized Japanese
|
|
7883 menubars if XEmacs is built with the right support.
|
|
7884
|
|
7885 @end itemize
|
|
7886
|
676
|
7887 @unnumberedsubsubsec Lisp and internal changes in XEmacs 21.1
|
611
|
7888
|
|
7889 @itemize @bullet
|
|
7890
|
|
7891 @item
|
|
7892 @strong{Specifier changes}: The window locale now has a higher
|
|
7893 precedence than the buffer locale when instantiating; new macro
|
|
7894 @code{let-specifier}; new specifiers
|
|
7895 @code{vertical-scrollbar-visible-p}, horizontal-scrollbar-visible-p',
|
|
7896 @code{scrollbar-on-left-p}, @code{scrollbar-on-top-p},
|
|
7897 @code{vertical-divider-always-visible-p},
|
|
7898 @code{vertical-divider-shadow-thickness},
|
|
7899 @code{vertical-divider-line-width}, @code{vertical-divider-spacing};
|
|
7900 specifiers and symbols whose value is a specifier allowed as modeline
|
|
7901 specifications.
|
|
7902
|
|
7903 @item
|
|
7904 @strong{Frame focus changes}: @code{focus-follows-mouse} works like FSF,
|
|
7905 prevents any attempt to permanently change the selected frame; new
|
|
7906 function @code{focus-frame} sets the window system focus a frame; new
|
|
7907 special forms @code{save-selected-frame} and @code{with-selected-frame}.
|
|
7908
|
|
7909 @item
|
|
7910 @strong{Window function changes}: @code{select-window} now has optional
|
|
7911 argument @var{NORECORD} to inhibit recording a buffer change;
|
|
7912 @code{vertical-motion} now correctly handles optional @var{WINDOW}
|
|
7913 argument and has new optional argument @var{PIXELS}, to have the
|
|
7914 returned values be in pixels; new function
|
|
7915 @code{vertical-motion-pixels}; new functions
|
|
7916 @code{window-text-area-pixel-@{width,height,edges@}}; new functions
|
|
7917 @code{shrink-window-pixels} and @code{enlarge-window-pixels}; new
|
|
7918 function @code{window-displayed-text-pixel-height}.
|
|
7919
|
|
7920 @item
|
|
7921 @strong{Other function changes}: Arithmetic comparison functions
|
|
7922 @code{<}, @code{>}, @code{=}, @code{/=} now accept a variable number of
|
|
7923 arguments; hashtables now have a consistent read/print syntax; keyword
|
|
7924 symbols cannot be set to a value other than themselves; @code{concat} no
|
|
7925 longer accepts integer arguments; new function @code{string}, like
|
|
7926 @code{list}, @code{vector}, etc.; new function @code{temp-directory}
|
|
7927 (OS-independent way to get a temp directory); @code{load-average} has
|
|
7928 optional argument @var{USE-FLOATS}; @code{make-event} implemented
|
|
7929 completely; new function @code{function-interactive} (returns a
|
|
7930 function's interactive spec); new functions @code{lmessage},
|
|
7931 @code{lwarn} (printf-like versions of @code{display-wessage},
|
|
7932 @code{display-warning}); new keyword @code{:version} to
|
|
7933 @code{defcustom}.
|
|
7934
|
|
7935 @item
|
|
7936 @strong{Performance}: when the new GNU Malloc aka Doug Lea Malloc is
|
|
7937 available, it will be used (better performance on libc6 Linux systems);
|
|
7938 tracking line-numbers in modeline is now efficient; profiling records a
|
|
7939 call-count of all called functions, retrievable through
|
|
7940 @code{profile-call-count-results}.
|
|
7941
|
|
7942 @item
|
|
7943 @strong{Startup and path searching}: code to assemble paths at startup
|
|
7944 rewritten for new package system; new function @code{split-path} (splits
|
|
7945 by @code{path-separator}); @code{Info-default-directory-list} obsolete,
|
|
7946 use @code{Info-directory-list} instead; site-lisp is deprecated and no
|
|
7947 longer on the load-path by default.
|
|
7948
|
|
7949 @end itemize
|
|
7950
|
2459
|
7951 @node Q9.0.4, Q9.0.5, Q9.0.3, Current Events
|
|
7952 @unnumberedsubsec Q9.0.4: What's new in XEmacs 20.4?
|
611
|
7953
|
|
7954 XEmacs 20.4 is a bugfix release with no user-visible changes.
|
|
7955 @c Filled in from NEWS file of 20.5-b33
|
|
7956
|
2459
|
7957 @node Q9.0.5, Q9.0.6, Q9.0.4, Current Events
|
|
7958 @unnumberedsubsec Q9.0.5: What's new in XEmacs 20.3?
|
428
|
7959
|
|
7960 XEmacs 20.3 was released in November 1997. It contains many bugfixes,
|
|
7961 and a number of new features, including Autoconf 2 based configuration,
|
|
7962 additional support for Mule (Multi-language extensions to Emacs), many
|
|
7963 more customizations, multiple frames on TTY-s, support for multiple info
|
|
7964 directories, an enhanced gnuclient, improvements to regexp matching,
|
|
7965 increased MIME support, and many, many synches with GNU Emacs 20.
|
|
7966
|
|
7967 The XEmacs/Mule support has been only seriously tested in a Japanese
|
|
7968 locale, and no doubt many problems still remain. The support for
|
|
7969 ISO-Latin-1 and Japanese is fairly strong. MULE support comes at a
|
440
|
7970 price---about a 30% slowdown from 19.16. We're making progress on
|
428
|
7971 improving performance and XEmacs 20.3 compiled without Mule (which is
|
|
7972 the default) is definitely faster than XEmacs 19.16.
|
|
7973
|
|
7974 XEmacs 20.3 is the first non-beta v20 release, and will be the
|
|
7975 basis for all further development.
|
|
7976
|
2459
|
7977 @node Q9.0.6, , Q9.0.5, Current Events
|
|
7978 @unnumberedsubsec Q9.0.6: What's new in XEmacs 20.2?
|
611
|
7979
|
|
7980 The biggest changes in 20.2 include integration of EFS (the next
|
|
7981 generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a
|
|
7982 major mode for editing Tex and LaTeX, and a lot of other stuff). Many
|
|
7983 bugs from 20.0 have been fixed for this release. 20.2 also contains a
|
|
7984 new system for customizing XEmacs options, invoked via @kbd{M-x
|
|
7985 customize}.
|
|
7986
|
|
7987 XEmacs 20.2 is the development release (20.0 was beta), and is no longer
|
|
7988 considered unstable.
|
|
7989
|
|
7990 For older news, see the file @file{ONEWS} in the @file{etc} directory of
|
|
7991 the XEmacs distribution.
|
428
|
7992
|
2417
|
7993 @node Legacy Versions, , Current Events, Top
|
2459
|
7994 @unnumbered 10 New information about old XEmacsen
|
|
7995
|
|
7996 This is part 10 of the XEmacs Frequently Asked Questions list. It will
|
1495
|
7997 occasionally be updated to reflect new information about versions which
|
|
7998 are no longer being revised by the XEmacs Project. The primary purpose
|
|
7999 is advice on compatibility of older XEmacsen with new packages and
|
|
8000 updated versions of packages, but bug fixes (which will not be applied
|
|
8001 to released XEmacsen, but users can apply themselves) are also accepted.
|
|
8002
|
|
8003 @menu
|
2537
|
8004 10.0: XEmacs 21.1
|
2459
|
8005 * Q10.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1.
|
1495
|
8006 @end menu
|
|
8007
|
2459
|
8008 @unnumberedsec 10.0: XEmacs 21.1
|
|
8009
|
|
8010 @node Q10.0.1, , Legacy Versions, Legacy Versions
|
|
8011 @unnumberedsubsec Q10.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1.
|
1495
|
8012
|
|
8013 @email{eeide@@cs.utah.edu, Eric Eide} wrote:
|
|
8014
|
|
8015 @quotation
|
|
8016 Previously I wrote:
|
|
8017
|
|
8018 Eric> Summary: with Gnus 5.10.1 in XEmacs 21.1.14, I don't see
|
|
8019 Eric> any smileys :-(.
|
|
8020
|
|
8021 After a bit of sleuthing, I discovered the essence of the problem.
|
|
8022 For me, the form:
|
|
8023
|
|
8024 @lisp
|
|
8025 (with-temp-buffer
|
|
8026 (insert-file-contents "foo.xpm")
|
|
8027 (buffer-string))
|
|
8028 @end lisp
|
|
8029
|
|
8030 returns the empty string. This is because something somewhere
|
|
8031 replaces the XPM data with a glyph --- I haven't figured out where
|
|
8032 this occurs.
|
|
8033 @end quotation
|
|
8034
|
|
8035 @email{kyle_jones@@wonderworks.com, Kyle Jones} replies:
|
|
8036
|
|
8037 @quotation
|
|
8038 Do this:
|
|
8039
|
|
8040 @lisp
|
|
8041 (setq format-alist nil)
|
|
8042 @end lisp
|
|
8043
|
|
8044 The image-mode stuff is gone from format-alist in the 21.4
|
|
8045 branch, praise be.
|
|
8046 @end quotation
|
|
8047
|
428
|
8048 @bye
|