home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / gnu / emacs-18.59-bin.lha / lib / emacs / 18.59 / etc / DIFF < prev    next >
Text File  |  1988-08-17  |  31KB  |  780 lines

  1. How is this Emacs different from all other Emacses?  -*-Outline-*-
  2.  (Actually, from Twenex Emacs)
  3.  
  4. * Copyright (c) 1985 Richard M. Stallman
  5.  
  6.    Permission is granted to anyone to make or distribute verbatim copies
  7.    of this document as received, in any medium, provided that the
  8.    copyright notice and permission notice are preserved,
  9.    and that the distributor grants the recipient permission
  10.    for further redistribution as permitted by this notice.
  11.  
  12.    Permission is granted to distribute modified versions
  13.    of this document, or of portions of it,
  14.    under the above conditions, provided also that they
  15.    carry prominent notices stating who last changed them.
  16.  
  17. * Fundamental concepts.
  18.  
  19. ** There is no concept of "typeout" in GNU Emacs.
  20.  
  21. Any time that a command wants to display some output,
  22. it creates a buffer (usually with a name surrounded by asterisks)
  23. and displays it in a window.
  24.  
  25. This provides some advantages:
  26.  you can edit some more while looking at the output;
  27.  you can copy parts of the output into other buffers.
  28.  
  29. It also has a disadvantage that you must type a command
  30. in order to make the output disappear.
  31. You can use C-x 1 to get rid of all windows except the
  32. selected one.  To be more selective, you can switch to
  33. the window you want to get rid of and then type C-x 0
  34. (delete-window).
  35.  
  36. You also need to type a command to scroll the other
  37. window if not all the output fits in it.  Meta-Control-v
  38. will usually do the job.
  39.  
  40. ** There is no concept of a "subsystem" in GNU Emacs.
  41.  
  42. Where Twenex Emacs would use a subsystem, GNU Emacs
  43. instead creates a buffer and redefines commands in it.
  44.  
  45. For example, when you send mail in GNU Emacs, you use
  46. a buffer named *mail* which is in Mail Mode.  You can
  47. switch away from this buffer to any other buffer and
  48. resume normal editing; then switch back and resume
  49. composing mail.  You do not have to "exit" from
  50. composing mail in order to do ordinary editing.
  51.  
  52. This has many advantages, but it also has a disadvantage:
  53. Subsystems in Emacs tend to have "exit" commands that return you
  54. to whatever you were doing before entering the subsystem.
  55. In GNU Emacs the idea of what to return to is not well defined,
  56. so it is not clear what an "exit" command should do.
  57. The only way to "exit" in general is to type C-x b, C-x C-f, or
  58. some other suitable command to switch buffers.  Some
  59. subsystem-like major modes, such as Info and Mail mode, provide
  60. commands to "exit" by switching to the previously selected
  61. buffer.
  62.  
  63. ** Files are always visited in their own buffers.
  64.  
  65. Beginning users of Twenex Emacs were told how to edit
  66. using a single buffer and reading one file after another
  67. into that buffer.  Use of a new buffer for each file was
  68. regarded as a more advanced mode.
  69.  
  70. In GNU Emacs, the idea of using a single buffer for various
  71. files, one by one, has been dropped, given that the address
  72. space is expected to be large enough for many buffers.  C-x
  73. C-f (find-file), which behaves nearly the same as in Twenex
  74. Emacs, is in GNU Emacs the canonical way for all users to
  75. visit files.
  76.  
  77. Various commands need to read files into Emacs in the course
  78. of their execution.  In Twenex Emacs the user must tell them
  79. whether to reuse buffers or create new ones, using the variable
  80. Tags Find File.  In GNU Emacs, these commands always use
  81. C-x C-f.
  82.  
  83. The command C-x C-v does still exist; it kills the current
  84. buffer and reads the specified file into a new buffer.
  85. It is equivalent to kill-buffer followed by find-file.
  86.  
  87. Since there is no reusing of buffers, there is no point in
  88. calling the initial buffer "main".  So the initial buffer
  89. in GNU Emacs is called "*scratch*" and is intended for typing
  90. Lisp expressions to be evaluated.
  91.  
  92. ** File name defaulting.
  93.  
  94. GNU Emacs records a separate working directory for each buffer.
  95. Normally this is the directory on which the buffer's file
  96. resides; for buffers not visiting any file, it is copied from
  97. the buffer that was current when it was created.  The current buffer's
  98. working directory can be printed with M-x pwd and set with M-x cd.
  99.  
  100. GNU Emacs shows you the default directory by inserting it in
  101. the minibuffer when a file name is being read.  You can type
  102. the filename you want at the end of the default as if the
  103. default were not there, or you can edit and alter the default.
  104.  
  105. If you want file /lose/big when the default /foo/defaultdir/
  106. has been inserted for you, you need not kill the default; simply
  107. type at the end of it: /foo/defaultdir//lose/big.  Such a file
  108. name is not ordinarily considered valid, but GNU Emacs
  109. considers it equivalent to /lose/big.
  110.  
  111. Likewise, if you want file quux in your home directory, just add
  112. ~/quux to the end of the supplied text, to get
  113. /foo/defaultdir/~/quux.  GNU Emacs sees "/~" and throws away
  114. everything before the "~".
  115.  
  116. You can refer to environment variables also within file names.
  117. $ followed by the environment variable name is replaced by the
  118. variable's value.  The variable name should either be followed
  119. by a nonalphanumeric character (which counts as part of the
  120. file name) or be surrounded by braces {...} (which do not count
  121. as part of the file name).  Thus, if variable USER has value "rms",
  122. "x/$USER-foo" is expanded to "x/rms-foo", and "x${USER}foo"
  123. is expanded to "xrmsfoo".  Note that this substitution is not
  124. performed by the primitive file operation functions of GNU Emacs,
  125. but rather by the interactive file name reader.  It is also
  126. available as a separate primitive, in the function
  127. substitute-in-file-name.
  128.  
  129. ** Exit commands C-z, C-x C-c and C-x C-z.
  130.  
  131. There are two ways to exit GNU Emacs: killing and suspending.
  132. Killing is like what Control-c does to ordinary Unix programs.
  133. In GNU Emacs, you type C-x C-c to kill it.  (This offers to
  134. save any modified file buffers before really killing Emacs.)
  135. Suspending is like what Control-z does to ordinary Unix programs.
  136. To suspend GNU Emacs, type C-x C-z, or type just C-z.
  137. Note that C-z suspends ordinary programs instantly, but
  138. Emacs does not suspend until it reads the C-z.
  139.  
  140. Usually it is better to suspend: once a system is smart
  141. enough to have job control, why ever kill an editor?
  142. You'll just have to make a new one in a minute.
  143. This is why the convenient command C-z is provided for
  144. suspending.
  145.  
  146. C-c is used as a prefix key for mode-specific commands and for users'
  147. own commands.  We deliberately do not make C-c ever kill Emacs,
  148. because it should not be so easy to do something irreversible.
  149.  
  150. ** Quitting with C-g.
  151.  
  152. If you type C-g while GNU Emacs is waiting for input, it
  153. is an ordinary command (which is defined to beep).  If you
  154. type C-g while Lisp code is executing, it sets a flag which
  155. causes a special signal, nearly the same as an error, to
  156. happen atthe next safe place in Lisp execution.  This usually
  157. has the effect of aborting the current command in a safe way.
  158.  
  159. Because at times there have been bugs causing GNU Emacs to loop
  160. without checking the quit flag, a special feature causes
  161. GNU Emacs to be suspended immediately if you type a second C-g
  162. while the flag is already set.  So you can always get out
  163. of GNU Emacs.  Normally GNU Emacs recognizes and clears the quit flag
  164. quickly enough to prevent this from happening.
  165.  
  166. When you resume GNU Emacs after a suspension caused by multiple C-g, it
  167. asks two questions before resuming execution:
  168.  Checkpoint?
  169.  Dump core?
  170. Answer each one with `y' or `n' and a Return.
  171.  `y' to Checkpoint? causes immediate auto-saving of all
  172.     buffers in which auto-saving is enabled.
  173.  `y' to Dump core? causes an illegal instruction to be executed.
  174.     This is to enable a wizard to figure out why GNU Emacs was
  175.     looping without checking for quits.  Execution does not continue
  176.     after a core dump.  If you answer `n', execution continues.
  177. With luck, GNU Emacs will ultimately check the quit flag,
  178. and quit normally.  If not, and you type another C-g, it
  179. is suspended again.
  180.  
  181. If GNU Emacs is not really hung, just slow, you may invoke
  182. the double C-g feature without really meaning to.  Then just
  183. resume and answer `n' to both questions, and you will
  184. arrive at your former state.  Presumably the quit you
  185. wanted will finish happening soon.
  186.  
  187. These questions are not asked if you suspend GNU Emacs with the C-z
  188. command.  Continuing GNU Emacs after a C-z