Mercurial > hg > xemacs-beta
annotate etc/NEWS @ 5918:cb65bfaf7110 default
Speed up XEmacs on X.
Avoid many calls to XQueryColor.
| author | Mike Sperber <sperber@deinprogramm.de> |
|---|---|
| date | Fri, 27 Mar 2015 16:05:15 +0100 |
| parents | 5d2981eee77e |
| children |
| rev | line source |
|---|---|
| 428 | 1 -*- mode:outline -*- |
|
5441
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
2 |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
3 Copyright (C) 1998-2000 Hrvoje Niksic |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
4 Copyright (C) 2000-2001 Michael Sperber |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
5 Copyright (C) 2001 Ben Wing |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
6 Copyright (C) 2001 Didier Verna |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
7 Copyright (C) 2004 Stephen Turnbull |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
8 Copyright (C) 2005-2006 Aidan Kehoe |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
9 |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
10 This file is part of XEmacs. |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
11 |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
12 XEmacs is free software: you can redistribute it and/or modify it |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
13 under the terms of the GNU General Public License as published by the |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
14 Free Software Foundation, either version 3 of the License, or (at your |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
15 option) any later version. |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
16 |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
17 XEmacs is distributed in the hope that it will be useful, but WITHOUT |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
18 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
19 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
20 for more details. |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
21 |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
22 You should have received a copy of the GNU General Public License |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
23 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. |
|
5d2981eee77e
Added copyright notices and GPLV3 or later license to NEWS files.
Mats Lidell <matsl@xemacs.org>
parents:
3674
diff
changeset
|
24 |
| 428 | 25 |
| 26 * Introduction | |
| 27 ============== | |
| 28 | |
| 2291 | 29 This file presents the changes in recent XEmacs versions. Primarily |
| 30 it documents user-visible (interface) changes, but also includes | |
| 31 internal changes of possible interest to users. When describing new | |
| 32 features, we also document ways of reverting to the old behavior, | |
| 33 where applicable. If you dislike a recent change in how XEmacs | |
| 34 behaves, you may find a remedy in this file. | |
| 428 | 35 |
| 2291 | 36 Use `C-c C-f' to move to the next heading at the same level, and |
| 37 `C-c C-b' to move to the previous heading at this level. `C-h m' gives | |
| 38 help on Outline mode. The menubar provides more commands. | |
| 428 | 39 |
| 40 Users who would like to know which capabilities have been introduced | |
| 41 in each release should look at the appropriate section of this file. | |
| 42 Starting with version 20.0, XEmacs includes ChangeLogs, which can be | |
| 43 consulted for a more detailed list of changes. | |
| 44 | |
| 2291 | 45 N.B. The term "GNU Emacs" refers to any release of Emacs from the |
| 46 Free Software Foundation's GNU Project starting with Version 19. | |
| 47 The term "XEmacs" refers to this program or sometimes to its | |
| 48 predecessors "Era" and "Lucid Emacs". The predecessor of all these | |
| 49 programs is called "Emacs 18". When no particular version is | |
| 50 implied, "Emacs" will be used. | |
| 51 | |
| 52 | |
| 53 * Changes in XEmacs 21.5 | |
| 54 ======================== | |
| 55 | |
| 56 ** Summary of user-visible changes: | |
| 57 | |
| 58 -- Bignums have been implemented. | |
| 59 -- Windows users have benefit of the full Win32 Unicode API. | |
| 60 -- (in process) Xft provides antialiased fonts on X11. | |
| 2681 | 61 -- "XEmacs" used as X11 application class |
| 2291 | 62 |
| 63 ** Bignum implementation. | |
| 64 | |
| 65 Integer computations no longer overflow, rational arithmetic "just | |
| 66 works", and very precise floating point calculation is available. | |
| 67 This also means that large buffers (over 2^30 = 1GB) can be | |
| 68 manipulated. | |
| 428 | 69 |
| 2681 | 70 ** "XEmacs" used as X11 application class |
| 71 | |
| 72 Previously, XEmacs checked the X11 resource database for resources starting | |
| 2757 | 73 with XEmacs, and used "XEmacs" as its application class if any existed; |
| 74 otherwise it used "Emacs", for backward compatibility. Because of | |
| 75 divergence between the resources that GNU Emacs and XEmacs use, we've | |
| 76 changed this. If you don't have the time to migrate your resource DB right | |
| 77 now, set USE_EMACS_AS_DEFAULT_APPLICATION_CLASS in your environment before | |
| 78 starting XEmacs, for the old behavior. This workaround will go away in the | |
| 79 course of the next major release, though, so you will have to migrate your | |
| 80 resources at some point. | |
| 2681 | 81 |
| 428 | 82 |
| 2862 | 83 * Lisp and internal changes in XEmacs 21.5 |
| 84 ========================================== | |
| 85 | |
| 86 ** The ALLOW-NON-ASCII argument to event-to-character is not used. | |
| 87 | |
| 88 While it is still accepted, for compatibilty with older code, | |
| 89 event-to-character no longer takes note of this argument, since the specific | |
| 90 type of mapping between characters and keysyms that it affected is no longer | |
| 91 in place. | |
| 92 | |
| 3674 | 93 ** The set-charset-registry function is deprecated. |
| 94 | |
| 95 set-charset-registries replaces it; this function takes a vector of X11 | |
| 96 CHARSET_REGISTRY and CHARSET_ENCODINGs, and doesn't support regexp or XLFD | |
| 97 wildcarding. It improves lookup performance (especially failures) for those | |
| 98 X servers with large numbers of fonts. | |
| 99 | |
| 100 ** define-specifier-tag now has an optional CHARSET-PREDICATE parameter. | |
| 101 | |
| 102 This allows you to create specifier tags that match over Mule character sets | |
| 103 when instantiating fonts, finally making it possible to explicitly set a | |
| 104 font for a charset in given face with set-face-font. | |
| 105 | |
| 2862 | 106 |
| 464 | 107 * Changes in XEmacs 21.4 |
| 428 | 108 ======================== |
| 109 | |
| 479 | 110 ** Summary of user-visible changes: |
| 111 | |
| 112 -- The delete key now deletes forward by default. | |
| 113 -- Shifted motion keys now select text by default. | |
| 114 -- You can now build XEmacs with support for GTK+ widget set. | |
| 115 -- ~/.xemacs/init.el is now the preferred location for the init file. | |
| 116 - XEmacs now supports a `~/.xemacs/init.el' startup file. | |
| 117 - Custom file will move to ~/.xemacs/custom.el. | |
| 118 -- Much-improved sample init.el, showing how to use many useful features. | |
| 119 -- XEmacs support for menu accelerators has been much improved. | |
| 120 -- Default menubar improvements. | |
| 121 - Default menubar has many new commands and better organization. | |
| 122 - The font-menu is now available under MS Windows. | |
| 123 -- Dialog box improvements, including a real file dialog box. | |
| 124 - XEmacs now has a proper file dialog box under MS Windows (and GTK)! | |
| 125 - The old clunky file dialog box is improved. | |
| 126 - Keyboard traversal now works correctly in MS Windows dialog boxes. | |
| 127 - There is a Search dialog box available from Edit->Find... | |
| 128 -- New buffer tabs. | |
| 129 -- There is a new MS Windows installer, netinstall, ported from Cygwin. | |
| 130 -- The subprocess quote-handling mechanism under Windows is much improved. | |
| 131 -- Printing support now available under MS Windows. | |
| 132 -- Selection improvements. | |
| 133 - Kill and yank now interact with the clipboard under Windows. | |
| 134 - MS Windows support for selection is now much more robust. | |
| 135 - Motif selection support is now more correct (but slower). | |
| 136 -- Mail spool locking now works correctly. | |
| 137 -- International support changes. | |
| 138 - The default coding-priority-list is now safer. | |
| 139 - International keysyms are now supported under X. | |
| 140 - MS Windows 1251 code page now supported. | |
| 141 - Czech, Thai, Cyrillic-KOI8, Vietnamese, Ethiopic now supported. | |
| 142 - Proper support for words in Latin 3 and Latin 4. | |
| 143 -- Help buffers contain hyperlinks, and other changes. | |
| 144 -- The modeline's text is now scrollable. | |
| 145 -- The mouse wheel under MS Windows now functions correctly. | |
| 146 -- Interactive searching and matching case improvements. | |
| 147 - Incremental search will now highlight all visible matches. | |
| 148 - Interactive searches always respect uppercase characters. | |
| 149 -- Rectangle functions rewritten to avoid inserting extra spaces. | |
| 150 -- New command `kill-entire-line' that always kills the entire line. | |
| 151 -- Default values correctly stored in minibuffer histories. | |
| 152 -- You can now create "indirect buffers", like in GNU Emacs. | |
| 153 -- Pixel-based scrolling has been implemented. | |
| 154 -- Operation progress can be displayed using graphical widgets. | |
| 155 -- User names following a tilde can now be completed at file name prompts. | |
| 156 -- XEmacs can now play sound using Enlightenment Sound Daemon (ESD). | |
| 157 -- X-Face support is now available under MS Windows. | |
| 158 -- The PostgreSQL Relational Database Management System is now supported. | |
| 159 -- Indentation no longer indents comments that begin at column zero. | |
| 160 -- Face and variable settings can have comments in Customize. | |
| 161 -- New locations for early package hierarchies. | |
| 162 -- The `auto-save' library has been greatly improved. | |
| 163 -- New variable `mswindows-alt-by-itself-activates-menu'. | |
| 164 -- Other init-file-related changes. | |
| 165 - Init file in your home directory may be called `.emacs.el'. | |
| 166 - New command-line switches -user-init-file and -user-init-directory. | |
| 167 -- Etags changes. | |
| 168 - In DOS, etags looks for file.cgz if it cannot find file.c. | |
| 169 - New option --ignore-case-regex is an alternative to --regex. | |
| 170 - New option --declarations, for C-type languages. | |
| 171 - In C++, tags are created for "operator". | |
| 172 - Ada now supported. | |
| 173 - In Fortran, procedure is no longer tagged. | |
| 174 - In Java, tags are created for "interface". | |
| 175 - In Lisp, def-type constructs are now tagged. | |
| 176 - In Perl, the --globals option tags global variables. | |
| 177 - Python now supported. | |
| 178 - New file extensions recognized: .ss, .pdb, .psw. | |
| 179 | |
| 440 | 180 ** The delete key now deletes forward by default. |
| 428 | 181 |
| 440 | 182 This is regulated by the variable `delete-key-deletes-forward', which |
| 183 now defaults to t. `delete-key-deletes-forward' takes effect only on | |
| 184 the systems that offer both a backspace and a delete key. If set to | |
| 185 nil, the key labeled "Delete" will always delete backward. If set to | |
| 186 non-nil, the "Delete" key will delete forward, except on keyboards | |
| 479 | 187 where a "Backspace" key is not provided (e.g. old DEC keyboards). |
| 428 | 188 |
| 189 Unless our implementation has bugs, the only reason why you would want | |
| 190 to set `delete-key-deletes-forward' to nil is if you want to use the | |
| 191 Delete key to delete backwards, despite the presence (according to | |
| 192 Xlib) of a BackSpace key on the keyboard. | |
| 193 | |
| 479 | 194 ** Shifted motion keys now select text by default. |
| 195 | |
| 196 You can turn this off by setting `shifted-motion-keys-select-region' | |
| 197 to nil. This works based off of particular keys, not particular | |
| 198 commands: Thus, the arrow keys will normally trigger selection when | |
| 199 the Shift key is held down regardless of their bindings, and non-arrow | |
| 200 keys with the same bindings (e.g. C-f) will not work this way. You | |
| 201 can control which keys trigger shifted motion using | |
| 202 `motion-keys-for-shifted-motion'. See also | |
| 203 `unshifted-motion-keys-deselect-region'. | |
| 204 | |
| 464 | 205 ** You can now build XEmacs with support for GTK+ widget set. |
| 206 | |
| 207 XEmacs built that way uses GTK+ to draw menubars, scrollbars, and | |
| 208 other GUI components, as well GDK for drawing text, choosing fonts, | |
| 209 allocating colors, etc. Additionally, GTK-XEmacs supports Lisp | |
| 210 functions for writing your own GTK programs in Emacs Lisp! | |
| 211 | |
| 212 To use this, build XEmacs with the `--with-gtk' configure flag. (Of | |
| 213 course, you'll need to have the GTK+ libraries and header files on the | |
| 214 system.) Gnome widgets and functionality are supported where | |
| 215 available, and can be turned off. | |
| 216 | |
| 479 | 217 ** ~/.xemacs/init.el is now the preferred location for the init file. |
| 218 | |
| 219 *** XEmacs now supports a `~/.xemacs/init.el' startup file. | |
| 220 If it exists, XEmacs will prefer it over `.emacs' and `.emacs.el'. | |
| 221 The file may be byte-compiled as `~/.xemacs/init.elc'. | |
| 222 | |
| 223 If present, the `~/.xemacs/' directory may contain startup files for | |
| 224 XEmacs packages that support it. | |
| 225 | |
| 226 The first time you start up XEmacs, it will ask you if you would like | |
| 227 to migrate your `.emacs' to the new location. (Your custom settings | |
| 228 will also be moved, to `~/.xemacs/custom.el' -- see below.) If so, you | |
| 229 will also be asked whether you would like to create a compatibility | |
| 230 `.emacs' for backward compatibility with previous versions of XEmacs | |
| 231 and with GNU Emacs. (This compatibility `.emacs' simply loads the new | |
| 232 init and custom files.) Doing this is generally a good idea -- new | |
| 233 versions of XEmacs will prefer `~/.xemacs/init.el' over `~/.emacs' in | |
| 234 any case. | |
| 235 | |
| 236 You can manually migrate at any time with `migrate-user-init-file', | |
| 237 and undo any migration with `unmigrate-user-init-file'. The function | |
| 238 `create-compatibility-dot-emacs' also lets you manually create a | |
| 239 compatibility `.emacs'. | |
| 240 | |
| 241 NOTE: Under MS Windows, your home directory (i.e. the directory named | |
| 242 `~') is specified by the HOME environment variable, and defaults to | |
| 243 C:\. To set this variable, modify AUTOEXEC.BAT under Windows 95/98, | |
| 244 or select Control Panel->System->Advanced->Environment Variables... | |
| 245 under Windows NT/2000. | |
| 246 | |
| 247 *** Custom file will move to ~/.xemacs/custom.el. | |
| 248 | |
| 249 Whereas customize settings were formerly stored in the regular init | |
| 250 file, XEmacs now prefers them to be in a separate file | |
| 251 `~/.xemacs/custom.el', completely under automatic control. This | |
| 252 change goes with the migration of the init file, and XEmacs offers | |
| 253 automatic migration upon startup. | |
| 254 | |
| 255 ** Much-improved sample init.el, showing how to use many useful features. | |
| 256 | |
| 257 The sample init file, located in the `etc/' directory of the XEmacs | |
| 258 installation, has been renamed from `sample.emacs' to `sample.init.el', | |
| 259 and pretty much rewritten from scratch. (You can view it by selecting | |
| 260 the menu item Help->Samples->Sample init.el.) Many of the most-useful | |
| 261 optional features in XEmacs have been enabled, and other features that | |
| 262 are useful but may be annoying to some are present but commented out. | |
| 263 There is also extensive documentation on how to add your own | |
| 264 improvements to the init file and where to find more documentation | |
| 265 elsewhere in XEmacs. The file has been specifically designed so that | |
| 266 most people can simply make it their own init file by copying it to | |
| 267 ~/.xemacs/init.el, and they will be satisfied with the results. | |
| 268 | |
| 269 ** XEmacs support for menu accelerators has been much improved. | |
| 442 | 270 |
| 479 | 271 It now works properly under MS Windows, for example. To enable |
| 272 accelerators, set `menu-accelerator-enabled' to `menu-force'. Menus | |
| 273 now have accelerators by default, currently on the first letter of the | |
| 274 menu item unless another letter was indicated as the accelerator using | |
| 275 %_ in the menu string. These %_ specifications are automatically | |
| 276 removed when displaying the menu item, and are handled correctly in | |
| 277 functions such as `normalize-menu-item-name'. Some auto-generated | |
| 278 menus will have accelerators added dynamically, using numbers 1-9 and | |
| 279 letters; to add this feature yourself, use the Lisp command | |
| 280 `submenu-generate-accelerator-spec' in a menu filter. The feature | |
| 281 `menu-accelerator-support' has been added so that packages can check | |
| 282 whether this support exists. | |
| 283 | |
| 284 ** Default menubar improvements. | |
| 285 | |
| 286 *** Default menubar has many new commands and better organization. | |
| 287 | |
| 288 The default menubar has been extensively reorganized. Many more | |
| 289 commands are available, and they are more logically organized. The | |
| 290 Options menu, in particular, has been significantly expanded, and almost | |
| 291 everything on the new Cmds menu is new. (Much of the useful | |
| 292 functionality from the `big-menubar' package has been imported.) | |
| 293 | |
| 294 *** The font-menu is now available under MS Windows. | |
| 295 | |
| 296 ** Dialog box improvements, including a real file dialog box. | |
| 297 | |
| 298 *** XEmacs now has a proper file dialog box under MS Windows (and GTK)! | |
| 299 This will appear whenever you select a menu item that requires a file | |
| 300 as an argument. | |
| 301 | |
| 302 *** The old clunky file dialog box is improved. | |
| 303 The in-buffer file dialog box (visible on non-MS-Windows, non-GTK | |
| 304 systems) is still clunky but has had many improvements to make it work | |
| 305 significantly better. | |
| 306 | |
| 307 *** Keyboard traversal now works correctly in MS Windows dialog boxes. | |
| 308 | |
| 309 *** There is a Search dialog box available from Edit->Find... | |
| 310 However, it's very experimental and needs a lot of work. | |
| 311 | |
| 312 ** New buffer tabs. | |
| 313 | |
| 314 You can now use buffer tabs to switch between buffers. | |
| 315 | |
| 316 The tabs are located between the toolbar and the uppermost window, in | |
| 317 a location called the "gutter". If you dislike the buffer tabs, you can | |
| 318 disable them using the menu item `Options->Display->Buffers Tab Visible' | |
| 319 by customizing `gutter-buffers-tab-visible-p', or by placing this in | |
| 320 your .xemacs/init.el: | |
| 321 | |
| 322 (custom-set-variables '(gutter-buffers-tab-visible-p nil)) | |
| 323 | |
| 324 You can change the location of the gutter using the menu item | |
| 325 `Options->Display->Default Gutter Location' or with (e.g.) | |
| 326 | |
| 327 (custom-set-variables '(default-gutter-position 'left)) | |
| 328 | |
| 329 However, currently only MS Windows supports tab widgets with | |
| 330 orientations other than vertical, and it doesn't currently support | |
| 331 gutters on the bottom of the frame. | |
| 332 | |
| 333 ** There is a new MS Windows installer, netinstall, ported from Cygwin. | |
| 334 | |
| 335 Nearly complete automation of the XEmacs install process from | |
| 336 ftp.xemacs.org. Includes selection of Lisp packages to install, etc. | |
| 442 | 337 |
| 479 | 338 ** The subprocess quote-handling mechanism under Windows is much improved. |
| 339 | |
| 340 Specifically, the quote-handling mechanism has been completely rewritten, | |
| 341 and you should now be able to use single or double quotes to quote arguments | |
| 342 just like under Unix, and expect to get correct results regardless of the | |
| 343 shell you are using (e.g. CMD.EXE, bash from Cygwin, etc.). For example, | |
| 344 the following command: | |
| 345 | |
| 346 M-x grep '<<<<<<<' *.c | |
| 347 | |
| 348 should work as intended. | |
| 349 | |
| 350 ** Printing support now available under MS Windows. | |
| 351 | |
| 352 The File->Print... menu item pretty-prints using the standard MS | |
| 353 Windows printing facilities. Unfortunately it's still rather | |
| 354 experimental. There is a separate `msprinter' device tag for MS | |
| 355 Windows printers, and so you can control the way that faces appear on | |
| 356 the printer by using this tag to specify device-specific face | |
| 357 settings. | |
| 358 | |
| 359 ** Selection improvements. | |
| 360 | |
| 361 *** Kill and yank now interact with the clipboard under Windows. | |
| 464 | 362 |
| 479 | 363 This was done by changing the default value of `interprogram-cut-function' |
| 364 and `interprogram-paste-function'. You can get the old behavior by | |
| 365 setting these to nil, and there is an option on the options menu to do | |
| 366 this. | |
| 367 | |
| 368 *** MS Windows support for selection is now much more robust. | |
| 369 | |
| 370 Generally selection should now do what you would expect under | |
| 371 MS Windows: the middle mouse button will paste your current selection | |
| 372 or the clipboard; conversions from different types of selection to the | |
| 373 clipboard can be made; the kill-ring and friends will be updated as | |
| 374 per X. | |
| 375 | |
| 376 The only thing selection doesn't do is set the clipboard automatically | |
| 377 as this would break the MS Windows model. If you want this behavior | |
| 378 then set `selection-sets-clipboard' to t. | |
| 379 | |
| 380 *** Motif selection support is now more correct (but slower). | |
| 381 | |
| 382 Changes have been made to allow correct operation of cut/copy/paste | |
| 383 operations between native widgets and XEmacs buffers. However, this | |
| 384 can lead to a lot of X traffic which slows down the performance of | |
| 385 `C-k'. If you want the old behaviour then set | |
| 386 `x-selection-strict-motif-ownership' to nil. | |
| 387 | |
| 388 ** Mail spool locking now works correctly. | |
| 464 | 389 |
| 479 | 390 XEmacs has always come with a little auxiliary program, movemail, |
| 391 which moves mail out of the system's spool area into user storage. To | |
| 392 coordinate between XEmacs, the mail delivery agent, and other mail | |
| 393 user agents, movemail needs to properly lock the spool file before | |
| 394 moving it. Movemail now correctly respects the --mail-locking option | |
| 395 to configure. Moreover, movemail's locking behavior can be specified | |
| 396 at run-time, via a new command-line option -m to movemail, or through | |
| 397 the environment variable EMACSLOCKMETHOD. | |
| 398 | |
| 399 When installing XEmacs, make sure you configure it according to your | |
| 400 environment's mail spool locking conventions. When you're using a | |
| 401 binary kit, set the `mail-lock-method' variable at startup, or the | |
| 402 EMACSLOCKMETHOD environment variable. | |
| 403 | |
| 404 ** International support changes. | |
| 405 | |
| 406 *** The default coding-priority-list is now safer. | |
| 407 | |
| 408 This means that if you have no language environment set, Mule no | |
| 409 longer automatically recognizes ISO 2022 escapes in your files. This | |
| 410 makes editing binary files safe. | |
| 411 | |
| 412 *** International keysyms are now supported under X. | |
| 413 | |
| 414 This means that XEmacs running under Mule will automatically recognize | |
| 415 the keysym `scaron' to be the lower-case `s' with caron in the Latin 2 | |
| 416 character set. (Specifically, it will bind the keysym to | |
| 417 `self-insert' and augment its `ascii-character' property.) This is | |
| 418 very useful with XFree under European locales as shipped by recent | |
| 419 Linux distributions. If XEmacs is compiled without Mule support, the | |
| 420 feature still works, but it is unaware of different character sets -- | |
| 421 it unconditionally sets the `ascii-character' property to values in | |
| 422 the [160, 256) range. | |
| 442 | 423 |
| 479 | 424 *** MS Windows 1251 code page now supported. |
| 425 | |
| 426 It's available as coding system `windows-1251'. | |
| 427 | |
| 428 *** Czech, Thai, Cyrillic-KOI8, Vietnamese, Ethiopic now supported. | |
| 429 | |
| 430 *** Proper support for words in Latin 3 and Latin 4. | |
| 431 | |
| 432 The appropriate characters in Latin 3 and Latin 4 character sets are | |
| 433 correctly defined as words. | |
| 434 | |
| 435 ** Help buffers contain hyperlinks, and other changes. | |
| 436 | |
| 437 The help buffers created by C-h commands now contain hyperlinks to | |
| 438 other commands, functions and variables mentioned in the documentation. | |
| 439 Use button2 to follow a link. Use button3 to bring up a context menu | |
| 440 that lets you follow the link, find the source for the item, do a tag | |
| 441 search, etc. The buffers are also syntax-highlighted. | |
| 442 | |
| 443 Help functions (e.g. `C-h f') now know how to print macro argument | |
| 444 lists. If your macro definition included an argument list for the sake | |
| 445 of help output, you no longer need to do that. | |
| 446 | |
| 447 ** The modeline's text is now scrollable. | |
| 448 | |
| 449 This is controlled by the variable `modeline-scrolling-method', which | |
| 450 you need to set to a non-nil value. You can also choose scrolling | |
| 451 types; see the docstring of `modeline-scrolling-method' for more | |
| 452 information. | |
| 453 | |
| 454 ** The mouse wheel under MS Windows now functions correctly. | |
| 455 | |
| 456 It scrolls the XEmacs window under the pointer, not the selected | |
| 457 window. | |
| 442 | 458 |
| 428 | 459 ** Interactive searching and matching case improvements. |
| 460 | |
| 479 | 461 *** Incremental search will now highlight all visible matches. |
| 462 | |
| 463 This makes it easier to anticipate where consecutive C-s or C-r will | |
| 464 place the point. If you want to disable the feature, set | |
| 465 `isearch-highlight-all-matches' to nil. | |
| 466 | |
| 467 *** Interactive searches always respect uppercase characters. | |
| 468 | |
| 469 Case sensitiveness in searching operations is normally controlled | |
| 470 by the variable `case-fold-search' (if non-nil, case is ignored while | |
| 428 | 471 searching). This mechanism has now been slightly improved for |
| 472 interactive searches: if the search string (or regexp) contains | |
| 473 uppercase characters, the searching is forced to be case-sensitive, | |
| 474 `case-fold-search'. | |
| 475 | |
| 476 The new behavior affects all functions performing interactive | |
| 477 searches, like `zap-to-char', `list-matching-lines', `tags-search' | |
| 478 etc. The incremental search facility has always behaved that way. | |
| 479 | |
| 479 | 480 ** Rectangle functions rewritten to avoid inserting extra spaces. |
| 442 | 481 |
| 479 | 482 The rectangle functions have been almost completely rewritten in |
| 428 | 483 order to avoid inserting undesirable spaces, notably at the end of |
| 484 lines. Two typical examples of the old behavior were | |
| 485 `string-rectangle', which filled all lines up to the right side of the | |
| 486 rectangle, and `clear-rectangle', which filled even empty lines up to | |
| 487 the left side. All functions have been rewritten to avoid inserting | |
| 488 unwanted spaces, and an optional prefix now allows them to behave the | |
| 489 old way. | |
| 490 | |
| 442 | 491 Also, the behavior of `string-rectangle' is now compliant with |
| 492 `pending-delete-mode': if this mode is active, then the string | |
| 493 replaces the region rectangle. Otherwise, the command does not delete | |
| 494 or overwrite any existing text. For those who want that feature but do | |
| 495 not use pending-delete-mode, a new function, `replace-rectangle', is | |
| 686 | 496 available, and bound to `C-x r p'. |
| 442 | 497 |
| 428 | 498 As a side effect, the FORCE argument to `move-to-column' now |
| 499 understands the special value `coerce', which means that the line | |
| 500 should not be filled if it is too short to reach the desired column. | |
| 501 | |
| 479 | 502 ** New command `kill-entire-line' that always kills the entire line. |
| 503 | |
| 504 This kills the entire line at point, regardless of whether the point | |
| 505 is at the beginning of line, and regardless of the setting of | |
| 506 `kill-whole-line'. | |
| 507 | |
| 508 ** Default values correctly stored in minibuffer histories. | |
| 428 | 509 |
| 479 | 510 When you press RET at a minibuffer prompt that provides a default |
| 511 value, the value is stored in history instead of an empty line. Also, | |
| 512 you can now edit the default value by pressing the down arrow, | |
| 513 accessing the logical "future" value. Not all minibuffer prompts have | |
| 514 yet been converted to support this feature. | |
| 428 | 515 |
| 479 | 516 ** You can now create "indirect buffers", like in GNU Emacs. |
| 517 | |
| 518 An indirect buffer shares its text with another buffer ("base | |
| 519 buffer"), but has its own major mode, local variables, extents, and | |
| 520 narrowing. An indirect buffer has a name of its own, distinct from | |
| 521 those of the base buffer and all other buffers. An indirect buffer | |
| 522 cannot itself be visiting a file (though its base buffer can be). | |
| 523 The base buffer cannot itself be indirect. | |
| 428 | 524 |
| 525 Use (make-indirect-buffer BASE-BUFFER NAME) to make an indirect buffer | |
| 526 named NAME whose base is BASE-BUFFER. If BASE-BUFFER is itself an | |
| 527 indirect buffer, its base buffer is used as the base for the new | |
| 528 buffer. | |
| 529 | |
| 530 You can make an indirect buffer current, or switch to it in a window, | |
| 531 just as you would a non-indirect buffer. | |
| 532 | |
| 533 The function `buffer-base-buffer' returns a buffer's base buffer or | |
| 534 nil, if given an ordinary (non-indirect) buffer. The function | |
| 535 `buffer-indirect-children' returns a list of the indirect children of | |
| 536 a base buffer. | |
| 537 | |
| 479 | 538 ** Pixel-based scrolling has been implemented. |
| 539 By default this will attempt to scroll in increments equal to the | |
| 540 height of the default face. Set `window-pixel-scroll-increment' to | |
| 541 modify this behavior. | |
| 542 | |
| 543 ** Operation progress can be displayed using graphical widgets. | |
| 544 See `progress-feedback' for details. This support has been switched | |
| 545 on by default for font-lock and some web browsing functions. If you | |
| 546 do not like this behavior, set `progress-feedback-use-echo-area' to | |
| 547 nil. | |
| 548 | |
| 549 ** User names following a tilde can now be completed at file name prompts. | |
| 550 e.g. `C-x C-f ~hni<TAB>' will complete to `~hniksic/'. To make this | |
| 551 operation faster, a cache of user names is maintained internally. | |
| 428 | 552 |
| 553 The new primitives available for this purpose are functions named | |
| 554 `user-name-completion' and `user-name-all-completions'. | |
| 555 | |
| 556 ** XEmacs can now play sound using Enlightenment Sound Daemon (ESD). | |
| 557 It will try NAS first, then ESD, then playing native sound directly. | |
| 558 | |
| 479 | 559 ** X-Face support is now available under MS Windows. |
| 560 If an X-Face library built under MS Windows is available then XEmacs | |
| 428 | 561 will use this at build time. |
| 562 | |
| 479 | 563 ** The PostgreSQL Relational Database Management System is now supported. |
| 564 It is now possible to build XEmacs so that the programming interface | |
| 565 to the PostgreSQL RDBMS (libpq) is available in XEmacs Lisp. | |
| 566 Supported versions of PostgreSQL are 6.5.3 (earlier versions may work, | |
| 567 but have not been tested) and 7.0-beta1. | |
| 438 | 568 |
| 464 | 569 ** Indentation no longer indents comments that begin at column zero. |
| 570 This makes it easy to deal with commented out regions of code. | |
| 571 | |
| 479 | 572 ** Face and variable settings can have comments in Customize. |
| 573 Customize now supports adding comments about your face and variable | |
| 574 settings using a new menu entry. Comments for variables can also be | |
| 575 assigned by calling `customize-set-(value|variable)' with a prefix | |
| 576 argument. | |
| 577 | |
| 578 ** New locations for early package hierarchies. | |
| 579 XEmacs now locates the early package hierarchies at | |
| 580 ~/.xemacs/mule-packages/ and ~/.xemacs/xemacs-packages/. Previously, | |
| 581 the early packages were located in ~/.xemacs/. | |
| 464 | 582 |
| 479 | 583 ** The `auto-save' library has been greatly improved. |
| 584 (This lets you group all your auto-save files into one directory, and | |
| 585 is provided standardly with XEmacs. See `etc/sample.init.el', | |
| 586 available on the Help menu, for more info on how to set it up.) | |
| 587 Specifically, it now works under MS Windows, and it uses a completely | |
| 588 reversible encoding (basically quoted-printable), so that all | |
| 589 filenames (as well as non-filename buffers) are successfully handled | |
| 590 regardless of any special characters in their names. | |
| 464 | 591 |
| 479 | 592 ** New variable `mswindows-alt-by-itself-activates-menu'. |
| 593 If you set this variable to nil then pressing and releasing the Alt | |
| 594 key under MS Windows will no longer activate the menubar. The default | |
| 595 is t. This is not to be confused with `menu-accelerator-enabled', | |
| 596 which enables the use of Alt+<Letter> accelerators to invoke the | |
| 597 menus. | |
| 598 | |
| 599 ** Other init-file-related changes. | |
| 464 | 600 |
| 601 *** Init file in your home directory may be called `.emacs.el'. | |
| 442 | 602 |
| 464 | 603 Like in GNU Emacs 20.4 and on, you can now name the XEmacs init file |
| 604 located in your home directory `.emacs.el'. Formerly the name had to | |
| 605 be `.emacs'. If you use the name `.emacs.el', you can byte-compile | |
| 606 the file in the usual way. | |
| 607 | |
| 608 If both `.emacs' and `.emacs.el' exist, the latter file is the one | |
| 609 that is used. | |
| 442 | 610 |
| 464 | 611 *** New command-line switches -user-init-file and -user-init-directory. |
| 479 | 612 |
| 464 | 613 These can be used to specify alternate locations for what is normally |
| 614 ~/.emacs and ~/.xemacs. | |
| 442 | 615 |
| 464 | 616 Moreover, the `-user <user>' command-line option (which used to only |
| 617 work in unpredictable ways) is now equivalent to `-user-init-file | |
| 618 ~<user>/.xemacs/init.el -user-init-directory ~<user>/.xemacs', or | |
| 619 `-user-init-file ~<user>/.emacs -user-init-directory ~<user>/.xemacs', | |
| 620 whichever init file comes first. | |
| 621 | |
| 428 | 622 ** Etags changes. |
| 623 | |
| 624 *** In DOS, etags looks for file.cgz if it cannot find file.c. | |
| 625 | |
| 479 | 626 *** New option --ignore-case-regex is an alternative to --regex. |
| 627 It is now possible to bind a regexp to a language, by prepending the | |
| 628 regexp with {lang}, where lang is one of the languages that `etags | |
| 629 --help' prints out. This feature is useful especially for regex | |
| 630 files, where each line contains a regular expression. The manual | |
| 631 contains details. | |
| 428 | 632 |
| 479 | 633 *** New option --declarations, for C-type languages. |
| 634 In C and derived languages, etags creates tags for function | |
| 428 | 635 declarations when given the --declarations option. |
| 636 | |
| 479 | 637 *** In C++, tags are created for "operator". |
| 638 The tags have the form "operator+", without spaces between the | |
| 639 keyword and the operator. | |
| 428 | 640 |
| 479 | 641 *** Ada now supported. |
| 642 Tags are functions, procedures, packages, tasks, and types. | |
| 428 | 643 |
| 464 | 644 *** In Fortran, procedure is no longer tagged. |
| 428 | 645 |
| 646 *** In Java, tags are created for "interface". | |
| 647 | |
| 479 | 648 *** In Lisp, def-type constructs are now tagged. |
| 649 This includes "(defstruct (foo", "(defun (operator" and similar constructs. | |
| 650 | |
| 651 *** In Perl, the --globals option tags global variables. | |
| 652 my and local variables are tagged. | |
| 428 | 653 |
| 479 | 654 *** Python now supported. |
| 655 def and class at the beginning of a line are tags. | |
| 428 | 656 |
| 479 | 657 *** New file extensions recognized: .ss, .pdb, .psw. |
| 658 .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is | |
| 428 | 659 for PSWrap. |
| 660 | |
| 661 | |
| 464 | 662 * Lisp and internal changes in XEmacs 21.4 |
| 428 | 663 ========================================== |
| 664 | |
| 440 | 665 ** A new portable dumper is available for beta testing. |
| 430 | 666 |
| 667 Olivier Galibert has written a portable dumper for XEmacs, based on | |
| 464 | 668 initial work by Kyle Jones. To perform even the most basic editor, |
| 669 XEmacs requires some amount of Lisp code to be loaded. To avoid | |
| 670 repeating the expensive loading process at every startup, XEmacs is | |
| 671 built in a special way. Its C sources link into an executable called | |
| 672 `temacs', which loads the bootstrap Lisp code and uses a special | |
| 673 "unexec" call to dump the resulting memory image into a proper | |
| 674 `xemacs' executable on disk. The unexec() process is hard to | |
| 432 | 675 implement correctly and makes XEmacs very hard to port to new |
| 676 operating systems, or even to new releases of old systems. | |
| 430 | 677 |
| 464 | 678 The new portable dumper uses a different approach to dumping: instead |
| 679 of dumping full-fledged executable, it only dumps out the initialized | |
| 430 | 680 data structures (both Lisp and C) into an external file. A normally |
| 464 | 681 running XEmacs only needs to mmap that file and relocate a bit to get |
| 682 to the initialized data. In that scheme, there is no difference | |
| 430 | 683 between `temacs' and `xemacs'. |
| 684 | |
| 464 | 685 Unfortunately, the portable dumper has not been completely finished |
| 686 for this release, and will not be used by default. However, if you | |
| 687 wish to experiment with it, or if you need to compile XEmacs on a new | |
| 688 and unsupported platform, you can test it by configuring XEmacs with | |
| 689 `--pdump' flag. | |
| 440 | 690 |
| 428 | 691 ** Much effort has been invested to make XEmacs Lisp faster: |
| 692 | |
| 693 *** Many basic lisp operations are now faster. | |
| 694 This is especially the case when running a Mule-enabled XEmacs. | |
| 695 | |
| 696 A general overhaul of the lisp engine should produce a speedup of 1.4 | |
| 464 | 697 in a non-Mule XEmacs, and 2.1 in a Mule XEmacs. These numbers were |
| 428 | 698 obtained running `(byte-compile "simple.el")', which should be a |
| 699 pretty typical test of "pure" Lisp. | |
| 700 | |
| 701 *** Lisp hash tables have been re-implemented. The Common Lisp style | |
| 702 hash table interface has been made standard, and moved from cl.el into | |
| 703 fast C code (See the section on hash tables in the XEmacs Lisp | |
| 704 Reference). A speedup factor of 3 can be expected with code that | |
| 705 makes intensive use of hash tables. | |
| 706 | |
| 707 *** The garbage collector has been tuned, leading to a speedup of | |
| 708 1.16. | |
| 709 | |
| 464 | 710 *** The byte-compiler and the byte-optimizer have been tuned to |
| 711 produce better code in many small ways. | |
| 712 | |
| 428 | 713 *** The family of functions that iterate over lists, like `memq', and |
| 714 `rassq', have been made a little faster (typically 1.3). | |
| 715 | |
| 716 *** Lisp function calls are faster, by approximately a factor of two. | |
| 717 However, defining inline functions (via defsubst) still makes sense | |
| 718 for tight loops. | |
| 719 | |
| 720 *** Finally, a few functions have had dramatic performance | |
| 721 improvements. For example, `(last long-list)' is now 30 times faster. | |
| 722 | |
| 723 Of course, your mileage will vary. | |
| 724 | |
| 725 Many operations do not see any improvement. Surprisingly, running | |
| 726 (font-lock-fontify-buffer) does not use the Lisp engine much at all. | |
| 727 Speeding up your favorite slow operation is an excellent project to | |
| 728 improve XEmacs. Don't forget to profile! | |
| 729 | |
| 430 | 730 ** Native widgets can be displayed in buffers. |
| 731 | |
| 732 The glyph system has been extended to allow the display of glyphs that | |
| 733 are implemented as native window-system widgets. Thus you can embed | |
| 734 buttons, scrollbars, combo boxes, edit fields and progress gauges in a | |
| 735 buffer. As a side effect subwindow support now works once again. | |
| 736 | |
| 440 | 737 All of this is still fairly experimental and there is no |
| 442 | 738 documentation. The current APIs might change in a future version of |
| 479 | 739 XEmacs. Some widgets are only available under MS Windows. See the |
| 440 | 740 file glyphs-test.el in the XEmacs src distribution for examples of |
| 741 usage. | |
| 430 | 742 |
| 440 | 743 The buffers-tab functionality and progress gauge have been implemented |
| 744 using this feature. | |
| 430 | 745 |
| 464 | 746 ** Case translation now supports international characters. |
| 747 | |
| 748 *** Instead of being lists of 256-character strings, case tables are | |
| 749 now opaque objects. The interface to access them is almost the same, | |
| 750 except it now works for international characters, and you can set the | |
| 751 case pairs using `put-case-table-pair'. `set-case-table' and friends | |
| 752 still support the old list/string based interface for backward | |
| 753 compatibility. | |
| 754 | |
| 755 *** As a consequence of this change, functions `downcase' and `upcase' | |
| 756 as well as all the case-transformation commands now work with | |
| 757 non-ASCII characters. Built-in tables cover all the Latin character | |
| 758 sets that we support. If your language has a distinction between | |
| 759 upper and lower case that is not handled by XEmacs/Mule, please let us | |
| 760 know. | |
| 761 | |
| 762 *** The code that implements case-insensitive search has been modified | |
| 763 to respect the case table settings. This also applies to regexp | |
| 764 search. | |
| 765 | |
| 479 | 766 ** Syntax tables may now be specified for a part of a buffer by |
| 767 attaching the `syntax-table' property to an extent. For compatibility | |
| 768 with GNU Emacs, you may use the text-property interface to achieve the | |
| 769 same result. | |
| 770 | |
| 464 | 771 ** Values of variables `user-init-file' and `user-init-directory' are |
| 772 now absolute file/directory names. Previously, both variables used to | |
| 773 be relative to `(concat "~" init-file-user)'. This turned out to be | |
| 774 too complicated for most packages (and some core Lisp files) to use | |
| 775 correctly. Also, the `init-file-user' variable has been obsoleted in | |
| 776 the process. | |
| 440 | 777 |
| 442 | 778 The user-visible options like `-u' have not changed their behavior. |
| 430 | 779 |
| 428 | 780 ** XEmacs finally has an automated test suite! |
| 781 Although this is not yet very sophisticated, it is already responsible | |
| 782 for several important bug fixes in XEmacs. To try it out, simply use | |
| 783 the makefile target `make check' after building XEmacs. | |
| 784 | |
| 785 ** Hash tables have been reimplemented. | |
| 786 As was pointed out above, the standard interface to hash tables is now | |
| 787 the Common Lisp interface, as described in Common Lisp, the Language | |
| 788 (CLtL2, by Steele). The older interface (functions with names | |
| 789 containing the phrase `hashtable') will continue to work, but the | |
| 790 preferred interface now has names containing the phrase `hash-table'. | |
| 791 | |
| 792 Here's the executive overview: create hash tables using | |
| 793 make-hash-table, and use gethash, puthash, remhash, maphash and | |
| 794 clrhash to manipulate entries in the hash table. See the (updated) | |
| 795 Lisp Reference Manual for details. | |
| 796 | |
| 797 ** Lisp code handles circular lists much more robustly. | |
| 798 Many basic lisp functions used to loop forever when given a circular | |
| 799 list, expecting you to C-g (quit) out of the loop. Now this is more | |
| 800 likely to trigger a `circular-list' error. Printing a circular list | |
| 801 now results in something like this: | |
| 802 | |
| 803 (let ((x (cons 'foo 'foo))) | |
| 804 (setcdr x x) | |
| 805 x) | |
| 806 => (foo ... <circular list>) | |
| 807 | |
| 808 An extra bonus is that checking for circularities is not just | |
| 809 friendlier, but actually faster than checking for C-g. | |
| 810 | |
| 430 | 811 ** Functions for decoding base64 encoding are now available; see |
| 812 `base64-encode-region', `base64-encode-string', `base64-decode-region' | |
| 813 and `base64-decode-string'. | |
| 428 | 814 |
| 440 | 815 ** The functions `read-string', `read-expression', `eval-minibuffer', |
| 816 `read-variable', `read-command', `read-function', `read-number', | |
| 817 `read-shell-command', `read-from-minibuffer', and `completing-read' | |
| 818 now take an additional argument which specifies the default value. If | |
| 819 this argument is non-nil, it should be a string; that string is used | |
| 820 in two ways: | |
| 821 | |
| 464 | 822 * It is returned if the user enters empty input. |
| 823 * It is available as the logical "future" entry, by pressing the down | |
| 824 arrow. | |
| 440 | 825 |
| 826 ** LDAP changes. | |
| 827 | |
| 828 *** The LDAP interface now consists of two layers, a low-level layer | |
| 829 that closely matches the LDAP C API, and a more convenient | |
| 830 higher-level set of functions. | |
| 831 | |
| 832 *** The low-level functions that used to be named *-internal are now | |
| 833 named more simply: `ldap-open', `ldap-close', `ldap-search-basic', | |
| 834 `ldap-add', and `ldap-modify'. They should be used directly for very | |
| 835 specific purposes (such as multiple operations on a connection) only. | |
| 836 | |
| 837 *** The higher-level functions provide a more convenient way to access | |
| 838 LDAP directories hiding the subtleties of handling the connection, | |
| 839 translating arguments and ensuring compliance with LDAP | |
| 840 internationalization rules and formats (currently partly implemented | |
| 841 only.) This layer provides atomic operations for searches, | |
| 842 modification, addition and deletion of multiple entries at once: | |
| 843 `ldap-search-entries', `ldap-add-entries', `ldap-delete-entries', and | |
| 844 `ldap-modify-entries'. | |
| 845 | |
| 846 *** To maintain compatibility with previous code, the now obsolete | |
| 847 function `ldap-search' is now merely a wrapper that calls either | |
| 848 `ldap-search-basic' or `ldap-search-entries'. Please don't use the | |
| 849 `ldap-search' function in your new programs -- a direct call to one of | |
| 850 the two replacements is more efficient and unambiguous. | |
| 851 | |
| 430 | 852 ** The arguments to `locate-file' are now more Lisp-like. As before, |
| 853 the usage is: | |
| 428 | 854 |
| 855 (locate-file FILENAME PATH-LIST &optional SUFFIXES MODE) | |
| 856 | |
| 857 Except that SUFFIXES are now a list of strings instead of a single, | |
| 858 colon-separated string. MODE is now a symbol or a list of symbols | |
| 859 (symbols `exists', `executable', `writable', and `readable' are | |
| 860 supported) instead of an integer code. See the documentation for | |
| 861 details. Of course, the old form is still accepted for backward | |
| 862 compatibility. | |
| 863 | |
| 864 Several bugs in locate-file have been fixed, most notably its failure | |
| 865 to call expand-file-name on elements of PATH-LIST. Because of that | |
| 866 elements of load-path of the form "~/..." used to not work. | |
| 867 locate-file is now guaranteed to expand files during its course of | |
| 868 operation. | |
| 869 | |
| 870 ** `translate-region' has been improved in several ways. Its TABLE | |
| 871 argument used to be a 256-character string. In addition to this, it | |
| 872 can now also be a vector or a char-table, which makes the function | |
| 464 | 873 useful for Mule, which it wasn't. If TABLE is a vector or a generic |
| 428 | 874 char-table, you can map characters to strings instead of to other |
| 875 characters. For instance: | |
| 876 | |
| 877 (let ((table (make-char-table 'generic))) | |
| 878 (put-char-table ?a "the letter a" table) | |
| 879 (put-char-table ?b "" table) | |
| 880 (put-char-table ?c ?\n table) | |
| 881 (translate-region (point-min) (point-max) table)) | |
| 882 | |
| 430 | 883 ** The new form `ignore-file-errors', similar to `ignore-errors' may |
| 884 be used as a short-hand for condition-case when you wish to ignore | |
| 885 file-related error. For example: | |
| 886 | |
| 887 (ignore-file-errors (delete-file "foo")) | |
| 888 | |
| 889 ** The first argument to `intern-soft' may now also be a symbol, like | |
| 890 with `unintern'. If given a symbol, `intern-soft' will look for that | |
| 891 exact symbol rather than for any string. This is useful when you want | |
| 892 to check whether a specific symbol is interned in an obarray, e.g.: | |
| 893 | |
| 894 (intern "foo") | |
| 895 (intern-soft "foo") | |
| 896 => foo | |
| 897 (intern-soft (make-symbol "foo")) | |
| 898 => nil | |
| 899 | |
| 428 | 900 ** The `keywordp' function now returns non-nil only on symbols |
| 901 interned in the global obarray. For example: | |
| 902 | |
| 903 (keywordp (intern ":foo" [0])) | |
| 904 => nil | |
| 905 (keywordp (intern ":foo")) ; The same as (keywordp :foo) | |
| 906 => t | |
| 907 | |
| 442 | 908 This behavior is compatible with other code which treats symbols |
| 428 | 909 beginning with colon as keywords only if they are interned in the |
| 464 | 910 global obarray. `keywordp' used to wrongly return t in both above |
| 911 cases. | |
| 912 | |
| 913 ** The function `replace-in-string' has been rewritten to use | |
| 914 `replace-match'. This not only makes it much faster, but adds all the | |
| 915 features of `replace-match'. | |
| 428 | 916 |
| 442 | 917 ** New variables `this-command-properties' and |
| 918 `last-command-properties' are now available for communication between | |
| 919 consecutive commands. Commands should use these to communicate with | |
| 920 the pre/post-command hooks, subsequent commands, wrapping commands, | |
| 921 etc. in preference to looking at and/or setting `this-command'. | |
| 922 | |
| 923 ** New functions `add-one-shot-hook' and `add-local-one-shot-hook' make | |
| 924 it possible to add a "one-shot" hook, which is to say a hook that runs | |
| 925 only once, and automatically removes itself after the first time it | |
| 926 has run. | |
| 927 | |
| 928 ** The descriptor that specifies the text of a menu item can now be an | |
| 464 | 929 evaluated expression. This makes it parallel with other descriptors, |
| 930 which can also be expressions. | |
| 442 | 931 |
| 428 | 932 |
| 933 * Changes in XEmacs 21.0 | |
| 934 ======================== | |
| 935 | |
| 936 ** XEmacs has been unbundled into constituent installable packages. | |
| 937 See the Info documentation under "Packages" for more information. | |
| 938 See the file `etc/PACKAGES' in the distribution for a partial list of | |
| 939 packages available at the time of the 21.0 release. | |
| 940 | |
| 941 ** XEmacs is now supported under Microsoft Windows 95/98 and Windows | |
| 942 NT operating systems. For starters, look at the XEmacs on Windows FAQ | |
| 943 at <URL:http://jagor.srce.hr/~hniksic/xemacs-on-windows-faq.txt>. To | |
| 944 discuss Windows-specific issues, subscribe to the mailing list at | |
| 945 <xemacs-nt-request@xemacs.org>. | |
| 946 | |
| 947 ** XEmacs will now use `XEmacs' as its application class if it finds | |
| 948 any `XEmacs' resources in the resource database. Otherwise, it will | |
| 949 continue to use the `Emacs' class. | |
| 950 | |
| 951 ** The options menu has been ported to Custom. | |
| 952 This means that each entry in the options menu acts as if you had customized | |
| 953 the corresponding variable by hand. ### WARNING: there is currently no | |
| 954 upgrading function to help you port your old options settings to the new | |
| 955 format. Consequently, if you want to modify the options for XEmacs 21, you | |
| 956 will have to set them all again through the menu, and remove the code loading | |
| 957 .xemacs-options from your .emacs. | |
| 958 | |
| 959 ** When the Zmacs region is active, `M-x query-replace' and the other | |
| 960 replace commands now operate on the region contents only. | |
| 961 | |
| 962 ** XEmacs now is able to choose X visuals and use private colormaps. | |
| 963 The '-visual <visualStr>' command line option or the '.EmacsVisual' | |
| 964 Xresource controls which visual XEmacs will use, and | |
| 965 '-privateColormap' or '.privateColormap' will force XEmacs to create a | |
| 966 private colormap for use. The syntax for the visual string is | |
| 967 "<visual><bitdepth>" where <visual> is one of 'StaticColor', | |
| 968 'TrueColor', 'GrayScale', 'PseudoColor' or 'DirectColor' and | |
| 969 <bitdepth> is the appropriate number of bits per pixel. If an invalid | |
| 970 or non-supported combination is entered, XEmacs attempts to find a happy | |
| 971 medium. The X creation mechanism will then determine if it needs to | |
| 972 create a colormap for use, or the presence of the private flags will | |
| 973 force it to create it. | |
| 974 | |
| 975 ** The `imenu' package has been ported to XEmacs and is available as a | |
| 976 package. | |
| 977 | |
| 978 ** `echo-keystrokes' can now be a floating-point number, so that you | |
| 979 can set it to intervals shorter than one second. | |
| 980 | |
| 981 (setq echo-keystrokes 0.1) | |
| 982 | |
| 983 ** The new command `center-to-window-line' works like `recenter' | |
| 984 (bound to `C-l'), only it does not redisplay the whole display area. | |
| 985 | |
| 986 ** The M-. command will now first search through exact tags matches, | |
| 987 and then through inexact matches, as one would expect. | |
| 988 | |
| 989 ** The new variable `user-full-name' can be used to customize one's | |
| 990 name when using the Emacs mail and news reading facilities. | |
| 991 | |
| 992 Normally, `user-full-name' is a function that returns the full name of | |
| 993 a user or UID, as specified by the system -- for instance, | |
| 994 (user-full-name "root") returns something like "Super-User". However, | |
| 995 when the function is called without arguments, it will return the | |
| 996 value of the `user-full-name' variable. The `user-full-name' variable | |
| 997 is initialized using the environment variable NAME and (failing that) | |
| 998 the user's system name. | |
| 999 | |
| 1000 The behavior of the `user-full-name' function with an argument | |
| 1001 specified is unchanged. | |
| 1002 | |
| 1003 ** The new command `M-x customize-changed-options' lets you customize | |
| 1004 all the options whose default values have changed in recent Emacs | |
| 1005 versions. You specify a previous Emacs version number as argument, | |
| 1006 and the command creates a customization buffer showing all the | |
| 1007 customizable options whose default values were changed since that | |
| 1008 version. | |
| 1009 | |
| 1010 If you don't specify a particular version number argument, then the | |
| 1011 customization buffer shows all the customizable options for which | |
| 1012 Emacs versions of changes are recorded. | |
| 1013 | |
| 1014 ** The new command `add-log-convert' can be used to convert the | |
| 1015 old-style (pre-20.3) ChangeLog buffers to new style, for | |
| 1016 consistency. A reminder: if you wish to revert to old-style | |
| 1017 ChangeLogs instead, customize the value of `add-log-time-format' | |
| 1018 variable. | |
| 1019 | |
| 1020 ** The new command `zap-up-to-char' is now available. It is similar | |
| 1021 to `zap-to-char', except that it does not delete the searched-for | |
| 1022 character. It is not bound to a key by default. | |
| 1023 | |
| 1024 ** You can now store a number into a register with `C-u NUMBER C-x r n' | |
| 1025 REG, increment it by INC with `C-u INC C-x r + REG' (to increment by | |
| 1026 one, omit C-u INC), and insert it in the buffer with `C-x r g REG'. | |
| 1027 This is useful for writing keyboard macros. | |
| 1028 | |
| 1029 ** The M-: command, when given a prefix argument, will now insert its | |
| 1030 result to the current buffer. | |
| 1031 | |
| 1032 ** The `C-h c' command, when given a prefix argument, will now insert | |
| 1033 the message into the current buffer. | |
| 1034 | |
| 1035 ** Horizontally split windows may now be dragged using the mouse. | |
| 1036 Because of this, the dividers between vertical windows are always | |
| 1037 visible. To turn it off, set `vertical-divider-always-visible-p' to | |
| 1038 nil. | |
| 1039 | |
| 1040 ** XEmacs/Mule (internationalization) changes. | |
| 1041 | |
| 1042 *** Mule support now works on TTY's. Use `set-terminal-coding-system' | |
| 1043 and `set-keyboard-coding-system' to specify the coding system of your | |
| 1044 display and keyboard. | |
| 1045 | |
| 1046 *** Egg/SJ3 input method is now officially supported. Quail and | |
| 1047 Egg/Skk have been available through the generalized Leim since 20.3. | |
| 1048 | |
| 1049 *** Localized Japanese menubars are available if XEmacs is built with | |
| 1050 XFONTSET and either the X11 libraries are built with X_LOCALE defined | |
| 1051 or the native C libraries support Japanese localization. This has | |
| 1052 been available since 20.3, only it hasn't been announced before. | |
| 1053 | |
| 1054 ** Jamie Zawinski's `gdb-highlight' extension is now distributed with | |
| 1055 the `debug' package. gdb-highlight makes most objects printed in a | |
| 1056 gdb buffer be mouse-sensitive: as text shows up in the buffer, it is | |
| 1057 parsed, and objects which are recognized have context-sensitive | |
| 1058 commands attached to them. To use it, add the following to `.emacs': | |
| 1059 | |
| 1060 (add-hook 'gdb-mode-hook (lambda () (require 'gdb-highlight))) | |
| 1061 | |
| 1062 ** The package popper.el is now included in the edit-utils package. | |
| 1063 It has been greatly enhanced with respect to the one once included | |
| 1064 with the ilisp package and should work well under XEmacs 21.0. | |
| 1065 | |
| 1066 ** Gnuserv changes | |
| 1067 | |
| 1068 *** Like the old 'gnudoit' program. Gnuclient -batch now can read from stdin. | |
| 1069 | |
| 1070 *** Gnuclient -batch no longer breaks off the output at the first LF. | |
| 1071 | |
| 1072 ** C mode changes | |
| 1073 | |
| 1074 *** Multiline macros are now handled, both as they affect indentation, | |
| 1075 and as recognized syntax. New syntactic symbol cpp-macro-cont is | |
| 1076 assigned to second and subsequent lines of a multiline macro | |
| 1077 definition. | |
| 1078 | |
| 1079 *** A new style "user" which captures all non-hook-ified | |
| 1080 (i.e. top-level) .emacs file variable setings and customizations. | |
| 1081 Style "cc-mode" is an alias for "user" and is deprecated. "gnu" style | |
| 1082 is still the default however. | |
| 1083 | |
| 1084 *** "java" style now conforms to Sun's JDK coding style. | |
| 1085 | |
| 1086 *** There are new commands c-beginning-of-defun, c-end-of-defun which | |
| 1087 are alternatives which you could bind to C-M-a and C-M-e if you prefer | |
| 1088 them. They do not have key bindings by default. | |
| 1089 | |
| 1090 *** New and improved implementations of M-a (c-beginning-of-statement) | |
| 1091 and M-e (c-end-of-statement). | |
| 1092 | |
| 1093 *** C++ namespace blocks are supported, with new syntactic symbols | |
| 1094 namespace-open, namespace-close, and innamespace. | |
| 1095 | |
| 1096 *** File local variable settings of c-file-style and c-file-offsets | |
| 1097 makes the style variables local to that buffer only. | |
| 1098 | |
| 1099 *** New indentation functions c-lineup-close-paren, | |
| 1100 c-indent-one-line-block, c-lineup-dont-change. | |
| 1101 | |
| 1102 *** Improvements (hopefully!) to the way CC Mode is loaded. You | |
| 1103 should now be able to do a (require 'cc-mode) to get the entire | |
| 1104 package loaded properly for customization in your .emacs file. A new | |
| 1105 variable c-initialize-on-load controls this and is t by default. | |
| 1106 | |
| 1107 ** In Text mode, now only blank lines separate paragraphs. | |
| 1108 This makes it possible to get the full benefit of Adaptive Fill mode | |
| 1109 in Text mode, and other modes derived from it (such as Mail mode). | |
| 1110 TAB in Text mode now runs the command indent-relative; this makes a | |
| 1111 practical difference only when you use indented paragraphs. | |
| 1112 | |
| 1113 As a result, the old Indented Text mode is now identical to Text mode, | |
| 1114 and is an alias for it. | |
| 1115 | |
| 1116 If you want spaces at the beginning of a line to start a paragraph, | |
| 1117 use the new mode, Paragraph Indent Text mode. | |
| 1118 | |
| 1119 ** Changes to Gnus, the XEmacs newsreader. | |
| 1120 | |
| 1121 *** New functionality for using Gnus as an offline newsreader has been | |
| 1122 added. A plethora of new commands and modes have been added. See the | |
| 1123 Gnus manual for the full story. | |
| 1124 | |
| 1125 *** The nndraft backend has returned, but works differently than | |
| 1126 before. All Message buffers are now also articles in the nndraft | |
| 1127 group, which is created automatically. | |
| 1128 | |
| 1129 *** `gnus-alter-header-function' can now be used to alter header | |
| 1130 values. | |
| 1131 | |
| 1132 *** `gnus-summary-goto-article' now accept Message-ID's. | |
| 1133 | |
| 1134 *** A new Message command for deleting text in the body of a message | |
| 1135 outside the region: `C-c C-v'. | |
| 1136 | |
| 1137 *** You can now post to component group in nnvirtual groups with | |
| 1138 `C-u C-c C-c'. | |
| 1139 | |
| 1140 *** `nntp-rlogin-program' -- new variable to ease customization. | |
| 1141 | |
| 1142 *** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit | |
| 1143 re-highlighting of the article buffer. | |
| 1144 | |
| 1145 *** New element in `gnus-boring-article-headers' -- `long-to'. | |
| 1146 | |
| 1147 *** `M-i' symbolic prefix command. See the section "Symbolic | |
| 1148 Prefixes" in the Gnus manual for details. | |
| 1149 | |
| 1150 *** `L' and `I' in the summary buffer now take the symbolic prefix | |
| 1151 `a' to add the score rule to the "all.SCORE" file. | |
| 1152 | |
| 1153 *** `gnus-simplify-subject-functions' variable to allow greater | |
| 1154 control over simplification. | |
| 1155 | |
| 1156 *** `A T' -- new command for fetching the current thread. | |
| 1157 | |
| 1158 *** `/ T' -- new command for including the current thread in the | |
| 1159 limit. | |
| 1160 | |
| 1161 *** `M-RET' is a new Message command for breaking cited text. | |
| 1162 | |
| 1163 *** \\1-expressions are now valid in `nnmail-split-methods'. | |
| 1164 | |
| 1165 *** The `custom-face-lookup' function has been removed. | |
| 1166 If you used this function in your initialization files, you must | |
| 1167 rewrite them to use `face-spec-set' instead. | |
| 1168 | |
| 1169 *** Cancelling now uses the current select method. Symbolic prefix | |
| 1170 `a' forces normal posting method. | |
| 1171 | |
| 1172 *** New command to translate M******** sm*rtq**t*s into proper text | |
| 1173 -- `W d'. | |
| 1174 | |
| 1175 *** For easier debugging of nntp, you can set `nntp-record-commands' | |
| 1176 to a non-nil value. | |
| 1177 | |
| 1178 *** nntp now uses ~/.authinfo, a .netrc-like file, for controlling | |
| 1179 where and how to send AUTHINFO to NNTP servers. | |
| 1180 | |
| 1181 *** A command for editing group parameters from the summary buffer | |
| 1182 has been added. | |
| 1183 | |
| 1184 *** A history of where mails have been split is available. | |
| 1185 | |
| 1186 *** A new article date command has been added -- `article-date-iso8601'. | |
| 1187 | |
| 1188 *** Subjects can be simplified when threading by setting | |
| 1189 `gnus-score-thread-simplify'. | |
| 1190 | |
| 1191 *** A new function for citing in Message has been added -- | |
| 1192 `message-cite-original-without-signature'. | |
| 1193 | |
| 1194 *** `article-strip-all-blank-lines' -- new article command. | |
| 1195 | |
| 1196 *** A new Message command to kill to the end of the article has | |
| 1197 been added. | |
| 1198 | |
| 1199 *** A minimum adaptive score can be specified by using the | |
| 1200 `gnus-adaptive-word-minimum' variable. | |
| 1201 | |
| 1202 *** The "lapsed date" article header can be kept continually | |
| 1203 updated by the `gnus-start-date-timer' command. | |
| 1204 | |
| 1205 *** Web listserv archives can be read with the nnlistserv backend. | |
| 1206 | |
| 1207 *** Old dejanews archives can now be read by nnweb. | |
| 1208 | |
| 1209 *** Byte-compilation of user-specs now works under XEmacs. | |
| 1210 | |
| 1211 ** The `dir' files are no longer essential for functioning of the Info | |
| 1212 subsystem. If the `dir' file does not exist in an Info directory, the | |
| 1213 relevant information will be generated on-the-fly. | |
| 1214 | |
| 1215 This behavior can be customized, look for `Info-auto-generate-directory' | |
| 1216 and `Info-save-auto-generated-dir' in the `info' customization group. | |
| 1217 | |
| 1218 | |
| 1219 * Lisp and internal changes in XEmacs 21.0 | |
| 1220 ========================================== | |
| 1221 | |
| 1222 ** It is now possible to build XEmacs with support for 31-bit Lisp | |
| 1223 integers (normally, Lisp integers are only 28 bits wide on 32-bit | |
| 1224 machines.) Configure with --use-minimal-tagbits to test. With this | |
| 1225 change, the maximum buffer size on 32-bit machines is increased from | |
| 1226 128M to 1G. This setting will be made default in a future XEmacs | |
| 1227 version. | |
| 1228 | |
| 1229 ** Specifier changes. | |
| 1230 | |
| 1231 *** When instantiating a specifier, the window locale now has a higher | |
| 1232 precedence than the buffer locale. This is because the window locale | |
| 1233 is more specific than the buffer locale. | |
| 1234 | |
| 1235 *** The new macro `let-specifier' can be used to temporarily add | |
| 1236 specifications to specifiers. See the documentation for details. | |
| 1237 | |
| 1238 *** The new specifiers `vertical-scrollbar-visible-p' and | |
| 1239 `horizontal-scrollbar-visible-p' may be used to control scrollbar | |
| 1240 visibility. Previously, the only way to remove a scrollbar was to set | |
| 1241 its size to 0. This method is still supported for backward | |
| 1242 compatibility. | |
| 1243 | |
| 1244 *** The new specifiers `scrollbar-on-left-p' and `scrollbar-on-top-p' | |
| 1245 may be used to control the position of the vertical and horizontal | |
| 1246 toolbar. Previously, their position could be changed only through the | |
| 1247 use of X resources. | |
| 1248 | |
| 1249 *** The new draggable vertical dividers between windows may be turned | |
| 1250 off using the `vertical-divider-always-visible-p' specifier. When | |
| 1251 this is set to nil, the vertical dividers between windows are shown | |
| 1252 only when needed, and they are not draggable. | |
| 1253 | |
| 1254 Other properties of the vertical dividers may be controlled using | |
| 1255 `vertical-divider-shadow-thickness', `vertical-divider-line-width' and | |
| 1256 `vertical-divider-spacing' specifiers, which see. | |
| 1257 | |
| 1258 ** Frame focus management changes. | |
| 1259 | |
| 1260 *** When the variable focus-follows-mouse is non-nil, `select-frame' | |
| 1261 no longer permanently selects a different frame. The frame selection | |
| 1262 is temporary and is reverted when the current command terminates, much | |
| 1263 like the buffer selected by `set-buffer'. This is the same as in FSF | |
| 1264 Emacs. | |
| 1265 | |
| 1266 *** The new function `focus-frame' sets the window system focus to | |
| 1267 FRAME (and selects it), regardless of the value of | |
| 1268 `focus-follows-mouse'. Doing this is not well behaved, so be | |
| 1269 absolutely sure that you want this. | |
| 1270 | |
| 1271 The code that uses `select-frame' only to get the window manager focus | |
| 1272 should be changed to use `set-frame-focus' instead, so that they keep | |
| 1273 working when `focus-follows-mouse' is non-nil. | |
| 1274 | |
| 1275 *** The special forms `save-selected-frame' and `with-selected-frame' | |
| 1276 can now be used to temporarily change selected frame. | |
| 1277 | |
| 1278 *** The behavior of `other-frame' command (`C-x 5 o') is unaffected by | |
| 1279 these changes. | |
| 1280 | |
| 1281 ** The function `select-window' now has an optional second argument | |
| 1282 NORECORD which if non-nil inhibits the recording of a buffer change. | |
| 1283 | |
| 1284 ** The function `vertical-motion' now correctly handles the second, | |
| 1285 optional WINDOW argument. A new third argument PIXELS, if non-nil, | |
| 1286 indicates that the returned motion should be in pixels. | |
| 1287 | |
| 1288 ** The new function `vertical-motion-pixels' is similar to | |
| 1289 vertical-motion but takes as input a vertical motion in pixels. | |
| 1290 | |
| 1291 ** The new functions window-text-area-pixel-{width,height,edges} can | |
| 1292 be used to obtain information about the text-displaying area of a | |
| 1293 window. | |
| 1294 | |
| 1295 ** The new functions `shrink-window-pixels' and `enlarge-window-pixels' | |
| 1296 can be used to adjust the size of a window by a pixel amount. | |
| 1297 | |
| 1298 ** The new function `window-displayed-text-pixel-height' can be used | |
| 1299 to determine the height of the text actually displayed in a window. | |
| 1300 | |
| 1301 ** The arithmetic comparison functions <, >, =, /= now accept a | |
| 1302 variable number of arguments. | |
| 1303 | |
| 1304 This means that if you want to test whether A < B < C, you can write | |
| 1305 it as (< A B C) instead of (and (< A B) (< B C)). Likewise, | |
| 1306 (apply #'> LIST) now tests if LIST is monotonously increasing -- and | |
| 1307 so on. | |
| 1308 | |
| 1309 ** The XEmacs hashtables now have a consistent read/print syntax. | |
| 1310 This means that a hashtable will be readably printed in a | |
| 1311 structure-like form: | |
| 1312 | |
| 1313 #s(hashtable size 2 data (key1 value1 key2 value2)) | |
| 1314 | |
| 1315 When XEmacs reads this form, it will create a new hashtable according | |
| 1316 to description. This allows you to easily dump hashtables to files | |
| 1317 using `prin1', and read them back in using `read'. | |
| 1318 | |
| 1319 If `print-readably' is non-nil, a more relaxed syntax is used; for | |
| 1320 instance: | |
| 1321 | |
| 1322 #<hashtable size 2/13 data (key1 value1 key2 value2) 0x874d> | |
| 1323 | |
| 1324 ** It is now possible to build XEmacs with LDAP support. | |
| 1325 You will need to install a LDAP library first. The following have | |
| 1326 been tested: | |
| 1327 - LDAP 3.3 from the University of Michigan | |
| 1328 (get it from <URL:http://www.umich.edu/~dirsvcs/ldap/>) | |
| 1329 - OpenLDAP 1.0.3 from the OpenLDAP Foundation | |
| 1330 (get it from <URL:http://www.openldap.org/>) | |
| 1331 - LDAP SDK 1.0 from Netscape Corp. | |
| 1332 (get it from <URL:http://developer.netscape.com/>) | |
| 1333 | |
| 1334 ** When profiling is in effect, a call-count of all recorded functions | |
| 1335 is now calculated. This information is stored in | |
| 1336 `call-count-profile-table', and is utilized by `profile-results' as | |
| 1337 well as the new command `profile-call-count-results'. | |
| 1338 | |
| 1339 ** It is now an error to change the value of a symbol whose name | |
| 1340 starts with a colon, if it is interned in the standard obarray. | |
| 1341 | |
| 1342 However, setting such a symbol to its proper value, which is that | |
| 1343 symbol itself, is not an error. This is for the sake of programs that | |
| 1344 support pre-19.12 XEmacs and pre-20 GNU Emacs by explicitly setting | |
| 1345 these variables to themselves. | |
| 1346 | |
| 1347 ** The `concat' function no longer accepts integer arguments. | |
| 1348 | |
| 1349 ** The new function `string' concatenates all its argument characters | |
| 1350 and returns the resulting string. This is consistent with other | |
| 1351 functions, like `list', `vector', etc. | |
| 1352 | |
| 1353 ** The function `temp-directory' is now available to return the | |
| 1354 directory to store temporary files. On Unix this will be obtained | |
| 1355 from TMPDIR, defaulting to `/tmp'. | |
| 1356 | |
| 1357 ** The function load-average now accepts an optional argument | |
| 1358 USE-FLOATS. If it is non-nil, the load average values are returned as | |
| 1359 floating point numbers, rather than as integers to be divided by 100. | |
| 1360 | |
| 1361 ** The `make-event' function now supports the TYPE and PLIST | |
| 1362 arguments, which can be used to create various events from Lisp. See | |
| 1363 the documentation for details. | |
| 1364 | |
| 1365 ** `function-interactive' is a new function that returns the | |
| 1366 interactive specification of a funcallable object. | |
| 1367 | |
| 1368 ** The new `lmessage' function allows printing of a formatted message | |
| 1369 with a particular label. | |
| 1370 | |
| 1371 (lmessage 'progress "Processing... %d" counter) | |
| 1372 | |
| 1373 This function is more convenient than `display-message' because it | |
| 1374 automatically applies `format' to its arguments. | |
| 1375 | |
| 1376 ** The new `lwarn' function, analogous to `lmessage', allows printing | |
| 1377 a formatted warning, with a non-default CLASS or LABEL. | |
| 1378 | |
| 1379 ** The new function `split-path' can now be used to explode the | |
| 1380 components of a colon-separated search path into a list. | |
| 1381 | |
| 1382 (split-path "foo:bar") | |
| 1383 => ("foo" "bar") | |
| 1384 | |
| 1385 ** Specifiers and symbols whose value is a specifier are now allowed | |
| 1386 as modeline specifications. | |
| 1387 | |
| 1388 ** defcustom now accepts the keyword `:version'. Use this to specify | |
| 1389 in which version of Emacs a certain variable's default value changed. | |
| 1390 For example, | |
| 1391 | |
| 1392 (defcustom foo-max 34 "*Maximum number of foo's allowed." | |
| 1393 :type 'integer | |
| 1394 :group 'foo | |
| 1395 :version "21.0") | |
| 1396 | |
| 1397 This information is used to control the customize-changed-options | |
| 1398 command. | |
| 1399 | |
| 1400 ** The line number tracking in modeline is now efficient, even for | |
| 1401 very large buffers. This is achieved by caching the line numbers of | |
| 1402 recent buffer positions, and reusing them. This cache is used only in | |
| 1403 the buffers where `line-number-mode' is in effect. | |
| 1404 | |
| 1405 ** When the new GNU Malloc aka Doug Lea Malloc is available, it will | |
| 1406 be used. This should result in better performance on Linux systems | |
| 1407 with libc6. | |
| 1408 | |
| 1409 ** The code XEmacs uses to assemble its various paths into the | |
| 1410 directory hierarchy has been rewritten to support the package system. | |
| 1411 Look under "Startup Paths" in the Info documentation for more | |
| 1412 information. | |
| 1413 | |
| 1414 *** site-lisp is no longer part of the load-path by default. | |
| 1415 Its use is deprecated, but you can specify --with-site-lisp=yes at the | |
| 1416 configure command line to get it back. | |
| 1417 | |
| 1418 *** `Info-default-directory-list' is now obsolete. If you want to | |
| 1419 change the path which XEmacs uses to search for info files, set | |
| 1420 `Info-directory-list' instead. | |
| 464 | 1421 |
| 1422 | |
| 1423 * For older news, see the file ONEWS. |
