anti.texi 5.54 KB
Newer Older
Richard M. Stallman's avatar
Richard M. Stallman committed
1 2
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
3
@c Copyright (C) 1999, 2002-2012 Free Software Foundation, Inc.
Richard M. Stallman's avatar
Richard M. Stallman committed
4
@c See the file elisp.texi for copying conditions.
Gerd Moellmann's avatar
Gerd Moellmann committed
5 6 7

@c This node must have no pointers.

Tom Tromey's avatar
Tom Tromey committed
8
@node Antinews, GNU Free Documentation License, Packaging, Top
9
@appendix Emacs 23 Antinews
10 11
@c Update the elisp.texi, vol1.texi, vol2.texi Antinews menu entries
@c with the above version number.
Richard M. Stallman's avatar
Richard M. Stallman committed
12 13

For those users who live backwards in time, here is information about
14
downgrading to Emacs version 23.4.  We hope you will enjoy the greater
15 16
simplicity that results from the absence of many Emacs @value{EMACSVER}
features.
Richard M. Stallman's avatar
Richard M. Stallman committed
17

18
@section Old Lisp Features in Emacs 23
Richard M. Stallman's avatar
Richard M. Stallman committed
19 20 21

@itemize @bullet
@item
22 23 24 25 26
Support for lexical scoping has been removed; all variables are
dynamically scoped.  The @code{lexical-binding} variable has been
removed, and so has the @var{lexical} argument to @code{eval}.  The
@code{defvar} and @code{defconst} forms no longer mark variables as
dynamic, since all variables are dynamic.
Richard M. Stallman's avatar
Richard M. Stallman committed
27

28 29 30 31
Having only dynamic binding follows the spirit of Emacs extensibility,
for it allows any Emacs code to access any defined variable with a
minimum of fuss.  But @xref{Dynamic Binding Tips}, for tips to avoid
making your programs hard to understand.
32

Richard M. Stallman's avatar
Richard M. Stallman committed
33
@item
34 35 36 37 38 39
Calling a minor mode function from Lisp with a nil or omitted argument
does not enable the minor mode unconditionally; instead, it toggles
the minor mode---which is the straightforward thing to do, since that
is the behavior when invoked interactively.  One downside is that it
is more troublesome to enable minor modes from hooks; you have to do
something like
Richard M. Stallman's avatar
Richard M. Stallman committed
40

41 42 43
@example
(add-hook 'foo-hook (lambda () (bar-mode 1)))
@end example
44

45 46
@noindent
or define @code{turn-on-bar-mode} and call that from the hook.
Richard M. Stallman's avatar
Richard M. Stallman committed
47

Gerd Moellmann's avatar
Gerd Moellmann committed
48
@item
49 50 51 52
The @code{prog-mode} dummy major mode has been removed.  Instead of
using it as a crutch to meet programming mode conventions, you should
explicitly ensure that your mode follows those conventions.
@xref{Major Mode Conventions}.
Gerd Moellmann's avatar
Gerd Moellmann committed
53

Richard M. Stallman's avatar
Richard M. Stallman committed
54
@item
55 56 57 58 59 60 61
Emacs no longer supports bidirectional display and editing.  Since
there is no need to worry about the insertion of right-to-left text
messing up how lines and paragraphs are displayed, the function
@code{bidi-string-mark-left-to-right} has been removed; so have many
other functions and variables related to bidirectional display.
Unicode directionality characters like @code{U+200E} ("left-to-right
mark") have no special effect on display.
Richard M. Stallman's avatar
Richard M. Stallman committed
62

63
@item
64 65 66 67
Emacs windows now have most of their internal state hidden from Lisp.
Internal windows are no longer visible to Lisp; functions such as
@code{window-parent}, window parameters related to window arrangement,
and window-local buffer lists have all been removed.  Functions for
68
resizing windows can delete windows if they become too small.
Richard M. Stallman's avatar
Richard M. Stallman committed
69

70
The ``action function'' feature for controlling buffer display has
71 72 73 74 75 76 77
been removed, including @code{display-buffer-overriding-action} and
related variables, as well as the @var{action} argument to
@code{display-buffer} and other functions.  The way to
programmatically control how Emacs chooses a window to display a
buffer is to bind the right combination of
@code{special-display-regexps}, @code{pop-up-frames}, and other
variables.
Richard M. Stallman's avatar
Richard M. Stallman committed
78

79
@item
80 81 82
The standard completion interface has been simplified, eliminating the
@code{completion-extra-properties} variable, the @code{metadata}
action flag for completion functions, and the concept of
83
``completion categories''.  Lisp programmers may now find the choice
84 85 86
of methods for tuning completion less bewildering, but if a package
finds the streamlined interface insufficient for its needs, it must
implement its own specialized completion feature.
Gerd Moellmann's avatar
Gerd Moellmann committed
87

88
@item
89 90 91 92 93
@code{copy-directory} now behaves the same whether or not the
destination is an existing directory: if the destination exists, the
@emph{contents} of the first directory are copied into it (with
subdirectories handled recursively), rather than copying the first
directory into a subdirectory.
94

Gerd Moellmann's avatar
Gerd Moellmann committed
95
@item
96 97 98 99 100
The @var{trash} arguments for @code{delete-file} and
@code{delete-directory} have been removed.  The variable
@code{delete-by-moving-to-trash} must now be used with care; whenever
it is non-@code{nil}, all calls to @code{delete-file} or
@code{delete-directory} use the trash.
Richard M. Stallman's avatar
Richard M. Stallman committed
101 102

@item
103 104 105 106
Because Emacs no longer supports SELinux file contexts, the
@var{preserve-selinux-context} argument to @code{copy-file} has been
removed.  The return value of @code{backup-buffer} no longer has an
entry for the SELinux file context.
Richard M. Stallman's avatar
Richard M. Stallman committed
107 108

@item
109 110 111 112
For mouse click input events in the text area, the Y pixel coordinate
in the @var{position} list (@pxref{Click Events}) now counts from the
top of the header line, if there is one, rather than the top of the
text area.
Richard M. Stallman's avatar
Richard M. Stallman committed
113 114

@item
115 116
Bindings in menu keymaps (@pxref{Format of Keymaps}) now sometimes get
an additional @var{cache} entry in their definitions, like this:
Richard M. Stallman's avatar
Richard M. Stallman committed
117

118 119 120
@example
(@var{type} @var{item-name} @var{cache} . @var{binding})
@end example
Richard M. Stallman's avatar
Richard M. Stallman committed
121

122 123 124 125
@noindent
The @var{cache} entry is used internally by Emacs to record equivalent
keyboard key sequences for invoking the same command; Lisp programs
should never use it.
126
@c Not really NEWS-worthy then...
127 128

@item
129 130 131 132
The @code{gnutls} library has been removed, and the function
@code{open-network-stream} correspondingly simplified.
Lisp programs that want an encrypted network connection must now call
external utilities such as @command{starttls} or @command{gnutls-cli}.
Richard M. Stallman's avatar
Richard M. Stallman committed
133 134

@item
135 136
Tool bars can no longer display separators, which frees up several
pixels of space on each graphical frame.
Richard M. Stallman's avatar
Richard M. Stallman committed
137 138

@item
139 140
As part of the ongoing quest for simplicity, many other functions and
variables have been eliminated.
Richard M. Stallman's avatar
Richard M. Stallman committed
141
@end itemize