* doc/emacs/msdog.texi (Windows Printing): It doesn't set printer-name.
[bpt/emacs.git] / doc / lispref / anti.texi
CommitLineData
0a9482c5
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
44e97401 3@c Copyright (C) 1999, 2002-2012 Free Software Foundation, Inc.
0a9482c5 4@c See the file elisp.texi for copying conditions.
46600ab1
GM
5
6@c This node must have no pointers.
7
fdc76236 8@node Antinews, GNU Free Documentation License, Packaging, Top
9009bdae 9@appendix Emacs 23 Antinews
7341dc77
GM
10@c Update the elisp.texi, vol1.texi, vol2.texi Antinews menu entries
11@c with the above version number.
0a9482c5
RS
12
13For those users who live backwards in time, here is information about
91b65361 14downgrading to Emacs version 23.4. We hope you will enjoy the greater
0b3a2969
LK
15simplicity that results from the absence of many Emacs @value{EMACSVER}
16features.
0a9482c5 17
91b65361 18@section Old Lisp Features in Emacs 23
0a9482c5
RS
19
20@itemize @bullet
21@item
91b65361
CY
22Support for lexical scoping has been removed; all variables are
23dynamically scoped. The @code{lexical-binding} variable has been
24removed, and so has the @var{lexical} argument to @code{eval}. The
25@code{defvar} and @code{defconst} forms no longer mark variables as
26dynamic, since all variables are dynamic.
0a9482c5 27
91b65361
CY
28Having only dynamic binding follows the spirit of Emacs extensibility,
29for it allows any Emacs code to access any defined variable with a
30minimum of fuss. But @xref{Dynamic Binding Tips}, for tips to avoid
31making your programs hard to understand.
bd04e7de 32
0a9482c5 33@item
91b65361
CY
34Calling a minor mode function from Lisp with a nil or omitted argument
35does not enable the minor mode unconditionally; instead, it toggles
36the minor mode---which is the straightforward thing to do, since that
37is the behavior when invoked interactively. One downside is that it
38is more troublesome to enable minor modes from hooks; you have to do
39something like
0a9482c5 40
91b65361
CY
41@example
42(add-hook 'foo-hook (lambda () (bar-mode 1)))
43@end example
734b5e3b 44
91b65361
CY
45@noindent
46or define @code{turn-on-bar-mode} and call that from the hook.
0a9482c5 47
6b5c0a2e 48@item
91b65361
CY
49The @code{prog-mode} dummy major mode has been removed. Instead of
50using it as a crutch to meet programming mode conventions, you should
51explicitly ensure that your mode follows those conventions.
52@xref{Major Mode Conventions}.
6b5c0a2e 53
0a9482c5 54@item
91b65361
CY
55Emacs no longer supports bidirectional display and editing. Since
56there is no need to worry about the insertion of right-to-left text
57messing up how lines and paragraphs are displayed, the function
58@code{bidi-string-mark-left-to-right} has been removed; so have many
59other functions and variables related to bidirectional display.
60Unicode directionality characters like @code{U+200E} ("left-to-right
61mark") have no special effect on display.
0a9482c5 62
4b878354 63@item
91b65361
CY
64Emacs windows now have most of their internal state hidden from Lisp.
65Internal windows are no longer visible to Lisp; functions such as
66@code{window-parent}, window parameters related to window arrangement,
67and window-local buffer lists have all been removed. Functions for
68resizing windows can delete windows if when they become too small.
0a9482c5 69
91b65361
CY
70The @dfn{action function} feature for controlling buffer display has
71been removed, including @code{display-buffer-overriding-action} and
72related variables, as well as the @var{action} argument to
73@code{display-buffer} and other functions. The way to
74programmatically control how Emacs chooses a window to display a
75buffer is to bind the right combination of
76@code{special-display-regexps}, @code{pop-up-frames}, and other
77variables.
0a9482c5 78
8241495d 79@item
91b65361
CY
80The standard completion interface has been simplified, eliminating the
81@code{completion-extra-properties} variable, the @code{metadata}
82action flag for completion functions, and the concept of
83@dfn{completion categories}. Lisp programmers may now find the choice
84of methods for tuning completion less bewildering, but if a package
85finds the streamlined interface insufficient for its needs, it must
86implement its own specialized completion feature.
6b5c0a2e 87
1dffc5db 88@item
91b65361
CY
89@code{copy-directory} now behaves the same whether or not the
90destination is an existing directory: if the destination exists, the
91@emph{contents} of the first directory are copied into it (with
92subdirectories handled recursively), rather than copying the first
93directory into a subdirectory.
1dffc5db 94
6b5c0a2e 95@item
91b65361
CY
96The @var{trash} arguments for @code{delete-file} and
97@code{delete-directory} have been removed. The variable
98@code{delete-by-moving-to-trash} must now be used with care; whenever
99it is non-@code{nil}, all calls to @code{delete-file} or
100@code{delete-directory} use the trash.
0a9482c5 101
0a9482c5 102@item
91b65361
CY
103Because Emacs no longer supports SELinux file contexts, the
104@var{preserve-selinux-context} argument to @code{copy-file} has been
105removed. The return value of @code{backup-buffer} no longer has an
106entry for the SELinux file context.
0a9482c5
RS
107
108@item
91b65361
CY
109For mouse click input events in the text area, the Y pixel coordinate
110in the @var{position} list (@pxref{Click Events}) now counts from the
111top of the header line, if there is one, rather than the top of the
112text area.
0a9482c5
RS
113
114@item
91b65361
CY
115Bindings in menu keymaps (@pxref{Format of Keymaps}) now sometimes get
116an additional @var{cache} entry in their definitions, like this:
0a9482c5 117
91b65361
CY
118@example
119(@var{type} @var{item-name} @var{cache} . @var{binding})
120@end example
0a9482c5 121
91b65361
CY
122@noindent
123The @var{cache} entry is used internally by Emacs to record equivalent
124keyboard key sequences for invoking the same command; Lisp programs
125should never use it.
734b5e3b
CY
126
127@item
91b65361
CY
128The @code{open-network-stream} function has been removed, and so has
129the @code{gnutls} library. Lisp programs that want an encrypted
130network connection must now call external utilities such as
131@command{starttls} or @command{gnutls-cli}.
0a9482c5
RS
132
133@item
91b65361
CY
134Tool bars can no longer display separators, which frees up several
135pixels of space on each graphical frame.
0a9482c5
RS
136
137@item
91b65361 138Many other functions and variables have been eliminated.
0a9482c5 139@end itemize