* 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
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
========================
+** 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
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.)
+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.
+** 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.
-** You can now set the variable `kill-whole-line' to `always', which
-makes `kill-line' (C-k) delete the entire line always, not just when
-the cursor is at the beginning of the line. This behavior, as well as
-the existing kill-whole-line behavior, now only take effect when
-kill-line is called interactively, although this is a departure from a
-previous behavior in the case of setting this variable kill-whole-line
-to t. It is almost certainly what has always been intended, and most
-likely the old way of doing things introduced bugs.
+*** MS Windows 1251 code page now supported.
-The new function `historical-kill-line' ignores the `kill-whole-line'
-setting and always gives the historical behavior of only killing to
-the end of the line. This function is bound to Sh-C-k, so that the
-kill to end of line behavior is available, even when `kill-whole-line'
-has been customized.
+It's available as coding system `windows-1251'.
-** XEmacs menus now have accelerators by default. If a menu item does
-not have an accelerator specified, one is created dynamically, using
-numbers 1-9 and letters.
+*** 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,
searches, like `zap-to-char', `list-matching-lines', `tags-search'
etc. The incremental search facility has always behaved that way.
-** 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.
-
-** You can now use the buffer tabs to switch between buffers. The
-tabs are located between the toolbar and the uppermost window, in a
-location called "gutter". If you dislike the buffer tabs, you can
-disable them by customizing `gutter-buffers-tab-visible-p', or by
-placing this in your .emacs:
+** Rectangle functions rewritten to avoid inserting extra spaces.
- (set-gutter-element-visible-p default-gutter-visible-p 'buffers-tab nil)
-
-You can change the location of the gutter with
-`set-default-gutter-position', however currently only MS-Windows
-supports tab widgets with orientations other than vertical.
-
-** Kill and yank now interact with the clipboard by default 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.
-
-** 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.
-
-** The rectangle functions have been almost completely rewritten in
+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
understands the special value `coerce', which means that the line
should not be filled if it is too short to reach the desired column.
-** 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.
+** New command `kill-entire-line' that always kills the entire line.
-** XEmacs now locates the early package hierarchies at
-~/.xemacs/mule-packages/ and ~/.xemacs/xemacs-packages/. Previously,
-the early packages were located in ~/.xemacs/.
+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'.
-** 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.
+** 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.
+
+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
`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'.
** 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.
-
-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
+** 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.
-** 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.
+** 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/.
-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.
+** 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 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.
+** 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.
-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.
+** Other init-file-related changes.
-** Init file may be called .emacs.el.
+*** 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
-`.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.
+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 variable `mswindows-meta-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.
+*** New command-line switches -user-init-file and -user-init-directory.
-** 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 behaviour.
-
-** Operation progress can be displayed using graphical widgets.
-See `lprogress-display' for details. This support has been switched
-on by default for font-lock and some web browsing functions. If you
-do not like this behaviour set `progress-display-use-echo-area'.
+These can be used to specify alternate locations for what is normally
+~/.emacs and ~/.xemacs.
-** 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.
+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 for beta testing.
+** 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 hard to
+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.
-A portable dumper is a different approach to dumping: instead of
-dumping full-fledged executable, it only dumps out the initialized
+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.
+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:
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.
*** 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).
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
+XEmacs. Some widgets are only available under MS Windows. See the
file glyphs-test.el in the XEmacs src distribution for examples of
usage.
The buffers-tab functionality and progress gauge have been implemented
using this feature.
-** `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.
+** 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.
-The user-visible options like `-u' have not changed their behaviour.
+** 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
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 through the history command M-n.
+ * It is returned if the user enters empty input.
+ * It is available as the logical "future" entry, by pressing the down
+ arrow.
** LDAP changes.
** `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:
(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
has run.
** The descriptor that specifies the text of a menu item can now be an
-evaluated expression. This makes this descriptor parallel with
-others, which can also be expressions.
+evaluated expression. This makes it parallel with other descriptors,
+which can also be expressions.
\f
* Changes in XEmacs 21.0
*** `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.