comparison etc/NEWS @ 464:5aa1854ad537 r21-2-47

Import from CVS: tag r21-2-47
author cvs
date Mon, 13 Aug 2007 11:45:51 +0200
parents 0784d089fdc9
children 52626a2f02ef
comparison
equal deleted inserted replaced
463:a158004111cd 464:5aa1854ad537
1 -*- mode:outline -*- 1 -*- mode:outline -*-
2 2
3 * Introduction 3 * Introduction
4 ============== 4 ==============
5 5
6 This file presents some general information about XEmacs. It is 6 This file presents the changes in recent XEmacs versions. It
7 primarily about the changes in recent XEmacs versions and its release 7 primarily documents user-visible (interface) changes, but also
8 history. 8 includes internal changes of possible interest to the users. When
9 describing new features, we try to also document ways of reverting to
10 the old behavior, where applicable. If you dislike a recent change in
11 how XEmacs behaves, this file might contain a remedy.
9 12
10 Use `C-c C-f' to move to the next equal level of outline, and 13 Use `C-c C-f' to move to the next equal level of outline, and
11 `C-c C-b' to move to previous equal level. `C-h m' will give more 14 `C-c C-b' to move to previous equal level. `C-h m' will give more
12 info about the Outline mode. Many commands are also available through 15 info about the Outline mode. Many commands are also available through
13 the menubar. 16 the menubar.
15 Users who would like to know which capabilities have been introduced 18 Users who would like to know which capabilities have been introduced
16 in each release should look at the appropriate section of this file. 19 in each release should look at the appropriate section of this file.
17 Starting with version 20.0, XEmacs includes ChangeLogs, which can be 20 Starting with version 20.0, XEmacs includes ChangeLogs, which can be
18 consulted for a more detailed list of changes. 21 consulted for a more detailed list of changes.
19 22
20 Users interested in some of the details of how XEmacs differs from GNU
21 Emacs should read the section "What's Different?" near the end of this
22 file.
23
24 N.B. The term "GNU Emacs" refers to any release of Emacs Version 23 N.B. The term "GNU Emacs" refers to any release of Emacs Version
25 19 from the Free Software Foundation's GNU Project. (We do not 24 19 from the Free Software Foundation's GNU Project. (We do not
26 say just "Emacs" as Richard M. Stallman ["RMS"] prefers, because 25 say just "Emacs" as Richard M. Stallman ["RMS"] prefers, because
27 it is clearly a more generic term.) The term "XEmacs" refers to 26 it is clearly a more generic term.) The term "XEmacs" refers to
28 this program or to its predecessors "Era" and "Lucid Emacs". The 27 this program or sometimes to its predecessors "Era" and "Lucid
29 predecessor of all these program is called "Emacs 18". When no 28 Emacs". The predecessor of all these program is called "Emacs
30 particular version is implied, "Emacs" will be used. 29 18". When no particular version is implied, "Emacs" will be used.
31 30
32 31
33 * Changes in XEmacs 21.2 32 * Changes in XEmacs 21.4
34 ======================== 33 ========================
35
36 ** The modeline's text is now scrollable. Please refer to the variable
37 `modeline-scrolling-method' for more information.
38 34
39 ** The delete key now deletes forward by default. 35 ** The delete key now deletes forward by default.
40 36
41 This is regulated by the variable `delete-key-deletes-forward', which 37 This is regulated by the variable `delete-key-deletes-forward', which
42 now defaults to t. `delete-key-deletes-forward' takes effect only on 38 now defaults to t. `delete-key-deletes-forward' takes effect only on
48 Unless our implementation has bugs, the only reason why you would want 44 Unless our implementation has bugs, the only reason why you would want
49 to set `delete-key-deletes-forward' to nil is if you want to use the 45 to set `delete-key-deletes-forward' to nil is if you want to use the
50 Delete key to delete backwards, despite the presence (according to 46 Delete key to delete backwards, despite the presence (according to
51 Xlib) of a BackSpace key on the keyboard. 47 Xlib) of a BackSpace key on the keyboard.
52 48
49 ** You can now build XEmacs with support for GTK+ widget set.
50
51 XEmacs built that way uses GTK+ to draw menubars, scrollbars, and
52 other GUI components, as well GDK for drawing text, choosing fonts,
53 allocating colors, etc. Additionally, GTK-XEmacs supports Lisp
54 functions for writing your own GTK programs in Emacs Lisp!
55
56 To use this, build XEmacs with the `--with-gtk' configure flag. (Of
57 course, you'll need to have the GTK+ libraries and header files on the
58 system.) Gnome widgets and functionality are supported where
59 available, and can be turned off.
60
53 ** Shifted motion keys now select text by default. You can turn this 61 ** Shifted motion keys now select text by default. You can turn this
54 off by setting `shifted-motion-keys-select-region' to nil. 62 off by setting `shifted-motion-keys-select-region' to nil.
55 63
56 ** You can now set the variable `kill-whole-line' to `always', which 64 ** There is a new command `kill-entire-line' that always kills the
57 makes `kill-line' (C-k) delete the entire line always, not just when 65 entire line at point, regardless of whether the point is at the
58 the cursor is at the beginning of the line. This behavior, as well as 66 beginning of line, and regardless of the setting of `kill-whole-line'.
59 the existing kill-whole-line behavior, now only take effect when 67
60 kill-line is called interactively, although this is a departure from a 68 ** The variable `kill-whole-line' now only takes effect when kill-line
61 previous behavior in the case of setting this variable kill-whole-line 69 is called interactively. Although this is a departure from a previous
62 to t. It is almost certainly what has always been intended, and most 70 behavior in the case of setting this variable kill-whole-line to t,
63 likely the old way of doing things introduced bugs. 71 it is almost certainly what has always been intended, and most likely
64 72 the old way of doing things introduced bugs.
65 The new function `historical-kill-line' ignores the `kill-whole-line' 73
66 setting and always gives the historical behavior of only killing to 74 ** The help buffers created by the plethora of C-h commands now
67 the end of the line. This function is bound to Sh-C-k, so that the 75 contain hyperlinks.
68 kill to end of line behavior is available, even when `kill-whole-line' 76
69 has been customized. 77 ** The modeline's text is now scrollable. This is controlled by the
78 variable `modeline-scrolling-method', which you need to set to a
79 non-nil value. You can also choose scrolling types; see the docstring
80 of `modeline-scrolling-method' for more information.
70 81
71 ** XEmacs menus now have accelerators by default. If a menu item does 82 ** XEmacs menus now have accelerators by default. If a menu item does
72 not have an accelerator specified, one is created dynamically, using 83 not have an accelerator specified, one is created dynamically, using
73 numbers 1-9 and letters. 84 numbers 1-9 and letters.
74 85
88 ** Incremental search will now highlight all visible matches, making 99 ** Incremental search will now highlight all visible matches, making
89 it easier to anticipate where consecutive C-s or C-r will place the 100 it easier to anticipate where consecutive C-s or C-r will place the
90 point. If you want to disable the feature, set 101 point. If you want to disable the feature, set
91 `isearch-highlight-all-matches' to nil. 102 `isearch-highlight-all-matches' to nil.
92 103
104 ** The "coding systems" feature now works even in an XEmacs compiled
105 without international (Mule) support. This means that for example
106 XEmacs can recognize newline convention used by the file you are
107 editing.
108
93 ** You can now use the buffer tabs to switch between buffers. The 109 ** You can now use the buffer tabs to switch between buffers. The
94 tabs are located between the toolbar and the uppermost window, in a 110 tabs are located between the toolbar and the uppermost window, in a
95 location called "gutter". If you dislike the buffer tabs, you can 111 location called "gutter". If you dislike the buffer tabs, you can
96 disable them by customizing `gutter-buffers-tab-visible-p', or by 112 disable them by customizing `gutter-buffers-tab-visible-p', or by
97 placing this in your .emacs: 113 placing this in your .emacs:
111 ** When you press RET at a minibuffer prompt that provides a default 127 ** When you press RET at a minibuffer prompt that provides a default
112 value, the value is stored in history instead of an empty line. Also, 128 value, the value is stored in history instead of an empty line. Also,
113 you can now edit the default value by pressing the down arrow, 129 you can now edit the default value by pressing the down arrow,
114 accessing the logical "future" value. Not all minibuffer prompts have 130 accessing the logical "future" value. Not all minibuffer prompts have
115 yet been converted to support this feature. 131 yet been converted to support this feature.
132
133 ** International keysyms are now supported under X. This means that
134 XEmacs running under Mule will automatically recognize the keysym
135 `scaron' to be the lower-case `s' with caron in the Latin 2 character
136 set. (Specifically, it will bind the keysym to `self-insert' and
137 augment its `ascii-character' property.) This is very useful with
138 XFree under European locales as shipped by recent Linux distributions.
139 If XEmacs is compiled without Mule support, the feature still works,
140 but it is unaware of different character sets -- it unconditionally
141 sets the `ascii-character' property to values in the [160, 256) range.
116 142
117 ** The rectangle functions have been almost completely rewritten in 143 ** The rectangle functions have been almost completely rewritten in
118 order to avoid inserting undesirable spaces, notably at the end of 144 order to avoid inserting undesirable spaces, notably at the end of
119 lines. Two typical examples of the old behavior were 145 lines. Two typical examples of the old behavior were
120 `string-rectangle', which filled all lines up to the right side of the 146 `string-rectangle', which filled all lines up to the right side of the
174 200
175 ** XEmacs can now play sound using Enlightenment Sound Daemon (ESD). 201 ** XEmacs can now play sound using Enlightenment Sound Daemon (ESD).
176 It will try NAS first, then ESD, then playing native sound directly. 202 It will try NAS first, then ESD, then playing native sound directly.
177 203
178 ** X-Face support is now available under MS-Windows. 204 ** X-Face support is now available under MS-Windows.
179 If an X-Face libary built under MS-Windows is available then XEmacs 205 If an X-Face library built under MS-Windows is available then XEmacs
180 will use this at build time. 206 will use this at build time.
181 207
182 ** The font-menu is now available under MS-Windows. 208 ** The font-menu is now available under MS-Windows.
183 209
184 ** MS-Windows support for selection is now much more robust. 210 ** MS-Windows support for selection is now much more robust.
190 per X. 216 per X.
191 217
192 The only thing selection doesn't do is set the clipboard automatically 218 The only thing selection doesn't do is set the clipboard automatically
193 as this would break the MS-Windows model. If you want this behavior 219 as this would break the MS-Windows model. If you want this behavior
194 then set `selection-sets-clipboard' to t. 220 then set `selection-sets-clipboard' to t.
221
222 ** Motif selection support is now more correct (but slower) in its behaviour.
223
224 Changes have been made to allow correct operation of cut/copy/paste
225 operations between native widgets and XEmacs buffers. However, this
226 can lead to a lot of X traffic which slows down the performance of
227 `C-k'. If you want the old behaviour then set
228 `x-selection-strict-motif-ownership' to nil.
195 229
196 ** Mail spool locking now works correctly. 230 ** Mail spool locking now works correctly.
197 XEmacs has always come with a little auxiliary program, movemail, 231 XEmacs has always come with a little auxiliary program, movemail,
198 which moves mail out of the system's spool area into user storage. To 232 which moves mail out of the system's spool area into user storage. To
199 coordinate between XEmacs, the mail delivery agent, and other mail 233 coordinate between XEmacs, the mail delivery agent, and other mail
206 When installing XEmacs, make sure you configure it according to your 240 When installing XEmacs, make sure you configure it according to your
207 environment's mail spool locking conventions. When you're using a 241 environment's mail spool locking conventions. When you're using a
208 binary kit, set the `mail-lock-method' variable at startup, or the 242 binary kit, set the `mail-lock-method' variable at startup, or the
209 EMACSLOCKMETHOD environment variable. 243 EMACSLOCKMETHOD environment variable.
210 244
211 ** Init file will move to ~/.xemacs/init.el. 245 ** Indentation no longer indents comments that begin at column zero.
212 246 This makes it easy to deal with commented out regions of code.
213 If `~/.xemacs/init.el' exists, XEmacs will prefer it over `~/.emacs' 247
214 as an init file. The file may be byte-compiled as 248 ** Init file changes.
215 `~/.xemacs/init.elc'. 249
216 250 *** XEmacs now supports a `~/.xemacs/init.el' startup file. If
217 Future versions of XEmacs will stop supporting `~/.emacs' as an init 251 it exists, XEmacs will prefer it over `.emacs' and `.emacs.el'. The
218 file. XEmacs offers automatic migration upon startup. 252 file may be byte-compiled as `~/.xemacs/init.elc'.
219 253
220 ** Custom file will move to ~/.xemacs/custom.el. 254 If present, the `~/.xemacs/' directory may contain startup files for
255 XEmacs packages that support it.
256
257 *** Init file in your home directory may be called `.emacs.el'.
258
259 Like in GNU Emacs 20.4 and on, you can now name the XEmacs init file
260 located in your home directory `.emacs.el'. Formerly the name had to
261 be `.emacs'. If you use the name `.emacs.el', you can byte-compile
262 the file in the usual way.
263
264 If both `.emacs' and `.emacs.el' exist, the latter file is the one
265 that is used.
266
267 *** New command-line switches -user-init-file and -user-init-directory.
268 These can be used to specify alternate locations for what is normally
269 ~/.emacs and ~/.xemacs.
270
271 Moreover, the `-user <user>' command-line option (which used to only
272 work in unpredictable ways) is now equivalent to `-user-init-file
273 ~<user>/.xemacs/init.el -user-init-directory ~<user>/.xemacs', or
274 `-user-init-file ~<user>/.emacs -user-init-directory ~<user>/.xemacs',
275 whichever init file comes first.
276
277 *** Custom file will move to ~/.xemacs/custom.el.
221 278
222 Whereas customize settings were formerly stored in the regular init 279 Whereas customize settings were formerly stored in the regular init
223 file, XEmacs now prefers them to be in a separate file 280 file, XEmacs now prefers them to be in a separate file
224 `~/.xemacs/custom.el', completely under automatic control. This 281 `~/.xemacs/custom.el', completely under automatic control. This
225 change goes with the migration of the init file, and XEmacs offers 282 change goes with the migration of the init file, and XEmacs offers
226 automatic migration upon startup. 283 automatic migration upon startup.
227
228 ** Init file may be called .emacs.el.
229
230 For the time being, like in GNU Emacs 20.4 and on, you can now name
231 the XEmacs init file `.emacs.el'. Formerly the name had to be
232 `.emacs'. If you use the name `.emacs.el', you can byte-compile the
233 file in the usual way.
234
235 If both `.emacs' and `.emacs.el' exist, the latter file is the one
236 that is used.
237
238 ** New command-line switches -user-init-file and -user-init-directory.
239 These can be used to specify alternate locations for what is normally
240 ~/.emacs and ~/.xemacs.
241
242 Moreover, -user <user> (which used to only work in unpredictable ways)
243 is now equivalent to -user-init-file ~<user>/.xemacs/init.el
244 -user-init-directory ~<user>/.xemacs. or -user-init-file
245 ~<user>/.emacs -user-init-directory ~<user>/.xemacs, whichever init
246 file comes first.
247 284
248 ** New variable `mswindows-alt-by-itself-activates-menu'. 285 ** New variable `mswindows-alt-by-itself-activates-menu'.
249 If you set this variable to nil then pressing and releasing the Alt 286 If you set this variable to nil then pressing and releasing the Alt
250 key under MS-Windows will no longer activate the menubar. The default 287 key under MS-Windows will no longer activate the menubar. The default
251 is t. This is not to be confused with `menu-accelerator-enabled', 288 is t. This is not to be confused with `menu-accelerator-enabled',
266 It is now possible to build XEmacs so that the programming interface 303 It is now possible to build XEmacs so that the programming interface
267 to the PostgreSQL RDBMS (libpq) is available in XEmacs Lisp. 304 to the PostgreSQL RDBMS (libpq) is available in XEmacs Lisp.
268 Supported versions of PostgreSQL are 6.5.3 (earlier versions may work, 305 Supported versions of PostgreSQL are 6.5.3 (earlier versions may work,
269 but have not been tested) and 7.0-beta1. 306 but have not been tested) and 7.0-beta1.
270 307
308 ** Help functions (e.g. `C-h f') now know how to print macro argument
309 lists. If your macro definition included an argument list for the
310 sake of help output, you no longer need to do that.
311
312 ** Mule changes.
313
314 *** Windows 1251 code page is now supported as coding system
315 `windows-1251'.
316
317 *** Czech, Thai, Cyrillic-KOI8, Vietnamese, Ethiopic support now
318 available.
319
320 *** The appropriate characters in Latin 3 and Latin 4 character sets
321 are correctly defined as words.
322
323 *** The default coding-priority-list is now safer. This means that if
324 you have no language environment set, Mule no longer automatically
325 recognizes ISO 2022 escapes in your files. This makes editing binary
326 files safe.
327
271 ** Etags changes. 328 ** Etags changes.
272 329
273 *** In DOS, etags looks for file.cgz if it cannot find file.c. 330 *** In DOS, etags looks for file.cgz if it cannot find file.c.
274 331
275 *** New option --ignore-case-regex is an alternative to --regex. It is now 332 *** New option --ignore-case-regex is an alternative to --regex. It is now
285 "operator+", without spaces between the keyword and the operator. 342 "operator+", without spaces between the keyword and the operator.
286 343
287 *** New language Ada: tags are functions, procedures, packages, tasks, and 344 *** New language Ada: tags are functions, procedures, packages, tasks, and
288 types. 345 types.
289 346
290 *** In Fortran, procedure is no more tagged. 347 *** In Fortran, procedure is no longer tagged.
291 348
292 *** In Java, tags are created for "interface". 349 *** In Java, tags are created for "interface".
293 350
294 *** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs 351 *** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs
295 are now tagged. 352 are now tagged.
301 358
302 *** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is 359 *** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is
303 for PSWrap. 360 for PSWrap.
304 361
305 362
306 * Lisp and internal changes in XEmacs 21.2 363 * Lisp and internal changes in XEmacs 21.4
307 ========================================== 364 ==========================================
308 365
309 ** A new portable dumper is available for beta testing. 366 ** A new portable dumper is available for beta testing.
310 367
311 Olivier Galibert has written a portable dumper for XEmacs, based on 368 Olivier Galibert has written a portable dumper for XEmacs, based on
312 initial work by Kyle Jones. Normally, XEmacs C sources link into an 369 initial work by Kyle Jones. To perform even the most basic editor,
313 executable called `temacs', which loads the Lisp code and "unexecs" 370 XEmacs requires some amount of Lisp code to be loaded. To avoid
314 into a proper `xemacs' executable. The unexec() process is hard to 371 repeating the expensive loading process at every startup, XEmacs is
372 built in a special way. Its C sources link into an executable called
373 `temacs', which loads the bootstrap Lisp code and uses a special
374 "unexec" call to dump the resulting memory image into a proper
375 `xemacs' executable on disk. The unexec() process is hard to
315 implement correctly and makes XEmacs very hard to port to new 376 implement correctly and makes XEmacs very hard to port to new
316 operating systems, or even to new releases of old systems. 377 operating systems, or even to new releases of old systems.
317 378
318 A portable dumper is a different approach to dumping: instead of 379 The new portable dumper uses a different approach to dumping: instead
319 dumping full-fledged executable, it only dumps out the initialized 380 of dumping full-fledged executable, it only dumps out the initialized
320 data structures (both Lisp and C) into an external file. A normally 381 data structures (both Lisp and C) into an external file. A normally
321 running XEmacs only needs to mmap() that file and relocate a bit to 382 running XEmacs only needs to mmap that file and relocate a bit to get
322 get to the initialized data. In that scheme, there is no difference 383 to the initialized data. In that scheme, there is no difference
323 between `temacs' and `xemacs'. 384 between `temacs' and `xemacs'.
324 385
325 This is all very experimental, though. Configure with `--pdump' to 386 Unfortunately, the portable dumper has not been completely finished
326 try testing it. 387 for this release, and will not be used by default. However, if you
388 wish to experiment with it, or if you need to compile XEmacs on a new
389 and unsupported platform, you can test it by configuring XEmacs with
390 `--pdump' flag.
327 391
328 ** Much effort has been invested to make XEmacs Lisp faster: 392 ** Much effort has been invested to make XEmacs Lisp faster:
329 393
330 *** Many basic lisp operations are now faster. 394 *** Many basic lisp operations are now faster.
331 This is especially the case when running a Mule-enabled XEmacs. 395 This is especially the case when running a Mule-enabled XEmacs.
332 396
333 A general overhaul of the lisp engine should produce a speedup of 1.4 397 A general overhaul of the lisp engine should produce a speedup of 1.4
334 in a Latin-1 XEmacs, and 2.1 in a Mule XEmacs. These numbers were 398 in a non-Mule XEmacs, and 2.1 in a Mule XEmacs. These numbers were
335 obtained running `(byte-compile "simple.el")', which should be a 399 obtained running `(byte-compile "simple.el")', which should be a
336 pretty typical test of "pure" Lisp. 400 pretty typical test of "pure" Lisp.
337 401
338 *** Lisp hash tables have been re-implemented. The Common Lisp style 402 *** Lisp hash tables have been re-implemented. The Common Lisp style
339 hash table interface has been made standard, and moved from cl.el into 403 hash table interface has been made standard, and moved from cl.el into
342 makes intensive use of hash tables. 406 makes intensive use of hash tables.
343 407
344 *** The garbage collector has been tuned, leading to a speedup of 408 *** The garbage collector has been tuned, leading to a speedup of
345 1.16. 409 1.16.
346 410
411 *** The byte-compiler and the byte-optimizer have been tuned to
412 produce better code in many small ways.
413
347 *** The family of functions that iterate over lists, like `memq', and 414 *** The family of functions that iterate over lists, like `memq', and
348 `rassq', have been made a little faster (typically 1.3). 415 `rassq', have been made a little faster (typically 1.3).
349 416
350 *** Lisp function calls are faster, by approximately a factor of two. 417 *** Lisp function calls are faster, by approximately a factor of two.
351 However, defining inline functions (via defsubst) still makes sense 418 However, defining inline functions (via defsubst) still makes sense
375 usage. 442 usage.
376 443
377 The buffers-tab functionality and progress gauge have been implemented 444 The buffers-tab functionality and progress gauge have been implemented
378 using this feature. 445 using this feature.
379 446
380 ** `user-init-file' and `user-init-directory' are now absolute 447 ** A new Windows installer, netinstall ported from Cygwin.
381 file/directory names. Previously, both variables used to be relative 448
382 to (concat "~" init-file-user). This turned out to be too complicated 449 Nearly complete automation of the XEmacs install process from
383 for most packages (and some core Lisp files) to use correctly. Also, 450 ftp.xemacs.org. Includes selection of Lisp packages to install, etc.
384 the `init-file-user' variable has been obsoleted in the process. 451
452 ** Syntax tables may now be specified for a part of a buffer by
453 attaching the `syntax-table' property to an extent. For compatibility
454 with GNU Emacs, you may use the text-property interface to achieve the
455 same result.
456
457 ** Case translation now supports international characters.
458
459 *** Instead of being lists of 256-character strings, case tables are
460 now opaque objects. The interface to access them is almost the same,
461 except it now works for international characters, and you can set the
462 case pairs using `put-case-table-pair'. `set-case-table' and friends
463 still support the old list/string based interface for backward
464 compatibility.
465
466 *** As a consequence of this change, functions `downcase' and `upcase'
467 as well as all the case-transformation commands now work with
468 non-ASCII characters. Built-in tables cover all the Latin character
469 sets that we support. If your language has a distinction between
470 upper and lower case that is not handled by XEmacs/Mule, please let us
471 know.
472
473 *** The code that implements case-insensitive search has been modified
474 to respect the case table settings. This also applies to regexp
475 search.
476
477 ** Values of variables `user-init-file' and `user-init-directory' are
478 now absolute file/directory names. Previously, both variables used to
479 be relative to `(concat "~" init-file-user)'. This turned out to be
480 too complicated for most packages (and some core Lisp files) to use
481 correctly. Also, the `init-file-user' variable has been obsoleted in
482 the process.
385 483
386 The user-visible options like `-u' have not changed their behavior. 484 The user-visible options like `-u' have not changed their behavior.
387 485
388 ** XEmacs finally has an automated test suite! 486 ** XEmacs finally has an automated test suite!
389 Although this is not yet very sophisticated, it is already responsible 487 Although this is not yet very sophisticated, it is already responsible
425 `read-shell-command', `read-from-minibuffer', and `completing-read' 523 `read-shell-command', `read-from-minibuffer', and `completing-read'
426 now take an additional argument which specifies the default value. If 524 now take an additional argument which specifies the default value. If
427 this argument is non-nil, it should be a string; that string is used 525 this argument is non-nil, it should be a string; that string is used
428 in two ways: 526 in two ways:
429 527
430 It is returned if the user enters empty input. 528 * It is returned if the user enters empty input.
431 It is available through the history command M-n. 529 * It is available as the logical "future" entry, by pressing the down
530 arrow.
432 531
433 ** LDAP changes. 532 ** LDAP changes.
434 533
435 *** The LDAP interface now consists of two layers, a low-level layer 534 *** The LDAP interface now consists of two layers, a low-level layer
436 that closely matches the LDAP C API, and a more convenient 535 that closely matches the LDAP C API, and a more convenient
475 operation. 574 operation.
476 575
477 ** `translate-region' has been improved in several ways. Its TABLE 576 ** `translate-region' has been improved in several ways. Its TABLE
478 argument used to be a 256-character string. In addition to this, it 577 argument used to be a 256-character string. In addition to this, it
479 can now also be a vector or a char-table, which makes the function 578 can now also be a vector or a char-table, which makes the function
480 useful for Mule, which it wasn't. If TABLE a vector or a generic 579 useful for Mule, which it wasn't. If TABLE is a vector or a generic
481 char-table, you can map characters to strings instead of to other 580 char-table, you can map characters to strings instead of to other
482 characters. For instance: 581 characters. For instance:
483 582
484 (let ((table (make-char-table 'generic))) 583 (let ((table (make-char-table 'generic)))
485 (put-char-table ?a "the letter a" table) 584 (put-char-table ?a "the letter a" table)
512 (keywordp (intern ":foo")) ; The same as (keywordp :foo) 611 (keywordp (intern ":foo")) ; The same as (keywordp :foo)
513 => t 612 => t
514 613
515 This behavior is compatible with other code which treats symbols 614 This behavior is compatible with other code which treats symbols
516 beginning with colon as keywords only if they are interned in the 615 beginning with colon as keywords only if they are interned in the
517 global obarray. `keywordp' used to wrongly return t in both cases 616 global obarray. `keywordp' used to wrongly return t in both above
518 above. 617 cases.
618
619 ** The function `replace-in-string' has been rewritten to use
620 `replace-match'. This not only makes it much faster, but adds all the
621 features of `replace-match'.
519 622
520 ** New variables `this-command-properties' and 623 ** New variables `this-command-properties' and
521 `last-command-properties' are now available for communication between 624 `last-command-properties' are now available for communication between
522 consecutive commands. Commands should use these to communicate with 625 consecutive commands. Commands should use these to communicate with
523 the pre/post-command hooks, subsequent commands, wrapping commands, 626 the pre/post-command hooks, subsequent commands, wrapping commands,
527 it possible to add a "one-shot" hook, which is to say a hook that runs 630 it possible to add a "one-shot" hook, which is to say a hook that runs
528 only once, and automatically removes itself after the first time it 631 only once, and automatically removes itself after the first time it
529 has run. 632 has run.
530 633
531 ** The descriptor that specifies the text of a menu item can now be an 634 ** The descriptor that specifies the text of a menu item can now be an
532 evaluated expression. This makes this descriptor parallel with 635 evaluated expression. This makes it parallel with other descriptors,
533 others, which can also be expressions. 636 which can also be expressions.
534 637
535 638
536 * Changes in XEmacs 21.0 639 * Changes in XEmacs 21.0
537 ======================== 640 ========================
538 641
1019 configure command line to get it back. 1122 configure command line to get it back.
1020 1123
1021 *** `Info-default-directory-list' is now obsolete. If you want to 1124 *** `Info-default-directory-list' is now obsolete. If you want to
1022 change the path which XEmacs uses to search for info files, set 1125 change the path which XEmacs uses to search for info files, set
1023 `Info-directory-list' instead. 1126 `Info-directory-list' instead.
1127
1128
1129 * For older news, see the file ONEWS.