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.