Rewrite Antinews in ELisp manual for Emacs 29
* doc/lispref/anti.texi (Antinews): Rewrite for Emacs 29. * doc/lispref/elisp.texi (Top): Update the top-level menu for Antinews.
This commit is contained in:
parent
f12f72b0e0
commit
7b0b17df67
1 changed files with 116 additions and 113 deletions
|
@ -6,179 +6,182 @@
|
||||||
@c This node must have no pointers.
|
@c This node must have no pointers.
|
||||||
|
|
||||||
@node Antinews
|
@node Antinews
|
||||||
@appendix Emacs 27 Antinews
|
@appendix Emacs 28 Antinews
|
||||||
@c Update the elisp.texi Antinews menu entry with the above version number.
|
@c Update the elisp.texi Antinews menu entry with the above version number.
|
||||||
|
|
||||||
For those users who live backwards in time, here is information about
|
For those users who live backwards in time, here is information about
|
||||||
downgrading to Emacs version 27.2. We hope you will enjoy the greater
|
downgrading to Emacs version 28.2. We hope you will enjoy the greater
|
||||||
simplicity that results from the absence of many @w{Emacs
|
simplicity that results from the absence of many @w{Emacs
|
||||||
@value{EMACSVER}} features.
|
@value{EMACSVER}} features.
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
The annoying @code{lexical-binding} local variable now heeds the
|
The implementation of overlays is back to its simple, time-proven
|
||||||
value of @code{enable-local-variables}: if it's @code{nil}, the
|
storage in a pair of linear linked lists centered around some buffer
|
||||||
@code{lexical-binding} cookie is ignored. We are working hard on
|
position. No more fancy interval trees and suchlikes. Lisp programs
|
||||||
removing the lexical-binding support in some past Emacs version, and
|
that use overlays once again need to recenter overlays around the
|
||||||
this small step advances us back to that change.
|
buffer position of interest, and display-related features should again
|
||||||
|
make sure they don't use too many overlays in a buffer, lest redisplay
|
||||||
|
will be too slow.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The @code{load-dangerous-libraries} variable is not obsolete, as it
|
Several functions stopped the annoying conversion of quotes and key
|
||||||
must be used to allow loading Lisp compiled by XEmacs, which will
|
sequences by no longer calling @code{substitute-command-keys}. One
|
||||||
become more and more important as you move back in time.
|
prominent example is @code{format-prompt} and all its many callers.
|
||||||
|
This makes the strings they produce much more predictable, returning
|
||||||
|
to you, the Lisp programmer, control on which punctuation characters
|
||||||
|
will appear in the text presented to the users. For similar reasons,
|
||||||
|
the @code{substitute-quotes} function was deleted.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The optional @var{modes} argument of @code{interactive} is not
|
The venerable @code{buffer-modified-p} function again reliably returns
|
||||||
supported, and every command is deemed applicable to any major mode.
|
either @code{nil} or @code{t}, not any other confusing values.
|
||||||
We believe this makes the life of Lisp programmers much simpler, as
|
|
||||||
there's now no need to tag commands with the modes where they make
|
|
||||||
sense.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Shorthands for Lisp symbols have been removed, which makes loading
|
The support for @samp{medium} weight of fonts was dropped. Emacs now
|
||||||
Lisp files and handling Lisp symbols much simpler and more efficient.
|
considers @samp{medium} and @samp{regular} weights to be the same. We
|
||||||
This is important for decent performance on slower CPUs as you move
|
believe this will simplify your font setup, since there's no longer a
|
||||||
back in time.
|
need to worry about fonts that support @samp{regular} weight, but not
|
||||||
|
the @samp{medium} one, or vice versa: either one will do!
|
||||||
|
|
||||||
@item
|
@item
|
||||||
To reduce the amount of code in Emacs related to unimportant features,
|
To reduce the amount of code in Emacs related to unimportant features,
|
||||||
we've removed the variables @code{global-minor-modes} and
|
we've removed the function @code{compiled-function-p}. Lisp programs
|
||||||
@code{local-minor-modes}. If your Lisp program needs to determine
|
are expected to test explicitly for the relevant types of function
|
||||||
whether some minor mode is in effect, it will have to test explicitly
|
objects: built-in, byte-compiled, and natively-compiled. For the same
|
||||||
for every mode. We don't expect anyone to miss those fancy variables.
|
reasons we deleted the functions @code{pos-bol}, @code{pos-eol},
|
||||||
|
@code{file-attribute-file-identifier}, and quite a few others. We
|
||||||
|
don't expect anyone to miss those fancy functions.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The default preference for servicing sub-processes that produce output
|
The timeout used by @code{x-show-tip} can no longer be specified by
|
||||||
at a high rate, and the associated variable
|
Lisp programs; it is hard-coded in the function. This will lead to a
|
||||||
@code{process-prioritize-lower-fds}, have been removed. Moving back
|
simpler, easier maintained code, and no one should want to control the
|
||||||
in time means fewer and fewer programs can produce such high-rate
|
timeout after which the tip pops down.
|
||||||
output, so this features becomes just useless crud.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The encodings that are variants of EBCDIC were removed. This includes
|
The macro @code{setopt} was deleted; use @code{customize-variable}
|
||||||
@code{ibm256}, @code{ibm273}, and others---variants of the EBCDIC
|
instead, or invoke the @code{:set} function from Lisp.
|
||||||
encoding tailored for some Japanese and European locales. You won't
|
|
||||||
need those where you are going.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The ``Bindat type expression'' description language has been removed,
|
We removed the @code{lisp-directory} variable, as the value can be
|
||||||
as the existing data layout specifications are perfectly suited for
|
easily deduced from other similar variables, like
|
||||||
this job.
|
@code{installation-directory} and @code{source-directory}, each one
|
||||||
|
when it's relevant.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
To simplify code and reduce complexity, we removed the capability of
|
To simplify code and reduce complexity, we deleted the functions
|
||||||
specifying the success handler in @code{condition-case} via the
|
@code{get-display-property} and @code{add-display-text-property}; use
|
||||||
@code{:success} keyword. If you really need this feature (why would
|
the generic @code{get-text-property} and @code{put-text-property}
|
||||||
you?), you can always write some simple Lisp that has the same effect.
|
instead.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Emacs modules can no longer provide interactive functions, or install
|
Support for pinch input events and for modern drag-and-drop
|
||||||
finalizers, nor open channels to existing pipe sub-processes. All
|
functionality on X was dropped. As you move back in time, these
|
||||||
this is extra ballast, especially since we plan on removing modules in
|
facilities will become less and less important, and will soon enough
|
||||||
some past Emacs version. The @code{make_unibyte_string} module API
|
disappear, so there's no reason to keep them in Emacs.
|
||||||
was removed for the same reason.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
To keep Emacs clean and elegant, we've removed the
|
To keep Emacs clean and elegant, we've removed the @file{textsec.el}
|
||||||
@code{print-integers-as-characters} option. Recognizing characters by
|
library, with its facilities for checking whether some text is
|
||||||
their decimal codes is a basic requirement for Emacs Lisp programmers,
|
``suspicious''. We consider our users smart enough to detect
|
||||||
and with the expected decrease in use of Unicode characters, this will
|
maliciously modified text by just looking at it or by moving the
|
||||||
be soon limited to ASCII only: surely something you all can master!
|
cursor across it, and the whole idea that someone would wish to
|
||||||
|
deliberately deceive Emacs users ridiculous and unworthy of
|
||||||
|
complicating our elegant text-processing and display capabilities.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The optional @var{count} argument of the @code{directory-files}
|
The functions @code{keymap-set}, @code{keymap-global-set},
|
||||||
function has been removed. Extracting the first @var{n} members from
|
@code{keymap-local-set}, @code{keymap-substitute},
|
||||||
the full list is trivial, so this is a significant simplification for
|
@code{keymap-lookup}, and some others were deleted. We have found the
|
||||||
an insignificant cost.
|
traditional @code{define-key}, @code{global-set-key},
|
||||||
|
@code{local-set-key}, @code{substitute-key-definition}, and
|
||||||
|
@code{key-binding} more than enough, and their minor inconsistencies
|
||||||
|
in the syntax of keys they accept a source of endless fun in Emacs
|
||||||
|
Lisp programming. Why make Emacs programming a dull place? For the
|
||||||
|
same reasons we deleted @code{key-valid-p}, since we consider the
|
||||||
|
permissive nature of @code{kbd} more in the spirit of Emacs Lisp.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Functions that create sub-processes and network connections no longer
|
Yanking of anything but plain text from other applications becomes
|
||||||
accept the @code{:coding} argument; use
|
more and more an unnecessary feature as you move back in time, so we
|
||||||
@code{set-process-coding-system} or bind
|
dropped support for pasting media like HTML and images via the
|
||||||
@code{coding-system-for-read/write} instead: again, a significant
|
clipboard. If you @i{really} need to yank those into an Emacs buffer,
|
||||||
reduction in Emacs complexity for little or no cost.
|
you can go via a disk file.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
We deleted from the macros @code{define-derived-mode} and
|
We removed unnecessary functions @code{string-pixel-width} and
|
||||||
@code{define-minor-mode} the code which allowed using the
|
@code{string-glyph-split}, as we consider it inappropriate for Lisp
|
||||||
@code{:interactive} argument. The possibility of marking a mode
|
programs to do display layout calculations, where these functions come
|
||||||
non-interactive makes very little sense,
|
in handy. Display is for the display engine, written in C, and should
|
||||||
|
stay there!
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The possibility of having links to man pages in doc strings has been
|
Various new Xwidget functions, such as
|
||||||
removed. Use plain text instead, if you need such references.
|
@code{xwidget-perform-lispy-event}, @code{xwidget-webkit-load-html},
|
||||||
|
and @code{xwidget-webkit-back-forward-list}, were deleted as part of
|
||||||
|
our continuing effort to gradually delete the entire Xwidget
|
||||||
|
functionality in some previous release of Emacs.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Temporary buffers are no longer exempt from running any buffer-related
|
Setting the @code{:stderr} property of a process in a
|
||||||
hooks. Programs that don't want such hooks in some buffer can always
|
@code{make-process} call once again forces the process's connection to
|
||||||
disable it locally, whereas making that simpler complicates Emacs for
|
use pipes, not ptys, for all the standard streams --- a considerable
|
||||||
no good reason.
|
simplification of this complex interface.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
|
To keep the amount of Lisp functions from growing out of control, we
|
||||||
|
deleted @code{string-equal-ignore-case}. Use @code{compare-strings}
|
||||||
|
instead.
|
||||||
|
|
||||||
Several features that complicated the byte compiler have been removed:
|
Several features that complicated the byte compiler have been removed:
|
||||||
|
|
||||||
@itemize @minus
|
@itemize @minus
|
||||||
@item
|
@item
|
||||||
The checks for missing declarations of dynamic variables. This will
|
The warnings about quoting mistakes in documentation strings. You are
|
||||||
continue making less and less sense as we move away of lexical-binding
|
expected to find such mistakes yourself, by eyeballing the resulting
|
||||||
support.
|
@file{*Help*} buffer display.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The ability of compiling symlinked @file{*.el} files, which is really
|
The warnings about malformed @code{defcustom} types, like
|
||||||
gross: copy the files instead.
|
double-quoting symbols in @code{choice} lists.
|
||||||
|
|
||||||
@item
|
|
||||||
The warnings about too-wide doc strings---that is just a nuisance, as
|
|
||||||
the programmers should be trusted to know what they are doing.
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
|
|
||||||
@item
|
|
||||||
We deleted several features of the @code{pcase} macro, in accordance
|
|
||||||
with our general plan to remove @code{pcase} from Emacs:
|
|
||||||
|
|
||||||
@itemize @minus
|
|
||||||
@item
|
|
||||||
The @code{cl-type} pattern.
|
|
||||||
|
|
||||||
@item
|
|
||||||
the @code{pcase-setq} macro.
|
|
||||||
|
|
||||||
@item
|
|
||||||
The @code{pcase-compile-patterns} function.
|
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Some of the keywords used in Edebug specification lists were deemed to
|
The macro @code{with-buffer-unmodified-if-unchanged} was deleted.
|
||||||
be of little use, and were therefore removed: @code{&interpose},
|
Lisp programs that need to leave the buffer unmodified in these cases
|
||||||
@code{&error}, and @code{&name}. The long-term plane is for Emacs to
|
can always compare the text before and after the modifications.
|
||||||
drop Edebug entirely, leaving only the trusted Lisp debugger, and we
|
|
||||||
continue working according to that plan.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The function @code{object-intervals} was dropped, as a Lisp program
|
The functions @code{string-edit} and @code{read-string-from-buffer}
|
||||||
can easily collect the intervals of a buffer or a string by iterating
|
were removed, as we consider the fun of programming them anew every
|
||||||
through them one by one.
|
time an important part of the education of each Emacs Lisp developer.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
We decided that the @code{require-theme} function is an unnecessary
|
We deleted the function @code{readablep} and the related variable
|
||||||
complication, so we deleted it. Lisp programs can easily search along
|
@code{print-unreadable-function}, since no one is supposed to want to
|
||||||
@code{custom-theme-load-path} instead.
|
print unreadable Lisp objects.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The convenience functions @code{length<}, @code{length>}, and
|
The facility for storing multisession variables was deleted as an
|
||||||
@code{length=} were removed, as using @code{length} followed by a
|
unnecessary complication. With it are gone @code{multisession-value},
|
||||||
comparison should be good enough for everyone, especially considering
|
@code{define-multisession-variable}, and
|
||||||
that the typical length of a list keeps going down as you move back
|
@code{list-multisession-values}.
|
||||||
through time.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
The variable @code{current-minibuffer-command} is no longer available,
|
The support for the @code{cursor-face} text property was dropped. We
|
||||||
as we found little justification for keeping it.
|
consider the rest of the faces adequate for supporting this
|
||||||
|
functionality.
|
||||||
|
|
||||||
|
@item
|
||||||
|
The function @code{tooltip-show} dropped support for optional face
|
||||||
|
arguments @code{text-face} and @code{default-face} that allow fancy
|
||||||
|
control of the face of the tip text and top frame colors. We decided
|
||||||
|
that tooltips should all look the same, to prevent user confusion.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
As part of the ongoing quest for simplicity, many other functions and
|
As part of the ongoing quest for simplicity, many other functions and
|
||||||
variables have been eliminated. Other functions and variables, that
|
variables have been eliminated. Other functions and variables, that
|
||||||
were declared obsolete since Emacs 23, have been added back, in
|
were declared obsolete since Emacs 24, have been added back, in
|
||||||
preparation for releasing Emacs 23 in some distant past.
|
preparation for releasing Emacs 24 in some distant past.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
Loading…
Add table
Reference in a new issue