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.