Merge mapping to CHINA3-JEF code points.
[chise/xemacs-chise.git] / info / xemacs-faq.info-4
index 7c5211c..7dc867f 100644 (file)
-This is Info file ../info/xemacs-faq.info, produced by Makeinfo version
-1.68 from the input file xemacs-faq.texi.
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.0b from
+xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
-* FAQ: (xemacs-faq).           XEmacs FAQ.
+* FAQ: (xemacs-faq).            XEmacs FAQ.
 END-INFO-DIR-ENTRY
 
 \1f
-File: xemacs-faq.info,  Node: Q4.0.6,  Next: Q4.0.7,  Prev: Q4.0.5,  Up: Subsystems
-
-Q4.0.6: I have various addresses at which I receive mail.  How can I tell VM to ignore them when doing a "reply-all"?
----------------------------------------------------------------------------------------------------------------------
-
-   Set `vm-reply-ignored-addresses' to a list, like
-
-     (setq vm-reply-ignored-addresses
-           '("wing@nuspl@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
-       "wing@netcom.com" "wing@xemacs.org"))
-
-   Note that each string is a regular expression.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.7,  Next: Q4.0.8,  Prev: Q4.0.6,  Up: Subsystems
-
-Q4.0.7: Is there a mailing list or FAQ for VM?
-----------------------------------------------
-
-   A FAQ for VM exists at `http://www.cyberpass.net/~gorkab/vmfaq.htm'.
-
-   VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.8,  Next: Q4.0.9,  Prev: Q4.0.7,  Up: Subsystems
-
-Q4.0.8: Remote mail reading with VM.
-------------------------------------
-
-   My mailbox lives at the office on a big honkin server.  My regular
-INBOX lives on my honkin desktop machine.  I now can PPP to the office
-from home which is far from honking...  I'd like to be able to read
-mail at home without storing it here and I'd like to use xemacs and VM
-at home...  Is there a recommended setup?
-
-   Joseph J. Nuspl Jr. <nuspl@nvwls.cc.purdue.edu> writes:
-
-     There are several ways to do this.
-
-       1. Set your display to your home machine and run dxpc or one of
-          the other X compressors.
-
-       2. NFS mount your desktop machine on your home machine and
-          modify your pop command on your home machine to rsh to your
-          desktop machine and actually do the pop get's.
-
-       3. Run a POP server on your desktop machine as well and do a
-          sort of two tiered POP get.
-
-   William Perry <wmperry@monolith.spry.com> adds:
-
-     Or you could run a pop script periodically on your desktop
-     machine, and just use ange-ftp or NFS to get to your mailbox.  I
-     used to do this all the time back at IU.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.9,  Next: Q4.0.10,  Prev: Q4.0.8,  Up: Subsystems
-
-Q4.0.9: rmail or VM gets an error incorporating new mail.
----------------------------------------------------------
-
-   Quoting the XEmacs PROBLEMS file:
-
-     rmail and VM get new mail from `/usr/spool/mail/$USER' using a
-     program called `movemail'.  This program interlocks with
-     `/bin/mail' using the protocol defined by `/bin/mail'.
-
-     There are two different protocols in general use.  One of them
-     uses the `flock' system call.  The other involves creating a lock
-     file; `movemail' must be able to write in `/usr/spool/mail' in
-     order to do this.  You control which one is used by defining, or
-     not defining, the macro `MAIL_USE_FLOCK' in `config.h' or the m-
-     or s- file it includes.
-
-     *IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
-     SYSTEM, YOU CAN LOSE MAIL!*
-
-     If your system uses the lock file protocol, and fascist
-     restrictions prevent ordinary users from writing the lock files in
-     `/usr/spool/mail', you may need to make `movemail' setgid to a
-     suitable group such as `mail'.  You can use these commands (as
-     root):
-
-          chgrp mail movemail
-          chmod 2755 movemail
-
-     If your system uses the lock file protocol, and fascist
-     restrictions prevent ordinary users from writing the lock files in
-     `/usr/spool/mail', you may need to make `movemail' setgid to a
-     suitable group such as `mail'.  To do this, use the following
-     commands (as root) after doing the make install.
-
-          chgrp mail movemail
-          chmod 2755 movemail
-
-     Installation normally copies movemail from the build directory to
-     an installation directory which is usually under `/usr/local/lib'.
-     The installed copy of `movemail' is usually in the directory
-     `/usr/local/lib/emacs/VERSION/TARGET'.  You must change the group
-     and mode of the installed copy; changing the group and mode of the
-     build directory copy is ineffective.
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.10,  Next: Q4.0.11,  Prev: Q4.0.9,  Up: Subsystems
-
-Q4.0.10: How do I make VM stay in a single frame?
--------------------------------------------------
-
-   John.John S Cooper <Cooper@Eng.Sun.COM> writes:
-
-                                               ; Don't use multiple frames
-          (setq vm-frame-per-composition nil)
-          (setq vm-frame-per-folder nil)
-          (setq vm-frame-per-edit nil)
-          (setq vm-frame-per-summary nil)
-
-\1f
-File: xemacs-faq.info,  Node: Q4.0.11,  Next: Q4.0.12,  Prev: Q4.0.10,  Up: Subsystems
-
-Q4.0.11: How do I make VM or mh-e display graphical smilies?
-------------------------------------------------------------
-
-   For mh-e use the following:
-
-     (add-hook 'mh-show-mode-hook '(lambda ()
-                               (smiley-region (point-min)
-                                                    (point-max))))
-
-   WJCarpenter <bill@carpenter.ORG> writes: For VM use the following:
-            (autoload 'smiley-region "smiley" nil t)
-            (add-hook 'vm-select-message-hook
-                      '(lambda ()
-                         (smiley-region (point-min)
-                                        (point-max))))
-
-   For tm use the following:
-     (autoload 'smiley-buffer "smiley" nil t)
-     (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
-
-\1f
 File: xemacs-faq.info,  Node: Q4.0.12,  Next: Q4.1.1,  Prev: Q4.0.11,  Up: Subsystems
 
 Q4.0.12: Customization of VM not covered in the manual, or here.
@@ -158,7 +18,7 @@ Q4.0.12: Customization of VM not covered in the manual, or here.
      directory of the lisp library.
 
      `vm-vars.el' contains, initializes and carefully describes, with
-     examples of usage, the plethora of user options that *fully*
+     examples of usage, the plethora of user options that _fully_
      control VM's behavior.
 
      Enter vm-vars, `forward-search' for toolbar, find the variables
@@ -213,7 +73,7 @@ Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
 --------------------------------------------------------------------------------
 
    The Gnus numbering issues are not meant for mere mortals to know
-them.  If you feel you *must* enter the muddy waters of Gnus, visit the
+them.  If you feel you _must_ enter the muddy waters of Gnus, visit the
 excellent FAQ, maintained by Justin Sheehy, at:
 
      `http://www.ccs.neu.edu/software/contrib/gnus/'
@@ -705,7 +565,7 @@ usually one or more of the following:
      Each package bundled with XEmacs means more work for the
      maintainers, whether they want it or not.  If you are ready to
      take over the maintenance responsibilities for the package you
-     port, be sure to say so - we will more likely include it.
+     port, be sure to say so--we will more likely include it.
 
   3. The package simply hasn't been noted by the XEmacs development.  If
      that's the case, the messages like yours are very useful for
@@ -722,8 +582,9 @@ File: xemacs-faq.info,  Node: Q4.7.6,  Prev: Q4.7.5,  Up: Subsystems
 Q4.7.5: Is there a MatLab mode?
 -------------------------------
 
-   Yes, a matlab mode and other items are available at the
-MathWorks' emacs_add_ons ftp directory (ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons).
+   Yes, a matlab mode and other items are available at the MathWorks'
+emacs_add_ons ftp directory
+(ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons).
 
 \1f
 File: xemacs-faq.info,  Node: Miscellaneous,  Next: MS Windows,  Prev: Subsystems,  Up: Top
@@ -766,7 +627,7 @@ Emacs Lisp Programming Techniques:
 * Q5.1.4::      What is the performance hit of `let'?
 * Q5.1.5::      What is the recommended use of `setq'?
 * Q5.1.6::      What is the typical misuse of `setq'?
-* Q5.1.7::      I like the the `do' form of cl, does it slow things down?
+* Q5.1.7::      I like the `do' form of cl, does it slow things down?
 * Q5.1.8::      I like recursion, does it slow things down?
 * Q5.1.9::      How do I put a glyph as annotation in a buffer?
 * Q5.1.10::     `map-extents' won't traverse all of my extents!
@@ -782,7 +643,7 @@ Miscellaneous:
 * Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
 * Q5.3.2::      Fontifying hangs when editing a postscript file.
 * Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
-* Q5.3.4::      Getting `M-x lpr' to work with postscript printer.
+* Q5.3.4::      Getting M-x lpr to work with postscript printer.
 * Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
 * Q5.3.6::      [This question intentionally left blank]
 * Q5.3.7::      Can I have the end of the buffer delimited in some way?
@@ -805,8 +666,8 @@ Q5.0.1: How can I do source code highlighting using font-lock?
 turned on.  This can be done by `M-x font-lock-mode', or by having
 XEmacs automatically start it by adding lines like:
 
-     (add-hook 'emacs-lisp-mode-hook   'turn-on-font-lock)
-     (add-hook 'dired-mode-hook        'turn-on-font-lock)
+     (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
+     (add-hook 'dired-mode-hook      'turn-on-font-lock)
 
    to your `.emacs'.  See the file `etc/sample.emacs' for more examples.
 
@@ -878,7 +739,7 @@ standard with XEmacs.  Put this into your `.emacs':
 
    You can customize filling and adaptive filling with Customize.
 Select from the `Options' menu
-`Customize->Emacs->->Editing->Fill->Fill...'  or type `M-x customize
+`Customize->Emacs->->Editing->Fill->Fill...' or type `M-x customize
 <RET> fill <RET>'.
 
    Note that well-behaving text-lookalike modes will run
@@ -1135,7 +996,7 @@ Q5.0.19: Is there something better than LaTeX mode?
 
      The standard TeX modes leave much to be desired, and are somewhat
      leniently maintained.  Serious TeX users use AUC TeX (*note
-     Q4.7.1::.).
+     Q4.7.1::).
 
 \1f
 File: xemacs-faq.info,  Node: Q5.0.20,  Next: Q5.1.1,  Prev: Q5.0.19,  Up: Miscellaneous
@@ -1312,3 +1173,154 @@ think because of clarity and maintenance (and possible future
 implementation), `let'-s should be used (nested) in a way to provide
 the clearest code.
 
+\1f
+File: xemacs-faq.info,  Node: Q5.1.5,  Next: Q5.1.6,  Prev: Q5.1.4,  Up: Miscellaneous
+
+Q5.1.5: What is the recommended use of `setq'?
+----------------------------------------------
+
+   * Global variables
+
+     You will typically `defvar' your global variable to a default
+     value, and use `setq' to set it later.
+
+     It is never a good practice to `setq' user variables (like
+     `case-fold-search', etc.), as it ignores the user's choice
+     unconditionally.  Note that `defvar' doesn't change the value of a
+     variable if it was bound previously.  If you wish to change a
+     user-variable temporarily, use `let':
+
+          (let ((case-fold-search nil))
+            ...                                   ; code with searches that must be case-sensitive
+            ...)
+
+     You will notice the user-variables by their docstrings beginning
+     with an asterisk (a convention).
+
+   * Local variables
+
+     Bind them with `let', which will unbind them (or restore their
+     previous value, if they were bound) after exiting from the `let'
+     form.  Change the value of local variables with `setq' or whatever
+     you like (e.g. `incf', `setf' and such).  The `let' form can even
+     return one of its local variables.
+
+     Typical usage:
+
+          ;; iterate through the elements of the list returned by
+          ;; `hairy-function-that-returns-list'
+          (let ((l (hairy-function-that-returns-list)))
+            (while l
+              ... do something with (car l) ...
+              (setq l (cdr l))))
+
+     Another typical usage includes building a value simply to work
+     with it.
+
+          ;; Build the mode keymap out of the key-translation-alist
+          (let ((inbox (file-truename (expand-file-name box)))
+                (i 0))
+            ... code dealing with inbox ...
+            inbox)
+
+     This piece of code uses the local variable `inbox', which becomes
+     unbound (or regains old value) after exiting the form.  The form
+     also returns the value of `inbox', which can be reused, for
+     instance:
+
+          (setq foo-processed-inbox
+                (let .....))
+
+\1f
+File: xemacs-faq.info,  Node: Q5.1.6,  Next: Q5.1.7,  Prev: Q5.1.5,  Up: Miscellaneous
+
+Q5.1.6: What is the typical misuse of `setq' ?
+----------------------------------------------
+
+   A typical misuse is probably `setq'ing a variable that was meant to
+be local.  Such a variable will remain bound forever, never to be
+garbage-collected.  For example, the code doing:
+
+     (defun my-function (whatever)
+       (setq a nil)
+       ... build a large list ...
+       ... and exit ...)
+
+   does a bad thing, as `a' will keep consuming memory, never to be
+unbound.  The correct thing is to do it like this:
+
+     (defun my-function (whatever)
+       (let (a)                              ; default initialization is to nil
+         ... build a large list ...
+         ... and exit, unbinding `a' in the process  ...)
+
+   Not only is this prettier syntactically, but it makes it possible for
+Emacs to garbage-collect the objects which `a' used to reference.
+
+   Note that even global variables should not be `setq'ed without
+`defvar'ing them first, because the byte-compiler issues warnings.  The
+reason for the warning is the following:
+
+     (defun flurgoze nil)                    ; ok, global internal variable
+     ...
+     
+     (setq flurghoze t)                      ; ops!  a typo, but semantically correct.
+                                             ; however, the byte-compiler warns.
+     
+     While compiling toplevel forms:
+     ** assignment to free variable flurghoze
+
+\1f
+File: xemacs-faq.info,  Node: Q5.1.7,  Next: Q5.1.8,  Prev: Q5.1.6,  Up: Miscellaneous
+
+Q5.1.7: I like the `do' form of cl, does it slow things down?
+-------------------------------------------------------------
+
+   It shouldn't.  Here is what Dave Gillespie has to say about cl.el
+performance:
+
+     Many of the advanced features of this package, such as `defun*',
+     `loop', and `setf', are implemented as Lisp macros.  In
+     byte-compiled code, these complex notations will be expanded into
+     equivalent Lisp code which is simple and efficient.  For example,
+     the forms
+
+          (incf i n)
+          (push x (car p))
+
+     are expanded at compile-time to the Lisp forms
+
+          (setq i (+ i n))
+          (setcar p (cons x (car p)))
+
+     which are the most efficient ways of doing these respective
+     operations in Lisp.  Thus, there is no performance penalty for
+     using the more readable `incf' and `push' forms in your compiled
+     code.
+
+     _Interpreted_ code, on the other hand, must expand these macros
+     every time they are executed.  For this reason it is strongly
+     recommended that code making heavy use of macros be compiled.  (The
+     features labelled "Special Form" instead of "Function" in this
+     manual are macros.)  A loop using `incf' a hundred times will
+     execute considerably faster if compiled, and will also
+     garbage-collect less because the macro expansion will not have to
+     be generated, used, and thrown away a hundred times.
+
+     You can find out how a macro expands by using the `cl-prettyexpand'
+     function.
+
+\1f
+File: xemacs-faq.info,  Node: Q5.1.8,  Next: Q5.1.9,  Prev: Q5.1.7,  Up: Miscellaneous
+
+Q5.1.8: I like recursion, does it slow things down?
+---------------------------------------------------
+
+   Yes.  Emacs byte-compiler cannot do much to optimize recursion.  But
+think well whether this is a real concern in Emacs.  Much of the Emacs
+slowness comes from internal mechanisms such as redisplay, or from the
+fact that it is an interpreter.
+
+   Please try not to make your code much uglier to gain a very small
+speed gain.  It's not usually worth it.
+