From xemacs-m  Mon Mar 24 08:18:26 1997
Received: from jagor.srce.hr (hniksic@jagor.srce.hr [161.53.2.130])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id IAA11549
	for <xemacs-beta@xemacs.org>; Mon, 24 Mar 1997 08:18:23 -0600 (CST)
Received: (from hniksic@localhost)
          by jagor.srce.hr (8.8.5/8.8.4)
	  id PAA23798; Mon, 24 Mar 1997 15:18:19 +0100 (MET)
Sender: hniksic@public.srce.hr
To: XEmacs Developers <xemacs-beta@xemacs.org>
Subject: News in Emacs 19.35
X-URL: ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/
X-Attribution: Hrv
X-Face: &}4JQk=L;e.~x+|eo]#DGk@x3~ed!.~lZ}YQcYb7f[WL9L'Z*+OyA\nA
        EL1M(".[qvI#a2E6WYI5>>e7'@_)3Ol9p|Nn2wNa/;~06jL*B%tTcn/X
        vhAu7qeES0\|MF%$;sI#yn1+y"
From: Hrvoje Niksic <hniksic@srce.hr>
Date: 24 Mar 1997 15:18:17 +0100
Message-ID: <kig2095z846.fsf@jagor.srce.hr>
Lines: 590
X-Mailer: Gnus v5.4.33/XEmacs 19.14

I think the FSF people are doing a good job with Emacs 19.35.  Here is
the relevant part of the NEWS file from Emacs 19.34.93.  I strongly
suggest that we consider some of the simpler stuff (especially
compatibility-related) for 20.1.  Simple-but-useful things like
`C-x 4 0' should go in, too.

This may also be a good time to lobby RMS for name-changes (e.g. they
implemented shell-command-to-string, whereas we have exec-to-string,
etc.).

There's a lot of stuff here, but please consider reading it.


GNU Emacs NEWS -- history of user-visible changes.  1 Aug 1996
Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
See the end for copying conditions.

Please send Emacs bug reports to bug-gnu-emacs@prep.ai.mit.edu.
For older news, see the file ONEWS.

* Changes in Emacs 19.35

** Scroll bars are now on the left side of the window, by default.

** Scroll commands to scroll a whole screen now preserve the screen
position of the cursor, if scroll-preserve-screen-position is non-nil.

In this mode, if you scroll several screens back and forth, finishing
on the same screen where you started, the cursor goes back to the line
where it started.

** When you select a region with the mouse, it is highlighted
immediately afterward.  At that time, if you type the DELETE key, it
kills the region.

The BACKSPACE key, and the ASCII character DEL, do not do this; they
delete the character before point, as usual.

** The new command C-x 4 0 (kill-buffer-and-window) kills the
current buffer and deletes the selected window.  It asks for
confirmation first.

** In Transient Mark mode, the region in any one buffer is highlighted
in just one window at a time.  At first, it is highlighted in the
window where you set the mark.  The buffer's highlighting remains in
that window unless you select to another window which shows the same
buffer--then the highlighting moves to that window.

** The feature to suggest key bindings when you use M-x now operates
after the command finishes.  The message suggesting key bindings
appears temporarily in the echo area.  The previous echo area contents
come back after a few seconds, in case they contain useful information.

** When using noutline.el, incremental searches skip over invisible
matches.

** When a minibuffer window is active but not the selected window, if
you try to use the minibuffer, you used to get a nested minibuffer.
Now, this not only gives an error, it also cancels the minibuffer that
was already active.

The motive for this change is so that beginning users do not
unknowingly move away from minibuffers, leaving them active, and then
get confused by it.

If you want to be able to have recursive minibuffers, you must
set enable-recursive-minibuffers to non-nil.

** Minibuffer history lists are truncated automatically now to a
certain length.  The variable history-length specifies how long they
can be.  The default value is 30.

** While composing a reply to a mail message, you can use the command
C-c C-r to cite just the region from the message you are replying to.
This copies the text which is the selected region in the buffer that
shows the original message.

** You can "quote" a file name to prevent it from being treated as
magic by adding `/:' to the beginning.  Thus, if you have a directory
named `/foo:', you can prevent it from being treated as a reference to
a remote host named `foo' by writing it as `/:/foo:'.

Emacs uses this new construct automatically when necessary, such as
when you start it with a working directory whose name might otherwise
be taken to be magic.

** In Dired, * is now a prefix key for mark-related commands.

new key		dired.el binding		old key
-------		----------------		-------
  * c		dired-change-marks		c
  * m		dired-mark			m
  * *		dired-mark-executables		*  (binding deleted)
  * /		dired-mark-directories		/  (binding deleted)
  * @		dired-mark-symlinks		@  (binding deleted)
  * u		dired-unmark			u
  * ?		dired-unmark-all-files		M-C-?
  * !		dired-unmark-all-files-no-query
  * DEL		dired-unmark-backward		DEL
  * %		dired-mark-files-regexp		% m
  * C-n		dired-next-marked-file		M-}
  * C-p		dired-prev-marked-file		M-{

** In Dired, the & command now flags for deletion the files whose names
suggest they are probably not needed in the long run.

** In Rmail, the variable rmail-summary-line-count-flag now controls
whether to include the line count in the summary.  Non-nil means yes.

** In Rmail, the t command now takes an optional argument which lets
you specify whether to show the message headers in full or pruned.

** In the *Occur* buffer made by M-x occur,
if you type g or M-x revert buffer, this repeats the search
using the same regular expression and the same buffer as before.

** C mode changes.

*** Better control over the buffer localness of the indentation variables.

*** New variable c-indentation-style which holds the current style name
of the buffer.

*** Improvements to the alignment of C block comments.  The variable
c-block-comments-indent-p has been removed.

*** A new indentation style "python", which specifies the C style that
the Python developers like.

*** New c-cleanup-list option: brace-elseif-brace

** ps-print changes

There are some new user variables for customizing the page layout.  

*** Paper size, paper orientation, columns

The variable `ps-paper-type' determines the size of paper ps-print
formats for; it should contain one of the symbols:
`a4' `a3' `letter' `legal' `letter-small' `tabloid'
`ledger' `statement' `executive' `a4small' `b4' `b5'
It defaults to `letter'.
If you need other sizes, see the variable `ps-page-dimensions-database'.

The variable `ps-landscape-mode' determines the orientation
of the printing on the page.  nil, the default, means "portrait" mode, 
non-nil means "landscape" mode.

The variable `ps-number-of-columns' must be a positive integer.
It determines the number of columns both in landscape and portrait mode.
It defaults to 1. 

*** Horizontal layout

The horizontal layout is determined by the variables
`ps-left-margin', `ps-inter-column', and `ps-right-margin'.

*** Vertical layout

The vertical layout is determined by the variables
`ps-bottom-margin', `ps-top-margin', and `ps-header-offset'.

*** Headers

If the variable `ps-print-header' is nil, no header is printed.  Then
`ps-header-offset' is not relevant and `ps-top-margin' represents the
margin above the text.

If the variable `ps-print-header-frame' is non-nil, a gaudy 
framing box is printed around the header.

The contents of the header are determined by `ps-header-lines',
`ps-show-n-of-n', `ps-left-header' and `ps-right-header'.

The height of the header is determined by `ps-header-line-pad', 
`ps-header-font-family', `ps-header-title-font-size' and 
`ps-header-font-size'.

*** Font managing

The variable `ps-font-family' determines which font family is to be
used for ordinary text.  Its value must be a key symbol in the alist
`ps-font-info-database'.  You can add other font families by adding
elements to this alist.

The variable `ps-font-size' determines the size of the font 
for ordinary text.  It defaults to 8.5 points.

** Changes in Enriched mode.

*** When you visit a file in enriched-mode, Emacs will make sure it is
filled to the current fill-column.  This behavior is now independent
of the size of the window.  When you save the file, the fill-column in
use is stored as well, so that the whole buffer need not be refilled
the next time unless the fill-column is different.

*** use-hard-newlines is now a minor mode.  When you turn it on, it can
automatically mark paragraph-separating newlines as hard.

** Font Lock mode

*** New support

Support is now provided for Java, Objective-C, AWK and SIMULA modes.

Note that Font Lock mode can be turned on without knowing exactly what modes
support Font Lock mode, via the command global-font-lock-mode.

*** Configurable support

Support for C, C++, Objective-C and Java can be more easily configured for
additional types and classes via the new variables c-font-lock-extra-types,
c++-font-lock-extra-types, objc-font-lock-extra-types and, you guessed it,
java-font-lock-extra-types.  These value of each of these variables should be a
list of regexps matching the extra type names.  For example, the default value
of c-font-lock-extra-types is ("\\sw+_t") which means fontification follows the
convension that C type names end in _t.  This results in slower fontification.

Of course, you can change the variables that specify fontification in whatever
way you wish, typically by adding regexps.  However, these new variables make
it easier to make specific and common changes for the fontification of types.

*** Adding highlighting patterns to existing support

You can use the new function font-lock-add-keywords to add your own
highlighting patterns, such as for project-local or user-specific contructs,
for any mode.

For example, to highlight `FIXME:' words in C comments, put:

 (font-lock-add-keywords 'c-mode '(("\\<FIXME:" 0 font-lock-warning-face t)))

in your ~/.emacs.

*** New faces

Font Lock now defines two new faces, font-lock-builtin-face and
font-lock-warning-face.  These are intended to highlight builtin keywords,
distinct from a language's normal keywords, and objects that should be brought
to user attention, respectively.  Various modes now use these new faces.

*** Changes to fast-lock support mode

The fast-lock package, one of the two Font Lock support modes, can now process
cache files silently.  You can use the new variable fast-lock-verbose, in the
same way as font-lock-verbose, to control this feature.

*** Changes to lazy-lock support mode

The lazy-lock package, one of the two Font Lock support modes, can now fontify
according to the true syntactic context relative to other lines.  You can use
the new variable lazy-lock-defer-contextually to control this feature.  If
non-nil, changes to the buffer will cause subsequent lines in the buffer to be
refontified after lazy-lock-defer-time seconds of idle time.  If nil, then only
the modified lines will be refontified; this is the same as the previous Lazy
Lock mode behaviour and the behaviour of Font Lock mode.

This feature is useful in modes where strings or comments can span lines.
For example, if a string or comment terminating character is deleted, then if
this feature is enabled subsequent lines in the buffer will be correctly
refontified to reflect their new syntactic context.  Previously, only the line
containing the deleted character would be refontified and you would have to use
the command M-g M-g (font-lock-fontify-block) to refontify some lines.

As a consequence of this new feature, two other variables have changed:

Variable `lazy-lock-defer-driven' is renamed `lazy-lock-defer-on-scrolling'.
Variable `lazy-lock-defer-time' can now only be a time, i.e., a number.
Buffer modes for which on-the-fly deferral applies can be specified via the
new variable `lazy-lock-defer-on-the-fly'.

If you set these variables in your ~/.emacs, then you may have to change those
settings.

** 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.

** M-x eldoc-mode enables a minor mode in which the echo area
constantly shows the parameter list for function being called at point
(in Emacs Lisp and Lisp Interaction modes only).

** History lists are truncated to a certain length
whenever there is a garbage collection.

** C-x n d now runs the new command narrow-to-defun,
which narrows the accessible parts of the buffer to just
the current defun.

** When you kill a buffer, any registers that were pointing into the
buffer are modified so that, if you try to go to one with C-x j,
it offers to visit the file again.

** Emacs now handles the `--' argument in the standard way; all
following arguments are treated as ordinary file names.

** On MSDOS and Windows, the bookmark file is now called _emacs.bmk,
and the saved desktop file is now called _emacs.desktop (truncated if
necessary).

** When you kill a buffer that visits a file,
if there are any registers that save positions in the file,
these register values no longer become completely useless.
If you try to go to such a register with C-x j, then you are
asked whether to visit the file again.  If you say yes,
it visits the file and then goes to the same position.

** When you edit a file that changes automatically and frequently--for
example, a log of output from a process that continues to run--it may
be useful for Emacs to revert the file without querying you whenever
you visit the file afresh with C-x C-f, even if the file is already
present in a buffer.

You can request this behavior for certain files by setting the variable
find-file-revert-without-query to a list of regular expressions.  If a
file's name matches any of these regular expressions, find-file
reverts the buffer without asking for permission--but only if the
buffer text has not been edited.

** set-defaut-font has been renamed to set-frame-font
since it applies only to the current frame.

** In TeX mode, you can use the variable tex-main-file to specify the
file for tex-file to run TeX on.  (By default, tex-main-file is nil,
and tex-file runs TeX on the current visited file.)

This is useful when you are editing a document that consists of
multiple files.  In each of the included files, you can set up a local
variable list which specifies the top-level file of your document for
tex-main-file.  Then tex-file will run TeX on the whole document
instead of just the file you are editing.

** Iso Accents mode now supports Latin-3 as an alternative.

** The new file i3-syntax.el sets up sytnax table and case table
definitions for ISO Latin-3.

** The function using-unix-filesystems has been replaced by the
functions add-untranslated-filesystem and remove-untranslated-filesystem.
Each of these functions takes the name of a drive letter or directory
as an argument.

When a filesystem is added as untranslated, all files on it are read
and written in binary mode (no cr/lf translation is performed).

* Lisp Changes in Emacs 19.35

** There are new macros `when' and `unless'

(when CONDITION BODY...)  is short for  (if CONDITION (progn BODY...))
(unless CONDITION BODY...)  is short for  (if CONDITION nil BODY...)

** You can examine X resources for other applications by binding
x-resource-class around a call to x-get-resource.  The usual value of
x-resource-class is "Emacs", which is the correct value for Emacs.

** pop-to-buffer, switch-to-buffer-other-window and
switch-to-buffer-other-frame now accept an additional optional
argument NORECORD, much like switch-to-buffer.  If it is non-nil,
they don't put the buffer at the front of the buffer list.

** Clearing the echo area now runs the normal hook
echo-area-clear-hook.  Note that the echo area can be used while the
minibuffer is active; in that case, the minibuffer is still active
after the echo area is cleared.

** In menus, checkboxes and radio buttons now actually work.
The menu displays the current status of the box or button.

** The defined purpose of `defconst' has been changed.  It should now
be used only for values that should not be changed wither by a program
or by the user.

The actual behavior of defconst has not been changed.

** Lisp packages that load files of customizations, or any other sort
of user profile, should obey the variable init-file-user in deciding
where to find it.  They should load the profile of the user name found
in that variable.  If init-file-user is nil, meaning that the -q
option was used, then Lisp packages should not load the customization
files at all.

** Lisp packages which create temporary files should use the TMPDIR
environment variable to decide which directory to put them in.

** time-stamp-format is now used with the function format-time-string.
So if you change the value of the variable, do it in a way that works
with that function.

** The `intangible' property now works on overlays as well as
a text property.

** thing-at-point now supports a new kind of "thing": url.

** The new functions next-char-property-change and
previous-char-property-change scan through the buffer looking for a
place where either a text property or an overlay might change.  The
functions take two arguments, POSITION and LIMIT.  POSITION is the
starting position for the scan.  LIMIT says where to stop the scan.

If no property change is found before LIMIT, the value is LIMIT.  If
LIMIT is nil, scan goes to the beginning or end of the accessible part
of the buffer.  If no property change is found, the value is the
position of the beginning or end of the buffer.

** The new function compose-mail starts composing a mail message
using the user's chosen mail composition agent (specified with the
variable mail-user-agent).

** The `user-full-name' function now takes an optional parameter which
can either be a number (the UID) or a string (the login name).  The
full name of the specified user will be returned.

** An error in running pre-command-hook or post-command-hook
does clear the variable to nil.  The documentation was wrong before.

** In define-key-after, if AFTER is t, the new binding now always goes
at the end of the keymap.  If the keymap is amenu, this means it
appears at the bottom of the menu.

** The inode number returned by file-attributes may be a list of
integers in some cases--where the information occupies too many bits
to fit in a single Lisp integer.

** If you have a program that makes several changes in the same area
of the buffer, you can use the macro combine-after-change-calls 
around that Lisp code to make it faster when after-change hooks
are in use.

The macro arranges to call the after-change functions just once for a
series of several changes--if that seems safe.

Don't alter the variables after-change-functions and
after-change-function within the body of a combine-after-change-calls
form.

** If you set scroll-conservatively to a small number, then when you
move point a short distance off the screen, Emacs will scroll the
screen just far enough to bring point back on screen, provided that
does not exceed `scroll-conservatively' lines.

** The new variable scroll-margin says how close point can come to the
top or bottom of a window.  It is a number of screen lines; if point
comes within that many lines of the top or bottom of the window, Emacs
recenters the window.

** If you define an abbrev (with define-abbrev) whose EXPANSION
is not a string, then the abbrev does not expand in the usual sense,
but its hook is still run.

** expand-file-name no longer treats `//' or `/~' specially.  It used
to delete all the text of a file name up through the first slash of
any `//' or `/~' sequence.  Now it passes them straight through.

substitute-in-file-name continues to treat those sequences specially,
in the same way as before.

** Normally, the Lisp debugger is not used (even if you have enabled it)
for errors that are handled by condition-case.

If you set debug-on-signal to a non-nil value, then the debugger is called
regardless of whether there is a handler for the condition.  This is
useful for debugging problems that happen inside of a condition-case.

This mode of operation seem be unreliable in other ways.  Errors that
are normal and ought to be handled, perhaps in timers or process
filters, will instead invoke the debugger.  So don't say you weren't
warned.

** The value of the frame parameter vertical-scroll-bars
is now `left', `right' or nil.  A non-nil value specifies
which side of the window to put the scroll bars on.

** The new macro `with-current-buffer' lets you evaluate an expression
conveniently with a different current buffer.  It looks like this:

  (with-current-buffer BUFFER BODY-FORMS...)

BUFFER is the expression that says which buffer to use.
BODY-FORMS say what to do in that buffer.

** The new primitive `save-current-buffer' saves and restores the
choice of current buffer, like `save-excursion', but without saving or
restoring the value of point or the mark.  `with-current-buffer'
works using `save-current-buffer'.

** The new macro `with-temp-file' lets you do some work in a new buffer and
write the output to a specified file.  Like `progn', it returns the value
of the last form.

** The new macro `with-temp-buffer' lets you do some work in a new buffer,
which is discarded after use.  Like `progn', it returns the value of the
last form.  If you wish to return the buffer contents, use (buffer-string)
as the last form.

** In the `local-map' text property or overlay property, the property
value can now be a symbol whose function definition is a keymap.  This
is an alternative to using the keymap itself.

** A reminder: it is no longer necessary for subprocess filter
functions and sentinels to do save-match-data, because Emacs does this
automatically.

** The new function split-string takes a string, splits it at certain
characters, and returns a list of the substrings in between the
matches.

For example, (split-string "foo bar lose" " +") returns ("foo" "bar" "lose").

** The new macro with-output-to-string executes some Lisp expressions
with standard-output set up so that all output feeds into a string.
Then it returns that string.

For example, if the current buffer name is `foo',

(with-output-to-string
  (princ "The buffer is ")
  (princ (buffer-name)))

returns "The buffer is foo".

** The new function shell-command-to-string executes a shell command
and returns the output from the command as a string.

** The Common Lisp function eql is no longer defined normally.
You must load the `cl' library to define it.

** The new variable ring-bell-function lets you specify your own
way for Emacs to "ring the bell".

** If run-at-time's TIME argument is t, the action is repeated at
integral multiples of REPEAT from the epoch; this is useful for
functions like display-time.

** substring now handles vectors as well as strings.

** The new function access-file tries to open a file, and signals an
error if that fails.  If the open succeeds, access-file does nothing
else, and returns nil.

** The function insert-directory now signals an error if the specified
directory cannot be listed.

** The new function process-contact returns t for a child process,
and (HOSTNAME SERVICE) for a net connection.

** You can use the function locate-library to find the precise file
name of a Lisp library.  This isn't new, but wasn't documented before.

** The function x-list-fonts now takes an optional fourth argument
MAXIMUM which sets a limit on how many matching fonts to return.
A smaller value of MAXIMUM makes the function faster.

If the only question is whether *any* font matches the pattern,
it is good to supply 1 for this argument.

** Changes in Ediff

*** Clicking mouse-2 on a brief command description in Ediff control panel pops up
the Info file for this command.

*** There is now a variable, ediff-autostore-merges, which controls whether the
result of a merge is saved in a file. By default, this is done only when merge
is done from a session group (eg, when merging files in two different 
directories).

*** Since Emacs 19.31 (this hasn't been announced before), Ediff can compare and
merge groups of files residing in different directories, or revisions of files
in the same directory.

*** Since Emacs 19.31, Ediff can apply multi-file patches interactively.
The patches must be in the context format or GNU unified format. (The bug
related to the GNU format has now been fixed.)

** Changes in Viper

*** C-\ now simulates the meta-key in all Viper states.
*** C-z in Insert state now escapes to Vi for the duration of the next 
Viper command. In Vi and Insert states, C-z behaves as before.
*** C-c \ escapes to Vi for one command if Viper is in Insert or Emacs states.
*** _ is no longer the meta-key in Vi state.
*** The variable vip-insert-state-cursor-color can be used to change cursor color when Viper is in insert state.
*** If search lands the cursor near the top or the bottom of the window, Viper pulls the window up or down to expose more context. The variable
vip-adjust-window-after-search controls this behavior.


-- 
Hrvoje Niksic <hniksic@srce.hr> | Student at FER Zagreb, Croatia
--------------------------------+--------------------------------
I'm sure they'll listen to reason! -- Neal Stevenson, _Snow Crash_

