update.
[chise/xemacs-chise.git.1] / etc / NEWS
index 9289e88..d702208 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3,9 +3,12 @@
 * Introduction
 ==============
 
-This file presents some general information about XEmacs.  It is
-primarily about the changes in recent XEmacs versions and its release
-history.
+This file presents the changes in recent XEmacs versions.  It
+primarily documents user-visible (interface) changes, but also
+includes internal changes of possible interest to the users.  When
+describing new features, we try to also document ways of reverting to
+the old behavior, where applicable.  If you dislike a recent change in
+how XEmacs behaves, this file might contain a remedy.
 
 Use `C-c C-f' to move to the next equal level of outline, and
 `C-c C-b' to move to previous equal level.  `C-h m' will give more
@@ -17,39 +20,400 @@ in each release should look at the appropriate section of this file.
 Starting with version 20.0, XEmacs includes ChangeLogs, which can be
 consulted for a more detailed list of changes.
 
-Users interested in some of the details of how XEmacs differs from GNU
-Emacs should read the section "What's Different?" near the end of this
-file.
-
     N.B.  The term "GNU Emacs" refers to any release of Emacs Version
     19 from the Free Software Foundation's GNU Project.  (We do not
     say just "Emacs" as Richard M. Stallman ["RMS"] prefers, because
     it is clearly a more generic term.)  The term "XEmacs" refers to
-    this program or to its predecessors "Era" and "Lucid Emacs".  The
-    predecessor of all these program is called "Emacs 18".  When no
-    particular version is implied, "Emacs" will be used.
+    this program or sometimes to its predecessors "Era" and "Lucid
+    Emacs".  The predecessor of all these program is called "Emacs
+    18".  When no particular version is implied, "Emacs" will be used.
 
 \f
-* Changes in XEmacs 21.2
+* Changes in XEmacs 21.4
 ========================
 
-** `delete-key-deletes-forward' now defaults to t.
-
-`delete-key-deletes-forward' is the variable that regulates the
-behaviour of the delete key on the systems that offer both a backspace
-and a delete key.  If set to nil, the key labeled "Delete" will delete
-backward.  If set to non-nil, the "Delete" key will delete forward,
-except on keyboards where a "Backspace" key is not provided.
+** Summary of user-visible changes:
+  -- Motif is now deprecated on linux and cygwin.
+  -- On UNIX and linux, '--with-widgets=no' is now the default.  If
+     you want buffer tabs or the progress bar, you must run configure
+     with the option '--with-widgets=lucid' or a different toolkit.
+  -- PUI related changes (Package User Interface)
+    - A minor rearrangement of the "Tools -> Packages" menu.
+    - Only a single package download site can be selected.
+    - Managing packages via the `customize' interface is no longer
+      supported. 
+    - Non-Mule XEmacsen can not install Mule packages.
+    - The "mule-base" package is not needed to "bootstrap" PUI for
+      Mule enabled XEmacsen.
+    - The default for PGP verifying the package-index file is "off" in
+      21.4.
+    - The default package-index filename has changed to
+      `package-index.LATEST.gpg'.
+    - The location of the local index file is customisable.  See
+      `package-get-package-index-file-location'. 
+    - `pui-add-install-directory' has been obsoleted and replaced by
+      `pui-set-local-package-get-directory'.  
+  -- The delete key now deletes forward by default.
+  -- Shifted motion keys now select text by default.
+  -- You can now build XEmacs with support for GTK+ widget set.
+  -- ~/.xemacs/init.el is now the preferred location for the init file.
+    - XEmacs now supports a `~/.xemacs/init.el' startup file.
+    - Custom file will move to ~/.xemacs/custom.el.
+  -- Much-improved sample init.el, showing how to use many useful features.
+  -- XEmacs support for menu accelerators has been much improved.
+  -- Default menubar improvements.
+    - Default menubar has many new commands and better organization.
+    - The font-menu is now available under MS Windows.
+  -- Dialog box improvements, including a real file dialog box.
+    - XEmacs now has a proper file dialog box under MS Windows (and GTK)!
+    - The old clunky file dialog box is improved.
+    - Keyboard traversal now works correctly in MS Windows dialog boxes.
+    - There is a Search dialog box available from Edit->Find...
+  -- New buffer tabs.
+  -- There is a new MS Windows installer, netinstall, ported from Cygwin.
+  -- The subprocess quote-handling mechanism under Windows is much improved.
+  -- Printing support now available under MS Windows.
+  -- Selection improvements.
+    - Kill and yank now interact with the clipboard under Windows.
+    - MS Windows support for selection is now much more robust.
+    - Motif selection support is now more correct (but slower).
+  -- Mail spool locking now works correctly.
+  -- International support changes.
+    - The default coding-priority-list is now safer.
+    - International keysyms are now supported under X.
+    - MS Windows 1251 code page now supported.
+    - Czech, Thai, Cyrillic-KOI8, Vietnamese, Ethiopic now supported.
+    - Proper support for words in Latin 3 and Latin 4.
+  -- Help buffers contain hyperlinks, and other changes.
+  -- The modeline's text is now scrollable.
+  -- The mouse wheel under MS Windows now functions correctly.
+  -- Interactive searching and matching case improvements.
+    - Incremental search will now highlight all visible matches.
+    - Interactive searches always respect uppercase characters.
+  -- Rectangle functions rewritten to avoid inserting extra spaces.
+  -- New command `kill-entire-line' that always kills the entire line.
+  -- Default values correctly stored in minibuffer histories.
+  -- You can now create "indirect buffers", like in GNU Emacs.
+  -- Pixel-based scrolling has been implemented.
+  -- Operation progress can be displayed using graphical widgets.
+  -- User names following a tilde can now be completed at file name prompts.
+  -- XEmacs can now play sound using Enlightenment Sound Daemon (ESD).
+  -- X-Face support is now available under MS Windows.
+  -- The PostgreSQL Relational Database Management System is now supported.
+  -- Indentation no longer indents comments that begin at column zero.
+  -- Face and variable settings can have comments in Customize.
+  -- New locations for early package hierarchies.
+  -- The `auto-save' library has been greatly improved.
+  -- New variable `mswindows-alt-by-itself-activates-menu'.
+  -- Other init-file-related changes.
+    - Init file in your home directory may be called `.emacs.el'.
+    - New command-line switches -user-init-file and -user-init-directory.
+  -- Etags changes.
+    - In DOS, etags looks for file.cgz if it cannot find file.c.
+    - New option --ignore-case-regex is an alternative to --regex.
+    - New option --declarations, for C-type languages.
+    - In C++, tags are created for "operator".
+    - Ada now supported.
+    - In Fortran, procedure is no longer tagged.
+    - In Java, tags are created for "interface".
+    - In Lisp, def-type constructs are now tagged.
+    - In Perl, the --globals option tags global variables.
+    - Python now supported.
+    - New file extensions recognized: .ss, .pdb, .psw.
+  -- Fixed ldap libraries configuration.
+  -- Fixed `LDAP_OPT_ON' libraries configuration.
+
+** The delete key now deletes forward by default.
+
+This is regulated by the variable `delete-key-deletes-forward', which
+now defaults to t.  `delete-key-deletes-forward' takes effect only on
+the systems that offer both a backspace and a delete key.  If set to
+nil, the key labeled "Delete" will always delete backward.  If set to
+non-nil, the "Delete" key will delete forward, except on keyboards
+where a "Backspace" key is not provided (e.g. old DEC keyboards).
 
 Unless our implementation has bugs, the only reason why you would want
 to set `delete-key-deletes-forward' to nil is if you want to use the
 Delete key to delete backwards, despite the presence (according to
 Xlib) of a BackSpace key on the keyboard.
 
+** Shifted motion keys now select text by default.
+
+You can turn this off by setting `shifted-motion-keys-select-region'
+to nil.  This works based off of particular keys, not particular
+commands: Thus, the arrow keys will normally trigger selection when
+the Shift key is held down regardless of their bindings, and non-arrow
+keys with the same bindings (e.g. C-f) will not work this way.  You
+can control which keys trigger shifted motion using
+`motion-keys-for-shifted-motion'.  See also
+`unshifted-motion-keys-deselect-region'.
+
+** You can now build XEmacs with support for GTK+ widget set.
+
+XEmacs built that way uses GTK+ to draw menubars, scrollbars, and
+other GUI components, as well GDK for drawing text, choosing fonts,
+allocating colors, etc.  Additionally, GTK-XEmacs supports Lisp
+functions for writing your own GTK programs in Emacs Lisp!
+
+To use this, build XEmacs with the `--with-gtk' configure flag.  (Of
+course, you'll need to have the GTK+ libraries and header files on the
+system.)  Gnome widgets and functionality are supported where
+available, and can be turned off.
+
+** ~/.xemacs/init.el is now the preferred location for the init file.
+
+*** XEmacs now supports a `~/.xemacs/init.el' startup file.
+If it exists, XEmacs will prefer it over `.emacs' and `.emacs.el'.
+The file may be byte-compiled as `~/.xemacs/init.elc'.
+
+If present, the `~/.xemacs/' directory may contain startup files for
+XEmacs packages that support it.
+
+The first time you start up XEmacs, it will ask you if you would like
+to migrate your `.emacs' to the new location. (Your custom settings
+will also be moved, to `~/.xemacs/custom.el' -- see below.) If so, you
+will also be asked whether you would like to create a compatibility
+`.emacs' for backward compatibility with previous versions of XEmacs
+and with GNU Emacs. (This compatibility `.emacs' simply loads the new
+init and custom files.) Doing this is generally a good idea -- new
+versions of XEmacs will prefer `~/.xemacs/init.el' over `~/.emacs' in
+any case.
+
+You can manually migrate at any time with `migrate-user-init-file',
+and undo any migration with `unmigrate-user-init-file'.  The function
+`create-compatibility-dot-emacs' also lets you manually create a
+compatibility `.emacs'.
+
+NOTE: Under MS Windows, your home directory (i.e. the directory named
+`~') is specified by the HOME environment variable, and defaults to
+C:\.  To set this variable, modify AUTOEXEC.BAT under Windows 95/98,
+or select Control Panel->System->Advanced->Environment Variables...
+under Windows NT/2000.
+
+*** Custom file will move to ~/.xemacs/custom.el.
+
+Whereas customize settings were formerly stored in the regular init
+file, XEmacs now prefers them to be in a separate file
+`~/.xemacs/custom.el', completely under automatic control.  This
+change goes with the migration of the init file, and XEmacs offers
+automatic migration upon startup.
+
+** Much-improved sample init.el, showing how to use many useful features.
+
+The sample init file, located in the `etc/' directory of the XEmacs
+installation, has been renamed from `sample.emacs' to `sample.init.el',
+and pretty much rewritten from scratch. (You can view it by selecting
+the menu item Help->Samples->Sample init.el.)  Many of the most-useful
+optional features in XEmacs have been enabled, and other features that
+are useful but may be annoying to some are present but commented out.
+There is also extensive documentation on how to add your own
+improvements to the init file and where to find more documentation
+elsewhere in XEmacs.  The file has been specifically designed so that
+most people can simply make it their own init file by copying it to
+~/.xemacs/init.el, and they will be satisfied with the results.
+
+** XEmacs support for menu accelerators has been much improved.
+
+It now works properly under MS Windows, for example.  To enable
+accelerators, set `menu-accelerator-enabled' to `menu-force'.  Menus
+now have accelerators by default, currently on the first letter of the
+menu item unless another letter was indicated as the accelerator using
+%_ in the menu string.  These %_ specifications are automatically
+removed when displaying the menu item, and are handled correctly in
+functions such as `normalize-menu-item-name'.  Some auto-generated
+menus will have accelerators added dynamically, using numbers 1-9 and
+letters; to add this feature yourself, use the Lisp command
+`submenu-generate-accelerator-spec' in a menu filter.  The feature
+`menu-accelerator-support' has been added so that packages can check
+whether this support exists.
+
+** Default menubar improvements.
+
+*** Default menubar has many new commands and better organization.
+
+The default menubar has been extensively reorganized.  Many more
+commands are available, and they are more logically organized.  The
+Options menu, in particular, has been significantly expanded, and almost
+everything on the new Cmds menu is new. (Much of the useful
+functionality from the `big-menubar' package has been imported.)
+
+*** The font-menu is now available under MS Windows.
+
+** Dialog box improvements, including a real file dialog box.
+
+*** XEmacs now has a proper file dialog box under MS Windows (and GTK)!
+This will appear whenever you select a menu item that requires a file
+as an argument.
+
+*** The old clunky file dialog box is improved.
+The in-buffer file dialog box (visible on non-MS-Windows, non-GTK
+systems) is still clunky but has had many improvements to make it work
+significantly better.
+
+*** Keyboard traversal now works correctly in MS Windows dialog boxes.
+
+*** There is a Search dialog box available from Edit->Find...
+However, it's very experimental and needs a lot of work.
+
+** New buffer tabs.
+
+You can now use buffer tabs to switch between buffers.
+
+The tabs are located between the toolbar and the uppermost window, in
+a location called the "gutter".  If you dislike the buffer tabs, you can
+disable them using the menu item `Options->Display->Buffers Tab Visible'
+by customizing `gutter-buffers-tab-visible-p', or by placing this in
+your .xemacs/init.el:
+
+   (custom-set-variables '(gutter-buffers-tab-visible-p nil))
+
+You can change the location of the gutter using the menu item
+`Options->Display->Default Gutter Location' or with (e.g.)
+
+   (custom-set-variables '(default-gutter-position 'left))
+
+However, currently only MS Windows supports tab widgets with
+orientations other than vertical, and it doesn't currently support
+gutters on the bottom of the frame.
+
+** There is a new MS Windows installer, netinstall, ported from Cygwin.
+
+Nearly complete automation of the XEmacs install process from
+ftp.xemacs.org.  Includes selection of Lisp packages to install, etc.
+
+** The subprocess quote-handling mechanism under Windows is much improved.
+
+Specifically, the quote-handling mechanism has been completely rewritten,
+and you should now be able to use single or double quotes to quote arguments
+just like under Unix, and expect to get correct results regardless of the
+shell you are using (e.g. CMD.EXE, bash from Cygwin, etc.).  For example,
+the following command:
+
+M-x grep '<<<<<<<' *.c
+
+should work as intended.
+
+** Printing support now available under MS Windows.
+
+The File->Print... menu item pretty-prints using the standard MS
+Windows printing facilities.  Unfortunately it's still rather
+experimental.  There is a separate `msprinter' device tag for MS
+Windows printers, and so you can control the way that faces appear on
+the printer by using this tag to specify device-specific face
+settings.
+
+** Selection improvements.
+
+*** Kill and yank now interact with the clipboard under Windows.
+
+This was done by changing the default value of `interprogram-cut-function'
+and `interprogram-paste-function'.  You can get the old behavior by
+setting these to nil, and there is an option on the options menu to do
+this.
+
+*** MS Windows support for selection is now much more robust.
+
+Generally selection should now do what you would expect under
+MS Windows: the middle mouse button will paste your current selection
+or the clipboard; conversions from different types of selection to the
+clipboard can be made; the kill-ring and friends will be updated as
+per X.
+
+The only thing selection doesn't do is set the clipboard automatically
+as this would break the MS Windows model.  If you want this behavior
+then set `selection-sets-clipboard' to t.
+
+*** Motif selection support is now more correct (but slower).
+
+Changes have been made to allow correct operation of cut/copy/paste
+operations between native widgets and XEmacs buffers.  However, this
+can lead to a lot of X traffic which slows down the performance of
+`C-k'. If you want the old behaviour then set
+`x-selection-strict-motif-ownership' to nil.
+
+** Mail spool locking now works correctly.
+
+XEmacs has always come with a little auxiliary program, movemail,
+which moves mail out of the system's spool area into user storage.  To
+coordinate between XEmacs, the mail delivery agent, and other mail
+user agents, movemail needs to properly lock the spool file before
+moving it.  Movemail now correctly respects the --mail-locking option
+to configure.  Moreover, movemail's locking behavior can be specified
+at run-time, via a new command-line option -m to movemail, or through
+the environment variable EMACSLOCKMETHOD.
+
+When installing XEmacs, make sure you configure it according to your
+environment's mail spool locking conventions.  When you're using a
+binary kit, set the `mail-lock-method' variable at startup, or the
+EMACSLOCKMETHOD environment variable.
+
+** International support changes.
+
+*** The default coding-priority-list is now safer.
+
+This means that if you have no language environment set, Mule no
+longer automatically recognizes ISO 2022 escapes in your files.  This
+makes editing binary files safe.
+
+*** International keysyms are now supported under X.
+
+This means that XEmacs running under Mule will automatically recognize
+the keysym `scaron' to be the lower-case `s' with caron in the Latin 2
+character set.  (Specifically, it will bind the keysym to
+`self-insert' and augment its `ascii-character' property.)  This is
+very useful with XFree under European locales as shipped by recent
+Linux distributions.  If XEmacs is compiled without Mule support, the
+feature still works, but it is unaware of different character sets --
+it unconditionally sets the `ascii-character' property to values in
+the [160, 256) range.
+
+*** MS Windows 1251 code page now supported.
+
+It's available as coding system `windows-1251'.
+
+*** Czech, Thai, Cyrillic-KOI8, Vietnamese, Ethiopic now supported.
+
+*** Proper support for words in Latin 3 and Latin 4.
+
+The appropriate characters in Latin 3 and Latin 4 character sets are
+correctly defined as words.
+
+** Help buffers contain hyperlinks, and other changes.
+
+The help buffers created by C-h commands now contain hyperlinks to
+other commands, functions and variables mentioned in the documentation.
+Use button2 to follow a link.  Use button3 to bring up a context menu
+that lets you follow the link, find the source for the item, do a tag
+search, etc.  The buffers are also syntax-highlighted.
+
+Help functions (e.g. `C-h f') now know how to print macro argument
+lists.  If your macro definition included an argument list for the sake
+of help output, you no longer need to do that.
+
+** The modeline's text is now scrollable.
+
+This is controlled by the variable `modeline-scrolling-method', which
+you need to set to a non-nil value.  You can also choose scrolling
+types; see the docstring of `modeline-scrolling-method' for more
+information.
+
+** The mouse wheel under MS Windows now functions correctly.
+
+It scrolls the XEmacs window under the pointer, not the selected
+window.
+
 ** Interactive searching and matching case improvements.
 
-Case sensitiveness in searching operations is normally controlled by
-the variable `case-fold-search' (if non-nil, case is ignored while
+*** Incremental search will now highlight all visible matches.
+
+This makes it easier to anticipate where consecutive C-s or C-r will
+place the point.  If you want to disable the feature, set
+`isearch-highlight-all-matches' to nil.
+
+*** Interactive searches always respect uppercase characters.
+
+Case sensitiveness in searching operations is normally controlled
+by the variable `case-fold-search' (if non-nil, case is ignored while
 searching).  This mechanism has now been slightly improved for
 interactive searches: if the search string (or regexp) contains
 uppercase characters, the searching is forced to be case-sensitive,
@@ -59,7 +423,9 @@ The new behavior affects all functions performing interactive
 searches, like `zap-to-char', `list-matching-lines', `tags-search'
 etc.  The incremental search facility has always behaved that way.
 
-** The rectangle functions have been almost completely rewritten in
+** Rectangle functions rewritten to avoid inserting extra spaces.
+
+The rectangle functions have been almost completely rewritten in
 order to avoid inserting undesirable spaces, notably at the end of
 lines.  Two typical examples of the old behavior were
 `string-rectangle', which filled all lines up to the right side of the
@@ -68,31 +434,39 @@ the left side.  All functions have been rewritten to avoid inserting
 unwanted spaces, and an optional prefix now allows them to behave the
 old way.
 
+Also, the behavior of `string-rectangle' is now compliant with
+`pending-delete-mode': if this mode is active, then the string
+replaces the region rectangle.  Otherwise, the command does not delete
+or overwrite any existing text.  For those who want that feature but do
+not use pending-delete-mode, a new function, `replace-rectangle', is
+available.
+
 As a side effect, the FORCE argument to `move-to-column' now
 understands the special value `coerce', which means that the line
 should not be filled if it is too short to reach the desired column.
 
-** Incremental search will now highlight all visible matches, making
-it easier to anticipate where consecutive C-s or C-r will place the
-point.  If you want to disable the feature, set
-`isearch-highlight-all-matches' to nil.
+** New command `kill-entire-line' that always kills the entire line.
 
-** You can now customize and save comments for faces and variables.
-In Custom buffers, a new menu entry allows you to add and edit a
-comment.  Comments for variables can also be assigned by calling
-`customize-set-(value|variable)' with a prefix argument.
+This kills the entire line at point, regardless of whether the point
+is at the beginning of line, and regardless of the setting of
+`kill-whole-line'.
 
-** XEmacs now locates the early package hierarchies at
-~/.xemacs/mule-packages/ and ~/.xemacs/xemacs-packages/.  Previously,
-the early packages were located in ~/.xemacs/.
+** Default values correctly stored in minibuffer histories.
+
+When you press RET at a minibuffer prompt that provides a default
+value, the value is stored in history instead of an empty line.  Also,
+you can now edit the default value by pressing the down arrow,
+accessing the logical "future" value.  Not all minibuffer prompts have
+yet been converted to support this feature.
+
+** You can now create "indirect buffers", like in GNU Emacs.
 
-** You can now create "indirect buffers", like in GNU Emacs.  An
-indirect buffer shares its text with another buffer ("base buffer"),
-but has its own major mode, local variables, extents, and narrowing.
-An indirect buffer has a name of its own, distinct from those of the
-base buffer and all other buffers.  An indirect buffer cannot itself
-be visiting a file (though its base buffer can be).  The base buffer
-cannot itself be indirect.
+An indirect buffer shares its text with another buffer ("base
+buffer"), but has its own major mode, local variables, extents, and
+narrowing.  An indirect buffer has a name of its own, distinct from
+those of the base buffer and all other buffers.  An indirect buffer
+cannot itself be visiting a file (though its base buffer can be).
+The base buffer cannot itself be indirect.
 
 Use (make-indirect-buffer BASE-BUFFER NAME) to make an indirect buffer
 named NAME whose base is BASE-BUFFER.  If BASE-BUFFER is itself an
@@ -107,10 +481,20 @@ nil, if given an ordinary (non-indirect) buffer.  The function
 `buffer-indirect-children' returns a list of the indirect children of
 a base buffer.
 
-** User names following the tilde character can now be completed at
-file name prompts; e.g. `C-x C-f ~hni<TAB>' will complete to
-`~hniksic/'.  To make this operation faster, a cache of user names is
-maintained internally.
+** Pixel-based scrolling has been implemented.
+By default this will attempt to scroll in increments equal to the
+height of the default face.  Set `window-pixel-scroll-increment' to
+modify this behavior.
+
+** Operation progress can be displayed using graphical widgets.
+See `progress-feedback' for details.  This support has been switched
+on by default for font-lock and some web browsing functions.  If you
+do not like this behavior, set `progress-feedback-use-echo-area' to
+nil.
+
+** User names following a tilde can now be completed at file name prompts.
+e.g. `C-x C-f ~hni<TAB>' will complete to `~hniksic/'.  To make this
+operation faster, a cache of user names is maintained internally.
 
 The new primitives available for this purpose are functions named
 `user-name-completion' and `user-name-all-completions'.
@@ -118,92 +502,150 @@ The new primitives available for this purpose are functions named
 ** XEmacs can now play sound using Enlightenment Sound Daemon (ESD).
 It will try NAS first, then ESD, then playing native sound directly.
 
-** X-Face support is now available under MS-Windows.
-If an X-Face libary built under MS-Windows is available then XEmacs
+** X-Face support is now available under MS Windows.
+If an X-Face library built under MS Windows is available then XEmacs
 will use this at build time.
 
-** The font-menu is now available under MS-Windows.
+** The PostgreSQL Relational Database Management System is now supported.
+It is now possible to build XEmacs so that the programming interface
+to the PostgreSQL RDBMS (libpq) is available in XEmacs Lisp.
+Supported versions of PostgreSQL are 6.5.3 (earlier versions may work,
+but have not been tested) and 7.0-beta1.
 
-** MS-Windows support for selection is now much more robust.
+** Indentation no longer indents comments that begin at column zero.
+This makes it easy to deal with commented out regions of code.
 
-Generally selection should now do what you would expect under
-MS-Windows: the middle mouse button will paste your current selection
-or the clipboard; conversions from different types of selection to the
-clipboard can be made; the kill-ring and friends will be updated as
-per X.
+** Face and variable settings can have comments in Customize.
+Customize now supports adding comments about your face and variable
+settings using a new menu entry.  Comments for variables can also be
+assigned by calling `customize-set-(value|variable)' with a prefix
+argument.
 
-The only thing selection doesn't do is set the clipboard automatically
-as this would break the MS-Windows model.  If you want this behaviour
-then set `selection-sets-clipboard' to t
+** New locations for early package hierarchies.
+XEmacs now locates the early package hierarchies at
+~/.xemacs/mule-packages/ and ~/.xemacs/xemacs-packages/.  Previously,
+the early packages were located in ~/.xemacs/.
+
+** The `auto-save' library has been greatly improved.
+(This lets you group all your auto-save files into one directory, and
+is provided standardly with XEmacs.  See `etc/sample.init.el',
+available on the Help menu, for more info on how to set it up.)
+Specifically, it now works under MS Windows, and it uses a completely
+reversible encoding (basically quoted-printable), so that all
+filenames (as well as non-filename buffers) are successfully handled
+regardless of any special characters in their names.
+
+** New variable `mswindows-alt-by-itself-activates-menu'.
+If you set this variable to nil then pressing and releasing the Alt
+key under MS Windows will no longer activate the menubar.  The default
+is t.  This is not to be confused with `menu-accelerator-enabled',
+which enables the use of Alt+<Letter> accelerators to invoke the
+menus.
+
+** Other init-file-related changes.
+
+*** Init file in your home directory may be called `.emacs.el'.
+
+Like in GNU Emacs 20.4 and on, you can now name the XEmacs init file
+located in your home directory `.emacs.el'.  Formerly the name had to
+be `.emacs'.  If you use the name `.emacs.el', you can byte-compile
+the file in the usual way.
+
+If both `.emacs' and `.emacs.el' exist, the latter file is the one
+that is used.
+
+*** New command-line switches -user-init-file and -user-init-directory.
 
-** New command-line switches -user-init-file and -user-init-directory.
 These can be used to specify alternate locations for what is normally
 ~/.emacs and ~/.xemacs.
 
-Moreover, -user <user> (which used to only work in unpredictable ways)
-is now equivalent to
--user-init-file ~<user>/.emacs -user-init-directory ~<user>/.xemacs.
+Moreover, the `-user <user>' command-line option (which used to only
+work in unpredictable ways) is now equivalent to `-user-init-file
+~<user>/.xemacs/init.el -user-init-directory ~<user>/.xemacs', or
+`-user-init-file ~<user>/.emacs -user-init-directory ~<user>/.xemacs',
+whichever init file comes first.
 
 ** Etags changes.
 
 *** In DOS, etags looks for file.cgz if it cannot find file.c.
 
-*** New option --ignore-case-regex is an alternative to --regex.  It is now
-possible to bind a regexp to a language, by prepending the regexp with
-{lang}, where lang is one of the languages that `etags --help' prints out.
-This feature is useful especially for regex files, where each line contains
-a regular expression.  The manual contains details.
+*** New option --ignore-case-regex is an alternative to --regex.
+It is now possible to bind a regexp to a language, by prepending the
+regexp with {lang}, where lang is one of the languages that `etags
+--help' prints out.  This feature is useful especially for regex
+files, where each line contains a regular expression.  The manual
+contains details.
 
-*** In C and derived languages, etags creates tags for function
+*** New option --declarations, for C-type languages.
+In C and derived languages, etags creates tags for function
 declarations when given the --declarations option.
 
-*** In C++, tags are created for "operator".  The tags have the form
-"operator+", without spaces between the keyword and the operator.
+*** In C++, tags are created for "operator".
+The tags have the form "operator+", without spaces between the
+keyword and the operator.
 
-*** New language Ada: tags are functions, procedures, packages, tasks, and
-types.
+*** Ada now supported.
+Tags are functions, procedures, packages, tasks, and types.
 
-*** In Fortran, procedure is no more tagged.
+*** In Fortran, procedure is no longer tagged.
 
 *** In Java, tags are created for "interface".
 
-*** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs
-are now tagged.
+*** In Lisp, def-type constructs are now tagged.
+This includes "(defstruct (foo", "(defun (operator" and similar constructs.
 
-*** In Perl, the --globals option tags global variables.  my and local
-variables are tagged.
+*** In Perl, the --globals option tags global variables.
+my and local variables are tagged.
 
-*** New language Python: def and class at the beginning of a line are tags.
+*** Python now supported.
+def and class at the beginning of a line are tags.
 
-*** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is
+*** New file extensions recognized: .ss, .pdb, .psw.
+.ss files are Scheme files, .pdb is Postscript with C syntax, .psw is
 for PSWrap.
 
+** Fixed ldap libraries configuration.
+
+It used to fail when `-lldap' requires `-llber'.  Introduced in
+upstream `configure.in' revision 1.151.2.31 (2005/01/31 02:54:47 +0).
+
+*** Fixed `LDAP_OPT_ON' libraries configuration.
+
+The original fix of local `configure.in' revision 1.19 (2004/12/19
+21:10:02 +0) introduced lossage on another class of systems.  In some
+openldap versions `ldap_*' functions may link successfully without
+`-lber', but compiling and linking program with `LDAP_OPT_ON' may
+require `-lber'.  When configuring ldap libraries, check for such
+systems, and in a cleaner way than in upstream.
+
 \f
-* Lisp and internal changes in XEmacs 21.2
+* Lisp and internal changes in XEmacs 21.4
 ==========================================
 
 ** A new portable dumper is available.
 
 Olivier Galibert has written a portable dumper for XEmacs, based on
-initial work by Kyle Jones.  Normally, XEmacs C sources link into an
-executable called `temacs', which loads the Lisp code and "unexecs"
-into a proper `xemacs' executable.  The unexec() process is unreliable
-and makes XEmacs hard to port to new operating systems, or even to new
-releases of old systems.
-
-A portable dumper is a different approach to dumping: instead of
-dumping full-fledged executable, it only dumps out the initialized
+initial work by Kyle Jones.  To perform even the most basic editor
+functions, XEmacs requires some amount of Lisp code to be loaded.  To
+avoid repeating the expensive loading process at every startup, XEmacs
+is built in a special way.  Its C sources link into an executable
+called `temacs', which loads the bootstrap Lisp code and uses a
+special "unexec" call to dump the resulting memory image into a proper
+`xemacs' executable on disk.  The unexec() process is hard to
+implement correctly and makes XEmacs very hard to port to new
+operating systems, or even to new releases of old systems.
+
+The new portable dumper uses a different approach to dumping: instead
+of dumping full-fledged executable, it only dumps out the initialized
 data structures (both Lisp and C) into an external file.  A normally
-running XEmacs only needs to mmap() that file and relocate a bit to
-get to the initialized data.  In that scheme, there is no difference
+running XEmacs only needs to mmap that file and relocate a bit to get
+to the initialized data.  In that scheme, there is no difference
 between `temacs' and `xemacs'.
 
-This is all very experimental, though.  Configure with `--pdump' to
-try testing it.  NOTE: it is expected that `make' will fail after
-dumping `xemacs.dmp'.  This is because Makefiles have not yet been
-modified to not expect `temacs' producing an `xemacs' executable.  You
-can try it out by simply running `src/temacs'.  If it starts without
-failure, the portable dumping worked.
+The portable dumper will not be used by default in this release,
+however, if you wish to experiment with it, or if you need to compile
+XEmacs on a new and unsupported platform, you can test it by
+configuring XEmacs using the `--pdump' flag.
 
 ** Much effort has been invested to make XEmacs Lisp faster:
 
@@ -211,7 +653,7 @@ failure, the portable dumping worked.
 This is especially the case when running a Mule-enabled XEmacs.
 
 A general overhaul of the lisp engine should produce a speedup of 1.4
-in a Latin-1 XEmacs, and 2.1 in a Mule XEmacs.  These numbers were
+in a non-Mule XEmacs, and 2.1 in a Mule XEmacs.  These numbers were
 obtained running `(byte-compile "simple.el")', which should be a
 pretty typical test of "pure" Lisp.
 
@@ -224,6 +666,9 @@ makes intensive use of hash tables.
 *** The garbage collector has been tuned, leading to a speedup of
 1.16.
 
+*** The byte-compiler and the byte-optimizer have been tuned to
+produce better code in many small ways.
+
 *** The family of functions that iterate over lists, like `memq', and
 `rassq', have been made a little faster (typically 1.3).
 
@@ -248,15 +693,48 @@ are implemented as native window-system widgets.  Thus you can embed
 buttons, scrollbars, combo boxes, edit fields and progress gauges in a
 buffer.  As a side effect subwindow support now works once again.
 
-All of this is still very experimental.  This support is currently
-only available under MS-Windows.  (#### Is this true?)
+All of this is still fairly experimental and there is no
+documentation.  The current APIs might change in a future version of
+XEmacs.  Some widgets are only available under MS Windows.  See the
+file glyphs-test.el in the XEmacs src distribution for examples of
+usage.
 
-** user-init-directory is now an absolute, unexpanded path.
-Previously, `user-init-directory' used to be relative to
-(concat "~" init-file-user).  This turned out to be too complicated
-for most packages (and some core Lisp files) to use correctly.
+The buffers-tab functionality and progress gauge have been implemented
+using this feature.
 
-Also, `init-file-user' has been obsoleted in the process.
+** Case translation now supports international characters.
+
+*** Instead of being lists of 256-character strings, case tables are
+now opaque objects.  The interface to access them is almost the same,
+except it now works for international characters, and you can set the
+case pairs using `put-case-table-pair'.  `set-case-table' and friends
+still support the old list/string based interface for backward
+compatibility.
+
+*** As a consequence of this change, functions `downcase' and `upcase'
+as well as all the case-transformation commands now work with
+non-ASCII characters.  Built-in tables cover all the Latin character
+sets that we support.  If your language has a distinction between
+upper and lower case that is not handled by XEmacs/Mule, please let us
+know.
+
+*** The code that implements case-insensitive search has been modified
+to respect the case table settings.  This also applies to regexp
+search.
+
+** Syntax tables may now be specified for a part of a buffer by
+attaching the `syntax-table' property to an extent.  For compatibility
+with GNU Emacs, you may use the text-property interface to achieve the
+same result.
+
+** Values of variables `user-init-file' and `user-init-directory' are
+now absolute file/directory names.  Previously, both variables used to
+be relative to `(concat "~" init-file-user)'.  This turned out to be
+too complicated for most packages (and some core Lisp files) to use
+correctly.  Also, the `init-file-user' variable has been obsoleted in
+the process.
+
+The user-visible options like `-u' have not changed their behavior.
 
 ** XEmacs finally has an automated test suite!
 Although this is not yet very sophisticated, it is already responsible
@@ -293,6 +771,43 @@ friendlier, but actually faster than checking for C-g.
 `base64-encode-region', `base64-encode-string', `base64-decode-region'
 and `base64-decode-string'.
 
+** The functions `read-string', `read-expression', `eval-minibuffer',
+`read-variable', `read-command', `read-function', `read-number',
+`read-shell-command', `read-from-minibuffer', and `completing-read'
+now take an additional argument which specifies the default value.  If
+this argument is non-nil, it should be a string; that string is used
+in two ways:
+
+ * It is returned if the user enters empty input.
+ * It is available as the logical "future" entry, by pressing the down
+   arrow.
+
+** LDAP changes.
+
+*** The LDAP interface now consists of two layers, a low-level layer
+that closely matches the LDAP C API, and a more convenient
+higher-level set of functions.
+
+*** The low-level functions that used to be named *-internal are now
+named more simply: `ldap-open', `ldap-close', `ldap-search-basic',
+`ldap-add', and `ldap-modify'.  They should be used directly for very
+specific purposes (such as multiple operations on a connection) only.
+
+*** The higher-level functions provide a more convenient way to access
+LDAP directories hiding the subtleties of handling the connection,
+translating arguments and ensuring compliance with LDAP
+internationalization rules and formats (currently partly implemented
+only.)  This layer provides atomic operations for searches,
+modification, addition and deletion of multiple entries at once:
+`ldap-search-entries', `ldap-add-entries', `ldap-delete-entries', and
+`ldap-modify-entries'.
+
+*** To maintain compatibility with previous code, the now obsolete
+function `ldap-search' is now merely a wrapper that calls either
+`ldap-search-basic' or `ldap-search-entries'.  Please don't use the
+`ldap-search' function in your new programs -- a direct call to one of
+the two replacements is more efficient and unambiguous.
+
 ** The arguments to `locate-file' are now more Lisp-like.  As before,
 the usage is:
 
@@ -314,7 +829,7 @@ operation.
 ** `translate-region' has been improved in several ways.  Its TABLE
 argument used to be a 256-character string.  In addition to this, it
 can now also be a vector or a char-table, which makes the function
-useful for Mule, which it wasn't.  If TABLE a vector or a generic
+useful for Mule, which it wasn't.  If TABLE is a vector or a generic
 char-table, you can map characters to strings instead of to other
 characters.  For instance:
 
@@ -349,10 +864,29 @@ interned in the global obarray.  For example:
     (keywordp (intern ":foo"))       ; The same as (keywordp :foo)
       => t
 
-This behaviour is compatible with other code which treats symbols
+This behavior is compatible with other code which treats symbols
 beginning with colon as keywords only if they are interned in the
-global obarray.  `keywordp' used to wrongly return t in both cases
-above.
+global obarray.  `keywordp' used to wrongly return t in both above
+cases.
+
+** The function `replace-in-string' has been rewritten to use
+`replace-match'.  This not only makes it much faster, but adds all the
+features of `replace-match'.
+
+** New variables `this-command-properties' and
+`last-command-properties' are now available for communication between
+consecutive commands.  Commands should use these to communicate with
+the pre/post-command hooks, subsequent commands, wrapping commands,
+etc. in preference to looking at and/or setting `this-command'.
+
+** New functions `add-one-shot-hook' and `add-local-one-shot-hook' make
+it possible to add a "one-shot" hook, which is to say a hook that runs
+only once, and automatically removes itself after the first time it
+has run.
+
+** The descriptor that specifies the text of a menu item can now be an
+evaluated expression.  This makes it parallel with other descriptors,
+which can also be expressions.
 
 \f
 * Changes in XEmacs 21.0
@@ -843,3 +1377,6 @@ configure command line to get it back.
 *** `Info-default-directory-list' is now obsolete.  If you want to
 change the path which XEmacs uses to search for info files, set
 `Info-directory-list' instead.
+
+\f
+* For older news, see the file ONEWS.