WEBVTT
1
00:00:00.000 --> 00:00:05.320
Hello, it's time for another Emacs development update.
2
00:00:05.320 --> 00:00:07.800
I want to thank the organizers of EmacsConf
3
00:00:07.800 --> 00:00:10.160
for putting this together
4
00:00:10.160 --> 00:00:12.280
and also the maintainers of Emacs
5
00:00:12.280 --> 00:00:14.240
with a special thanks to Eli Zaretskii.
6
00:00:14.240 --> 00:00:16.560
It's really he who gave me this information
7
00:00:16.560 --> 00:00:19.320
so that I could pass it along to you.
8
00:00:19.320 --> 00:00:21.720
The main thing to discuss this time
9
00:00:21.720 --> 00:00:25.880
with regard to what's been going on with Emacs is Emacs 29.
10
00:00:25.880 --> 00:00:29.840
The release cycle for Emacs 29 should begin in December
11
00:00:29.840 --> 00:00:32.720
when a branch will be cut and the release work will start.
12
00:00:32.720 --> 00:00:36.640
We should be seeing Emacs 29 coming out fairly soon.
13
00:00:36.640 --> 00:00:38.120
Here's just a brief overview
14
00:00:38.120 --> 00:00:39.680
of some of the things to look forward to
15
00:00:39.680 --> 00:00:42.400
coming up in Emacs 29.
16
00:00:42.400 --> 00:00:45.680
Overlays have been re-implemented.
17
00:00:45.680 --> 00:00:47.240
If you haven't used them before,
18
00:00:47.240 --> 00:00:51.040
overlays are a way to apply a set of properties
19
00:00:51.040 --> 00:00:53.680
over a range of text so that
20
00:00:53.680 --> 00:00:55.840
you can have things like mouse clicks
21
00:00:55.840 --> 00:00:57.920
take on different behavior
22
00:00:57.920 --> 00:00:59.520
depending on where it happens in the text.
23
00:00:59.520 --> 00:01:01.720
This is different than text properties
24
00:01:01.720 --> 00:01:04.080
which associate the properties with the text itself.
25
00:01:04.080 --> 00:01:07.200
Overlays do not alter the text in any way
26
00:01:07.200 --> 00:01:09.320
and they simply, as the name suggests,
27
00:01:09.320 --> 00:01:10.920
overlay on the buffer.
28
00:01:10.920 --> 00:01:14.040
Now previously, overlays were implemented as linear lists
29
00:01:14.040 --> 00:01:15.800
which got very slow when there were
30
00:01:15.800 --> 00:01:17.840
a lot of overlays in a buffer.
31
00:01:17.840 --> 00:01:19.880
Now they're being re-implemented as trees,
32
00:01:19.880 --> 00:01:21.880
so that searching should be very fast, and
33
00:01:21.880 --> 00:01:24.400
in fact, comparable to text properties.
34
00:01:24.400 --> 00:01:26.520
This is already on the master branch
35
00:01:26.520 --> 00:01:29.080
and (more or less) is ready for release.
36
00:01:29.080 --> 00:01:32.200
Eglot has been ported into Emacs.
37
00:01:32.200 --> 00:01:35.560
Eglot is an LSP [Language Server Protocol] client for Emacs,
38
00:01:35.560 --> 00:01:38.480
one of the two that are often used.
39
00:01:38.480 --> 00:01:40.840
But now it's going to be included in core,
40
00:01:40.840 --> 00:01:42.800
so it's considered official
41
00:01:42.800 --> 00:01:46.480
and will be well integrated with other Emacs features.
42
00:01:46.480 --> 00:01:48.720
There's going to be a Tree-sitter library.
43
00:01:48.720 --> 00:01:53.200
Tree-sitter is a way of building fast incremental parsers.
44
00:01:53.200 --> 00:01:56.040
There's a website on Tree-sitter if you Google for that.
45
00:01:56.040 --> 00:01:57.760
This can be used for various features,
46
00:01:57.760 --> 00:01:59.760
but first and foremost, it'll be used
47
00:01:59.760 --> 00:02:02.920
for fontification and indentation in Emacs.
48
00:02:02.920 --> 00:02:05.600
Instead of heuristics and regular expressions,
49
00:02:05.600 --> 00:02:07.400
you can now build your fontifications
50
00:02:07.400 --> 00:02:08.720
based on a parse tree.
51
00:02:08.720 --> 00:02:10.640
There's a branch now that supports this
52
00:02:10.640 --> 00:02:13.600
for several modes already, like Python, TypeScript,
53
00:02:13.600 --> 00:02:15.080
and JavaScript.
54
00:02:15.080 --> 00:02:18.160
We don't have anyone yet working on it for C mode
55
00:02:18.160 --> 00:02:20.480
but Eli has challenged whether anyone
56
00:02:20.480 --> 00:02:21.960
in the community is interested.
57
00:02:21.960 --> 00:02:25.960
He would love to see Tree-sitter support added for C mode,
58
00:02:25.960 --> 00:02:27.880
because this has been quite slow
59
00:02:27.880 --> 00:02:29.640
when dealing with very, very large files
60
00:02:29.640 --> 00:02:30.840
and Tree-sitter should help that.
61
00:02:30.840 --> 00:02:34.320
There have been significant improvements
62
00:02:34.320 --> 00:02:36.560
in dealing with very long lines.
63
00:02:36.560 --> 00:02:38.160
This is something that has been
64
00:02:38.160 --> 00:02:40.480
a long time frequent complaint.
65
00:02:40.480 --> 00:02:42.840
Emacs becomes rather unusable
66
00:02:42.840 --> 00:02:45.560
if you open a giant file that's a single long line.
67
00:02:45.560 --> 00:02:49.560
Anyone who's ever tried to open a 30 megabyte JSON file
68
00:02:49.560 --> 00:02:52.200
that's all on one line will know this pain.
69
00:02:52.200 --> 00:02:55.960
Some modes, however, will have to adapt to this change,
70
00:02:55.960 --> 00:02:58.320
because sometimes access to the whole buffer
71
00:02:58.320 --> 00:03:00.480
is now forcefully restricted.
72
00:03:00.480 --> 00:03:04.400
If the mode requires access to the entire buffer
73
00:03:04.400 --> 00:03:07.960
at all times to work, then the developer of that mode
74
00:03:07.960 --> 00:03:10.240
will need to devise some simplifications
75
00:03:10.240 --> 00:03:13.160
so that they don't require that complete access.
76
00:03:13.160 --> 00:03:15.760
For example, if a mode used to go way back
77
00:03:15.760 --> 00:03:16.880
to the beginning of the buffer
78
00:03:16.880 --> 00:03:19.520
in order to determine if there's an unbalanced parenthesis,
79
00:03:19.520 --> 00:03:23.160
this won't work in the new long lines support mode,
80
00:03:23.160 --> 00:03:25.640
because the entire buffer is not always available.
81
00:03:25.640 --> 00:03:27.680
Emacs is sort of doing some
82
00:03:27.680 --> 00:03:29.920
restricting of the buffer heuristically
83
00:03:29.920 --> 00:03:32.200
in order to keep the visible range working
84
00:03:32.200 --> 00:03:35.240
very, very quickly now.
85
00:03:35.240 --> 00:03:39.040
Emacs can now build directly with SQLite.
86
00:03:39.040 --> 00:03:42.360
This means that SQLite databases
87
00:03:42.360 --> 00:03:44.840
can be directly accessible from Emacs.
88
00:03:44.840 --> 00:03:47.360
Should be nice for anyone whose mode wants to
89
00:03:47.360 --> 00:03:50.080
cache or store some queryable data.
90
00:03:50.080 --> 00:03:54.960
The XInput extension is now up to version 2.
91
00:03:54.960 --> 00:03:58.160
There are many extensions in this specification.
92
00:03:58.160 --> 00:03:59.600
From the user's point of view,
93
00:03:59.600 --> 00:04:02.920
it enables things like smooth scrolling and touch devices.
94
00:04:02.920 --> 00:04:06.320
Emacs will now use this by default on all systems
95
00:04:06.320 --> 00:04:08.360
where the library is installed.
96
00:04:08.360 --> 00:04:11.320
It should be on every modern system that uses X.
97
00:04:11.320 --> 00:04:15.560
There's also a pure GTK build in Emacs 29.
98
00:04:15.560 --> 00:04:17.560
The purpose of this is to allow Emacs
99
00:04:17.560 --> 00:04:21.160
on systems without X, such as Wayland or Broadway,
100
00:04:21.160 --> 00:04:24.640
to be able to have a graphical build of Emacs.
101
00:04:24.640 --> 00:04:27.280
There's also lots of improvements to drag and drop
102
00:04:27.280 --> 00:04:31.400
on X systems, for people who like drag and drop.
103
00:04:31.400 --> 00:04:35.240
And there's support for double buffering on Microsoft Windows.
104
00:04:35.240 --> 00:04:38.480
The last of the headline features
105
00:04:38.480 --> 00:04:41.640
coming for Emacs 29 is emoji input.
106
00:04:41.640 --> 00:04:43.520
So there will now be a prefix key,
107
00:04:43.520 --> 00:04:47.320
C-x 8 e for emoji input,
108
00:04:47.320 --> 00:04:50.240
along with several new commands to insert emoji
109
00:04:50.240 --> 00:04:52.480
by various forms of shorthand.
110
00:04:52.480 --> 00:04:54.360
There will even be an input method
111
00:04:54.360 --> 00:04:57.600
where you can write the plain English names of emojis
112
00:04:57.600 --> 00:05:00.080
and have the symbol inserted.
113
00:05:00.080 --> 00:05:02.160
So that rounds out some of the features
114
00:05:02.160 --> 00:05:03.680
coming up for Emacs 29.
115
00:05:03.680 --> 00:05:05.680
Sounds like an exciting release
116
00:05:05.680 --> 00:05:07.360
and it should be headed your way soon.
117
00:05:07.360 --> 00:05:09.880
I hope everybody has fun at the conference
118
00:05:09.880 --> 00:05:15.280
and enjoy yourselves.