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
 ==============
 
-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,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.
 
-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
 ========================
 
-** 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
@@ -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.
 
+** 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.
 
-** 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
@@ -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.
 
+** 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
@@ -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.
 
+** 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
@@ -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.
-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.
@@ -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.
 
+** 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
@@ -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.
 
-** 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.
 
-** 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>/.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
@@ -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.
 
+** 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.
@@ -287,7 +344,7 @@ declarations when given the --declarations option.
 *** 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".
 
@@ -303,27 +360,34 @@ variables are tagged.
 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
-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.
 
-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.
+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:
 
@@ -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
-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.
 
@@ -344,6 +408,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).
 
@@ -377,11 +444,42 @@ 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.
+** 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.
 
@@ -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:
 
-  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.
 
@@ -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
-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:
 
@@ -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
-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
@@ -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
-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
@@ -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.
+
+\f
+* For older news, see the file ONEWS.