1 10/31/90  CJ52 (Multics EMACS Extension Writers' Guide)
  2           Errata Information for MR12.4
  3 
  4 
  5 Page 2-8: in the example at the  bottom of the page, change ("And
  6      the value of  x plus one is") to (print "And  the value of x
  7      plus one is").
  8 
  9 
 10 Page 3-3: replace  the Table on page  3-3 and 3-4 with  the Table |
 11      below (to correct formatting difficulties).                  |
 12                                                                   |
 13   KEY     DO NOT USE               USE INSTEAD                    |
 14                                                                   |
 15   ^N      next-line-command        next-line                      |
 16      The next-line-command function is unnecessarily expensive in |
 17      considering screen position,  and handles numeric arguments. |
 18      The next-line  function always goes to the  beginning of the |
 19      next line.                                                   |
 20                                                                   |
 21   ^P      prev-line-command        prev-line                      |
 22      Same reasons  as above.  The prev-line  function always goes |
 23      to the beginning of the previous line.                       |
 24 
 25 
 26   ^K      kill-lines               kill-to-end-of-line            |
 27                                    delete-char (at eol)           |
 28      The  kill-lines function  is  complex,  has many  cases, and |
 29      handles numeric arguments.                                   |
 30                                                                   |
 31   ^S      string-search            forward-search                 |
 32      The  forward-search  function  takes  a  string  as  a  Lisp |
 33      argument, does  not prompt, moves  the cursor if  the search |
 34      succeeds, and returns truth or falsity to indicate result.   |
 35                                                                   |
 36   ^R      reverse-string-search    reverse-search                 |
 37      Same as ^S.                                                  |
 38 
 39 
 40   ^X^R    read-file                read-in-file                   |
 41      The  read-in-file   function  takes  a  Lisp   argument  for |
 42      pathname, does not prompt.                                   |
 43                                                                   |
 44   ^X^W    write-file               write-out-file                 |
 45      Same as ^X^R.                                                |
 46                                                                   |
 47   ^W      wipe-region              wipe-point-mark                |
 48      Use local marks, see below.                                  |
 49                                                                   |
 50   ESC W   copy-region              point-mark-to-string           |
 51      Does not require modifying the user-visible mark or the kill |
 52      stack.                                                       |
 53 
 54 
 55   ESC /   regexp-search-command    regexp-search                  |
 56      Same  issues as  ^S.  Takes   a Lisp  argument, no  slashes. |
 57      Returns falsity if  not found or moves cursor  to after, and |
 58      returns  mark  to  before,  matched  string.   Be careful to |
 59      release this mark (see below).                               |
 60                                                                   |
 61   ^XB     select-buffer            go-to-or-create-buffer         |
 62      Takes an argument, does not prompt.                          |
 63                                                                   |
 64   ^X^F    find-file                find-file-subr                 |
 65      Takes an argument, does not prompt.                          |
 66 
 67 
 68   ^L      redisplay-command        full-redisplay                 |
 69                                redisplay-current-window-relative  |
 70      Two separate functions, less dealing with numeric arguments. |
 71 
 72 
 73 Page 3-10: change the description of (eolp) to the following.
 74 
 75      End of line predicate.  True if point is at the end of a
 76      text line (right before the newline character, unless it is
 77      on the last line and the buffer does not end in a newline).
 78 
 79 
 80 Page 3-11: replace the existing descriptions of (lastlinep) and
 81      (at-end-of-buffer) with the following:
 82 
 83      (lastlinep)
 84          Last line predicate.  True if on the last buffer line.
 85          If the buffer ends in a newline, then this is the line
 86          containing that newline; otherwise, it is the line after
 87          the last newline character.
 88 
 89      (at-end-of-buffer)
 90          True if point is at the end of the last line of the
 91          buffer; it is equivalent to (and (lastlinep) (eolp)).
 92 
 93 
 94 Page 3-12:  in the description of (at <QUOTED-CHARACTERS>),
 95      delete the two sentences beginning with "Note that".
 96 
 97 
 98 Page 3-13:  under "Whitespace Management", change the first
 99      sentence in the description of "skip-to-whitespace" to say   |
100      "...or newline, or the end of the buffer is reached."
101      Delete the sentence "Since last character in buffer must be
102      a newline, there is no special end condition."
103      In the description of "skip-over-whitespace-in-line", change
104      "...before the newline character at the end of the line.."
105      to "at the end of the line".
106 
107 
108 Page 3-20:  replace the "register-local-variable" with
109      "register-local-var".
110 
111 
112 Page 3-21:  the first paragraph replace the reference to
113      "register-local-variable" in with "register-local-var".
114 
115 
116 Page B-8:  under "Variables", change "register-local-variable" to
117      "register-local-var".
118 
119 
120 Page B-21:  delete the current description of
121      "minibuffer-response" and insert the following description:
122 
123      minibuffer-response Emacs function
124          takes one, two, or three arguments:  the first argument
125          is a prompt string; the second is either NL or ESC (if
126          not supplied, NL is the Default);and the third argument,
127          when used, is a string to be inserted as the user's
128          response.
129 
130 
131 Page B-22:  change the spelling of "nul-stringp" to "nulstringp".
132 
133 
134 Page B-24:  change "register-local-variable" to
135      "register-local-var".
136 
137 
138 Section 5:  add the following to the end of section 5.
139 
140      Extended ASCII (8bit) Character Handling
141 
142      The EMACS editor is capable of editing arbitrary data.
143      However, most terminal hardware and communications equipment
144      is able to handle only 7-bit ASCII data.  If suitable
145      hardware is available, EMACS can be made to accept and
146      display 8-bit 'extended' ASCII directly.
147 
148      In order to do this, the following conditions must be met.
149      The terminal must be able to generate 8-bit sequences
150      instead of 7-bit with parity.  It must be able to display
151      meaningful symbols when 8-bit codes are received as opposed
152 
153 
154      to interpreting the eighth bit as parity.  Furthermore, the
155      communications link used to attach the terminal to Multics
156      must be able to transport 8-bit data (some data networks do
157      not, and thus this feature may be unusable on them).
158 
159      The terminal in use must have a terminal type table (TTT)
160      entry that uses an output_conversion table which defines
161      those 8-bit codes that can be displayed by the terminal.
162      Normally, this table is maintained by system administration
163      and maintenance personnel, but the user may define a private
164      TTT, if desired.  The Multics Programmers Reference Manual
165      (AG91) describes the format for the TTF source used to
166      create a TTT.  See also the set_ttt_path command description
167      in the Commands Manual (AG92).
168 
169 
170      Any 8-bit code that displays directly should have an
171      output_conversion table entry of 0 (display directly).  All
172      other 8-bit codes should have an entry of 7 (display as
173      octal escape \nnn).
174 
175      The last thing to be done is to enable 8-bit display in the
176      terminal controller.  To enable the input and display of
177      8-bit characters, the LISP variable DCTL-extended-ascii
178      should be set non-nil in the controller function DCTL-init:
179 
180 
181      (declare (special DCTL-extended-ascii))
182         ...
183      (defun DCTL-init ()
184             ...
185 
186             (setq DCTL-extended-ascii t)
187             ...)
188 
189 
190      Any special terminal setup function required to enable 8-bit
191      display must then be done in the controller function
192      DCTL-prologue and any disabling should be done in
193      DCTL-epilogue.  This means that the CTL writer must provide
194      these two functions and must set to non-nil the LISP
195      variables DCTL-prologue-availablep and
196      DCTL-epilogue-availablep in the function DCTL-init.
197 
198      Note that any such conditioning must not be done in
199      DCTL-init since EMACS initialization has not yet set the
200      appropriate communications modes to allow such action to be
201      effective.
202 
203 
204      Enabling the extended ASCII I/O feature causes EMACS to
205      perform direct input and output of the 8-bit codes defined
206      in the output conversion table for the entire EMACS editing
207      session.  In order to disable it, a new EMACS invocation
208      must occur with a terminal type that does not set
209      DCTL-extended-ascii.  Thus, it may be convenient to have two
210      terminal types recognized by the CTL through the LISP
211      variable given-tty-type and base the setting of
212      DCTL-extended on this.  For example:
213 
214      (defun DCTL-init ()
215             ...
216             (setq DCTL-extended-ascii (eq given-tty-type 'TTP_8bit))
217             ...)
218 
219 
220      When 8-bit is enabled, those 8-bit codes which are defined
221      with a 0 entry in the output_conversion table will be bound
222      to self-insert and will thus be entered as a single byte in
223      the buffer.  Other 8-bit codes are bound to
224      undefined-command and will be rejected unless quoted.
225 
226      Extended character set display functionality may also be
227      used with terminals that implement extended or alternate
228      character sets through escape sequences or character set
229      shifts.  The CTL functions may translate 8-bit codes found
230      in the display string to arbitrary 7-bit sequences that
231      provide the desired display action.  The relevant controller
232      functions are DCTL-insert-string and
233      DCTL-display-char-string.
234 
235 
236      Note, however, that direct input of extended characters will
237      not be possible.  To accommodate this a terminal specific
238      extension, that rebinds input keys for example, must be
239      written.
240 
241      The user should note that support for extended 8-bit codes
242      is limited to the basic input and display management
243      portions of EMACS.  It may be possible that some portion of
244      EMACS will not deal with non-ASCII (non 7-bit) in the way
245      desired.  Any segments produced using 8-bit support within
246      EMACS must be considered to contain binary data.
247      Furthermore, no explicit mapping of codes to graphics is
248      assumed by this extension.
249 
250 
251      If desired, 8-bit input codes may be bound to EMACS
252      functions or commands other than self-insert and
253      undefined-command via the set-key and set-perm-key
254      functions.  Extended characters may be represented via any
255      of the following forms:
256 
257          extended-<non-extended-char-description>
258          ext-<necd>
259          x-<necd>
260 
261 
262      For example, the 8-bit code 231 (octal) can be bound to
263      forward-word with any of the following forms:
264 
265          (set-key "extended-^Y" 'forward-word)
266          (set-key "ext-^Y" 'forward-word)
267          (set-key "x-^Y" 'forward)
268          (set-key (ascii 231) 'forward-word)
269 
270      An extended character description will be accepted only if
271      the variable DCTL-extended-ascii is non-nil.
272 
273      Extended characters are displayed as
274      "ext-<char-description>" in keyboard macro display and
275      keystroke history display.