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