comparison etc/NEWS @ 412:697ef44129c6 r21-2-14

Import from CVS: tag r21-2-14
author cvs
date Mon, 13 Aug 2007 11:20:41 +0200
parents de805c49cfc1
children da8ed4261e83
comparison
equal deleted inserted replaced
411:12e008d41344 412:697ef44129c6
31 31
32 32
33 * Changes in XEmacs 21.2 33 * Changes in XEmacs 21.2
34 ======================== 34 ========================
35 35
36 ** The delete key now deletes forward by default. 36 ** `delete-key-deletes-forward' now defaults to t.
37 37
38 This is regulated by the variable `delete-key-deletes-forward', which 38 `delete-key-deletes-forward' is the variable that regulates the
39 now defaults to t. `delete-key-deletes-forward' takes effect only on 39 behaviour of the delete key on the systems that offer both a backspace
40 the systems that offer both a backspace and a delete key. If set to 40 and a delete key. If set to nil, the key labeled "Delete" will delete
41 nil, the key labeled "Delete" will always delete backward. If set to 41 backward. If set to non-nil, the "Delete" key will delete forward,
42 non-nil, the "Delete" key will delete forward, except on keyboards 42 except on keyboards where a "Backspace" key is not provided.
43 where a "Backspace" key is not provided (e.g. old DEC keyboards.) 43
44 44 Unless our implementation has bugs, the only reason why you would want
45 Unless our implementation has bugs, the only reason why you would want
46 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
47 Delete key to delete backwards, despite the presence (according to 46 Delete key to delete backwards, despite the presence (according to
48 Xlib) of a BackSpace key on the keyboard. 47 Xlib) of a BackSpace key on the keyboard.
49 48
50 ** Shifted motion keys now select text by default. You can turn this
51 off by setting `shifted-motion-keys-select-region' to nil.
52
53 ** You can now set the variable `kill-whole-line' to `always', which
54 makes `kill-line' (C-k) delete the entire line always, not just when
55 the cursor is at the beginning of the line. This behavior, as well as
56 the existing kill-whole-line behavior, now only take effect when
57 kill-line is called interactively, although this is a departure from a
58 previous behavior in the case of setting this variable kill-whole-line
59 to t. It is almost certainly what has always been intended, and most
60 likely the old way of doing things introduced bugs.
61
62 The new function `historical-kill-line' ignores the `kill-whole-line'
63 setting and always gives the historical behavior of only killing to
64 the end of the line. This function is bound to Sh-C-k, so that the
65 kill to end of line behavior is available, even when `kill-whole-line'
66 has been customized.
67
68 ** XEmacs menus now have accelerators by default. If a menu item does
69 not have an accelerator specified, one is created dynamically, using
70 numbers 1-9 and letters.
71
72 ** Interactive searching and matching case improvements. 49 ** Interactive searching and matching case improvements.
73 50
74 Case sensitiveness in searching operations is normally controlled by 51 Case sensitiveness in searching operations is normally controlled by
75 the variable `case-fold-search' (if non-nil, case is ignored while 52 the variable `case-fold-search' (if non-nil, case is ignored while
76 searching). This mechanism has now been slightly improved for 53 searching). This mechanism has now been slightly improved for
77 interactive searches: if the search string (or regexp) contains 54 interactive searches: if the search string (or regexp) contains
78 uppercase characters, the searching is forced to be case-sensitive, 55 uppercase characters, the searching is forced to be case-sensitive,
79 `case-fold-search'. 56 `case-fold-search'.
80 57
81 The new behavior affects all functions performing interactive 58 The new behavior affects all functions performing interactive
82 searches, like `zap-to-char', `list-matching-lines', `tags-search' 59 searches, like `zap-to-char', `list-matching-lines', `tags-search'
83 etc. The incremental search facility has always behaved that way. 60 etc. The incremental search facility has always behaved that way.
84
85 ** Incremental search will now highlight all visible matches, making
86 it easier to anticipate where consecutive C-s or C-r will place the
87 point. If you want to disable the feature, set
88 `isearch-highlight-all-matches' to nil.
89
90 ** You can now use the buffer tabs to switch between buffers. The
91 tabs are located between the toolbar and the uppermost window, in a
92 location called "gutter". If you dislike the buffer tabs, you can
93 disable them by customizing `gutter-buffers-tab-visible-p', or by
94 placing this in your .emacs:
95
96 (set-gutter-element-visible-p default-gutter-visible-p 'buffers-tab nil)
97
98 You can change the location of the gutter with
99 `set-default-gutter-position', however currently only MS-Windows
100 supports tab widgets with orientations other than vertical.
101
102 ** Kill and yank now interact with the clipboard by default under
103 Windows. This was done by changing the default value of
104 `interprogram-cut-function' and `interprogram-paste-function'. You
105 can get the old behavior by setting these to nil, and there is an
106 option on the options menu to do this.
107
108 ** When you press RET at a minibuffer prompt that provides a default
109 value, the value is stored in history instead of an empty line. Also,
110 you can now edit the default value by pressing the down arrow,
111 accessing the logical "future" value. Not all minibuffer prompts have
112 yet been converted to support this feature.
113
114 ** The rectangle functions have been almost completely rewritten in
115 order to avoid inserting undesirable spaces, notably at the end of
116 lines. Two typical examples of the old behavior were
117 `string-rectangle', which filled all lines up to the right side of the
118 rectangle, and `clear-rectangle', which filled even empty lines up to
119 the left side. All functions have been rewritten to avoid inserting
120 unwanted spaces, and an optional prefix now allows them to behave the
121 old way.
122
123 Also, the behavior of `string-rectangle' is now compliant with
124 `pending-delete-mode': if this mode is active, then the string
125 replaces the region rectangle. Otherwise, the command does not delete
126 or overwrite any existing text. For those who want that feature but do
127 not use pending-delete-mode, a new function, `replace-rectangle', is
128 available.
129
130 As a side effect, the FORCE argument to `move-to-column' now
131 understands the special value `coerce', which means that the line
132 should not be filled if it is too short to reach the desired column.
133
134 ** Customize now supports adding comments about your face and variable
135 settings using a new menu entry. Comments for variables can also be
136 assigned by calling `customize-set-(value|variable)' with a prefix
137 argument.
138
139 ** XEmacs now locates the early package hierarchies at
140 ~/.xemacs/mule-packages/ and ~/.xemacs/xemacs-packages/. Previously,
141 the early packages were located in ~/.xemacs/.
142 61
143 ** You can now create "indirect buffers", like in GNU Emacs. An 62 ** You can now create "indirect buffers", like in GNU Emacs. An
144 indirect buffer shares its text with another buffer ("base buffer"), 63 indirect buffer shares its text with another buffer ("base buffer"),
145 but has its own major mode, local variables, extents, and narrowing. 64 but has its own major mode, local variables, extents, and narrowing.
146 An indirect buffer has a name of its own, distinct from those of the 65 An indirect buffer has a name of its own, distinct from those of the
164 ** User names following the tilde character can now be completed at 83 ** User names following the tilde character can now be completed at
165 file name prompts; e.g. `C-x C-f ~hni<TAB>' will complete to 84 file name prompts; e.g. `C-x C-f ~hni<TAB>' will complete to
166 `~hniksic/'. To make this operation faster, a cache of user names is 85 `~hniksic/'. To make this operation faster, a cache of user names is
167 maintained internally. 86 maintained internally.
168 87
169 The new primitives available for this purpose are functions named
170 `user-name-completion' and `user-name-all-completions'.
171
172 ** XEmacs can now play sound using Enlightenment Sound Daemon (ESD).
173 It will try NAS first, then ESD, then playing native sound directly.
174
175 ** X-Face support is now available under MS-Windows.
176 If an X-Face libary built under MS-Windows is available then XEmacs
177 will use this at build time.
178
179 ** The font-menu is now available under MS-Windows.
180
181 ** MS-Windows support for selection is now much more robust.
182
183 Generally selection should now do what you would expect under
184 MS-Windows: the middle mouse button will paste your current selection
185 or the clipboard; conversions from different types of selection to the
186 clipboard can be made; the kill-ring and friends will be updated as
187 per X.
188
189 The only thing selection doesn't do is set the clipboard automatically
190 as this would break the MS-Windows model. If you want this behaviour
191 then set `selection-sets-clipboard' to t
192
193 ** Mail spool locking now works correctly.
194 XEmacs has always come with a little auxiliary program, movemail,
195 which moves mail out of the system's spool area into user storage. To
196 coordinate between XEmacs, the mail delivery agent, and other mail
197 user agents, movemail needs to properly lock the spool file before
198 moving it. Movemail now correctly respects the --mail-locking option
199 to configure. Moreover, movemail's locking behavior can be specified
200 at run-time, via a new command-line option -m to movemail, or through
201 the environment variable EMACSLOCKMETHOD.
202
203 When installing XEmacs, make sure you configure it according to your
204 environment's mail spool locking conventions. When you're using a
205 binary kit, set the `mail-lock-method' variable at startup, or the
206 EMACSLOCKMETHOD environment variable.
207
208 ** Init file will move to ~/.xemacs/init.el.
209
210 If `~/.xemacs/init.el' exists, XEmacs will prefer it over `~/.emacs'
211 as an init file. The file may be byte-compiled as
212 `~/.xemacs/init.elc'.
213
214 Future versions of XEmacs will stop supporting `~/.emacs' as an init
215 file. XEmacs offers automatic migration upon startup.
216
217 ** Custom file will move to ~/.xemacs/custom.el.
218
219 Whereas customize settings were formerly stored in the regular init
220 file, XEmacs now prefers them to be in a separate file
221 `~/.xemacs/custom.el', completely under automatic control. This
222 change goes with the migration of the init file, and XEmacs offers
223 automatic migration upon startup.
224
225 ** Init file may be called .emacs.el.
226
227 For the time being, like in GNU Emacs 20.4 and on, you can now name
228 the XEmacs init file `.emacs.el'. Formerly the name had to be
229 `.emacs'. If you use the name `.emacs.el', you can byte-compile the
230 file in the usual way.
231
232 If both `.emacs' and `.emacs.el' exist, the latter file is the one
233 that is used.
234
235 ** New command-line switches -user-init-file and -user-init-directory.
236 These can be used to specify alternate locations for what is normally
237 ~/.emacs and ~/.xemacs.
238
239 Moreover, -user <user> (which used to only work in unpredictable ways)
240 is now equivalent to -user-init-file ~<user>/.xemacs/init.el
241 -user-init-directory ~<user>/.xemacs. or -user-init-file
242 ~<user>/.emacs -user-init-directory ~<user>/.xemacs, whichever init
243 file comes first.
244
245 ** New variable `mswindows-meta-activates-menu'.
246 If you set this variable to nil then pressing and releasing the Alt
247 key under MS-Windows will no longer activate the menubar. The default
248 is t. This is not to be confused with `menu-accelerator-enabled',
249 which enables the use of Alt+<Letter> accelerators to invoke the
250 menus.
251
252 ** Pixel-based scrolling has been implemented.
253 By default this will attempt to scroll in increments equal to the
254 height of the default face. Set `window-pixel-scroll-increment' to
255 modify this behaviour.
256
257 ** Operation progress can be displayed using graphical widgets.
258 See `lprogress-display' for details. This support has been switched
259 on by default for font-lock and some web browsing functions. If you
260 do not like this behaviour set `progress-display-use-echo-area'.
261
262 ** The PostgreSQL Relational Database Management System is now supported.
263 It is now possible to build XEmacs so that the programming interface
264 to the PostgreSQL RDBMS (libpq) is available in XEmacs Lisp.
265 Supported versions of PostgreSQL are 6.5.3 (earlier versions may work,
266 but have not been tested) and 7.0-beta1.
267
268 ** Etags changes.
269
270 *** In DOS, etags looks for file.cgz if it cannot find file.c.
271
272 *** New option --ignore-case-regex is an alternative to --regex. It is now
273 possible to bind a regexp to a language, by prepending the regexp with
274 {lang}, where lang is one of the languages that `etags --help' prints
275 out. This feature is useful especially for regex files, where each
276 line contains a regular expression. The manual contains details.
277
278 *** In C and derived languages, etags creates tags for function
279 declarations when given the --declarations option.
280
281 *** In C++, tags are created for "operator". The tags have the form
282 "operator+", without spaces between the keyword and the operator.
283
284 *** New language Ada: tags are functions, procedures, packages, tasks, and
285 types.
286
287 *** In Fortran, procedure is no more tagged.
288
289 *** In Java, tags are created for "interface".
290
291 *** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs
292 are now tagged.
293
294 *** In Perl, the --globals option tags global variables. my and local
295 variables are tagged.
296
297 *** New language Python: def and class at the beginning of a line are tags.
298
299 *** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is
300 for PSWrap.
301
302 88
303 * Lisp and internal changes in XEmacs 21.2 89 * Lisp and internal changes in XEmacs 21.2
304 ========================================== 90 ==========================================
305
306 ** A new portable dumper is available for beta testing.
307
308 Olivier Galibert has written a portable dumper for XEmacs, based on
309 initial work by Kyle Jones. Normally, XEmacs C sources link into an
310 executable called `temacs', which loads the Lisp code and "unexecs"
311 into a proper `xemacs' executable. The unexec() process is hard to
312 implement correctly and makes XEmacs very hard to port to new
313 operating systems, or even to new releases of old systems.
314
315 A portable dumper is a different approach to dumping: instead of
316 dumping full-fledged executable, it only dumps out the initialized
317 data structures (both Lisp and C) into an external file. A normally
318 running XEmacs only needs to mmap() that file and relocate a bit to
319 get to the initialized data. In that scheme, there is no difference
320 between `temacs' and `xemacs'.
321
322 This is all very experimental, though. Configure with `--pdump' to
323 try testing it.
324 91
325 ** Much effort has been invested to make XEmacs Lisp faster: 92 ** Much effort has been invested to make XEmacs Lisp faster:
326 93
327 *** Many basic lisp operations are now faster. 94 *** Many basic lisp operations are now faster.
328 This is especially the case when running a Mule-enabled XEmacs. 95 This is especially the case when running a Mule-enabled XEmacs.
355 122
356 Many operations do not see any improvement. Surprisingly, running 123 Many operations do not see any improvement. Surprisingly, running
357 (font-lock-fontify-buffer) does not use the Lisp engine much at all. 124 (font-lock-fontify-buffer) does not use the Lisp engine much at all.
358 Speeding up your favorite slow operation is an excellent project to 125 Speeding up your favorite slow operation is an excellent project to
359 improve XEmacs. Don't forget to profile! 126 improve XEmacs. Don't forget to profile!
360
361 ** Native widgets can be displayed in buffers.
362
363 The glyph system has been extended to allow the display of glyphs that
364 are implemented as native window-system widgets. Thus you can embed
365 buttons, scrollbars, combo boxes, edit fields and progress gauges in a
366 buffer. As a side effect subwindow support now works once again.
367
368 All of this is still fairly experimental and there is no
369 documentation. The current APIs might change in a future version of
370 XEmacs. Some widgets are only available under MS-Windows. See the
371 file glyphs-test.el in the XEmacs src distribution for examples of
372 usage.
373
374 The buffers-tab functionality and progress gauge have been implemented
375 using this feature.
376
377 ** `user-init-file' and `user-init-directory' are now absolute
378 file/directory names. Previously, both variables used to be relative
379 to (concat "~" init-file-user). This turned out to be too complicated
380 for most packages (and some core Lisp files) to use correctly. Also,
381 the `init-file-user' variable has been obsoleted in the process.
382
383 The user-visible options like `-u' have not changed their behaviour.
384 127
385 ** XEmacs finally has an automated test suite! 128 ** XEmacs finally has an automated test suite!
386 Although this is not yet very sophisticated, it is already responsible 129 Although this is not yet very sophisticated, it is already responsible
387 for several important bug fixes in XEmacs. To try it out, simply use 130 for several important bug fixes in XEmacs. To try it out, simply use
388 the makefile target `make check' after building XEmacs. 131 the makefile target `make check' after building XEmacs.
411 => (foo ... <circular list>) 154 => (foo ... <circular list>)
412 155
413 An extra bonus is that checking for circularities is not just 156 An extra bonus is that checking for circularities is not just
414 friendlier, but actually faster than checking for C-g. 157 friendlier, but actually faster than checking for C-g.
415 158
416 ** Functions for decoding base64 encoding are now available; see 159 ** The new form `ignore-file-errors', similar to `ignore-errors' may
417 `base64-encode-region', `base64-encode-string', `base64-decode-region' 160 be used as a short-hand for condition-case when you wish to ignore
418 and `base64-decode-string'. 161 file-related error. For example:
419 162
420 ** The functions `read-string', `read-expression', `eval-minibuffer', 163 (ignore-file-errors (delete-file "foo"))
421 `read-variable', `read-command', `read-function', `read-number', 164
422 `read-shell-command', `read-from-minibuffer', and `completing-read' 165 ** The arguments to `locate-file' are now much more "lispy". As
423 now take an additional argument which specifies the default value. If 166 before, the usage is:
424 this argument is non-nil, it should be a string; that string is used
425 in two ways:
426
427 It is returned if the user enters empty input.
428 It is available through the history command M-n.
429
430 ** LDAP changes.
431
432 *** The LDAP interface now consists of two layers, a low-level layer
433 that closely matches the LDAP C API, and a more convenient
434 higher-level set of functions.
435
436 *** The low-level functions that used to be named *-internal are now
437 named more simply: `ldap-open', `ldap-close', `ldap-search-basic',
438 `ldap-add', and `ldap-modify'. They should be used directly for very
439 specific purposes (such as multiple operations on a connection) only.
440
441 *** The higher-level functions provide a more convenient way to access
442 LDAP directories hiding the subtleties of handling the connection,
443 translating arguments and ensuring compliance with LDAP
444 internationalization rules and formats (currently partly implemented
445 only.) This layer provides atomic operations for searches,
446 modification, addition and deletion of multiple entries at once:
447 `ldap-search-entries', `ldap-add-entries', `ldap-delete-entries', and
448 `ldap-modify-entries'.
449
450 *** To maintain compatibility with previous code, the now obsolete
451 function `ldap-search' is now merely a wrapper that calls either
452 `ldap-search-basic' or `ldap-search-entries'. Please don't use the
453 `ldap-search' function in your new programs -- a direct call to one of
454 the two replacements is more efficient and unambiguous.
455
456 ** The arguments to `locate-file' are now more Lisp-like. As before,
457 the usage is:
458 167
459 (locate-file FILENAME PATH-LIST &optional SUFFIXES MODE) 168 (locate-file FILENAME PATH-LIST &optional SUFFIXES MODE)
460 169
461 Except that SUFFIXES are now a list of strings instead of a single, 170 Except that SUFFIXES are now a list of strings instead of a single,
462 colon-separated string. MODE is now a symbol or a list of symbols 171 colon-separated string. MODE is now a symbol or a list of symbols
463 (symbols `exists', `executable', `writable', and `readable' are 172 (symbols `exists', `executable', `writable', and `readable' are
464 supported) instead of an integer code. See the documentation for 173 supported) instead of an integer code. See the documentation for
465 details. Of course, the old form is still accepted for backward 174 details.
466 compatibility. 175
467 176 Of course, the old form is still accepted for backward compatibility.
468 Several bugs in locate-file have been fixed, most notably its failure 177
469 to call expand-file-name on elements of PATH-LIST. Because of that 178 ** The `keywordp' function now returns non-nil only on symbols
470 elements of load-path of the form "~/..." used to not work. 179 interned in the global obarray. For example:
471 locate-file is now guaranteed to expand files during its course of 180
472 operation. 181 (keywordp (intern ":foo" [0]))
473 182 => nil
474 ** `translate-region' has been improved in several ways. Its TABLE 183 (keywordp (intern ":foo")) ; The same as (keywordp :foo)
475 argument used to be a 256-character string. In addition to this, it 184 => t
476 can now also be a vector or a char-table, which makes the function 185
477 useful for Mule, which it wasn't. If TABLE a vector or a generic 186 This behaviour is compatible with other code which treats symbols
478 char-table, you can map characters to strings instead of to other 187 beginning with colon as keywords only if they are interned in the
479 characters. For instance: 188 global obarray. `keyword' used to wrongly return t in both cases
480 189 above.
481 (let ((table (make-char-table 'generic)))
482 (put-char-table ?a "the letter a" table)
483 (put-char-table ?b "" table)
484 (put-char-table ?c ?\n table)
485 (translate-region (point-min) (point-max) table))
486
487 ** The new form `ignore-file-errors', similar to `ignore-errors' may
488 be used as a short-hand for condition-case when you wish to ignore
489 file-related error. For example:
490
491 (ignore-file-errors (delete-file "foo"))
492 190
493 ** The first argument to `intern-soft' may now also be a symbol, like 191 ** The first argument to `intern-soft' may now also be a symbol, like
494 with `unintern'. If given a symbol, `intern-soft' will look for that 192 with `unintern'. If given a symbol, `intern-soft' will look for that
495 exact symbol rather than for any string. This is useful when you want 193 exact symbol rather than for any string. This is useful when you want
496 to check whether a specific symbol is interned in an obarray, e.g.: 194 to check whether a specific symbol is interned in an obarray, e.g.:
499 (intern-soft "foo") 197 (intern-soft "foo")
500 => foo 198 => foo
501 (intern-soft (make-symbol "foo")) 199 (intern-soft (make-symbol "foo"))
502 => nil 200 => nil
503 201
504 ** The `keywordp' function now returns non-nil only on symbols 202 ** Functions for decoding base64 encoding are now available; see
505 interned in the global obarray. For example: 203 `base64-encode-region', `base64-encode-string', `base64-decode-region'
506 204 and `base64-decode-string'.
507 (keywordp (intern ":foo" [0]))
508 => nil
509 (keywordp (intern ":foo")) ; The same as (keywordp :foo)
510 => t
511
512 This behaviour is compatible with other code which treats symbols
513 beginning with colon as keywords only if they are interned in the
514 global obarray. `keywordp' used to wrongly return t in both cases
515 above.
516
517 ** New variables `this-command-properties' and
518 `last-command-properties' are now available for communication between
519 consecutive commands. Commands should use these to communicate with
520 the pre/post-command hooks, subsequent commands, wrapping commands,
521 etc. in preference to looking at and/or setting `this-command'.
522
523 ** New functions `add-one-shot-hook' and `add-local-one-shot-hook' make
524 it possible to add a "one-shot" hook, which is to say a hook that runs
525 only once, and automatically removes itself after the first time it
526 has run.
527
528 ** The descriptor that specifies the text of a menu item can now be an
529 evaluated expression. This makes this descriptor parallel with
530 others, which can also be expressions.
531 205
532 206
533 * Changes in XEmacs 21.0 207 * Changes in XEmacs 21.0
534 ======================== 208 ========================
535 209
1009 ** The code XEmacs uses to assemble its various paths into the 683 ** The code XEmacs uses to assemble its various paths into the
1010 directory hierarchy has been rewritten to support the package system. 684 directory hierarchy has been rewritten to support the package system.
1011 Look under "Startup Paths" in the Info documentation for more 685 Look under "Startup Paths" in the Info documentation for more
1012 information. 686 information.
1013 687
1014 *** site-lisp is no longer part of the load-path by default. 688 *** site-lisp is now longer part of the load-path by default.
1015 Its use is deprecated, but you can specify --with-site-lisp=yes at the 689 Its use is deprecated, but you can specify --with-site-lisp=yes at the
1016 configure command line to get it back. 690 configure command line to get it back.
1017 691
1018 *** `Info-default-directory-list' is now obsolete. If you want to 692 *** `Info-default-directory-list' is now obsolete. If you want to
1019 change the path which XEmacs uses to search for info files, set 693 change the path which XEmacs uses to search for info files, set