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