Hello, it's time for another Emacs development update.
I want to thank the organizers of EmacsConf
for putting this together
and also the maintainers of Emacs
with a special thanks to Eli Zaretskii.
It's really he who gave me this information
so that I could pass it along to you.
The main thing to discuss this time
with regard to what's been going on with Emacs is Emacs 29.
The release cycle for Emacs 29 should begin in December
when a branch will be cut and the release work will start.
We should be seeing Emacs 29 coming out fairly soon.
Here's just a brief overview
of some of the things to look forward to
coming up in Emacs 29.
Overlays have been re-implemented.
If you haven't used them before,
overlays are a way to apply a set of properties
over a range of text so that
you can have things like mouse clicks
take on different behavior
depending on where it happens in the text.
This is different than text properties
which associate the properties with the text itself.
Overlays do not alter the text in any way
and they simply, as the name suggests,
overlay on the buffer.
Now previously, overlays were implemented as linear lists
which got very slow when there were
a lot of overlays in a buffer.
Now they're being re-implemented as trees,
so that searching should be very fast, and
in fact, comparable to text properties.
This is already on the master branch
and (more or less) is ready for release.
Eglot has been ported into Emacs.
Eglot is an LSP [Language Server Protocol] client for Emacs,
one of the two that are often used.
But now it's going to be included in core,
so it's considered official
and will be well integrated with other Emacs features.
There's going to be a Tree-sitter library.
Tree-sitter is a way of building fast incremental parsers.
There's a website on Tree-sitter if you Google for that.
This can be used for various features,
but first and foremost, it'll be used
for fontification and indentation in Emacs.
Instead of heuristics and regular expressions,
you can now build your fontifications
based on a parse tree.
There's a branch now that supports this
for several modes already, like Python, TypeScript,
and JavaScript.
We don't have anyone yet working on it for C mode
but Eli has challenged whether anyone
in the community is interested.
He would love to see Tree-sitter support added for C mode,
because this has been quite slow
when dealing with very, very large files
and Tree-sitter should help that.
There have been significant improvements
in dealing with very long lines.
This is something that has been
a long time frequent complaint.
Emacs becomes rather unusable
if you open a giant file that's a single long line.
Anyone who's ever tried to open a 30 megabyte JSON file
that's all on one line will know this pain.
Some modes, however, will have to adapt to this change,
because sometimes access to the whole buffer
is now forcefully restricted.
If the mode requires access to the entire buffer
at all times to work, then the developer of that mode
will need to devise some simplifications
so that they don't require that complete access.
For example, if a mode used to go way back
to the beginning of the buffer
in order to determine if there's an unbalanced parenthesis,
this won't work in the new long lines support mode,
because the entire buffer is not always available.
Emacs is sort of doing some
restricting of the buffer heuristically
in order to keep the visible range working
very, very quickly now.
Emacs can now build directly with SQLite.
This means that SQLite databases
can be directly accessible from Emacs.
Should be nice for anyone whose mode wants to
cache or store some queryable data.
The XInput extension is now up to version 2.
There are many extensions in this specification.
From the user's point of view,
it enables things like smooth scrolling and touch devices.
Emacs will now use this by default on all systems
where the library is installed.
It should be on every modern system that uses X.
There's also a pure GTK build in Emacs 29.
The purpose of this is to allow Emacs
on systems without X, such as Wayland or Broadway,
to be able to have a graphical build of Emacs.
There's also lots of improvements to drag and drop
on X systems, for people who like drag and drop.
And there's support for double buffering on Microsoft Windows.
The last of the headline features
coming for Emacs 29 is emoji input.
So there will now be a prefix key,
C-x 8 e for emoji input,
along with several new commands to insert emoji
by various forms of shorthand.
There will even be an input method
where you can write the plain English names of emojis
and have the symbol inserted.
So that rounds out some of the features
coming up for Emacs 29.
Sounds like an exciting release
and it should be headed your way soon.
I hope everybody has fun at the conference
and enjoy yourselves.