summaryrefslogtreecommitdiffstats
path: root/2022/captions/emacsconf-2022-devel--emacs-development-updates--john-wiegley--main.vtt
blob: a55331b23df84173d5dc335d9cac1133a1b79d87 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
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.