1 This is Info file ../info/xemacs-faq.info, produced by Makeinfo version
2 1.68 from the input file xemacs-faq.texi.
4 INFO-DIR-SECTION XEmacs Editor
6 * FAQ: (xemacs-faq). XEmacs FAQ.
10 File: xemacs-faq.info, Node: Q5.0.18, Next: Q5.0.19, Prev: Q5.0.17, Up: Miscellaneous
12 Q5.0.18: I upgraded to XEmacs 19.14 and gnuserv stopped working.
13 ----------------------------------------------------------------
15 Mark Daku <daku@nortel.ca> writes:
17 It turns out I was using an older version of gnuserv. The
18 installation didn't put the binary into the public bin directory.
19 It put it in `lib/xemacs-19.14/hppa1.1-hp-hpux9.05/gnuserv'.
20 Shouldn't it have been put in `bin/hppa1.1-hp-hpux9.0'?
23 File: xemacs-faq.info, Node: Q5.0.19, Next: Q5.0.20, Prev: Q5.0.18, Up: Miscellaneous
25 Q5.0.19: Is there something better than LaTeX mode?
26 ---------------------------------------------------
28 David Kastrup <dak@fsnif.neuroinformatik.ruhr-uni-bochum.de> writes:
30 The standard TeX modes leave much to be desired, and are somewhat
31 leniently maintained. Serious TeX users use AUC TeX (*note
35 File: xemacs-faq.info, Node: Q5.0.20, Next: Q5.1.1, Prev: Q5.0.19, Up: Miscellaneous
37 Q5.0.20: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
38 ---------------------------------------------------------------------------------------------------------
40 Jan Vroonhof <vroonhof@math.ethz.ch> writes:
41 Here is one of the solutions, we have this in a script called
44 if gnuclient -batch -eval t >/dev/null 2>&1
46 exec gnuclient ${1+"$@"}
48 xemacs -unmapped -f gnuserv-start &
49 until gnuclient -batch -eval t >/dev/null 2>&1
53 exec gnuclient ${1+"$@"}
56 Note that there is a known problem when running XEmacs and
57 'gnuclient -nw' on the same TTY.
60 File: xemacs-faq.info, Node: Q5.1.1, Next: Q5.1.2, Prev: Q5.0.20, Up: Miscellaneous
62 5.1: Emacs Lisp Programming Techniques
63 ======================================
65 Q5.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
66 -----------------------------------------------------------------------------
68 Erik Naggum <clerik@naggum.no> writes;
70 Emacs has a legacy of keyboards that produced characters with
71 modifier bits, and therefore map a variety of input systems into
72 this scheme even today. XEmacs is instead optimized for X events.
73 This causes an incompatibility in the way key sequences are
74 specified, but both Emacs and XEmacs will accept a key sequence as
75 a vector of lists of modifiers that ends with a key, e.g., to bind
76 `M-C-a', you would say `[(meta control a)]' in both Emacsen.
77 XEmacs has an abbreviated form for a single key, just (meta
78 control a). Emacs has an abbreviated form for the Control and the
79 Meta modifiers to string-characters (the ASCII characters), as in
80 `\M-\C-a'. XEmacs users need to be aware that the abbreviated
81 form works only for one-character key sequences, while Emacs users
82 need to be aware that the string-character is rather limited.
83 Specifically, the string-character can accommodate only 256
84 different values, 128 of which have the Meta modifier and 128 of
85 which have not. In each of these blocks, only 32 characters have
86 the Control modifier. Whereas `[(meta control A)]' differs from
87 `[(meta control a)]' because the case differs, `\M-\C-a' and
88 `\M-\C-A' do not. Programmers are advised to use the full common
89 form, both because it is more readable and less error-prone, and
90 because it is supported by both Emacsen.
92 Another (even safer) way to be sure of the key-sequences is to use
93 the `read-kbd-macro' function, which takes a string like `C-c <up>',
94 and converts it to the internal key representation of the Emacs you
95 use. The function is available both on XEmacs and GNU Emacs.
98 File: xemacs-faq.info, Node: Q5.1.2, Next: Q5.1.3, Prev: Q5.1.1, Up: Miscellaneous
100 Q5.1.2: Can I generate "fake" keyboard events?
101 ----------------------------------------------
103 I wonder if there is an interactive function that can generate
104 "fake" keyboard events. This way, I could simply map them inside
109 (defun cg--generate-char-event (ch)
110 "Generate an event, as if ch has been typed"
111 (dispatch-event (character-to-event ch)))
113 ;; Backspace and Delete stuff
114 (global-set-key [backspace]
115 (lambda () (interactive) (cg--generate-char-event 127)))
116 (global-set-key [unknown_keysym_0x4]
117 (lambda () (interactive) (cg--generate-char-event 4)))
120 File: xemacs-faq.info, Node: Q5.1.3, Next: Q5.1.4, Prev: Q5.1.2, Up: Miscellaneous
122 Q5.1.3: Could you explain `read-kbd-macro' in more detail?
123 ----------------------------------------------------------
125 The `read-kbd-macro' function returns the internal Emacs
126 representation of a human-readable string (which is its argument).
129 (read-kbd-macro "C-c C-a")
130 => [(control ?c) (control ?a)]
132 (read-kbd-macro "C-c C-. <up>")
133 => [(control ?c) (control ?.) up]
135 In GNU Emacs the same forms will be evaluated to what GNU Emacs
136 understands internally--the sequences `"\C-x\C-c"' and `[3 67108910
139 The exact "human-readable" syntax is defined in the docstring of
140 `edmacro-mode'. I'll repeat it here, for completeness.
142 Format of keyboard macros during editing:
144 Text is divided into "words" separated by whitespace. Except for
145 the words described below, the characters of each word go directly
146 as characters of the macro. The whitespace that separates words is
147 ignored. Whitespace in the macro must be written explicitly, as in
148 `foo <SPC> bar <RET>'.
150 * The special words `RET', `SPC', `TAB', `DEL', `LFD', `ESC',
151 and `NUL' represent special control characters. The words
152 must be written in uppercase.
154 * A word in angle brackets, e.g., `<return>', `<down>', or
155 `<f1>', represents a function key. (Note that in the standard
156 configuration, the function key `<return>' and the control key
157 <RET> are synonymous.) You can use angle brackets on the
158 words <RET>, <SPC>, etc., but they are not required there.
160 * Keys can be written by their ASCII code, using a backslash
161 followed by up to six octal digits. This is the only way to
162 represent keys with codes above \377.
164 * One or more prefixes `M-' (meta), `C-' (control), `S-'
165 (shift), `A-' (alt), `H-' (hyper), and `s-' (super) may
166 precede a character or key notation. For function keys, the
167 prefixes may go inside or outside of the brackets: `C-<down>'
168 == `<C-down>'. The prefixes may be written in any order:
171 Prefixes are not allowed on multi-key words, e.g., `C-abc',
172 except that the Meta prefix is allowed on a sequence of
173 digits and optional minus sign: `M--123' == `M-- M-1 M-2 M-3'.
175 * The `^' notation for control characters also works: `^M' ==
178 * Double angle brackets enclose command names: `<<next-line>>'
179 is shorthand for `M-x next-line <RET>'.
181 * Finally, `REM' or `;;' causes the rest of the line to be
182 ignored as a comment.
184 Any word may be prefixed by a multiplier in the form of a decimal
185 number and `*': `3*<right>' == `<right> <right> <right>', and
186 `10*foo' == `foofoofoofoofoofoofoofoofoofoo'.
188 Multiple text keys can normally be strung together to form a word,
189 but you may need to add whitespace if the word would look like one
190 of the above notations: `; ; ;' is a keyboard macro with three
191 semicolons, but `;;;' is a comment. Likewise, `\ 1 2 3' is four
192 keys but `\123' is a single key written in octal, and `< right >'
193 is seven keys but `<right>' is a single function key. When in
194 doubt, use whitespace.
197 File: xemacs-faq.info, Node: Q5.1.4, Next: Q5.1.5, Prev: Q5.1.3, Up: Miscellaneous
199 Q5.1.4: What is the performance hit of `let'?
200 ---------------------------------------------
202 In most cases, not noticeable. Besides, there's no avoiding
203 `let'--you have to bind your local variables, after all. Some pose a
204 question whether to nest `let's, or use one `let' per function. I
205 think because of clarity and maintenance (and possible future
206 implementation), `let'-s should be used (nested) in a way to provide
210 File: xemacs-faq.info, Node: Q5.1.5, Next: Q5.1.6, Prev: Q5.1.4, Up: Miscellaneous
212 Q5.1.5: What is the recommended use of `setq'?
213 ----------------------------------------------
217 You will typically `defvar' your global variable to a default
218 value, and use `setq' to set it later.
220 It is never a good practice to `setq' user variables (like
221 `case-fold-search', etc.), as it ignores the user's choice
222 unconditionally. Note that `defvar' doesn't change the value of a
223 variable if it was bound previously. If you wish to change a
224 user-variable temporarily, use `let':
226 (let ((case-fold-search nil))
227 ... ; code with searches that must be case-sensitive
230 You will notice the user-variables by their docstrings beginning
231 with an asterisk (a convention).
235 Bind them with `let', which will unbind them (or restore their
236 previous value, if they were bound) after exiting from the `let'
237 form. Change the value of local variables with `setq' or whatever
238 you like (e.g. `incf', `setf' and such). The `let' form can even
239 return one of its local variables.
243 ;; iterate through the elements of the list returned by
244 ;; `hairy-function-that-returns-list'
245 (let ((l (hairy-function-that-returns-list)))
247 ... do something with (car l) ...
250 Another typical usage includes building a value simply to work
253 ;; Build the mode keymap out of the key-translation-alist
254 (let ((inbox (file-truename (expand-file-name box)))
256 ... code dealing with inbox ...
259 This piece of code uses the local variable `inbox', which becomes
260 unbound (or regains old value) after exiting the form. The form
261 also returns the value of `inbox', which can be reused, for
264 (setq foo-processed-inbox
268 File: xemacs-faq.info, Node: Q5.1.6, Next: Q5.1.7, Prev: Q5.1.5, Up: Miscellaneous
270 Q5.1.6: What is the typical misuse of `setq' ?
271 ----------------------------------------------
273 A typical misuse is probably `setq'ing a variable that was meant to
274 be local. Such a variable will remain bound forever, never to be
275 garbage-collected. For example, the code doing:
277 (defun my-function (whatever)
279 ... build a large list ...
282 does a bad thing, as `a' will keep consuming memory, never to be
283 unbound. The correct thing is to do it like this:
285 (defun my-function (whatever)
286 (let (a) ; default initialization is to nil
287 ... build a large list ...
288 ... and exit, unbinding `a' in the process ...)
290 Not only is this prettier syntactically, but it makes it possible for
291 Emacs to garbage-collect the objects which `a' used to reference.
293 Note that even global variables should not be `setq'ed without
294 `defvar'ing them first, because the byte-compiler issues warnings. The
295 reason for the warning is the following:
297 (defun flurgoze nil) ; ok, global internal variable
300 (setq flurghoze t) ; ops! a typo, but semantically correct.
301 ; however, the byte-compiler warns.
303 While compiling toplevel forms:
304 ** assignment to free variable flurghoze
307 File: xemacs-faq.info, Node: Q5.1.7, Next: Q5.1.8, Prev: Q5.1.6, Up: Miscellaneous
309 Q5.1.7: I like the the `do' form of cl, does it slow things down?
310 -----------------------------------------------------------------
312 It shouldn't. Here is what Dave Gillespie has to say about cl.el
315 Many of the advanced features of this package, such as `defun*',
316 `loop', and `setf', are implemented as Lisp macros. In
317 byte-compiled code, these complex notations will be expanded into
318 equivalent Lisp code which is simple and efficient. For example,
324 are expanded at compile-time to the Lisp forms
327 (setcar p (cons x (car p)))
329 which are the most efficient ways of doing these respective
330 operations in Lisp. Thus, there is no performance penalty for
331 using the more readable `incf' and `push' forms in your compiled
334 *Interpreted* code, on the other hand, must expand these macros
335 every time they are executed. For this reason it is strongly
336 recommended that code making heavy use of macros be compiled. (The
337 features labelled "Special Form" instead of "Function" in this
338 manual are macros.) A loop using `incf' a hundred times will
339 execute considerably faster if compiled, and will also
340 garbage-collect less because the macro expansion will not have to
341 be generated, used, and thrown away a hundred times.
343 You can find out how a macro expands by using the `cl-prettyexpand'
347 File: xemacs-faq.info, Node: Q5.1.8, Next: Q5.1.9, Prev: Q5.1.7, Up: Miscellaneous
349 Q5.1.8: I like recursion, does it slow things down?
350 ---------------------------------------------------
352 Yes. Emacs byte-compiler cannot do much to optimize recursion. But
353 think well whether this is a real concern in Emacs. Much of the Emacs
354 slowness comes from internal mechanisms such as redisplay, or from the
355 fact that it is an interpreter.
357 Please try not to make your code much uglier to gain a very small
358 speed gain. It's not usually worth it.
361 File: xemacs-faq.info, Node: Q5.1.9, Next: Q5.1.10, Prev: Q5.1.8, Up: Miscellaneous
363 Q5.1.9: How do I put a glyph as annotation in a buffer?
364 -------------------------------------------------------
366 Here is a solution that will insert the glyph annotation at the
369 (make-annotation (make-glyph '([FORMAT :file FILE]
370 [string :data "fallback-text"]))
375 Replace `FORMAT' with an unquoted symbol representing the format of
376 the image (e.g. `xpm', `xbm', `gif', `jpeg', etc.) Instead of `FILE',
377 use the image file name (e.g.
378 `/usr/local/lib/xemacs-20.2/etc/recycle.xpm').
380 You can turn this to a function (that optionally prompts you for a
381 file name), and inserts the glyph at `(point)' instead of `(point-min)'.
384 File: xemacs-faq.info, Node: Q5.1.10, Next: Q5.1.11, Prev: Q5.1.9, Up: Miscellaneous
386 Q5.1.10: `map-extents' won't traverse all of my extents!
387 --------------------------------------------------------
389 I tried to use `map-extents' to do an operation on all the extents
390 in a region. However, it seems to quit after processing a random number
391 of extents. Is it buggy?
393 No. The documentation of `map-extents' states that it will iterate
394 across the extents as long as FUNCTION returns `nil'. Unexperienced
395 programmers often forget to return `nil' explicitly, which results in
396 buggy code. For instance, the following code is supposed to delete all
397 the extents in a buffer, and issue as many `fubar!' messages.
399 (map-extents (lambda (ext ignore)
403 Instead, it will delete only the first extent, and stop right there -
404 because `message' will return a non-nil value. The correct code is:
406 (map-extents (lambda (ext ignore)
412 File: xemacs-faq.info, Node: Q5.1.11, Next: Q5.2.1, Prev: Q5.1.10, Up: Miscellaneous
414 Q5.1.11: My elisp program is horribly slow. Is there
415 -----------------------------------------------------
417 an easy way to find out where it spends time?
419 zHrvoje Niksic <hniksic@xemacs.org> writes:
420 Under XEmacs 20.4 and later you can use `M-x
421 profile-key-sequence', press a key (say <RET> in the Gnus Group
422 buffer), and get the results using `M-x profile-results'. It
423 should give you an idea of where the time is being spent.
426 File: xemacs-faq.info, Node: Q5.2.1, Next: Q5.2.2, Prev: Q5.1.11, Up: Miscellaneous
428 Q5.2.1: How do I turn off the sound?
429 ------------------------------------
431 Add the following line to your `.emacs':
434 (setq sound-alist nil)
436 That will make your XEmacs totally silent - even the default ding
437 sound (TTY beep on TTY-s) will be gone.
439 Starting with XEmacs-20.2 you can also change these with Customize.
440 Select from the `Options' menu
441 `Customize->Emacs->Environment->Sound->Sound...' or type `M-x customize
445 File: xemacs-faq.info, Node: Q5.2.2, Next: Q5.2.3, Prev: Q5.2.1, Up: Miscellaneous
447 Q5.2.2: How do I get funky sounds instead of a boring beep?
448 -----------------------------------------------------------
450 Make sure your XEmacs was compiled with sound support, and then put
451 this in your `.emacs':
453 (load-default-sounds)
455 The sound support in XEmacs 19.14 was greatly improved over previous
459 File: xemacs-faq.info, Node: Q5.2.3, Next: Q5.2.4, Prev: Q5.2.2, Up: Miscellaneous
461 Q5.2.3: What's NAS, how do I get it?
462 ------------------------------------
464 *Note Q2.0.3::, for an explanation of the "Network Audio System".
467 File: xemacs-faq.info, Node: Q5.2.4, Next: Q5.3.1, Prev: Q5.2.3, Up: Miscellaneous
469 Q5.2.4: Sunsite sounds don't play.
470 ----------------------------------
472 I'm having some trouble with sounds I've downloaded from sunsite.
473 They play when I run them through `showaudio' or cat them directly to
474 `/dev/audio', but XEmacs refuses to play them.
476 Markus Gutschke <gutschk@uni-muenster.de> writes:
478 [Many of] These files have an (erroneous) 24byte header that tells
479 about the format that they have been recorded in. If you cat them
480 to `/dev/audio', the header will be ignored and the default
481 behavior for /dev/audio will be used. This happens to be 8kHz
482 uLaw. It is probably possible to fix the header by piping through
483 `sox' and passing explicit parameters for specifying the sampling
484 format; you then need to perform a 'null' conversion from SunAudio
488 File: xemacs-faq.info, Node: Q5.3.1, Next: Q5.3.2, Prev: Q5.2.4, Up: Miscellaneous
493 Q5.3.1: How do you make XEmacs indent CL if-clauses correctly?
494 --------------------------------------------------------------
496 I'd like XEmacs to indent all the clauses of a Common Lisp `if' the
497 same amount instead of indenting the 3rd clause differently from the
500 One way is to add, to `.emacs':
502 (put 'if 'lisp-indent-function nil)
504 However, note that the package `cl-indent' that comes with XEmacs
505 sets up this kind of indentation by default. `cl-indent' also knows
506 about many other CL-specific forms. To use `cl-indent', one can do
510 (setq lisp-indent-function (function common-lisp-indent-function))
512 One can also customize `cl-indent.el' so it mimics the default `if'
513 indentation `then' indented more than the `else'. Here's how:
515 (put 'if 'common-lisp-indent-function '(nil nil &body))
517 Also, a new version (1.2) of `cl-indent.el' was posted to
518 comp.emacs.xemacs on 12/9/94. This version includes more documentation
519 than previous versions. This may prove useful if you need to customize
520 any indent-functions.
523 File: xemacs-faq.info, Node: Q5.3.2, Next: Q5.3.3, Prev: Q5.3.1, Up: Miscellaneous
525 Q5.3.2: Fontifying hang when editing a postscript file.
526 -------------------------------------------------------
528 When I try to edit a postscript file it gets stuck saying:
529 `fontifying 'filename' (regexps....)' and it just sits there. If I
530 press `C-c' in the window where XEmacs was started, it suddenly becomes
533 This was caused by a bug in the Postscript font-lock regular
534 expressions. It was fixed in 19.13. For earlier versions of XEmacs,
535 have a look at your `.emacs' file. You will probably have a line like:
537 (add-hook 'postscript-mode-hook 'turn-on-font-lock)
539 Take it out, restart XEmacs, and it won't try to fontify your
540 postscript files anymore.
543 File: xemacs-faq.info, Node: Q5.3.3, Next: Q5.3.4, Prev: Q5.3.2, Up: Miscellaneous
545 Q5.3.3: How can I print WYSIWYG a font-locked buffer?
546 -----------------------------------------------------
548 Font-lock looks nice. How can I print (WYSIWYG) the highlighted
551 The package `ps-print', which is now included with XEmacs, provides
552 the ability to do this. The source code contains complete instructions
553 on its use, in `<xemacs_src_root>/lisp/packages/ps-print.el'.
556 File: xemacs-faq.info, Node: Q5.3.4, Next: Q5.3.5, Prev: Q5.3.3, Up: Miscellaneous
558 Q5.3.4: Getting `M-x lpr' to work with postscript printer.
559 ----------------------------------------------------------
561 My printer is a Postscript printer and `lpr' only works for
562 Postscript files, so how do I get `M-x lpr-region' and `M-x lpr-buffer'
565 Put something like this in your `.emacs':
567 (setq lpr-command "a2ps")
568 (setq lpr-switches '("-p" "-1"))
570 If you don't use a2ps to convert ASCII to postscript (why not, it's
571 free?), replace with the command you do use. Note also that some
572 versions of a2ps require a `-Pprinter' to ensure spooling.
575 File: xemacs-faq.info, Node: Q5.3.5, Next: Q5.3.6, Prev: Q5.3.4, Up: Miscellaneous
577 Q5.3.5: How do I specify the paths that XEmacs uses for finding files?
578 ----------------------------------------------------------------------
580 You can specify what paths to use by using a number of different
581 flags when running configure. See the section MAKE VARIABLES in the
582 top-level file INSTALL in the XEmacs distribution for a listing of
585 Most of the time, however, the simplest fix is: *do not* specify
586 paths as you might for GNU Emacs. XEmacs can generally determine the
587 necessary paths dynamically at run time. The only path that generally
588 needs to be specified is the root directory to install into. That can
589 be specified by passing the `--prefix' flag to configure. For a
590 description of the XEmacs install tree, please consult the `NEWS' file.
593 File: xemacs-faq.info, Node: Q5.3.6, Next: Q5.3.7, Prev: Q5.3.5, Up: Miscellaneous
595 Q5.3.6: [This question intentionally left blank]
596 ------------------------------------------------
598 Obsolete question, left blank to avoid renumbering.
601 File: xemacs-faq.info, Node: Q5.3.7, Next: Q5.3.8, Prev: Q5.3.6, Up: Miscellaneous
603 Q5.3.7: Can I have the end of the buffer delimited in some way?
604 ---------------------------------------------------------------
610 (let ((ext (make-extent (point-min) (point-max))))
611 (set-extent-property ext 'start-closed t)
612 (set-extent-property ext 'end-closed t)
613 (set-extent-property ext 'detachable nil)
614 (set-extent-end-glyph ext (make-glyph [string :data "[END]"])))
616 Since this is XEmacs, you can specify an icon to be shown on
617 window-system devices. To do so, change the `make-glyph' call to
620 (make-glyph '([xpm :file "~/something.xpm"]
621 [string :data "[END]"]))
623 You can inline the XPM definition yourself by specifying `:data'
624 instead of `:file'. Here is such a full-featured version that works on
625 both X and TTY devices:
627 (let ((ext (make-extent (point-min) (point-max))))
628 (set-extent-property ext 'start-closed t)
629 (set-extent-property ext 'end-closed t)
630 (set-extent-property ext 'detachable nil)
631 (set-extent-end-glyph ext (make-glyph '([xpm :data "\
642 \"___________`_`_`___b_b_b_b_________`____\",
643 \"_________`_`_`___b_c_c_c_b_b____________\",
644 \"_____`_`_`_e___b_b_c_c_c___b___b_______`\",
645 \"___`_`_e_a___b_b_d___b___b___b___b______\",
646 \"_`_`_e_a_e___b_b_d_b___b___b___b___b____\",
647 \"_`_`_a_e_a___b_b_d___b___b___b___b___b__\",
648 \"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\",
649 \"___`_`_e_a___b_b_b_d_c___b___b___d_b____\",
650 \"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\",
651 \"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\",
652 \"___`_____`_`_`_`___b_b_b_b_b_b__________\",
654 [string :data "[END]"]))))
656 Note that you might want to make this a function, and put it to a
657 hook. We leave that as an exercise for the reader.
660 File: xemacs-faq.info, Node: Q5.3.8, Next: Q5.3.9, Prev: Q5.3.7, Up: Miscellaneous
662 Q5.3.8: How do I insert today's date into a buffer?
663 ---------------------------------------------------
667 (insert (current-time-string))
670 File: xemacs-faq.info, Node: Q5.3.9, Next: Q5.3.10, Prev: Q5.3.8, Up: Miscellaneous
672 Q5.3.9: Are only certain syntactic character classes available for abbrevs?
673 ---------------------------------------------------------------------------
675 Markus Gutschke <gutschk@uni-muenster.de> writes:
677 Yes, abbrevs only expands word-syntax strings. While XEmacs does
678 not prevent you from defining (e.g. with `C-x a g' or `C-x a l')
679 abbrevs that contain special characters, it will refuse to expand
680 them. So you need to ensure, that the abbreviation contains
681 letters and digits only. This means that `xd', `d5', and `5d' are
682 valid abbrevs, but `&d', and `x d' are not.
684 If this sounds confusing to you, (re-)read the online
685 documentation for abbrevs (`C-h i m XEmacs <RET> m Abbrevs
686 <RET>'), and then come back and read this question/answer again.
688 Starting with XEmacs 20.3 this restriction has been lifted.
691 File: xemacs-faq.info, Node: Q5.3.10, Next: Q5.3.11, Prev: Q5.3.9, Up: Miscellaneous
693 Q5.3.10: How can I get those oh-so-neat X-Face lines?
694 -----------------------------------------------------
696 Firstly there is an ftp site which describes X-faces and has the
697 associated tools mentioned below, at
698 `ftp://ftp.cs.indiana.edu:/pub/faces/'.
702 1. Create 48x48x1 bitmap with your favorite tool
704 2. Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc.,
705 and then compile the face.
707 3. cat file.xbm | xbm2ikon |compface > file.face
709 4. Then be sure to quote things that are necessary for emacs strings:
711 cat ./file.face | sed 's/\\/\\\\/g'
712 | sed 's/\"/\\\"/g' > ./file.face.quoted
714 5. Then set up emacs to include the file as a mail header - there
715 were a couple of suggestions here--either something like:
717 (setq mail-default-headers
718 "X-Face: <Ugly looking text string here>")
720 Or, alternatively, as:
722 (defun mail-insert-x-face ()
724 (goto-char (point-min))
725 (search-forward mail-header-separator)
728 (insert-file-contents "~/.face")))
730 (add-hook 'mail-setup-hook 'mail-insert-x-face)
732 However, 2 things might be wrong:
734 Some versions of pbmtoicon produces some header lines that is not
735 expected by the version of compface that I grabbed. So I found I had to
736 include a `tail +3' in the pipeline like this:
738 cat file.xbm | xbm2ikon | tail +3 |compface > file.face
740 Some people have also found that if one uses the `(insert-file)'
741 method, one should NOT quote the face string using the sed script .
743 It might also be helpful to use Stig's <stig@hackvan.com> script
744 (included in the compface distribution at XEmacs.org) to do the
747 Contributors for this item:
749 Paul Emsley, Ricardo Marek, Amir J. Katz, Glen McCort, Heinz Uphoff,
750 Peter Arius, Paul Harrison, and Vegard Vesterheim
753 File: xemacs-faq.info, Node: Q5.3.11, Next: Q5.3.12, Prev: Q5.3.10, Up: Miscellaneous
755 Q5.3.11: How do I add new Info directories?
756 -------------------------------------------
758 You use something like:
760 (setq Info-directory-list (cons
761 (expand-file-name "~/info")
762 Info-default-directory-list))
764 David Masterson <davidm@prism.kla.com> writes:
766 Emacs Info and XEmacs Info do many things differently. If you're
767 trying to support a number of versions of Emacs, here are some
770 1. Emacs Info scans `Info-directory-list' from right-to-left
771 while XEmacs Info reads it from left-to-right, so append to
772 the *correct* end of the list.
774 2. Use `Info-default-directory-list' to initialize
775 `Info-directory-list' *if* it is available at startup, but not
776 all Emacsen define it.
778 3. Emacs Info looks for a standard `dir' file in each of the
779 directories scanned from #1 and magically concatenates them
782 4. XEmacs Info looks for a `localdir' file (which consists of
783 just the menu entries from a `dir' file) in each of the
784 directories scanned from #1 (except the first), does a simple
785 concatenation of them, and magically attaches the resulting
786 list to the end of the menu in the `dir' file in the first
789 Another alternative is to convert the documentation to HTML with
790 texi2html and read it from a web browser like Lynx or W3.
793 File: xemacs-faq.info, Node: Q5.3.12, Prev: Q5.3.11, Up: Miscellaneous
795 Q5.3.12: What do I need to change to make printing work?
796 --------------------------------------------------------
798 For regular printing there are two variables that can be customized.
801 This should be set to a command that takes standard input and sends
802 it to a printer. Something like:
804 (setq lpr-command "lp")
807 This should be set to a list that contains whatever the print
808 command requires to do its job. Something like:
810 (setq lpr-switches '("-depson"))
812 For postscript printing there are three analogous variables to
816 This should be set to a command that takes postscript on standard
817 input and directs it to a postscript printer.
820 This should be set to a list of switches required for
821 `ps-lpr-command' to do its job.
824 This boolean variable should be set `t' if printing will be done in
825 color, otherwise it should be set to `nil'.
827 NOTE: It is an undocumented limitation in XEmacs that postscript
828 printing (the `Pretty Print Buffer' menu item) *requires* a window
829 system environment. It cannot be used outside of X11.
832 File: xemacs-faq.info, Node: MS Windows, Next: Current Events, Prev: Miscellaneous, Up: Top
834 6 XEmacs on MS Windows
835 **********************
837 This is part 6 of the XEmacs Frequently Asked Questions list,
838 written by Hrvoje Niksic and others. This section is devoted to the MS
839 Windows port of XEmacs.
845 * Q6.0.1:: What is the status of the XEmacs port to Windows?
846 * Q6.0.2:: What flavors of MS Windows are supported?
847 * Q6.0.3:: Where are the XEmacs on MS Windows binaries?
848 * Q6.0.4:: Does XEmacs on MS Windows require an X server to run?
850 Building XEmacs on MS Windows
851 * Q6.1.1:: I decided to run with X. Where do I get an X server?
852 * Q6.1.2:: What compiler do I need to compile XEmacs?
853 * Q6.1.3:: How do I compile for the native port?
854 * Q6.1.4:: How do I compile for the X port?
855 * Q6.1.5:: How do I compile for Cygnus' Cygwin?
856 * Q6.1.6:: What do I need for Cygwin?
858 Customization and User Interface
859 * Q6.2.1:: How will the port cope with differences in the Windows user interface?
860 * Q6.2.2:: How do I change fonts in XEmacs on MS Windows?
861 * Q6.2.3:: Where do I put my `.emacs' file?
864 * Q6.3.1:: Will XEmacs rename all the win32-* symbols to w32-*?
865 * Q6.3.2:: What are the differences between the various MS Windows emacsen?
866 * Q6.3.3:: What is the porting team doing at the moment?
869 File: xemacs-faq.info, Node: Q6.0.1, Next: Q6.0.2, Prev: MS Windows, Up: MS Windows
874 Q6.0.1: What is the status of the XEmacs port to Windows?
875 ---------------------------------------------------------
877 Is XEmacs really getting ported to MS Windows? What is the status
880 Yes, a group of volunteers actively works on making XEmacs code base
881 cleanly compile and run on MS Windows operating systems. The mailing
882 list at <xemacs-nt@xemacs.org> is dedicated to that effort (please use
883 the -request address to subscribe).
885 At this time, XEmacs on MS Windows is usable, but lacks some of the
886 features of XEmacs on UNIX and UNIX-like systems. Notably,
887 internationalization does not work.
890 File: xemacs-faq.info, Node: Q6.0.2, Next: Q6.0.3, Prev: Q6.0.1, Up: MS Windows
892 Q6.0.2: What flavors of MS Windows are supported? The list name implies NT only.
893 ---------------------------------------------------------------------------------
895 The list name is misleading, as XEmacs will support both Windows 95,
896 Windows 98 and Windows NT. The MS Windows-specific code is based on
897 Microsoft Win32 API, and will not work on MS Windows 3.x or on MS-DOS.
900 File: xemacs-faq.info, Node: Q6.0.3, Next: Q6.0.4, Prev: Q6.0.2, Up: MS Windows
902 Q6.0.3: Are binary kits available?
903 ----------------------------------
905 Binary kits are available at
906 `ftp://ftp.xemacs.org/pub/xemacs/binary-kits/win32/' for the "plain" MS
910 File: xemacs-faq.info, Node: Q6.0.4, Next: Q6.1.1, Prev: Q6.0.3, Up: MS Windows
912 Q6.0.4: Does XEmacs on MS Windows require an X server to run?
913 -------------------------------------------------------------
917 Long answer: XEmacs can be built in several ways in the MS Windows
918 environment, some of them requiring an X server and some not.
920 One is what we call the "X" port - it requires X libraries to build
921 and an X server to run. Internally it uses the Xt event loop and makes
922 use of X toolkits. Its look is quite un-Windowsy, but it works
923 reliably and supports all of the graphical features of Unix XEmacs.
925 The other is what we call the "native" port. It uses the Win32 API
926 and does not require X libraries to build, nor does it require an X to
927 run. In fact, it has no connection with X whatsoever. At this time,
928 the native port obsoletes the X port, providing almost all of its
929 features, including support for menus, scrollbars, toolbars, embedded
930 images and background pixmaps, frame pointers, etc. Most of the future
931 work will be based on the native port.
933 There is also a third special case, the Cygwin port. It takes
934 advantage of Cygnus emulation library under Win32, which enables it to
935 reuse much of the Unix XEmacs code base, such as processes and network
936 support, or internal select() mechanisms.
938 Cygwin port supports all display types - TTY, X & MS gui, and can be
939 built with support for all three. If you build with ms gui support
940 then the Cygwin version uses the majority of the msw code, which is
941 mostly related to display. If you want to build with X support you
942 need X libraries. If you want to build with tty support you need
943 ncurses. MS gui requires no additional libraries.
945 Some of the advantages of the Cygwin version are that it:
947 * integrates well with Cygwin environment for existing Cygwin users;
949 * uses configure so building with different features is very easy;
951 * has process support in X & tty.
953 The disadvantage is that it requires several Unix utilities and the
954 whole Cygwin environment, whereas the native port requires only a
955 suitable MS Windows compiler. Also, it follows the Unix filesystem and
956 process model very closely (some will undoubtedly view this as an
960 File: xemacs-faq.info, Node: Q6.1.1, Next: Q6.1.2, Prev: Q6.0.4, Up: MS Windows
962 6.1: Building XEmacs on MS Windows
963 ==================================
965 Q6.1.1: I decided to run with X. Where do I get an X server?
966 -------------------------------------------------------------
968 Pointers to X servers can be found at
969 `http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/';
971 look for "Where to get an X server". Also note that, although the
972 above page talks about Cygnus gnu-win32 (Cygwin), the information on X
973 servers is Cygwin-independent. You don't have to be running/using
974 Cygwin to use these X servers, and you don't have to compile XEmacs
975 under Cygwin to use XEmacs with these X servers. An "X port" XEmacs
976 compiled under Visual C++ will work with these X servers (as will
977 XEmacs running on a Unix box, redirected to the server running on your
981 File: xemacs-faq.info, Node: Q6.1.2, Next: Q6.1.3, Prev: Q6.1.1, Up: MS Windows
983 Q6.1.2: What compiler do I need to compile XEmacs?
984 --------------------------------------------------
986 You need Visual C++ 4.2 or 5.0, with the exception of the Cygwin
987 port, which uses Gcc.
990 File: xemacs-faq.info, Node: Q6.1.3, Next: Q6.1.4, Prev: Q6.1.2, Up: MS Windows
992 Q6.1.3: How do I compile for the native port?
993 ---------------------------------------------
995 Please read the file `nt/README' in the XEmacs distribution, which
996 contains the full description.
999 File: xemacs-faq.info, Node: Q6.1.4, Next: Q6.1.5, Prev: Q6.1.3, Up: MS Windows
1001 Q6.1.4: How do I compile for the X port?
1002 ----------------------------------------
1004 Again, it is described in `nt/README' in some detail. Basically, you
1005 need to get X11 libraries from ftp.x.org, and compile them. If the
1006 precompiled versions are available somewhere, I don't know of it.
1009 File: xemacs-faq.info, Node: Q6.1.5, Next: Q6.1.6, Prev: Q6.1.4, Up: MS Windows
1011 Q6.1.5: How do I compile for Cygnus' Cygwin?
1012 --------------------------------------------
1014 Similar as on Unix; use the usual `configure' and `make' process.
1015 Some problems to watch out for:
1017 * make sure HOME is set. This controls where you `.emacs' file comes
1020 * CYGWIN32 needs to be set to tty for process support work. e.g.
1023 * picking up some other grep or other unix like tools can kill
1026 * static heap too small, adjust src/sheap-adjust.h to a more positive
1029 * The Cygwin version doesn't understand `//machine/path' type paths
1030 so you will need to manually mount a directory of this form under
1031 a unix style directory for a build to work on the directory.
1034 File: xemacs-faq.info, Node: Q6.1.6, Next: Q6.2.1, Prev: Q6.1.5, Up: MS Windows
1036 Q6.1.6: What do I need for Cygwin?
1037 ----------------------------------
1039 You can find the Cygwin tools and compiler at:
1041 `http://sourceware.cygnus.com/cygwin/'
1043 You will need version b19 or later.
1045 You will also need the X libraries. There are libraries at
1046 `http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/', but these are
1047 not b19 compatible. You can get b19 X11R6.3 binaries, as well as
1048 pre-built ncurses and graphic libraries, from:
1050 `ftp://ftp.parallax.co.uk/pub/andyp/'.
1053 File: xemacs-faq.info, Node: Q6.2.1, Next: Q6.2.2, Prev: Q6.1.6, Up: MS Windows
1055 6.2: Customization and User Interface
1056 =====================================
1058 Q6.2.1: How will the port cope with differences in the Windows user interface?
1059 ------------------------------------------------------------------------------
1061 XEmacs (and Emacs in general) UI is pretty different from what is
1062 expected of a typical MS Windows program. How will the MS Windows port
1065 Fortunately, Emacs is also one of the most configurable editor beasts
1066 in the world. The MS Windows "look and feel" (mark via shift-arrow,
1067 self-inserting deletes region, etc.) can be easily configured via
1068 various packages distributed with XEmacs. The `pending-delete' package
1069 is an example of such a utility.
1071 In future versions, some of these packages might be turned on by
1072 default in the MS Windows environment.
1075 File: xemacs-faq.info, Node: Q6.2.2, Next: Q6.2.3, Prev: Q6.2.1, Up: MS Windows
1077 Q6.2.2: How do I change fonts in XEmacs on MS Windows?
1078 ------------------------------------------------------
1080 You can change font manually, but not from the menubar, yet. For
1083 (set-face-font 'default "Lucida Console:Regular:10")
1084 (set-face-font 'modeline "MS Sans Serif:Regular:10")
1087 File: xemacs-faq.info, Node: Q6.2.3, Next: Q6.3.1, Prev: Q6.2.2, Up: MS Windows
1089 Q6.2.3: Where do I put my `.emacs' file?
1090 ----------------------------------------
1092 If the HOME environment variable is set, `.emacs' will be looked for
1093 there. Else the directory defaults to `c:\'.
1096 File: xemacs-faq.info, Node: Q6.3.1, Next: Q6.3.2, Prev: Q6.2.3, Up: MS Windows
1101 Q6.3.1: Will XEmacs rename all the win32-* symbols to w32-*?
1102 ------------------------------------------------------------
1104 In his flavor of Emacs 20, Richard Stallman has renamed all the
1105 win32-* symbols to w32-*. Will XEmacs do the same?
1107 We consider such a move counter-productive, thus we will not use the
1108 `w32' prefix. However, we do recognize that Win32 name is little more
1109 than a marketing buzzword (will it be Win64 in the next release?), so
1110 we decided not to use it. Using `windows-' would be wrong because the
1111 term is too generic, which is why we settled on a compromise
1114 Thus all the XEmacs variables and functions directly related to Win32
1115 are prefixed `mswindows-'. The user-variables shared with NT Emacs
1116 will be provided as compatibility aliases.
1118 Architectural note: We believe that there should be a very small
1119 number of window-systems-specific variables, and will try to provide
1120 generic interfaces whenever possible.
1123 File: xemacs-faq.info, Node: Q6.3.2, Next: Q6.3.3, Prev: Q6.3.1, Up: MS Windows
1125 Q6.3.2: What are the differences between the various MS Windows emacsen?
1126 ------------------------------------------------------------------------
1128 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
1129 Could you briefly explain the differences between them?
1131 Here is a recount of various Emacs versions running on MS Windows:
1135 - Win-Emacs is a port of Lucid Emacs 19.6 to MS Windows using X
1136 compatibility libraries. Win-Emacs has been written by Ben
1137 Wing. The MS Windows code has not made it back to Lucid
1138 Emacs, which left Win-Emacs pretty much dead for our
1139 purposes. Win-Emacs used to be available at Pearlsoft, but
1140 not anymore, since Pearlsoft went out of business.
1144 - GNU Emacs features support for MS-DOS and DJGPP (D.J.
1145 Delorie's DOS port of Gcc). Such an Emacs is heavily
1146 underfeatured, because it does not supports long file names,
1147 lacks proper subprocesses support, and is far too big
1148 compared to typical DOS editors.
1150 * GNU Emacs compiled with Win32
1152 - Starting with version 19.30, it has been possible to compile
1153 GNU Emacs under MS Windows using the DJGPP compiler and X
1154 libraries. The result is is very similar to GNU Emacs
1155 compiled under MS DOS, only it supports longer file names,
1156 etc. This "port" is similar to the "X" flavor of XEmacs on
1161 - NT Emacs is a version of GNU Emacs modified to compile and
1162 run under MS MS Windows 95 and NT using the native Win32 API.
1163 As such, it is close in spirit to the XEmacs "native" port.
1165 - NT Emacs has been written by Geoff Voelker, and more
1166 information can be found at
1167 `http://www.cs.washington.edu/homes/voelker/ntemacs.html'.
1171 - Beginning with XEmacs 19.12, XEmacs' architecture has been
1172 redesigned in such a way to allow clean support of multiple
1173 window systems. At this time the TTY support was added,
1174 making X and TTY the first two "window systems" XEmacs
1175 supported. The 19.12 design is the basis for the current
1176 native MS Windows code.
1178 - Some time during 1997, David Hobley (soon joined by Marc
1179 Paquette) imported some of the NT-specific portions of GNU
1180 Emacs, making XEmacs with X support compile under Windows NT,
1181 and creating the "X" port.
1183 - Several months later, Jonathan Harris sent out initial
1184 patches to use the Win32 API, thus creating the native port.
1185 Since then, various people have contributed, including Kirill
1186 M. Katsnelson (contributed support for menubars, subprocesses
1187 and network, as well as loads of other code), Andy Piper
1188 (ported XEmacs to Cygwin environment, contributed Windows
1189 unexec, Windows-specific glyphs and toolbars code, and more),
1190 Jeff Sparkes (contributed scrollbars support) and many others.
1193 File: xemacs-faq.info, Node: Q6.3.3, Prev: Q6.3.2, Up: MS Windows
1195 Q6.3.3: What is the porting team doing at the moment?
1196 -----------------------------------------------------
1198 The porting team is continuing work on the MS Windows-specific code.
1201 File: xemacs-faq.info, Node: Current Events, Prev: MS Windows, Up: Top
1203 7 What the Future Holds
1204 ***********************
1206 This is part 7 of the XEmacs Frequently Asked Questions list. This
1207 section will change monthly, and contains any interesting items that
1208 have transpired over the previous month. If you are reading this from
1209 the XEmacs distribution, please see the version on the Web or archived
1210 at the various FAQ FTP sites, as this file is surely out of date.
1214 * Q7.0.1:: What is new in 20.2?
1215 * Q7.0.2:: What is new in 20.3?
1216 * Q7.0.3:: What is new in 20.4?
1217 * Q7.0.4:: Procedural changes in XEmacs development.
1220 File: xemacs-faq.info, Node: Q7.0.1, Next: Q7.0.2, Prev: Current Events, Up: Current Events
1225 Q7.0.1: What is new in 20.2?
1226 ----------------------------
1228 The biggest changes in 20.2 include integration of EFS (the next
1229 generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a
1230 major mode for editing Tex and LaTeX, and a lot of other stuff). Many
1231 bugs from 20.0 have been fixed for this release. 20.2 also contains a
1232 new system for customizing XEmacs options, invoked via `M-x customize'.
1234 XEmacs 20.2 is the development release (20.0 was beta), and is no
1235 longer considered unstable.
1238 File: xemacs-faq.info, Node: Q7.0.2, Next: Q7.0.3, Prev: Q7.0.1, Up: Current Events
1240 Q7.0.2: What is new in 20.3?
1241 ----------------------------
1243 XEmacs 20.3 was released in November 1997. It contains many bugfixes,
1244 and a number of new features, including Autoconf 2 based configuration,
1245 additional support for Mule (Multi-language extensions to Emacs), many
1246 more customizations, multiple frames on TTY-s, support for multiple info
1247 directories, an enhanced gnuclient, improvements to regexp matching,
1248 increased MIME support, and many, many synches with GNU Emacs 20.
1250 The XEmacs/Mule support has been only seriously tested in a Japanese
1251 locale, and no doubt many problems still remain. The support for
1252 ISO-Latin-1 and Japanese is fairly strong. MULE support comes at a
1253 price - about a 30% slowdown from 19.16. We're making progress on
1254 improving performance and XEmacs 20.3 compiled without Mule (which is
1255 the default) is definitely faster than XEmacs 19.16.
1257 XEmacs 20.3 is the first non-beta v20 release, and will be the basis
1258 for all further development.
1261 File: xemacs-faq.info, Node: Q7.0.3, Next: Q7.0.4, Prev: Q7.0.2, Up: Current Events
1263 Q7.0.3: What's new in XEmacs 20.4?
1264 ----------------------------------
1266 XEmacs 20.4 is a bugfix release with no user-visible changes.
1269 File: xemacs-faq.info, Node: Q7.0.4, Prev: Q7.0.3, Up: Current Events
1271 Q7.0.4: Procedural changes in XEmacs development.
1272 -------------------------------------------------
1274 1. Discussion about the development of XEmacs occurs on the
1275 xemacs-beta mailing list. Subscriptions to this list will now be
1276 fully automated instead of being handled by hand. Send a mail
1277 message to <xemacs-beta-request@xemacs.org> with `subscribe' as the
1278 BODY of the message to join the list. Please note this is a
1279 developers mailing list for people who have an active interest in
1280 the development process.
1282 The discussion of NT XEmacs development is taking place on a
1283 separate mailing list. Send mail to
1284 <xemacs-nt-request@xemacs.org> to subscribe.
1286 2. Due to the long development cycle in between releases, it has been
1287 decided that intermediate versions will be made available in
1288 source only form for the truly interested.
1290 XEmacs 19.16 was the last 19 release, basically consisting of
1291 19.15 plus the collected bugfixes.
1293 3. As of December 1996, Steve Baur <steve@xemacs.org> has become the
1294 lead maintainer of XEmacs.