Mercurial > hg > xemacs-beta
annotate etc/NEWS @ 5940:c608d4b0b75e cygwin64 tip
rescue lost branch from 64bit.backup
author | Henry Thompson <ht@markup.co.uk> |
---|---|
date | Thu, 16 Dec 2021 18:48:58 +0000 |
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. |