XEmacs 21.2.47 (Zephir).
[chise/xemacs-chise.git.1] / etc / NEWS
index 268e048..c6bba49 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3,9 +3,12 @@
 * Introduction
 ==============
 
 * 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
 
 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,25 +20,18 @@ 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.
 
 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
     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
 
 \f
-* Changes in XEmacs 21.2
+* Changes in XEmacs 21.4
 ========================
 
 ========================
 
-** The modeline's text is now scrollable. Please refer to the variable
-`modeline-scrolling-method' for more information.
-
 ** The delete key now deletes forward by default.
 
 This is regulated by the variable `delete-key-deletes-forward', which
 ** The delete key now deletes forward by default.
 
 This is regulated by the variable `delete-key-deletes-forward', which
@@ -50,23 +46,38 @@ 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.
 
 Delete key to delete backwards, despite the presence (according to
 Xlib) of a BackSpace key on the keyboard.
 
+** 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.
+
 ** 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.
 
-** 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.
-
-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.
+** There is a new command `kill-entire-line' that always 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'.
+
+** The variable `kill-whole-line' now only takes 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.
+
+** The help buffers created by the plethora of C-h commands now
+contain hyperlinks.
+
+** 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.
 
 ** XEmacs menus now have accelerators by default.  If a menu item does
 not have an accelerator specified, one is created dynamically, using
 
 ** XEmacs menus now have accelerators by default.  If a menu item does
 not have an accelerator specified, one is created dynamically, using
@@ -90,6 +101,11 @@ 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.
 
 point.  If you want to disable the feature, set
 `isearch-highlight-all-matches' to nil.
 
+** The "coding systems" feature now works even in an XEmacs compiled
+without international (Mule) support.  This means that for example
+XEmacs can recognize newline convention used by the file you are
+editing.
+
 ** 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
 ** 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
@@ -114,6 +130,16 @@ 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.
 
 accessing the logical "future" value.  Not all minibuffer prompts have
 yet been converted to support this feature.
 
+** 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.
+
 ** 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
 ** 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
@@ -176,7 +202,7 @@ The new primitives available for this purpose are functions named
 It will try NAS first, then ESD, then playing native sound directly.
 
 ** X-Face support is now available under MS-Windows.
 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
+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.
 will use this at build time.
 
 ** The font-menu is now available under MS-Windows.
@@ -193,6 +219,14 @@ 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.
 
 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) in its behaviour.
+
+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
 ** 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
@@ -208,42 +242,45 @@ 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.
 
 binary kit, set the `mail-lock-method' variable at startup, or the
 EMACSLOCKMETHOD environment variable.
 
-** Init file will move to ~/.xemacs/init.el.
+** Indentation no longer indents comments that begin at column zero.
+This makes it easy to deal with commented out regions of code.
 
 
-If `~/.xemacs/init.el' exists, XEmacs will prefer it over `~/.emacs'
-as an init file.  The file may be byte-compiled as
-`~/.xemacs/init.elc'.
+** Init file changes.
 
 
-Future versions of XEmacs will stop supporting `~/.emacs' as an init
-file.  XEmacs offers automatic migration upon startup.
+*** 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'.
 
 
-** Custom file will move to ~/.xemacs/custom.el.
+If present, the `~/.xemacs/' directory may contain startup files for
+XEmacs packages that support it.
 
 
-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.
+*** Init file in your home directory may be called `.emacs.el'.
 
 
-** Init file may be called .emacs.el.
-
-For the time being, 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.
+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.
 
 
 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.
 
 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>/.xemacs/init.el
--user-init-directory ~<user>/.xemacs.  or -user-init-file
-~<user>/.emacs -user-init-directory ~<user>/.xemacs, whichever init
-file comes first.
+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.
+
+*** 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.
 
 ** New variable `mswindows-alt-by-itself-activates-menu'.
 If you set this variable to nil then pressing and releasing the Alt
 
 ** New variable `mswindows-alt-by-itself-activates-menu'.
 If you set this variable to nil then pressing and releasing the Alt
@@ -268,6 +305,26 @@ 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.
 
 Supported versions of PostgreSQL are 6.5.3 (earlier versions may work,
 but have not been tested) and 7.0-beta1.
 
+** 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.
+
+** Mule changes.
+
+*** Windows 1251 code page is now supported as coding system
+`windows-1251'.
+
+*** Czech, Thai, Cyrillic-KOI8, Vietnamese, Ethiopic support now
+available.
+
+*** The appropriate characters in Latin 3 and Latin 4 character sets
+are correctly defined as words.
+
+*** 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.
+
 ** Etags changes.
 
 *** In DOS, etags looks for file.cgz if it cannot find file.c.
 ** Etags changes.
 
 *** In DOS, etags looks for file.cgz if it cannot find file.c.
@@ -287,7 +344,7 @@ declarations when given the --declarations option.
 *** New language Ada: tags are functions, procedures, packages, tasks, and
 types.
 
 *** New language Ada: 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 Java, tags are created for "interface".
 
@@ -303,27 +360,34 @@ variables are tagged.
 for PSWrap.
 
 \f
 for PSWrap.
 
 \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.
 
 Olivier Galibert has written a portable dumper for XEmacs, based on
 ==========================================
 
 ** A new portable dumper is available for beta testing.
 
 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,
+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.
 
 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
 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'.
 
 between `temacs' and `xemacs'.
 
-This is all very experimental, though.  Configure with `--pdump' to
-try testing it.
+Unfortunately, the portable dumper has not been completely finished
+for this release, and will not be used by default.  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 with
+`--pdump' flag.
 
 ** Much effort has been invested to make XEmacs Lisp faster:
 
 
 ** Much effort has been invested to make XEmacs Lisp faster:
 
@@ -331,7 +395,7 @@ try testing it.
 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
 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.
 
 obtained running `(byte-compile "simple.el")', which should be a
 pretty typical test of "pure" Lisp.
 
@@ -344,6 +408,9 @@ makes intensive use of hash tables.
 *** The garbage collector has been tuned, leading to a speedup of
 1.16.
 
 *** 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).
 
 *** The family of functions that iterate over lists, like `memq', and
 `rassq', have been made a little faster (typically 1.3).
 
@@ -377,11 +444,42 @@ usage.
 The buffers-tab functionality and progress gauge have been implemented
 using this feature.
 
 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.
+** A new 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.
+
+** 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.
+
+** 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.
+
+** 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.
 
 
 The user-visible options like `-u' have not changed their behavior.
 
@@ -427,8 +525,9 @@ 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:
 
 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.
 
 
 ** LDAP changes.
 
@@ -477,7 +576,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
 ** `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:
 
 char-table, you can map characters to strings instead of to other
 characters.  For instance:
 
@@ -514,8 +613,12 @@ interned in the global obarray.  For example:
 
 This behavior is compatible with other code which treats symbols
 beginning with colon as keywords only if they are interned in the
 
 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
 
 ** New variables `this-command-properties' and
 `last-command-properties' are now available for communication between
@@ -529,8 +632,8 @@ 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
 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
 
 \f
 * Changes in XEmacs 21.0
@@ -1021,3 +1124,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.
 *** `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.