*** empty log message ***
[bpt/emacs.git] / etc / NEWS
index 5f0fdfe..ce10e82 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -10,9 +10,82 @@ For older news, see the file ONEWS.
 
 ** `movemail' defaults to supporting POP.  You can turn this off using
 the --without-pop configure option, should that be necessary.
+
+** There are new configure options associated with the support for
+images and toolkit scrollbars.  Use the --help option to list them.
 \f
 * Changes in Emacs 21.1
 
+** Emacs now refuses to load compiled Lisp files which weren't
+compiled with Emacs.  Set `load-dangerous-libraries' to t to change
+this behavior.
+
+The reason for this change is an incompatible change in XEmacs' byte
+compiler.  Files compiled with XEmacs can contain byte codes that let
+Emacs dump core.
+
+** New X resources recognized
+
+*** The X resource `synchronous', class `Synchronous', specifies
+whether Emacs should run in synchronous mode.  Synchronous mode
+is useful for debugging X problems.
+
+Example:
+
+  emacs.synchronous: true
+
+*** The X resource `visualClass, class `VisualClass', specifies the
+visual Emacs should use.  The resource's value should be a string of
+the form `CLASS-DEPTH', where CLASS is the name of the visual class,
+and DEPTH is the requested color depth as a decimal number.  Valid
+visual class names are
+
+  TrueColor
+  PseudoColor
+  DirectColor
+  StaticColor
+  GrayScale
+  StaticGray
+
+Visual class names specified as X resource are case-insensitive, i.e.
+`pseudocolor', `Pseudocolor' and `PseudoColor' all have the same
+meaning.
+
+The program `xdpyinfo' can be used to list the visual classes
+supported on your display, and which depths they have.  If
+`visualClass' is not specified, Emacs uses the display's default
+visual.
+
+Example:
+
+  emacs.visualClass: TrueColor-8
+
+*** The X resource `privateColormap', class `PrivateColormap',
+specifies that Emacs should use a private colormap if it is using the
+default visual, and that visual is of class PseudoColor.  Recognized
+resource values are `true' or `on'.
+
+Example:
+
+  emacs.privateColormap: true
+
+** The menu bar configuration has changed.  The new configuration is
+more CUA-compliant.  The most significant change is that Options is
+now a separate menu-bar item, with Mule and Customize as its submenus.
+
+** User-option `show-cursor-in-non-selected-windows' controls how to
+display the cursor in non-selected windows.  If nil, no cursor is
+shown, if non-nil a hollow box cursor is shown.  This option can
+be customized.
+
+** The variable `echo-keystrokes' may now have a floating point value.
+
+** C-x 5 1 runs the new command delete-other-frames which deletes
+all frames except the selected one.
+
+** If your init file is compiled (.emacs.elc), `user-init-file' is set
+to the source name (.emacs.el), if that exists, after loading it.
+
 ** The help string specified for a menu-item whose definition contains
 the property `:help HELP' is now displayed under X either in the echo
 area or with tooltips.
@@ -306,6 +379,8 @@ notably at the end of lines.
 All these functions have been rewritten to avoid inserting unwanted
 spaces, and an optional prefix now allows them to behave the old way.
 
+There is a new command M-x replace-rectangle.
+
 ** The new command M-x query-replace-regexp-eval acts like
 query-replace-regexp, but takes a Lisp expression which is evaluated
 after each match to get the replacement text.
@@ -397,8 +472,12 @@ the buffer whose process should be used from the mini-buffer.
 
 ** Changes to Rmail mode
 
-RET is now bound in the Rmail summary to rmail-summary-goto-msg, like
-`j'.
+*** RET is now bound in the Rmail summary to rmail-summary-goto-msg,
+like `j'.
+
+*** There is a new user option `rmail-digest-end-regexps' that
+specifies the regular expressions to detect the line that ends a
+digest message.
 
 ** Changes to TeX mode
 
@@ -674,6 +753,12 @@ matches are automatically cleared when you end the search.  If it is
 set to nil, you can remove the highlights manually with `M-x
 isearch-lazy-highlight-cleanup'.
 
+** Changes in sort.el
+
+The function sort-numeric-fields interprets numbers starting with `0'
+as octal and numbers starting with `0x' or `0X' as hexadecimal.  The
+new user-option sort-numberic-base can be used to specify a default
+numeric base.
 
 ** Ange-ftp allows you to specify of a port number in remote file
 names cleanly.  It is appended to the host name, separated by a hash
@@ -765,6 +850,57 @@ appropriate for C-style escape sequences in strings.
 
 ** New modes and packages
 
+*** The new command M-x re-builder offers a convenient interface for
+authoring regular expressions with immediate visual feedback.
+
+The buffer from which the command was called becomes the target for
+the regexp editor popping up in a separate window.  Matching text in
+the target buffer is immediately color marked during the editing.
+Each sub-expression of the regexp will show up in a different face so
+even complex regexps can be edited and verified on target data in a
+single step.
+
+On displays not supporting faces the matches instead blink like
+matching parens to make them stand out.  On such a setup you will
+probably also want to use the sub-expression mode when the regexp
+contains such to get feedback about their respective limits.
+
+*** glasses-mode is a minor mode that makes
+unreadableIdentifiersLikeThis readable.  It works as glasses, without
+actually modifying content of a buffer.
+
+*** The package ebnf2ps translates an EBNF to a syntactic chart in
+PostScript.
+
+Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc.
+
+The ad-hoc default EBNF syntax has the following elements:
+
+    ;          comment (until end of line)
+    A          non-terminal
+    "C"                terminal
+    ?C?                special
+    $A         default non-terminal
+    $"C"       default terminal
+    $?C?       default special
+    A = B.     production (A is the header and B the body)
+    C D                sequence (C occurs before D)
+    C | D      alternative (C or D occurs)
+    A - B      exception (A excluding B, B without any non-terminal)
+    n * A      repetition (A repeats n (integer) times)
+    (C)                group (expression C is grouped together)
+    [C]                optional (C may or not occurs)
+    C+         one or more occurrences of C
+    {C}+       one or more occurrences of C
+    {C}*       zero or more occurrences of C
+    {C}                zero or more occurrences of C
+    C / D      equivalent to: C {D C}*
+    {C || D}+  equivalent to: C {D C}*
+    {C || D}*  equivalent to: [C {D C}*]
+    {C || D}   equivalent to: [C {D C}*]
+
+Please, see ebnf2ps documentation for EBNF syntax and how to use it.
+
 *** The package align.el will align columns within a region, using M-x
 align.  Its mode-specific rules, based on regular expressions,
 determine where the columns should be split.  In C and C++, for
@@ -779,6 +915,13 @@ list-buffers or electric-buffer-list.  Use M-x bs-show to display a
 buffer menu with this package.  You can use M-x bs-customize to
 customize the package.
 
+*** calculator.el is a small calculator package that is intended to
+replace desktop calculators such as xcalc and calc.exe.  Actually, it
+is not too small - it has more features than most desktop calculators,
+and can be customized easily to get many more functions.  It should
+not be confused with "calc" which is a much bigger mathematical tool
+which answers different needs.
+
 *** The minor modes cwarn-mode and global-cwarn-mode highlights
 suspicious C and C++ constructions.  Currently, assignments inside
 expressions, semicolon following `if', `for' and `while' (except, of
@@ -885,12 +1028,23 @@ specific to Message mode.
 viewing/editing context diffs (patches).  It is selected for files
 with extension `.diff', `.diffs', `.patch' and `.rej'.
 
+*** EUDC, the Emacs Unified Directory Client, provides a common user
+interface to access directory servers using different directory
+protocols.  It has a separate manual.
+
+*** autoconf.el provides a major mode for editing configure.in files
+for Autoconf, selected automatically.
+
+*** windmove.el
+
 ** Withdrawn packages
 
 *** mldrag.el has been removed.  mouse.el provides the same
 functionality with aliases for the mldrag functions.
 
-*** eval-reg.el has been obsoleted by changes to edebug.el.
+*** eval-reg.el has been obsoleted by changes to edebug.el and removed.
+
+*** ph.el has been obsoleted by EUDC and removed.
 \f
 * Lisp changes in Emacs 21.1 (see following page for display-related features)
 
@@ -899,30 +1053,89 @@ Note that +++ before an item means the Lisp manual has been updated.
 When you add a new item, please add it without either +++ or ---
 so I will know I still need to look at it -- rms.
 
+** Emacs' reader supports CL read syntax for integers in bases
+other than 10.
+
+*** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2).
+INTEGER optionally contains a sign.
+
+  #b1111 
+    => 15
+  #b-1111 
+    => -15
+
+*** `#OINTEGER' or `#oINTEGER' reads INTEGER in octal (radix 8).
+
+  #o666 
+    => 438
+
+*** `#XINTEGER' or `#xINTEGER' reads INTEGER in hexadecimal (radix 16).
+
+  #xbeef 
+    => 48815
+
+*** `#RADIXrINTEGER' reads INTEGER in radix RADIX, 2 <= RADIX <= 36.
+
+  #2R-111 
+    => -7
+  #25rah 
+    => 267
+
+** The function documentation-property now evaluates the value of
+the given property to obtain a a string if it doesn't refer to etc/DOC
+and isn't a string.
+
++++
+** The last argument of `define-key-after' defaults to t for convenience.
+
+** The new function `replace-regexp-in-string' replaces all matches
+for a regexp in a string.
+
+** `mouse-position' now runs the abnormal hook
+`mouse-position-function'.
+
+** The function string-to-number now returns a float for numbers
+that don't fit into a Lisp integer.
+
+** The variable keyword-symbols-constants-flag has been removed.
+Keywords are now always considered constants.
+
++++
+** The new function `delete-and-extract-region' deletes text and
+returns it.
+
 ** The function `clear-this-command-keys' now also clears the vector
 returned by function `recent-keys'.
 
-** New function `keyword-p' is an efficient type predicate for keyword
-symbols.
-
-** Variables `beginning-of-defun' and `end-of-defun', can be used to
-define handlers for the functions of the same names.  Major modes can
-define these locally instead of rebinding M-C-a etc. if the normal
-definitions of the functions are not appropriate for the mode.
++++
+** Variables `beginning-of-defun-function' and `end-of-defun-function'
+can be used to define handlers for the functions that find defuns.
+Major modes can define these locally instead of rebinding M-C-a
+etc. if the normal conventions for defuns are not appropriate for the
+mode.
 
++++
 ** easy-mmode-define-minor-mode now takes an additional BODY argument
 and is renamed `define-minor-mode'.
 
-** If an abbrev has only a hook, and that hook has a non-nil
-`no-self-insert' property, the return value of the hook specifies
-whether an expansion has been done or not.  If it returns nil, no
-expansion has been performed.  The character leading to the call of
-the hook will then be self-inserted.
++++
+** If an abbrev has a hook function which is a symbol, and that symbol
+has a non-nil `no-self-insert' property, the return value of the hook
+function specifies whether an expansion has been done or not.  If it
+returns nil, abbrev-expand also returns nil, meaning "no expansion has
+been performed."
+
+When abbrev expansion is done by typing a self-inserting character,
+and the abbrev has a hook with the `no-self-insert' property, and the
+hook function returns non-nil meaning expansion has been done,
+then the self-inserting character is not inserted.
 
++++
 ** The function `intern-soft' now accepts a symbol as first argument.
 In this case, that exact symbol is looked up in the specified obarray,
 and the function's value is nil if it is not found.
 
++++
 ** The new macro `with-syntax-table' can be used to evaluate forms
 with the syntax table of the current buffer temporarily set to a
 specified table.
@@ -934,18 +1147,23 @@ TABLE.  The current syntax table is saved, BODY is evaluated, and the
 saved table is restored, even in case of an abnormal exit.  Value is
 what BODY returns.
 
-** Regular expressions now support Perl's non-greedy *? +? and ??
-operators.
++++
+** Regular expressions now support intervals \{n,m\} as well as
+Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators.
 
++++
 ** The optional argument BUFFER of function file-local-copy has been
 removed since it wasn't used by anything.
 
++++
 ** The file name argument of function `file-locked-p' is now required
 instead of being optional.
 
++++
 ** The new built-in error `text-read-only' is signaled when trying to
 modify read-only text.
 
++++
 ** New functions and variables for locales.
 
 The new variable `locale-coding-system' specifies how to encode and
@@ -962,14 +1180,17 @@ not be invoked thereafter.  It uses the new variables
 `locale-language-names', `locale-charset-language-names', and
 `locale-preferred-coding-systems' to make its decisions.
 
++++
 ** syntax tables now understand nested comments.
 To declare a comment syntax as allowing nesting, just add an `n'
 modifier to either of the characters of the comment end and the comment
 start sequences.
 
++++
 ** The function `pixmap-spec-p' has been renamed `bitmap-spec-p'
 because `bitmap' is more in line with the usual X terminology.
 
++++
 ** New function `propertize'
 
 The new function `propertize' can be used to conveniently construct
@@ -987,14 +1208,29 @@ specified value of that property.  Example:
 +++
 ** push and pop macros.
 
-A simple version of the push and pop macros of Common Lisp
-is now defined in Emacs Lisp.  These macros allow only symbols
+Simple versions of the push and pop macros of Common Lisp
+are now defined in Emacs Lisp.  These macros allow only symbols
 as the place that holds the list to be changed.
 
 (push NEWELT LISTNAME)  add NEWELT to the front of LISTNAME's value.
 (pop LISTNAME)          return first elt of LISTNAME, and remove it
                        (thus altering the value of LISTNAME).
 
+** New dolist and dotimes macros.
+
+Simple versions of the dolist and dotimes macros of Common Lisp
+are now defined in Emacs Lisp.
+
+(dolist (VAR LIST [RESULT]) BODY...)
+      Execute body once for each element of LIST,
+      using the variable VAR to hold the current element.
+      Then return the value of RESULT, or nil if RESULT is omitted.
+
+(dotimes (VAR COUNT [RESULT]) BODY...)
+      Execute BODY with VAR bound to successive integers running from 0,
+      inclusive, to COUNT, exclusive.
+      Then return the value of RESULT, or nil if RESULT is omitted.
+
 +++
 ** Regular expressions now support Posix character classes such
 as [:alpha:], [:space:] and so on.
@@ -1699,6 +1935,18 @@ modify their color-related behavior.
 The primitives `color-gray-p' and `color-supported-p' also work for
 any frame type.
 
+** Platform-independent functions to describe display capabilities.
+
+The new functions `display-mouse-p', `display-popup-menus-p',
+`display-graphic-p', `display-selections-p', `display-screens',
+`display-pixel-width', `display-pixel-height', `display-mm-width',
+`display-mm-height', `display-backing-store', `display-save-under',
+`display-planes', `display-color-cells', `display-visual-class', and
+`display-grayscale-p' describe the basic capabilities of a particular
+display.  Lisp programs should call these functions instead of testing
+the value of the variables `window-system' or `system-type', or calling
+platform-specific functions such as `x-display-pixel-width'.
+
 +++
 ** The minibuffer prompt is now actually inserted in the minibuffer.
 
@@ -2476,6 +2724,13 @@ temporarily to nil, for example
 
 Likewise, an attempt to split a fixed-height window vertically,
 or a fixed-width window horizontally results in a error.
+
+** The cursor-type frame parameter is now supported on MS-DOS
+terminals.  When Emacs starts, it by default changes the cursor shape
+to a solid box, as it does on Unix.  The `cursor-type' frame parameter
+overrides this as it does on Unix, except that the bar cursor is
+horizontal rather than vertical (since the MS-DOS display doesn't
+support a vertical-bar cursor).
 ^L
 * Emacs 20.5 is a bug-fix release with no user-visible changes.
 
@@ -2620,6 +2875,18 @@ current codepage when it starts.
 
 ** Mail changes
 
+*** When mail is sent using compose-mail (C-x m), and if
+`mail-send-nonascii' is set to the new default value `mime',
+appropriate MIME headers are added.  The headers are added only if
+non-ASCII characters are present in the body of the mail, and no other
+MIME headers are already present.  For example, the following three
+headers are added if the coding system used in the *mail* buffer is
+latin-1:
+
+  MIME-version: 1.0
+  Content-type: text/plain; charset=iso-8859-1
+  Content-Transfer-Encoding: 8bit
+
 *** The new variable default-sendmail-coding-system specifies the
 default way to encode outgoing mail.  This has higher priority than
 default-buffer-file-coding-system but has lower priority than
@@ -5402,6 +5669,11 @@ Use M-x dsssl-mode.
 
 ** Changes to the emacsclient program
 
+*** If a socket can't be found, and environment variables LOGNAME or
+USER are set, emacsclient now looks for a socket based on the UID
+associated with the name.  That is an emacsclient running as root
+can connect to an Emacs server started by a non-root user.
+
 *** The emacsclient program now accepts an option --no-wait which tells
 it to return immediately without waiting for you to "finish" the
 buffer in Emacs.