summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2025-01-03 17:18:02 -0500
committerSacha Chua <sacha@sachachua.com>2025-01-03 17:18:02 -0500
commit14466fa0c902ff1e862f32d0c77d379c4b01b95e (patch)
treea07f72ce41507979fb6f264e95d89675a48f0320
parent728c4f3dda48b2d52406df4df68f44616336569e (diff)
downloademacsconf-wiki-14466fa0c902ff1e862f32d0c77d379c4b01b95e.tar.xz
emacsconf-wiki-14466fa0c902ff1e862f32d0c77d379c4b01b95e.zip
okay now I think the emacs30 timing works
-rw-r--r--2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt26
-rw-r--r--2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt611
-rw-r--r--2024/info/emacs30-after.md495
-rw-r--r--2024/info/emacs30-before.md22
4 files changed, 575 insertions, 579 deletions
diff --git a/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt b/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt
index ef5e4c27..0cd0a327 100644
--- a/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt
+++ b/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt
@@ -1,35 +1,23 @@
WEBVTT
-00:00:00.000 --> 00:01:41.759
-Introduction
-
-00:01:41.760 --> 00:07:43.679
-Android
-
-00:07:43.680 --> 00:09:38.439
-EditorConfig
-
-00:09:38.440 --> 00:13:22.859
-use-package integration with package-vc
-
-00:13:22.860 --> 00:15:56.799
+00:13:11.400 --> 00:15:56.839
JSON
-00:15:56.800 --> 00:17:29.579
+00:15:56.840 --> 00:17:30.719
Native compilation
-00:17:29.580 --> 00:18:16.679
+00:17:30.720 --> 00:18:16.819
Tree-sitter
-00:18:16.680 --> 00:19:33.239
+00:18:16.820 --> 00:19:34.219
Completion preview mode
-00:19:33.240 --> 00:21:15.959
+00:19:34.220 --> 00:21:16.779
package-isolate
-00:21:15.960 --> 00:23:18.279
+00:21:16.780 --> 00:23:17.879
Reindenting
-00:23:18.280 --> 00:24:43.680
+00:23:17.880 --> 00:24:43.120
Wrapping up
diff --git a/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt b/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt
index fba04b0a..59d31db8 100644
--- a/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt
+++ b/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt
@@ -47,19 +47,19 @@ This year, I will specifically focus on
00:00:38.520 --> 00:00:41.919
highlight features from the upcoming Emacs 30 release,
-00:00:41.920 --> 00:00:45.879
+00:00:41.920 --> 00:00:43.919
which might or might not have been released
-00:00:45.880 --> 00:00:48.079
+00:00:43.920 --> 00:00:48.079
by the time you are seeing this.
00:00:48.080 --> 00:00:51.079
As you can imagine, everything new about Emacs
-00:00:51.080 --> 00:00:55.519
+00:00:51.080 --> 00:00:55.059
can always be found in the Emacs NEWS file.
-00:00:55.520 --> 00:00:57.079
+00:00:55.060 --> 00:00:57.079
Or, alternatively,
00:00:57.080 --> 00:01:01.919
@@ -71,19 +71,19 @@ one can also take a look at the Emacs FAQ
00:01:05.280 --> 00:01:07.999
and then go to the what's new about
-00:01:08.000 --> 00:01:10.079
+00:01:08.000 --> 00:01:12.219
or what's different about Emacs 30 node.
-00:01:10.080 --> 00:01:14.759
+00:01:12.220 --> 00:01:14.759
Next to these two official options,
00:01:14.760 --> 00:01:18.599
I also have a page on Emacs Wiki
-00:01:18.600 --> 00:01:20.439
+00:01:18.600 --> 00:01:21.439
called EmacsThirtyHighlights,
-00:01:20.440 --> 00:01:24.279
+00:01:21.440 --> 00:01:24.279
highlighting some of the interesting features
00:01:24.280 --> 00:01:28.439
@@ -127,10 +127,10 @@ you can build Android to target Android devices natively
00:02:01.280 --> 00:02:06.759
and using a graphical interface.
-00:02:06.760 --> 00:02:08.399
+00:02:06.760 --> 00:02:08.799
While it has been possible to run Emacs
-00:02:08.400 --> 00:02:11.159
+00:02:08.800 --> 00:02:11.159
inside of terminal emulators on Android for a while,
00:02:11.160 --> 00:02:13.919
@@ -205,10 +205,10 @@ With an external mouse, and for example,
00:03:15.240 --> 00:03:17.799
enabling context menu mode,
-00:03:17.800 --> 00:03:23.079
+00:03:17.800 --> 00:03:22.679
I can even pop up little interaction windows,
-00:03:23.080 --> 00:03:27.239
+00:03:22.680 --> 00:03:27.239
which one you would usually also know from GUI Emacs.
00:03:27.240 --> 00:03:32.959
@@ -256,10 +256,10 @@ such as Wayland and Xorg, which are not operating systems,
00:04:12.280 --> 00:04:15.279
and Windows, insofar as they have touchscreen,
-00:04:15.280 --> 00:04:17.319
+00:04:15.280 --> 00:04:18.419
and devices have touchscreen support.
-00:04:17.320 --> 00:04:21.239
+00:04:18.420 --> 00:04:21.239
One should mention, or I want to mention,
00:04:21.240 --> 00:04:24.039
@@ -268,10 +268,10 @@ that the main developer behind this feature, Po Lu,
00:04:24.040 --> 00:04:27.319
should be complimented for the additional effort he put
-00:04:27.320 --> 00:04:29.759
+00:04:27.320 --> 00:04:30.979
into making sure that Emacs for Android
-00:04:29.760 --> 00:04:33.719
+00:04:30.980 --> 00:04:33.719
can be built using only a free software toolchain,
00:04:33.720 --> 00:04:36.999
@@ -304,10 +304,10 @@ Emacs 30 Android Sourceforge...
00:05:02.400 --> 00:05:06.759
He has set up some system where here in Sourceforge,
-00:05:06.760 --> 00:05:10.159
+00:05:06.760 --> 00:05:12.799
there are regular and updated
-00:05:10.160 --> 00:05:14.519
+00:05:12.800 --> 00:05:14.519
APK files which you can download
00:05:14.520 --> 00:05:17.039
@@ -316,10 +316,10 @@ to avoid having to build it yourself,
00:05:17.040 --> 00:05:18.559
testing out the newest version
-00:05:18.560 --> 00:05:30.639
+00:05:18.560 --> 00:05:27.619
in case there are some bugs which you'd like to report.
-00:05:30.640 --> 00:05:33.119
+00:05:27.620 --> 00:05:33.119
Which-key is a package which has now been moved
00:05:33.120 --> 00:05:34.719
@@ -337,10 +337,10 @@ is a additional documentation interface for Emacs
00:05:45.280 --> 00:05:49.639
for displaying various keys which you could input,
-00:05:49.640 --> 00:05:52.679
+00:05:49.640 --> 00:05:53.479
or various keys and key maps
-00:05:52.680 --> 00:05:55.479
+00:05:53.480 --> 00:05:55.479
that have been partially inputted.
00:05:55.480 --> 00:05:57.639
@@ -403,10 +403,10 @@ The information is the same, the presentation is different,
00:06:56.640 --> 00:06:59.159
because now if I wanted to do C-x i,
-00:06:59.160 --> 00:07:02.159
+00:06:59.160 --> 00:07:03.319
I have to repeat the entire keychord again.
-00:07:02.160 --> 00:07:09.479
+00:07:03.320 --> 00:07:09.479
So it's a matter of personal preference, which you prefer.
00:07:09.480 --> 00:07:12.519
@@ -421,39 +421,39 @@ using usual key commands,
00:07:21.120 --> 00:07:28.159
while which-key is more of a transient and modern.
-00:07:28.160 --> 00:07:30.119
+00:07:28.160 --> 00:07:31.299
Some might prefer that approach
-00:07:30.120 --> 00:07:33.079
+00:07:31.300 --> 00:07:35.519
to solving the same problem.
-00:07:33.080 --> 00:07:39.119
+00:07:35.520 --> 00:07:39.119
Also, don't forget to check out the customization group
00:07:39.120 --> 00:07:41.959
for which-key which has a number of options
-00:07:41.960 --> 00:07:43.679
+00:07:41.960 --> 00:07:44.699
which you might or might not be interested in.
NOTE EditorConfig
-00:07:43.680 --> 00:07:50.879
+00:07:44.700 --> 00:07:50.879
Next up, Emacs 30 has built-in EditorConfig support.
00:07:50.880 --> 00:07:53.679
If you have not heard of EditorConfig before,
-00:07:53.680 --> 00:07:57.319
+00:07:53.680 --> 00:07:56.379
I believe I've linked to it down here somewhere.
-00:07:57.320 --> 00:08:02.239
+00:07:56.380 --> 00:08:00.160
Ah, there it is, EditorConfig.
-00:08:02.240 --> 00:08:06.519
+00:08:00.161 --> 00:08:05.260
This is a file format used to specify
-00:08:06.520 --> 00:08:11.959
+00:08:05.261 --> 00:08:11.959
common formatting rules in an editor-agnostic way.
00:08:11.960 --> 00:08:16.319
@@ -465,25 +465,25 @@ which is a sort of an s-expression
00:08:19.160 --> 00:08:22.159
for setting file-local variables in Emacs.
-00:08:22.160 --> 00:08:25.639
+00:08:22.160 --> 00:08:26.559
Of course, this is restricted to the common subset
-00:08:25.640 --> 00:08:28.559
+00:08:26.560 --> 00:08:29.299
of what all editors should understand.
-00:08:28.560 --> 00:08:31.839
+00:08:29.300 --> 00:08:31.839
For example, indentation styles,
-00:08:31.840 --> 00:08:34.239
+00:08:31.840 --> 00:08:36.699
whether you prefer tabs or spaces,
-00:08:34.240 --> 00:08:38.759
+00:08:36.700 --> 00:08:38.759
tab width, file encoding, and so on.
-00:08:38.760 --> 00:08:42.559
+00:08:38.760 --> 00:08:43.959
So it's nothing too advanced, but it's something...
-00:08:42.560 --> 00:08:48.559
+00:08:43.960 --> 00:08:48.559
It is a file format which one sees popping up more
00:08:48.560 --> 00:08:50.439
@@ -498,13 +498,13 @@ or formatting rules for all editors in a project.
00:08:56.640 --> 00:09:00.159
Having this built in is certainly useful in Emacs.
-00:09:00.160 --> 00:09:04.439
+00:09:00.160 --> 00:09:03.579
Though one should note that it's not enabled by default.
-00:09:04.440 --> 00:09:09.079
+00:09:03.580 --> 00:09:11.039
You still have to enable the global minor mode,
-00:09:09.080 --> 00:09:14.239
+00:09:11.040 --> 00:09:14.239
which is simply turning on this one option.
00:09:14.240 --> 00:09:15.599
@@ -513,559 +513,568 @@ Shouldn't be more than that,
00:09:15.600 --> 00:09:18.759
and then Emacs will respect the rules.
-00:09:18.760 --> 00:09:31.399
+00:09:18.760 --> 00:09:22.999
If it finds a .editorconfig file in the project directory,
-00:09:31.400 --> 00:09:35.839
+00:09:23.000 --> 00:09:25.319
then it will respect those rules
-00:09:35.840 --> 00:09:38.439
+00:09:25.320 --> 00:09:30.239
without having to do anything else.
NOTE use-package integration with package-vc
-00:09:38.440 --> 00:09:45.039
+00:09:30.240 --> 00:09:34.599
Next up, use-package integration with package-vc.
-00:09:45.040 --> 00:09:48.039
+00:09:34.600 --> 00:09:36.519
For those not familiar with either of the two,
-00:09:48.040 --> 00:09:49.519
+00:09:36.520 --> 00:09:38.119
or at least one of the two,
-00:09:49.520 --> 00:09:52.159
+00:09:38.120 --> 00:09:41.079
use-package is a popular configuration macro.
-00:09:52.160 --> 00:09:54.399
+00:09:41.080 --> 00:09:43.119
What it does is it allows
-00:09:54.400 --> 00:09:56.959
+00:09:43.120 --> 00:09:46.274
users to declaratively specify packages
-00:09:56.960 --> 00:10:00.399
+00:09:46.275 --> 00:09:48.879
they would like to have installed and configured
-00:10:00.400 --> 00:10:01.759
+00:09:48.880 --> 00:09:51.539
in their configuration file,
-00:10:01.760 --> 00:10:05.879
+00:09:51.540 --> 00:09:54.359
so that, for example, if you copy your init.el
-00:10:05.880 --> 00:10:07.399
+00:09:54.360 --> 00:09:55.959
from one system to another,
-00:10:07.400 --> 00:10:09.959
+00:09:55.960 --> 00:09:58.519
it could bootstrap the entire configuration,
-00:10:09.960 --> 00:10:12.199
+00:09:58.520 --> 00:10:00.719
downloading all the packages you want
-00:10:12.200 --> 00:10:13.759
+00:10:00.720 --> 00:10:02.239
without having to manually do this
-00:10:13.760 --> 00:10:15.599
+00:10:02.240 --> 00:10:05.039
on every system you'd like to use.
-00:10:15.600 --> 00:10:19.119
+00:10:05.040 --> 00:10:07.559
This allows configurations
-00:10:19.120 --> 00:10:21.319
+00:10:07.560 --> 00:10:11.039
to be self-encapsulated and portable.
-00:10:21.320 --> 00:10:27.039
+00:10:11.040 --> 00:10:15.959
package-vc is an extension of package.el,
-00:10:27.040 --> 00:10:30.919
+00:10:15.960 --> 00:10:19.679
which allows installing packages from an alternative.
-00:10:30.920 --> 00:10:33.759
+00:10:19.680 --> 00:10:22.279
Instead of using the standard way to install packages,
-00:10:33.760 --> 00:10:37.039
+00:10:22.280 --> 00:10:26.239
which is just download tarball and unpack it,
-00:10:37.040 --> 00:10:39.479
+00:10:26.240 --> 00:10:28.359
byte compile, and so on,
-00:10:39.480 --> 00:10:44.119
+00:10:28.360 --> 00:10:32.759
it will fetch the files for a package
-00:10:44.120 --> 00:10:46.519
+00:10:32.760 --> 00:10:35.279
directly from the source code repository
-00:10:46.520 --> 00:10:48.679
+00:10:35.280 --> 00:10:37.239
and initialize it in such a way
-00:10:48.680 --> 00:10:50.319
+00:10:37.240 --> 00:10:39.119
that package.el can work with it.
-00:10:50.320 --> 00:10:54.239
+00:10:39.120 --> 00:10:44.319
So it's just a front-end for installing packages.
-00:10:54.240 --> 00:10:57.999
+00:10:44.320 --> 00:10:46.519
Even though these two were added to Emacs 29,
-00:10:58.000 --> 00:10:59.919
+00:10:46.520 --> 00:10:48.399
we didn't have the time to work on the
-00:10:59.920 --> 00:11:04.159
+00:10:48.400 --> 00:10:52.639
use-package integration of package-vc into use-package,
-00:11:04.160 --> 00:11:06.079
+00:10:52.640 --> 00:10:55.359
which has been changed now.
-00:11:06.080 --> 00:11:10.039
+00:10:55.360 --> 00:11:00.119
What we have with Emacs 30 is that
-00:11:10.040 --> 00:11:14.599
+00:11:00.120 --> 00:11:02.839
there is a :vc keyword for use-package
-00:11:14.600 --> 00:11:16.919
+00:11:02.840 --> 00:11:05.319
with which we can instruct use-package
-00:11:16.920 --> 00:11:20.599
+00:11:05.320 --> 00:11:10.760
to not download a package using tarball,
-00:11:20.600 --> 00:11:23.959
+00:11:10.774 --> 00:11:12.519
but instead to fetch the source code
-00:11:23.960 --> 00:11:25.279
+00:11:12.520 --> 00:11:13.799
from a source code repository.
-00:11:25.280 --> 00:11:27.079
+00:11:13.800 --> 00:11:15.919
This is useful if you, for example,
-00:11:27.080 --> 00:11:29.759
+00:11:15.920 --> 00:11:18.319
have packages which you yourself work on
-00:11:29.760 --> 00:11:31.439
+00:11:18.320 --> 00:11:19.959
and know that you always want to have
-00:11:31.440 --> 00:11:33.399
+00:11:19.960 --> 00:11:21.919
the development version of the package
-00:11:33.400 --> 00:11:37.359
+00:11:21.920 --> 00:11:26.639
where you can directly commit changes you've made
-00:11:37.360 --> 00:11:40.399
+00:11:26.640 --> 00:11:29.159
to the repository and push them upstream.
-00:11:40.400 --> 00:11:43.919
+00:11:29.160 --> 00:11:32.399
Or, if you know that you want to contribute to a package,
-00:11:43.920 --> 00:11:46.479
+00:11:32.400 --> 00:11:35.559
you can use package-vc to download the source code,
-00:11:46.480 --> 00:11:48.879
+00:11:35.560 --> 00:11:37.319
have all the version control information,
-00:11:48.880 --> 00:11:50.559
+00:11:37.320 --> 00:11:41.759
prepare a patch and send it upstream.
-00:11:50.560 --> 00:11:54.799
+00:11:41.760 --> 00:11:44.119
In these examples here,
-00:11:54.800 --> 00:12:00.679
+00:11:44.120 --> 00:11:49.119
the first example Lisp instructs package-vc
-00:12:00.680 --> 00:12:03.879
+00:11:49.120 --> 00:11:52.959
to download the source code from a URL.
-00:12:03.880 --> 00:12:06.919
+00:11:52.960 --> 00:11:55.119
So this is a git URL where it will download
-00:12:06.920 --> 00:12:08.919
+00:11:55.120 --> 00:11:57.399
the source code from, and in this case,
-00:12:08.920 --> 00:12:11.839
+00:11:57.400 --> 00:12:00.399
choose the newest checkout of the source code,
-00:12:11.840 --> 00:12:15.799
+00:12:00.400 --> 00:12:05.680
not the latest release. Down here, we have another example.
-00:12:15.800 --> 00:12:20.319
+00:12:05.060 --> 00:12:09.159
I prefer to consider the following example here.
-00:12:20.320 --> 00:12:22.399
+00:12:09.160 --> 00:12:10.879
If we just had written this,
-00:12:22.400 --> 00:12:24.719
+00:12:10.880 --> 00:12:13.159
then package-vc would use the metadata
-00:12:24.720 --> 00:12:26.959
+00:12:13.160 --> 00:12:16.279
which an ELPA server provides
-00:12:26.960 --> 00:12:31.719
+00:12:16.280 --> 00:12:19.799
to fetch the URL from the official repository of,
-00:12:31.720 --> 00:12:34.319
+00:12:19.800 --> 00:12:22.839
in this case, BBDB, without having to...
-00:12:34.320 --> 00:12:39.239
+00:12:22.840 --> 00:12:28.239
It would be more or less the same like this up here,
-00:12:39.240 --> 00:12:44.199
+00:12:28.240 --> 00:12:32.639
with the simple difference that package-vc integration
-00:12:44.200 --> 00:12:47.839
+00:12:32.640 --> 00:12:36.359
into use-package doesn't check out the latest commit,
-00:12:47.840 --> 00:12:49.319
+00:12:36.360 --> 00:12:38.359
but the latest release,
-00:12:49.320 --> 00:12:54.519
+00:12:38.360 --> 00:12:44.159
just to keep configurations more deterministic by default.
-00:12:54.520 --> 00:12:59.399
+00:12:44.160 --> 00:12:47.879
Of course, if you prefer to use latest commit,
-00:12:59.400 --> 00:13:01.799
+00:12:47.880 --> 00:12:52.439
you can use a package-vc install command
-00:13:01.800 --> 00:13:06.279
+00:12:52.440 --> 00:12:54.879
or just update the package manually yourself,
-00:13:06.280 --> 00:13:13.059
+00:12:54.880 --> 00:13:01.739
which you can use using package-vc-upgrade.
-00:13:13.060 --> 00:13:15.879
+00:13:01.740 --> 00:13:04.319
Next, I'd like to focus on a few features
-00:13:15.880 --> 00:13:18.919
+00:13:04.320 --> 00:13:07.740
which one might not necessarily realize directly,
-00:13:18.920 --> 00:13:22.859
+00:13:07.741 --> 00:13:11.399
but will hopefully improve your experience with Emacs.
NOTE JSON
-00:13:22.860 --> 00:13:26.639
+00:13:11.400 --> 00:13:15.119
First up in this list is a new JSON parser.
-00:13:26.640 --> 00:13:29.759
+00:13:15.120 --> 00:13:21.399
Let's maybe show the source code for that one:
-00:13:29.760 --> 00:13:51.039
+00:13:21.400 --> 00:13:39.319
not json.el, json.c. The history of JSON parsing in Emacs
-00:13:51.040 --> 00:13:54.879
+00:13:39.320 --> 00:13:43.279
started with Emacs 23 with the addition of json.el.
-00:13:54.880 --> 00:13:58.239
+00:13:43.280 --> 00:13:46.919
This was the file which we had just opened a moment ago.
-00:13:58.240 --> 00:14:02.319
+00:13:46.920 --> 00:13:50.959
This is a JSON parser in Emacs Lisp.
-00:14:02.320 --> 00:14:04.759
+00:13:50.960 --> 00:13:53.199
It's fine, it does the job, but it can get slow
-00:14:04.760 --> 00:14:06.519
+00:13:53.200 --> 00:13:55.479
if we have a situation like where
-00:14:06.520 --> 00:14:11.239
+00:13:55.480 --> 00:14:00.479
Eglot uses a LSP server to communicate with
-00:14:11.240 --> 00:14:14.039
+00:14:00.480 --> 00:14:02.959
and the LSP server can get a bit chatty,
-00:14:14.040 --> 00:14:17.039
+00:14:02.960 --> 00:14:05.479
sending a lot of JSON data,
-00:14:17.040 --> 00:14:19.599
+00:14:05.480 --> 00:14:08.199
which all has to be parsed and garbage collected,
-00:14:19.600 --> 00:14:21.439
+00:14:08.200 --> 00:14:10.199
which can slow down Emacs a bit.
-00:14:21.440 --> 00:14:25.279
+00:14:10.200 --> 00:14:14.119
The situation was improved upon in Emacs 29
-00:14:25.280 --> 00:14:29.479
+00:14:14.120 --> 00:14:17.959
when JSON parsing was added to the core.
-00:14:29.480 --> 00:14:32.679
+00:14:17.960 --> 00:14:21.039
This was the json.c file, which we see on this side,
-00:14:32.680 --> 00:14:34.279
+00:14:21.040 --> 00:14:23.279
the old version of the json.c file,
-00:14:34.280 --> 00:14:38.279
+00:14:23.280 --> 00:14:27.119
which employed the Jansson library (it's the C library)
-00:14:38.280 --> 00:14:42.479
+00:14:27.120 --> 00:14:33.159
for parsing and accelerating JSON parsing in Emacs.
-00:14:42.480 --> 00:14:45.479
+00:14:33.160 --> 00:14:33.999
This was good enough,
-00:14:45.480 --> 00:14:47.719
+00:14:34.000 --> 00:14:36.159
or it certainly improved the situation
-00:14:47.720 --> 00:14:50.039
+00:14:36.160 --> 00:14:38.559
for a lot of LSP clients.
-00:14:50.040 --> 00:14:53.239
+00:14:38.560 --> 00:14:45.479
But in Emacs 30, the situation has been improved once more
-00:14:53.240 --> 00:15:01.174
+00:14:45.480 --> 00:14:50.359
with the addition of a JSON parser directly in Emacs.
-00:15:01.175 --> 00:15:03.874
+00:14:50.360 --> 00:14:52.999
So instead of using an external library,
-00:15:03.875 --> 00:15:08.879
+00:14:53.000 --> 00:14:57.719
there's a custom JSON parser written in C in the Emacs core,
-00:15:08.880 --> 00:15:12.240
+00:14:57.720 --> 00:15:01.559
which directly generates Elisp objects.
-00:15:12.241 --> 00:15:16.574
+00:15:01.560 --> 00:15:04.999
The advantage to this approach
-00:15:16.575 --> 00:15:18.007
+00:15:05.000 --> 00:15:06.359
compared to the Jansson approach
-00:15:18.008 --> 00:15:19.439
+00:15:06.360 --> 00:15:07.919
is that there's no intermediate format
-00:15:19.440 --> 00:15:20.879
+00:15:07.920 --> 00:15:09.199
which has to be allocated
-00:15:20.880 --> 00:15:23.159
+00:15:09.200 --> 00:15:11.559
and memory managed and freed again,
-00:15:23.160 --> 00:15:30.240
+00:15:11.560 --> 00:15:19.479
which of course incurs an additional performance overhead.
-00:15:30.241 --> 00:15:35.639
-There is absolutely no dependency on Jansson anymore.
+00:15:19.480 --> 00:15:22.659
+Next to this, there's also a custom serializer
-00:15:35.640 --> 00:15:38.599
+00:15:22.660 --> 00:15:27.119
+for JSON contents translating a JSON object into a string.
+
+00:15:27.120 --> 00:15:30.279
+... The consequence of this is that
+
+00:15:30.280 --> 00:15:35.600
+there is absolutely no dependency on Jansson anymore.
+
+00:15:35.640 --> 00:15:38.559
This in turn means that now all Emacs users
-00:15:38.600 --> 00:15:39.720
+00:15:38.560 --> 00:15:39.799
from Emacs 30 onwards
-00:15:39.760 --> 00:15:42.639
+00:15:39.800 --> 00:15:43.119
can take advantage of this new JSON parser
-00:15:42.640 --> 00:15:44.839
+00:15:43.120 --> 00:15:44.879
and don't have to worry about whether
-00:15:44.840 --> 00:15:47.759
+00:15:44.880 --> 00:15:47.799
or not they have Jansson, this JSON parsing library,
-00:15:47.760 --> 00:15:50.999
+00:15:47.800 --> 00:15:50.999
installed on their system or not when they want
-00:15:51.000 --> 00:15:56.799
+00:15:51.000 --> 00:15:56.839
to take advantage of this accelerated JSON parsing.
NOTE Native compilation
-00:15:56.800 --> 00:16:00.279
+00:15:56.840 --> 00:16:00.639
Next up, another behind-the-scenes feature
-00:16:00.280 --> 00:16:03.959
+00:16:00.640 --> 00:16:04.559
is that if you build Emacs on your own from source,
-00:16:03.960 --> 00:16:07.759
+00:16:04.560 --> 00:16:07.879
you might know that if you wanted
-00:16:07.760 --> 00:16:09.479
+00:16:07.880 --> 00:16:09.559
to use native compilation,
-00:16:09.480 --> 00:16:13.119
+00:16:09.560 --> 00:16:12.319
so the translation of Elisp bytecodes
-00:16:13.120 --> 00:16:15.479
+00:16:12.320 --> 00:16:15.559
to whatever the native assembly
-00:16:15.480 --> 00:16:18.999
+00:16:15.560 --> 00:16:19.319
or native instruction set is on your system,
-00:16:19.000 --> 00:16:24.199
+00:16:19.320 --> 00:16:24.359
you have to specify with native compilation.
-00:16:24.200 --> 00:16:25.839
+00:16:24.360 --> 00:16:25.879
when invoking the configure script,
-00:16:25.840 --> 00:16:28.239
+00:16:25.880 --> 00:16:28.879
otherwise it would not have been enabled at all.
-00:16:28.240 --> 00:16:31.439
+00:16:28.880 --> 00:16:34.119
With Emacs 30, this step is not necessary anymore.
-00:16:31.440 --> 00:16:36.119
+00:16:34.120 --> 00:16:36.719
The configure script will automatically check
-00:16:36.120 --> 00:16:41.639
+00:16:36.720 --> 00:16:41.759
if you have the libgccjit library installed on your system,
-00:16:41.640 --> 00:16:42.759
+00:16:41.760 --> 00:16:42.879
and if that is so,
-00:16:42.760 --> 00:16:45.519
+00:16:42.880 --> 00:16:45.999
then native compilation will be enabled by default.
-00:16:45.520 --> 00:16:49.279
+00:16:46.000 --> 00:16:49.559
In other words, if you have an issue with native compilation
-00:16:49.280 --> 00:16:52.359
+00:16:49.560 --> 00:16:52.799
or prefer not to use it for whatever reason,
-00:16:52.360 --> 00:16:55.559
+00:16:52.800 --> 00:16:55.559
you now have to type --without-native-compilation
00:16:55.560 --> 00:16:58.199
when compiling Emacs to prevent this from happening.
-00:16:58.200 --> 00:17:02.239
+00:16:58.200 --> 00:17:02.279
But native compilation was added in Emacs 28
-00:17:02.240 --> 00:17:04.319
+00:17:02.280 --> 00:17:04.399
and has proven to be a very stable
-00:17:04.320 --> 00:17:06.159
+00:17:04.400 --> 00:17:06.199
and useful feature for most people,
-00:17:06.160 --> 00:17:09.359
+00:17:06.200 --> 00:17:10.199
so there's probably no reason to do this
-00:17:09.360 --> 00:17:11.199
+00:17:10.200 --> 00:17:10.939
and you can just invoke the configure script
-00:17:11.200 --> 00:17:16.239
+00:17:10.940 --> 00:17:16.239
with one argument less. Right, and I'd like to finish up
00:17:16.240 --> 00:17:19.399
with a few smaller features, a few smaller highlights.
-00:17:19.400 --> 00:17:29.579
+00:17:19.400 --> 00:17:30.719
Maybe we can go back to the listing here. Here we have it.
NOTE Tree-sitter
-00:17:29.580 --> 00:17:32.799
+00:17:30.720 --> 00:17:32.839
There are a few new major modes
-00:17:32.800 --> 00:17:34.239
+00:17:32.840 --> 00:17:34.239
based on the tree-sitter library.
-00:17:34.240 --> 00:17:37.519
+00:17:34.240 --> 00:17:37.739
tree-sitter is this parser library
-00:17:37.520 --> 00:17:42.699
+00:17:37.740 --> 00:17:42.879
which has been integrated into Emacs 29.
-00:17:42.700 --> 00:17:43.999
+00:17:42.880 --> 00:17:44.079
It allows the integration
-00:17:44.000 --> 00:17:48.359
+00:17:44.080 --> 00:17:48.359
of external, specialized, and quick parsers into Emacs,
-00:17:48.360 --> 00:17:52.039
+00:17:48.360 --> 00:17:52.119
which improve stuff like syntax highlighting, indentation,
-00:17:52.040 --> 00:17:55.159
+00:17:52.120 --> 00:17:55.279
structural navigation, imenu support,
-00:17:55.160 --> 00:18:00.839
+00:17:55.280 --> 00:18:00.839
by simply having a better understanding of, for example,
-00:18:00.840 --> 00:18:03.839
+00:18:00.840 --> 00:18:03.919
a HTML file, or a Lua file, a PHP file,
-00:18:03.840 --> 00:18:06.239
+00:18:03.920 --> 00:18:06.239
than what people usually implement
00:18:06.240 --> 00:18:10.319
using regular expressions in traditional major modes.
-00:18:10.320 --> 00:18:16.679
+00:18:10.320 --> 00:18:16.819
So, a few new major modes which you can try out here.
NOTE Completion preview mode
-00:18:16.680 --> 00:18:19.959
+00:18:16.820 --> 00:18:19.959
Another interesting feature is the completion-preview-mode.
-00:18:19.960 --> 00:18:23.079
+00:18:19.960 --> 00:18:23.319
We can maybe try it out here in the scratch buffer.
-00:18:23.080 --> 00:18:28.199
+00:18:23.320 --> 00:18:28.199
If I enable completion-preview-mode...
-00:18:28.200 --> 00:18:31.999
+00:18:28.200 --> 00:18:32.719
This is a non-global minor mode,
-00:18:32.000 --> 00:18:38.479
+00:18:32.720 --> 00:18:38.479
which will display completion options inline using overlays.
-00:18:38.480 --> 00:18:43.079
+00:18:38.480 --> 00:18:43.199
For example, if I start typing a longer symbol like define,
-00:18:43.080 --> 00:18:48.119
+00:18:43.200 --> 00:18:48.119
now we have a derived mode. It suggests me to...
00:18:48.120 --> 00:18:51.039
I can just press TAB and then it completes the option here,
-00:18:51.040 --> 00:18:51.799
+00:18:51.040 --> 00:18:51.839
but it didn't actually...
-00:18:51.800 --> 00:18:55.279
+00:18:51.840 --> 00:18:55.279
It's not actually modifying the buffer, it's not pressing,
-00:18:55.280 --> 00:18:56.999
+00:18:55.280 --> 00:18:57.039
these are just overlays,
-00:18:57.000 --> 00:18:59.479
+00:18:57.040 --> 00:18:59.519
so if I move around, it gets deleted.
-00:18:59.480 --> 00:19:01.519
+00:18:59.520 --> 00:19:02.539
It wouldn't get saved if I were to save the buffer.
-00:19:01.520 --> 00:19:04.879
+00:19:02.540 --> 00:19:04.999
The same also should work in a shell buffer.
-00:19:04.880 --> 00:19:08.439
+00:19:05.000 --> 00:19:09.239
If I enable completion preview mode here and start...
-00:19:08.440 --> 00:19:12.719
+00:19:09.240 --> 00:19:12.759
In this case, I'm using the bash completion package,
-00:19:12.720 --> 00:19:15.159
+00:19:12.760 --> 00:19:15.199
which provides additional completion information.
-00:19:15.160 --> 00:19:17.839
+00:19:15.200 --> 00:19:17.839
This is not only limited to programming systems,
-00:19:17.840 --> 00:19:22.879
+00:19:17.840 --> 00:19:22.919
but anywhere where you have completion at point in Emacs.
-00:19:22.880 --> 00:19:26.599
+00:19:22.920 --> 00:19:26.059
I can start typing here, ignore, and put ignore-backups,
-00:19:26.600 --> 00:19:29.879
+00:19:26.060 --> 00:19:29.919
and it hints to the options which I have
-00:19:29.880 --> 00:19:33.239
+00:19:29.920 --> 00:19:34.219
and allows me to complete them quickly.
NOTE package-isolate
-00:19:33.240 --> 00:19:37.879
+00:19:34.220 --> 00:19:37.879
Another small feature is the package-isolate command.
00:19:37.880 --> 00:19:39.959
What this does is it will start
-00:19:39.960 --> 00:19:42.719
+00:19:39.960 --> 00:19:42.759
or it will prompt me for packages
-00:19:42.720 --> 00:19:44.119
+00:19:42.760 --> 00:19:44.119
I have installed in my system
00:19:44.120 --> 00:19:46.439
@@ -1074,76 +1083,76 @@ and will start an isolated
00:19:46.440 --> 00:19:51.079
or like "emacs -Q"-ish instance of emacs
-00:19:51.080 --> 00:19:53.239
+00:19:51.080 --> 00:19:53.639
with only these packages installed.
-00:19:53.240 --> 00:20:00.359
+00:19:53.640 --> 00:20:00.279
So for example, if I said I want slime and I want diff-hl,
-00:20:00.360 --> 00:20:02.279
+00:20:00.280 --> 00:20:02.279
then this is a new Emacs window.
00:20:02.280 --> 00:20:04.439
It's unrelated to the one around.
-00:20:04.440 --> 00:20:06.759
+00:20:04.440 --> 00:20:06.839
It uses the same executable, of course,
-00:20:06.760 --> 00:20:08.999
+00:20:06.840 --> 00:20:09.939
but will not load your configuration file
-00:20:09.000 --> 00:20:13.079
+00:20:09.940 --> 00:20:13.619
or any other further customizations on your system.
-00:20:13.080 --> 00:20:15.159
+00:20:13.620 --> 00:20:15.159
All it does, it will ensure
-00:20:15.160 --> 00:20:17.879
+00:20:15.160 --> 00:20:17.919
that these packages, which are listed here,
-00:20:17.880 --> 00:20:24.359
+00:20:17.920 --> 00:20:24.499
so in our case SLIME and dependencies of SLIME and diff-hl,
-00:20:24.360 --> 00:20:25.119
+00:20:24.500 --> 00:20:25.239
in the system
-00:20:25.120 --> 00:20:28.999
+00:20:25.240 --> 00:20:29.039
so that I could, for example, as you can see here,
-00:20:29.000 --> 00:20:32.019
+00:20:29.040 --> 00:20:31.959
diff-hl-mode works.
-00:20:32.020 --> 00:20:35.319
+00:20:31.960 --> 00:20:35.479
Okay, this is not a version-controlled file.
-00:20:35.320 --> 00:20:41.119
+00:20:35.480 --> 00:20:41.119
Maybe if we take a look at, have I enabled diff-hl-mode?
00:20:41.120 --> 00:20:44.559
It's enabled in this case. What diff-hl-mode does
-00:20:44.560 --> 00:20:48.239
+00:20:44.560 --> 00:20:48.479
is it displays these version control changes
-00:20:48.240 --> 00:20:49.999
+00:20:48.480 --> 00:20:49.999
in the fringe of a buffer.
-00:20:50.000 --> 00:20:54.039
+00:20:50.000 --> 00:20:54.079
And even though this is a uncustomized version of Emacs,
-00:20:54.040 --> 00:20:56.279
+00:20:54.080 --> 00:20:56.319
or an uncustomized instance of Emacs,
-00:20:56.280 --> 00:20:58.919
+00:20:56.320 --> 00:20:58.959
it was easy for me to load this one package,
-00:20:58.920 --> 00:21:01.959
+00:20:58.960 --> 00:21:01.959
or these two packages and all the dependencies necessary.
-00:21:01.960 --> 00:21:04.759
+00:21:01.960 --> 00:21:05.319
As you can imagine, the main purpose for this
-00:21:04.760 --> 00:21:07.719
+00:21:05.320 --> 00:21:07.719
is to make debugging issues easier.
00:21:07.720 --> 00:21:10.519
@@ -1152,12 +1161,12 @@ If you want to report about an issue
00:21:10.520 --> 00:21:14.519
you have with a package. And if I close this, it's closed
-00:21:14.520 --> 00:21:15.959
+00:21:14.520 --> 00:21:16.779
and everything's thrown away.
NOTE Reindenting
-00:21:15.960 --> 00:21:18.959
+00:21:16.780 --> 00:21:18.959
Last up, a nice feature I think
00:21:18.960 --> 00:21:21.199
@@ -1166,31 +1175,31 @@ a lot of people will appreciate is,
00:21:21.200 --> 00:21:24.239
if you are familiar with... Let's open a text buffer.
-00:21:24.240 --> 00:21:29.119
+00:21:24.240 --> 00:21:30.079
The M-q key is traditionally bound to fill-paragraph.
-00:21:29.120 --> 00:21:32.119
+00:21:30.080 --> 00:21:32.119
What this means is that...
-00:21:32.120 --> 00:21:34.919
+00:21:32.120 --> 00:21:34.999
Let's, for example, copy this text from here
-00:21:34.920 --> 00:21:40.279
+00:21:35.000 --> 00:21:40.359
and squash it all into one line. If I press M-q here,
-00:21:40.280 --> 00:21:43.679
+00:21:40.360 --> 00:21:42.399
then the lines will be broken
-00:21:43.680 --> 00:21:49.599
+00:21:42.400 --> 00:21:49.479
according to the fill column indicator up here.
-00:21:49.600 --> 00:21:52.199
+00:21:49.480 --> 00:21:52.399
This is the traditional usage of M-q,
-00:21:52.200 --> 00:21:54.159
+00:21:52.400 --> 00:21:54.119
and it still works in text-mode buffers,
-00:21:54.160 --> 00:21:56.639
+00:21:54.120 --> 00:21:56.639
but in prog-mode buffers--
00:21:56.640 --> 00:22:00.079
@@ -1199,154 +1208,154 @@ so any major mode inheriting prog-mode--
00:22:00.080 --> 00:22:02.199
M-q will now by default be bound
-00:22:02.200 --> 00:22:09.639
+00:22:02.200 --> 00:22:09.719
to prog-fill-reindent-defun. To summarize the point,
-00:22:09.640 --> 00:22:13.359
+00:22:09.720 --> 00:22:13.479
if you are editing a string or a comment,
-00:22:13.360 --> 00:22:15.939
+00:22:13.480 --> 00:22:15.919
then the comment will be filled.
-00:22:15.940 --> 00:22:19.039
+00:22:15.920 --> 00:22:19.159
But if you are outside of a comment or outside of a string,
-00:22:19.040 --> 00:22:22.919
+00:22:19.160 --> 00:22:22.919
then the defun or the top-level construct
-00:22:22.920 --> 00:22:25.559
+00:22:22.920 --> 00:22:26.119
in the programming language will be re-indented.
-00:22:25.560 --> 00:22:33.879
+00:22:26.120 --> 00:22:33.859
Let's try that out with maybe some file I have open here.
-00:22:33.880 --> 00:22:37.719
+00:22:33.860 --> 00:22:38.819
If I'm in this... Let's choose some function,
-00:22:37.720 --> 00:22:41.279
+00:22:38.820 --> 00:22:41.279
let's take this for example.
-00:22:41.280 --> 00:22:42.879
+00:22:41.280 --> 00:22:43.879
If we followed all of this again,
-00:22:42.880 --> 00:22:46.479
+00:22:43.880 --> 00:22:47.619
and I press M-q in on this paragraph,
-00:22:46.480 --> 00:22:49.399
+00:22:47.620 --> 00:22:50.039
then the paragraph gets re-indented.
-00:22:49.400 --> 00:22:55.759
+00:22:50.040 --> 00:22:54.859
But if I'm down here and I choose to break the indentation
-00:22:55.760 --> 00:22:58.239
+00:22:54.860 --> 00:22:56.180
and then press M-q,
-00:22:58.240 --> 00:23:02.279
+00:22:56.181 --> 00:23:02.399
then as you see, it practically selected the defun
-00:23:02.280 --> 00:23:03.559
+00:23:02.400 --> 00:23:03.559
and re-indented everything
-00:23:03.560 --> 00:23:06.699
-without having me to move the point around in the buffer.
+00:23:03.560 --> 00:23:05.959
+without having need to move the point around in the buffer.
-00:23:06.700 --> 00:23:08.559
+00:23:06.800 --> 00:23:08.679
So I think that's a really nice feature,
-00:23:08.560 --> 00:23:12.919
+00:23:08.680 --> 00:23:11.039
which a lot of people can appreciate.
-00:23:12.920 --> 00:23:18.279
+00:23:11.040 --> 00:23:17.879
It's one of those niceties which comes from time to time.
NOTE Wrapping up
-00:23:18.280 --> 00:23:20.599
+00:23:17.880 --> 00:23:20.679
Right, so that was my overview
-00:23:20.600 --> 00:23:22.559
+00:23:20.680 --> 00:23:22.559
of what's going to be new in Emacs 30.
00:23:22.560 --> 00:23:24.359
I hope that most people could take away
-00:23:24.360 --> 00:23:26.159
+00:23:24.360 --> 00:23:25.659
something from this presentation
-00:23:26.160 --> 00:23:28.959
+00:23:25.660 --> 00:23:29.419
and have something to look forward
-00:23:28.960 --> 00:23:31.039
+00:23:29.420 --> 00:23:31.599
to try out after upgrading.
-00:23:31.040 --> 00:23:33.759
+00:23:31.600 --> 00:23:33.839
As mentioned initially, as of recording,
-00:23:33.760 --> 00:23:36.519
+00:23:33.840 --> 00:23:36.939
this release has not been completed yet.
-00:23:36.520 --> 00:23:38.799
+00:23:36.940 --> 00:23:38.879
If this is still not the case
-00:23:38.800 --> 00:23:40.199
+00:23:38.880 --> 00:23:40.199
when you're seeing this video,
00:23:40.200 --> 00:23:43.799
please consider downloading and building Emacs 30 yourself.
-00:23:43.800 --> 00:23:48.159
+00:23:43.800 --> 00:23:48.319
If you have any issues, which is always the case,
-00:23:48.160 --> 00:23:51.959
+00:23:48.320 --> 00:23:56.339
please report them to using report-emacs-bug.
-00:23:51.960 --> 00:23:55.079
+00:23:56.340 --> 00:23:57.740
That will pop up a mail buffer,
-00:23:55.080 --> 00:23:59.519
+00:23:57.741 --> 00:23:59.519
and then you can describe your issue and send them out.
-00:23:59.520 --> 00:24:01.759
+00:23:59.520 --> 00:24:01.839
All bug reports are valuable,
-00:24:01.760 --> 00:24:04.359
+00:24:01.840 --> 00:24:03.999
even if they are false positives or duplicates--
-00:24:04.360 --> 00:24:05.159
+00:24:04.000 --> 00:24:05.239
it doesn't matter--
-00:24:05.160 --> 00:24:08.439
+00:24:05.240 --> 00:24:08.919
because when you take the time to submit a bug report,
-00:24:08.440 --> 00:24:12.159
+00:24:08.920 --> 00:24:12.359
which describes something that's specific to your setup,
-00:24:12.160 --> 00:24:16.639
+00:24:12.360 --> 00:24:16.839
which the developers might not have noticed or known about,
-00:24:16.640 --> 00:24:19.079
+00:24:16.840 --> 00:24:19.079
then you are certainly helping out a lot of other people
00:24:19.080 --> 00:24:21.679
which might run into the same issue in the future.
-00:24:21.680 --> 00:24:23.119
+00:24:21.680 --> 00:24:23.359
Especially with upgrades,
-00:24:23.120 --> 00:24:26.559
+00:24:23.360 --> 00:24:26.559
it would be nice to figure out small problems
-00:24:26.560 --> 00:24:30.759
+00:24:26.560 --> 00:24:30.879
which make upgrading difficult for some people.
-00:24:30.760 --> 00:24:34.559
+00:24:30.880 --> 00:24:34.559
The ideal is, of course, to have no issues
-00:24:34.560 --> 00:24:36.159
+00:24:34.560 --> 00:24:37.199
when upgrading from one version to another.
-00:24:36.160 --> 00:24:39.519
+00:24:37.200 --> 00:24:41.939
Having said that, I thank you for your attention,
-00:24:39.520 --> 00:24:43.680
+00:24:41.940 --> 00:24:43.120
and I'm saying goodbye.
diff --git a/2024/info/emacs30-after.md b/2024/info/emacs30-after.md
index 4e0634b0..3fe60f8a 100644
--- a/2024/info/emacs30-after.md
+++ b/2024/info/emacs30-after.md
@@ -20,18 +20,18 @@
[[!template text="""This year, I will specifically focus on""" start="00:00:35.680" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""highlight features from the upcoming Emacs 30 release,""" start="00:00:38.520" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""which might or might not have been released""" start="00:00:41.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""by the time you are seeing this.""" start="00:00:45.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""by the time you are seeing this.""" start="00:00:43.920" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""As you can imagine, everything new about Emacs""" start="00:00:48.080" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""can always be found in the Emacs NEWS file.""" start="00:00:51.080" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Or, alternatively,""" start="00:00:55.520" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Or, alternatively,""" start="00:00:55.060" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""if one doesn't want to read through the 3,000 lines here,""" start="00:00:57.080" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""one can also take a look at the Emacs FAQ""" start="00:01:01.920" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and then go to the what's new about""" start="00:01:05.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""or what's different about Emacs 30 node.""" start="00:01:08.000" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Next to these two official options,""" start="00:01:10.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Next to these two official options,""" start="00:01:12.220" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""I also have a page on Emacs Wiki""" start="00:01:14.760" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""called EmacsThirtyHighlights,""" start="00:01:18.600" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""highlighting some of the interesting features""" start="00:01:20.440" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""highlighting some of the interesting features""" start="00:01:21.440" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""with some context and suggestions on how to try them out.""" start="00:01:24.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""This is more of a collaborative effort.""" start="00:01:28.440" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""So if you see this and think something is missing,""" start="00:01:30.040" video="mainVideo-emacs30" id="subtitle"]]
@@ -47,7 +47,7 @@
[[!template text="""you can build Android to target Android devices natively""" start="00:01:56.480" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and using a graphical interface.""" start="00:02:01.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""While it has been possible to run Emacs""" start="00:02:06.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""inside of terminal emulators on Android for a while,""" start="00:02:08.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""inside of terminal emulators on Android for a while,""" start="00:02:08.800" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""this actually means that you can use Emacs""" start="00:02:11.160" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""on an Android device, a phone or a tablet,""" start="00:02:13.920" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and have all the usual advantages from GUI Emacs,""" start="00:02:17.520" video="mainVideo-emacs30" id="subtitle"]]
@@ -73,7 +73,7 @@
[[!template text="""With an external mouse, and for example,""" start="00:03:12.760" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""enabling context menu mode,""" start="00:03:15.240" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""I can even pop up little interaction windows,""" start="00:03:17.800" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which one you would usually also know from GUI Emacs.""" start="00:03:23.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which one you would usually also know from GUI Emacs.""" start="00:03:22.680" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""TUI Emacs actually also supports them since a while now.""" start="00:03:27.240" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""And in this case, I'm demonstrating""" start="00:03:32.960" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""how even the touchscreen events""" start="00:03:34.640" video="mainVideo-emacs30" id="subtitle"]]
@@ -90,11 +90,11 @@
[[!template text="""such as Wayland and Xorg, which are not operating systems,""" start="00:04:06.840" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and Windows, insofar as they have touchscreen,""" start="00:04:12.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and devices have touchscreen support.""" start="00:04:15.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""One should mention, or I want to mention,""" start="00:04:17.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""One should mention, or I want to mention,""" start="00:04:18.420" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""that the main developer behind this feature, Po Lu,""" start="00:04:21.240" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""should be complimented for the additional effort he put""" start="00:04:24.040" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""into making sure that Emacs for Android""" start="00:04:27.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""can be built using only a free software toolchain,""" start="00:04:29.760" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""can be built using only a free software toolchain,""" start="00:04:30.980" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""which is certainly not something one has come to expect""" start="00:04:33.720" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""from working on Android applications,""" start="00:04:37.000" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""as usually you have to agree to some terms and conditions""" start="00:04:40.760" video="mainVideo-emacs30" id="subtitle"]]
@@ -106,18 +106,18 @@
[[!template text="""Emacs 30 Android Sourceforge...""" start="00:04:59.360" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""He has set up some system where here in Sourceforge,""" start="00:05:02.400" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""there are regular and updated""" start="00:05:06.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""APK files which you can download""" start="00:05:10.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""APK files which you can download""" start="00:05:12.800" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""to avoid having to build it yourself,""" start="00:05:14.520" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""testing out the newest version""" start="00:05:17.040" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""in case there are some bugs which you'd like to report.""" start="00:05:18.560" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Which-key is a package which has now been moved""" start="00:05:30.640" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Which-key is a package which has now been moved""" start="00:05:27.620" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""from ELPA to the core.""" start="00:05:33.120" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""If you haven't heard of which-key before, the idea is,""" start="00:05:34.720" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""or the general pitch is that which-key""" start="00:05:38.880" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""is a additional documentation interface for Emacs""" start="00:05:41.400" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""for displaying various keys which you could input,""" start="00:05:45.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""or various keys and key maps""" start="00:05:49.640" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""that have been partially inputted.""" start="00:05:52.680" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""that have been partially inputted.""" start="00:05:53.480" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""A better way to demonstrate this""" start="00:05:55.480" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""or to explain this is just to show it.""" start="00:05:57.640" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""If we enable the which-key mode--it's a global minor mode--""" start="00:05:59.320" video="mainVideo-emacs30" id="subtitle"]]
@@ -139,324 +139,327 @@
[[!template text="""The information is the same, the presentation is different,""" start="00:06:54.160" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""because now if I wanted to do C-x i,""" start="00:06:56.640" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""I have to repeat the entire keychord again.""" start="00:06:59.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""So it's a matter of personal preference, which you prefer.""" start="00:07:02.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""So it's a matter of personal preference, which you prefer.""" start="00:07:03.320" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""This is more of a traditional static approach""" start="00:07:09.480" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""because I get a help buffer which I can search""" start="00:07:12.520" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""using usual key commands,""" start="00:07:19.640" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""while which-key is more of a transient and modern.""" start="00:07:21.120" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""Some might prefer that approach""" start="00:07:28.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to solving the same problem.""" start="00:07:30.120" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Also, don't forget to check out the customization group""" start="00:07:33.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to solving the same problem.""" start="00:07:31.300" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Also, don't forget to check out the customization group""" start="00:07:35.520" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""for which-key which has a number of options""" start="00:07:39.120" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""which you might or might not be interested in.""" start="00:07:41.960" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""EditorConfig""" start="00:07:43.680" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Next up, Emacs 30 has built-in EditorConfig support.""" start="00:07:43.680" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""EditorConfig""" start="00:07:44.700" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Next up, Emacs 30 has built-in EditorConfig support.""" start="00:07:44.700" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""If you have not heard of EditorConfig before,""" start="00:07:50.880" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""I believe I've linked to it down here somewhere.""" start="00:07:53.680" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Ah, there it is, EditorConfig.""" start="00:07:57.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This is a file format used to specify""" start="00:08:02.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""common formatting rules in an editor-agnostic way.""" start="00:08:06.520" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Ah, there it is, EditorConfig.""" start="00:07:56.380" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This is a file format used to specify""" start="00:08:00.161" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""common formatting rules in an editor-agnostic way.""" start="00:08:05.261" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""You might compare it to .dir-locals.el files,""" start="00:08:11.960" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""which is a sort of an s-expression""" start="00:08:16.320" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""for setting file-local variables in Emacs.""" start="00:08:19.160" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""Of course, this is restricted to the common subset""" start="00:08:22.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""of what all editors should understand.""" start="00:08:25.640" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""For example, indentation styles,""" start="00:08:28.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""of what all editors should understand.""" start="00:08:26.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""For example, indentation styles,""" start="00:08:29.300" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""whether you prefer tabs or spaces,""" start="00:08:31.840" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""tab width, file encoding, and so on.""" start="00:08:34.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""tab width, file encoding, and so on.""" start="00:08:36.700" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""So it's nothing too advanced, but it's something...""" start="00:08:38.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""It is a file format which one sees popping up more""" start="00:08:42.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""It is a file format which one sees popping up more""" start="00:08:43.960" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and more often in lots of projects""" start="00:08:48.560" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""which want to enforce a consistent indentation style""" start="00:08:50.440" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""or formatting rules for all editors in a project.""" start="00:08:53.480" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""Having this built in is certainly useful in Emacs.""" start="00:08:56.640" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""Though one should note that it's not enabled by default.""" start="00:09:00.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""You still have to enable the global minor mode,""" start="00:09:04.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which is simply turning on this one option.""" start="00:09:09.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""You still have to enable the global minor mode,""" start="00:09:03.580" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which is simply turning on this one option.""" start="00:09:11.040" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""Shouldn't be more than that,""" start="00:09:14.240" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and then Emacs will respect the rules.""" start="00:09:15.600" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""If it finds a .editorconfig file in the project directory,""" start="00:09:18.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then it will respect those rules""" start="00:09:31.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""without having to do anything else.""" start="00:09:35.840" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then it will respect those rules""" start="00:09:23.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""without having to do anything else.""" start="00:09:25.320" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""use-package integration with package-vc""" start="00:09:38.440" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Next up, use-package integration with package-vc.""" start="00:09:38.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""For those not familiar with either of the two,""" start="00:09:45.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or at least one of the two,""" start="00:09:48.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""use-package is a popular configuration macro.""" start="00:09:49.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""What it does is it allows""" start="00:09:52.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""users to declaratively specify packages""" start="00:09:54.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""they would like to have installed and configured""" start="00:09:56.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""in their configuration file,""" start="00:10:00.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""so that, for example, if you copy your init.el""" start="00:10:01.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""from one system to another,""" start="00:10:05.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""it could bootstrap the entire configuration,""" start="00:10:07.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""downloading all the packages you want""" start="00:10:09.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""without having to manually do this""" start="00:10:12.200" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""on every system you'd like to use.""" start="00:10:13.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This allows configurations""" start="00:10:15.600" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to be self-encapsulated and portable.""" start="00:10:19.120" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""package-vc is an extension of package.el,""" start="00:10:21.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which allows installing packages from an alternative.""" start="00:10:27.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Instead of using the standard way to install packages,""" start="00:10:30.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which is just download tarball and unpack it,""" start="00:10:33.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""byte compile, and so on,""" start="00:10:37.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""it will fetch the files for a package""" start="00:10:39.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""directly from the source code repository""" start="00:10:44.120" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and initialize it in such a way""" start="00:10:46.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""that package.el can work with it.""" start="00:10:48.680" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""So it's just a front-end for installing packages.""" start="00:10:50.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Even though these two were added to Emacs 29,""" start="00:10:54.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""we didn't have the time to work on the""" start="00:10:58.000" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""use-package integration of package-vc into use-package,""" start="00:10:59.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which has been changed now.""" start="00:11:04.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""What we have with Emacs 30 is that""" start="00:11:06.080" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""there is a :vc keyword for use-package""" start="00:11:10.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""with which we can instruct use-package""" start="00:11:14.600" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to not download a package using tarball,""" start="00:11:16.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""but instead to fetch the source code""" start="00:11:20.600" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""from a source code repository.""" start="00:11:23.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This is useful if you, for example,""" start="00:11:25.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""have packages which you yourself work on""" start="00:11:27.080" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and know that you always want to have""" start="00:11:29.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""the development version of the package""" start="00:11:31.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""where you can directly commit changes you've made""" start="00:11:33.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to the repository and push them upstream.""" start="00:11:37.360" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Or, if you know that you want to contribute to a package,""" start="00:11:40.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""you can use package-vc to download the source code,""" start="00:11:43.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""have all the version control information,""" start="00:11:46.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""prepare a patch and send it upstream.""" start="00:11:48.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""In these examples here,""" start="00:11:50.560" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""the first example Lisp instructs package-vc""" start="00:11:54.800" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to download the source code from a URL.""" start="00:12:00.680" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""So this is a git URL where it will download""" start="00:12:03.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""the source code from, and in this case,""" start="00:12:06.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""choose the newest checkout of the source code,""" start="00:12:08.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""not the latest release. Down here, we have another example.""" start="00:12:11.840" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""I prefer to consider the following example here.""" start="00:12:15.800" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""If we just had written this,""" start="00:12:20.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then package-vc would use the metadata""" start="00:12:22.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which an ELPA server provides""" start="00:12:24.720" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to fetch the URL from the official repository of,""" start="00:12:26.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""in this case, BBDB, without having to...""" start="00:12:31.720" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""It would be more or less the same like this up here,""" start="00:12:34.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""with the simple difference that package-vc integration""" start="00:12:39.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""into use-package doesn't check out the latest commit,""" start="00:12:44.200" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""but the latest release,""" start="00:12:47.840" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""just to keep configurations more deterministic by default.""" start="00:12:49.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Of course, if you prefer to use latest commit,""" start="00:12:54.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""you can use a package-vc install command""" start="00:12:59.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or just update the package manually yourself,""" start="00:13:01.800" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which you can use using package-vc-upgrade.""" start="00:13:06.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Next, I'd like to focus on a few features""" start="00:13:13.060" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which one might not necessarily realize directly,""" start="00:13:15.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""but will hopefully improve your experience with Emacs.""" start="00:13:18.920" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""use-package integration with package-vc""" start="00:09:30.240" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Next up, use-package integration with package-vc.""" start="00:09:30.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""For those not familiar with either of the two,""" start="00:09:34.600" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or at least one of the two,""" start="00:09:36.520" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""use-package is a popular configuration macro.""" start="00:09:38.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""What it does is it allows""" start="00:09:41.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""users to declaratively specify packages""" start="00:09:43.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""they would like to have installed and configured""" start="00:09:46.275" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""in their configuration file,""" start="00:09:48.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""so that, for example, if you copy your init.el""" start="00:09:51.540" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""from one system to another,""" start="00:09:54.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""it could bootstrap the entire configuration,""" start="00:09:55.960" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""downloading all the packages you want""" start="00:09:58.520" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""without having to manually do this""" start="00:10:00.720" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""on every system you'd like to use.""" start="00:10:02.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This allows configurations""" start="00:10:05.040" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to be self-encapsulated and portable.""" start="00:10:07.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""package-vc is an extension of package.el,""" start="00:10:11.040" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which allows installing packages from an alternative.""" start="00:10:15.960" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Instead of using the standard way to install packages,""" start="00:10:19.680" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which is just download tarball and unpack it,""" start="00:10:22.280" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""byte compile, and so on,""" start="00:10:26.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""it will fetch the files for a package""" start="00:10:28.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""directly from the source code repository""" start="00:10:32.760" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and initialize it in such a way""" start="00:10:35.280" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""that package.el can work with it.""" start="00:10:37.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""So it's just a front-end for installing packages.""" start="00:10:39.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Even though these two were added to Emacs 29,""" start="00:10:44.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""we didn't have the time to work on the""" start="00:10:46.520" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""use-package integration of package-vc into use-package,""" start="00:10:48.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which has been changed now.""" start="00:10:52.640" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""What we have with Emacs 30 is that""" start="00:10:55.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""there is a :vc keyword for use-package""" start="00:11:00.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""with which we can instruct use-package""" start="00:11:02.840" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to not download a package using tarball,""" start="00:11:05.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""but instead to fetch the source code""" start="00:11:10.774" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""from a source code repository.""" start="00:11:12.520" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This is useful if you, for example,""" start="00:11:13.800" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""have packages which you yourself work on""" start="00:11:15.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and know that you always want to have""" start="00:11:18.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""the development version of the package""" start="00:11:19.960" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""where you can directly commit changes you've made""" start="00:11:21.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to the repository and push them upstream.""" start="00:11:26.640" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Or, if you know that you want to contribute to a package,""" start="00:11:29.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""you can use package-vc to download the source code,""" start="00:11:32.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""have all the version control information,""" start="00:11:35.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""prepare a patch and send it upstream.""" start="00:11:37.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""In these examples here,""" start="00:11:41.760" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""the first example Lisp instructs package-vc""" start="00:11:44.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to download the source code from a URL.""" start="00:11:49.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""So this is a git URL where it will download""" start="00:11:52.960" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""the source code from, and in this case,""" start="00:11:55.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""choose the newest checkout of the source code,""" start="00:11:57.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""not the latest release. Down here, we have another example.""" start="00:12:00.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""I prefer to consider the following example here.""" start="00:12:05.060" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""If we just had written this,""" start="00:12:09.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then package-vc would use the metadata""" start="00:12:10.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which an ELPA server provides""" start="00:12:13.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to fetch the URL from the official repository of,""" start="00:12:16.280" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""in this case, BBDB, without having to...""" start="00:12:19.800" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""It would be more or less the same like this up here,""" start="00:12:22.840" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""with the simple difference that package-vc integration""" start="00:12:28.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""into use-package doesn't check out the latest commit,""" start="00:12:32.640" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""but the latest release,""" start="00:12:36.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""just to keep configurations more deterministic by default.""" start="00:12:38.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Of course, if you prefer to use latest commit,""" start="00:12:44.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""you can use a package-vc install command""" start="00:12:47.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or just update the package manually yourself,""" start="00:12:52.440" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which you can use using package-vc-upgrade.""" start="00:12:54.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Next, I'd like to focus on a few features""" start="00:13:01.740" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which one might not necessarily realize directly,""" start="00:13:04.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""but will hopefully improve your experience with Emacs.""" start="00:13:07.741" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""JSON""" start="00:13:22.860" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""First up in this list is a new JSON parser.""" start="00:13:22.860" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Let's maybe show the source code for that one:""" start="00:13:26.640" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""not json.el, json.c. The history of JSON parsing in Emacs""" start="00:13:29.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""started with Emacs 23 with the addition of json.el.""" start="00:13:51.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This was the file which we had just opened a moment ago.""" start="00:13:54.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This is a JSON parser in Emacs Lisp.""" start="00:13:58.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""It's fine, it does the job, but it can get slow""" start="00:14:02.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""if we have a situation like where""" start="00:14:04.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Eglot uses a LSP server to communicate with""" start="00:14:06.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and the LSP server can get a bit chatty,""" start="00:14:11.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""sending a lot of JSON data,""" start="00:14:14.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which all has to be parsed and garbage collected,""" start="00:14:17.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which can slow down Emacs a bit.""" start="00:14:19.600" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""The situation was improved upon in Emacs 29""" start="00:14:21.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""when JSON parsing was added to the core.""" start="00:14:25.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This was the json.c file, which we see on this side,""" start="00:14:29.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""the old version of the json.c file,""" start="00:14:32.680" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which employed the Jansson library (it's the C library)""" start="00:14:34.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""for parsing and accelerating JSON parsing in Emacs.""" start="00:14:38.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This was good enough,""" start="00:14:42.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or it certainly improved the situation""" start="00:14:45.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""for a lot of LSP clients.""" start="00:14:47.720" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""But in Emacs 30, the situation has been improved once more""" start="00:14:50.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""with the addition of a JSON parser directly in Emacs.""" start="00:14:53.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""So instead of using an external library,""" start="00:15:01.175" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""there's a custom JSON parser written in C in the Emacs core,""" start="00:15:03.875" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which directly generates Elisp objects.""" start="00:15:08.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""The advantage to this approach""" start="00:15:12.241" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""compared to the Jansson approach""" start="00:15:16.575" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""is that there's no intermediate format""" start="00:15:18.008" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which has to be allocated""" start="00:15:19.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and memory managed and freed again,""" start="00:15:20.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which of course incurs an additional performance overhead.""" start="00:15:23.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""There is absolutely no dependency on Jansson anymore.""" start="00:15:30.241" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""JSON""" start="00:13:11.400" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""First up in this list is a new JSON parser.""" start="00:13:11.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Let's maybe show the source code for that one:""" start="00:13:15.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""not json.el, json.c. The history of JSON parsing in Emacs""" start="00:13:21.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""started with Emacs 23 with the addition of json.el.""" start="00:13:39.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This was the file which we had just opened a moment ago.""" start="00:13:43.280" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This is a JSON parser in Emacs Lisp.""" start="00:13:46.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""It's fine, it does the job, but it can get slow""" start="00:13:50.960" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""if we have a situation like where""" start="00:13:53.200" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Eglot uses a LSP server to communicate with""" start="00:13:55.480" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and the LSP server can get a bit chatty,""" start="00:14:00.480" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""sending a lot of JSON data,""" start="00:14:02.960" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which all has to be parsed and garbage collected,""" start="00:14:05.480" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which can slow down Emacs a bit.""" start="00:14:08.200" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""The situation was improved upon in Emacs 29""" start="00:14:10.200" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""when JSON parsing was added to the core.""" start="00:14:14.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This was the json.c file, which we see on this side,""" start="00:14:17.960" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""the old version of the json.c file,""" start="00:14:21.040" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which employed the Jansson library (it's the C library)""" start="00:14:23.280" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""for parsing and accelerating JSON parsing in Emacs.""" start="00:14:27.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This was good enough,""" start="00:14:33.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or it certainly improved the situation""" start="00:14:34.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""for a lot of LSP clients.""" start="00:14:36.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""But in Emacs 30, the situation has been improved once more""" start="00:14:38.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""with the addition of a JSON parser directly in Emacs.""" start="00:14:45.480" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""So instead of using an external library,""" start="00:14:50.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""there's a custom JSON parser written in C in the Emacs core,""" start="00:14:53.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which directly generates Elisp objects.""" start="00:14:57.720" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""The advantage to this approach""" start="00:15:01.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""compared to the Jansson approach""" start="00:15:05.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""is that there's no intermediate format""" start="00:15:06.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which has to be allocated""" start="00:15:07.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and memory managed and freed again,""" start="00:15:09.200" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which of course incurs an additional performance overhead.""" start="00:15:11.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Next to this, there's also a custom serializer""" start="00:15:19.480" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""for JSON contents translating a JSON object into a string.""" start="00:15:22.660" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""... The consequence of this is that""" start="00:15:27.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""there is absolutely no dependency on Jansson anymore.""" start="00:15:30.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""This in turn means that now all Emacs users""" start="00:15:35.640" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""from Emacs 30 onwards""" start="00:15:38.600" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""can take advantage of this new JSON parser""" start="00:15:39.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and don't have to worry about whether""" start="00:15:42.640" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or not they have Jansson, this JSON parsing library,""" start="00:15:44.840" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""installed on their system or not when they want""" start="00:15:47.760" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""from Emacs 30 onwards""" start="00:15:38.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""can take advantage of this new JSON parser""" start="00:15:39.800" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and don't have to worry about whether""" start="00:15:43.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or not they have Jansson, this JSON parsing library,""" start="00:15:44.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""installed on their system or not when they want""" start="00:15:47.800" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""to take advantage of this accelerated JSON parsing.""" start="00:15:51.000" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""Native compilation""" start="00:15:56.800" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Next up, another behind-the-scenes feature""" start="00:15:56.800" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""is that if you build Emacs on your own from source,""" start="00:16:00.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""you might know that if you wanted""" start="00:16:03.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to use native compilation,""" start="00:16:07.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""so the translation of Elisp bytecodes""" start="00:16:09.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to whatever the native assembly""" start="00:16:13.120" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or native instruction set is on your system,""" start="00:16:15.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""you have to specify with native compilation.""" start="00:16:19.000" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""when invoking the configure script,""" start="00:16:24.200" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""otherwise it would not have been enabled at all.""" start="00:16:25.840" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""With Emacs 30, this step is not necessary anymore.""" start="00:16:28.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""The configure script will automatically check""" start="00:16:31.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""if you have the libgccjit library installed on your system,""" start="00:16:36.120" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and if that is so,""" start="00:16:41.640" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then native compilation will be enabled by default.""" start="00:16:42.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""In other words, if you have an issue with native compilation""" start="00:16:45.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or prefer not to use it for whatever reason,""" start="00:16:49.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""you now have to type --without-native-compilation""" start="00:16:52.360" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""Native compilation""" start="00:15:56.840" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Next up, another behind-the-scenes feature""" start="00:15:56.840" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""is that if you build Emacs on your own from source,""" start="00:16:00.640" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""you might know that if you wanted""" start="00:16:04.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to use native compilation,""" start="00:16:07.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""so the translation of Elisp bytecodes""" start="00:16:09.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to whatever the native assembly""" start="00:16:12.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or native instruction set is on your system,""" start="00:16:15.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""you have to specify with native compilation.""" start="00:16:19.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""when invoking the configure script,""" start="00:16:24.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""otherwise it would not have been enabled at all.""" start="00:16:25.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""With Emacs 30, this step is not necessary anymore.""" start="00:16:28.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""The configure script will automatically check""" start="00:16:34.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""if you have the libgccjit library installed on your system,""" start="00:16:36.720" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and if that is so,""" start="00:16:41.760" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then native compilation will be enabled by default.""" start="00:16:42.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""In other words, if you have an issue with native compilation""" start="00:16:46.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or prefer not to use it for whatever reason,""" start="00:16:49.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""you now have to type --without-native-compilation""" start="00:16:52.800" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""when compiling Emacs to prevent this from happening.""" start="00:16:55.560" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""But native compilation was added in Emacs 28""" start="00:16:58.200" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and has proven to be a very stable""" start="00:17:02.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and useful feature for most people,""" start="00:17:04.320" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""so there's probably no reason to do this""" start="00:17:06.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and you can just invoke the configure script""" start="00:17:09.360" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""with one argument less. Right, and I'd like to finish up""" start="00:17:11.200" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and has proven to be a very stable""" start="00:17:02.280" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and useful feature for most people,""" start="00:17:04.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""so there's probably no reason to do this""" start="00:17:06.200" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and you can just invoke the configure script""" start="00:17:10.200" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""with one argument less. Right, and I'd like to finish up""" start="00:17:10.940" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""with a few smaller features, a few smaller highlights.""" start="00:17:16.240" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""Maybe we can go back to the listing here. Here we have it.""" start="00:17:19.400" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""Tree-sitter""" start="00:17:29.580" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""There are a few new major modes""" start="00:17:29.580" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""based on the tree-sitter library.""" start="00:17:32.800" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""Tree-sitter""" start="00:17:30.720" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""There are a few new major modes""" start="00:17:30.720" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""based on the tree-sitter library.""" start="00:17:32.840" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""tree-sitter is this parser library""" start="00:17:34.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which has been integrated into Emacs 29.""" start="00:17:37.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""It allows the integration""" start="00:17:42.700" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""of external, specialized, and quick parsers into Emacs,""" start="00:17:44.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which has been integrated into Emacs 29.""" start="00:17:37.740" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""It allows the integration""" start="00:17:42.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""of external, specialized, and quick parsers into Emacs,""" start="00:17:44.080" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""which improve stuff like syntax highlighting, indentation,""" start="00:17:48.360" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""structural navigation, imenu support,""" start="00:17:52.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""by simply having a better understanding of, for example,""" start="00:17:55.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""structural navigation, imenu support,""" start="00:17:52.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""by simply having a better understanding of, for example,""" start="00:17:55.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""a HTML file, or a Lua file, a PHP file,""" start="00:18:00.840" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""than what people usually implement""" start="00:18:03.840" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""than what people usually implement""" start="00:18:03.920" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""using regular expressions in traditional major modes.""" start="00:18:06.240" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""So, a few new major modes which you can try out here.""" start="00:18:10.320" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""Completion preview mode""" start="00:18:16.680" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Another interesting feature is the completion-preview-mode.""" start="00:18:16.680" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""Completion preview mode""" start="00:18:16.820" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Another interesting feature is the completion-preview-mode.""" start="00:18:16.820" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""We can maybe try it out here in the scratch buffer.""" start="00:18:19.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""If I enable completion-preview-mode...""" start="00:18:23.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""If I enable completion-preview-mode...""" start="00:18:23.320" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""This is a non-global minor mode,""" start="00:18:28.200" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which will display completion options inline using overlays.""" start="00:18:32.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which will display completion options inline using overlays.""" start="00:18:32.720" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""For example, if I start typing a longer symbol like define,""" start="00:18:38.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""now we have a derived mode. It suggests me to...""" start="00:18:43.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""now we have a derived mode. It suggests me to...""" start="00:18:43.200" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""I can just press TAB and then it completes the option here,""" start="00:18:48.120" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""but it didn't actually...""" start="00:18:51.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""It's not actually modifying the buffer, it's not pressing,""" start="00:18:51.800" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""It's not actually modifying the buffer, it's not pressing,""" start="00:18:51.840" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""these are just overlays,""" start="00:18:55.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""so if I move around, it gets deleted.""" start="00:18:57.000" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""It wouldn't get saved if I were to save the buffer.""" start="00:18:59.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""The same also should work in a shell buffer.""" start="00:19:01.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""If I enable completion preview mode here and start...""" start="00:19:04.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""In this case, I'm using the bash completion package,""" start="00:19:08.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which provides additional completion information.""" start="00:19:12.720" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This is not only limited to programming systems,""" start="00:19:15.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""so if I move around, it gets deleted.""" start="00:18:57.040" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""It wouldn't get saved if I were to save the buffer.""" start="00:18:59.520" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""The same also should work in a shell buffer.""" start="00:19:02.540" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""If I enable completion preview mode here and start...""" start="00:19:05.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""In this case, I'm using the bash completion package,""" start="00:19:09.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which provides additional completion information.""" start="00:19:12.760" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This is not only limited to programming systems,""" start="00:19:15.200" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""but anywhere where you have completion at point in Emacs.""" start="00:19:17.840" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""I can start typing here, ignore, and put ignore-backups,""" start="00:19:22.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and it hints to the options which I have""" start="00:19:26.600" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and allows me to complete them quickly.""" start="00:19:29.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""I can start typing here, ignore, and put ignore-backups,""" start="00:19:22.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and it hints to the options which I have""" start="00:19:26.060" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and allows me to complete them quickly.""" start="00:19:29.920" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""package-isolate""" start="00:19:33.240" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Another small feature is the package-isolate command.""" start="00:19:33.240" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""package-isolate""" start="00:19:34.220" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Another small feature is the package-isolate command.""" start="00:19:34.220" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""What this does is it will start""" start="00:19:37.880" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""or it will prompt me for packages""" start="00:19:39.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""I have installed in my system""" start="00:19:42.720" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""I have installed in my system""" start="00:19:42.760" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and will start an isolated""" start="00:19:44.120" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""or like &quot;emacs -Q&quot;-ish instance of emacs""" start="00:19:46.440" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""with only these packages installed.""" start="00:19:51.080" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""So for example, if I said I want slime and I want diff-hl,""" start="00:19:53.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then this is a new Emacs window.""" start="00:20:00.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""So for example, if I said I want slime and I want diff-hl,""" start="00:19:53.640" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then this is a new Emacs window.""" start="00:20:00.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""It's unrelated to the one around.""" start="00:20:02.280" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""It uses the same executable, of course,""" start="00:20:04.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""but will not load your configuration file""" start="00:20:06.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or any other further customizations on your system.""" start="00:20:09.000" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""All it does, it will ensure""" start="00:20:13.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""but will not load your configuration file""" start="00:20:06.840" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or any other further customizations on your system.""" start="00:20:09.940" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""All it does, it will ensure""" start="00:20:13.620" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""that these packages, which are listed here,""" start="00:20:15.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""so in our case SLIME and dependencies of SLIME and diff-hl,""" start="00:20:17.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""in the system""" start="00:20:24.360" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""so that I could, for example, as you can see here,""" start="00:20:25.120" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""diff-hl-mode works.""" start="00:20:29.000" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Okay, this is not a version-controlled file.""" start="00:20:32.020" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Maybe if we take a look at, have I enabled diff-hl-mode?""" start="00:20:35.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""so in our case SLIME and dependencies of SLIME and diff-hl,""" start="00:20:17.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""in the system""" start="00:20:24.500" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""so that I could, for example, as you can see here,""" start="00:20:25.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""diff-hl-mode works.""" start="00:20:29.040" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Okay, this is not a version-controlled file.""" start="00:20:31.960" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Maybe if we take a look at, have I enabled diff-hl-mode?""" start="00:20:35.480" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""It's enabled in this case. What diff-hl-mode does""" start="00:20:41.120" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""is it displays these version control changes""" start="00:20:44.560" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""in the fringe of a buffer.""" start="00:20:48.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""in the fringe of a buffer.""" start="00:20:48.480" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""And even though this is a uncustomized version of Emacs,""" start="00:20:50.000" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or an uncustomized instance of Emacs,""" start="00:20:54.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""it was easy for me to load this one package,""" start="00:20:56.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""or these two packages and all the dependencies necessary.""" start="00:20:58.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or an uncustomized instance of Emacs,""" start="00:20:54.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""it was easy for me to load this one package,""" start="00:20:56.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""or these two packages and all the dependencies necessary.""" start="00:20:58.960" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""As you can imagine, the main purpose for this""" start="00:21:01.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""is to make debugging issues easier.""" start="00:21:04.760" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""is to make debugging issues easier.""" start="00:21:05.320" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""If you want to report about an issue""" start="00:21:07.720" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""you have with a package. And if I close this, it's closed""" start="00:21:10.520" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""and everything's thrown away.""" start="00:21:14.520" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""Reindenting""" start="00:21:15.960" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Last up, a nice feature I think""" start="00:21:15.960" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""Reindenting""" start="00:21:16.780" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Last up, a nice feature I think""" start="00:21:16.780" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""a lot of people will appreciate is,""" start="00:21:18.960" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""if you are familiar with... Let's open a text buffer.""" start="00:21:21.200" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""The M-q key is traditionally bound to fill-paragraph.""" start="00:21:24.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""What this means is that...""" start="00:21:29.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""What this means is that...""" start="00:21:30.080" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""Let's, for example, copy this text from here""" start="00:21:32.120" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and squash it all into one line. If I press M-q here,""" start="00:21:34.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then the lines will be broken""" start="00:21:40.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""according to the fill column indicator up here.""" start="00:21:43.680" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""This is the traditional usage of M-q,""" start="00:21:49.600" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and it still works in text-mode buffers,""" start="00:21:52.200" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""but in prog-mode buffers--""" start="00:21:54.160" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and squash it all into one line. If I press M-q here,""" start="00:21:35.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then the lines will be broken""" start="00:21:40.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""according to the fill column indicator up here.""" start="00:21:42.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""This is the traditional usage of M-q,""" start="00:21:49.480" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and it still works in text-mode buffers,""" start="00:21:52.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""but in prog-mode buffers--""" start="00:21:54.120" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""so any major mode inheriting prog-mode--""" start="00:21:56.640" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""M-q will now by default be bound""" start="00:22:00.080" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""to prog-fill-reindent-defun. To summarize the point,""" start="00:22:02.200" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""if you are editing a string or a comment,""" start="00:22:09.640" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then the comment will be filled.""" start="00:22:13.360" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""But if you are outside of a comment or outside of a string,""" start="00:22:15.940" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then the defun or the top-level construct""" start="00:22:19.040" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""if you are editing a string or a comment,""" start="00:22:09.720" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then the comment will be filled.""" start="00:22:13.480" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""But if you are outside of a comment or outside of a string,""" start="00:22:15.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then the defun or the top-level construct""" start="00:22:19.160" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""in the programming language will be re-indented.""" start="00:22:22.920" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Let's try that out with maybe some file I have open here.""" start="00:22:25.560" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""If I'm in this... Let's choose some function,""" start="00:22:33.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""let's take this for example.""" start="00:22:37.720" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Let's try that out with maybe some file I have open here.""" start="00:22:26.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""If I'm in this... Let's choose some function,""" start="00:22:33.860" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""let's take this for example.""" start="00:22:38.820" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""If we followed all of this again,""" start="00:22:41.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and I press M-q in on this paragraph,""" start="00:22:42.880" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then the paragraph gets re-indented.""" start="00:22:46.480" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""But if I'm down here and I choose to break the indentation""" start="00:22:49.400" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and then press M-q,""" start="00:22:55.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then as you see, it practically selected the defun""" start="00:22:58.240" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and re-indented everything""" start="00:23:02.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""without having me to move the point around in the buffer.""" start="00:23:03.560" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""So I think that's a really nice feature,""" start="00:23:06.700" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which a lot of people can appreciate.""" start="00:23:08.560" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""It's one of those niceties which comes from time to time.""" start="00:23:12.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and I press M-q in on this paragraph,""" start="00:22:43.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then the paragraph gets re-indented.""" start="00:22:47.620" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""But if I'm down here and I choose to break the indentation""" start="00:22:50.040" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and then press M-q,""" start="00:22:54.860" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then as you see, it practically selected the defun""" start="00:22:56.181" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and re-indented everything""" start="00:23:02.400" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""without having need to move the point around in the buffer.""" start="00:23:03.560" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""So I think that's a really nice feature,""" start="00:23:06.800" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which a lot of people can appreciate.""" start="00:23:08.680" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""It's one of those niceties which comes from time to time.""" start="00:23:11.040" video="mainVideo-emacs30" id="subtitle"]]
-<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:23:18.280" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Right, so that was my overview""" start="00:23:18.280" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""of what's going to be new in Emacs 30.""" start="00:23:20.600" video="mainVideo-emacs30" id="subtitle"]]
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:23:17.880" video="mainVideo-emacs30" id="subtitle"]]</div>[[!template text="""Right, so that was my overview""" start="00:23:17.880" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""of what's going to be new in Emacs 30.""" start="00:23:20.680" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""I hope that most people could take away""" start="00:23:22.560" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""something from this presentation""" start="00:23:24.360" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and have something to look forward""" start="00:23:26.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""to try out after upgrading.""" start="00:23:28.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""As mentioned initially, as of recording,""" start="00:23:31.040" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""this release has not been completed yet.""" start="00:23:33.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""If this is still not the case""" start="00:23:36.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""when you're seeing this video,""" start="00:23:38.800" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and have something to look forward""" start="00:23:25.660" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""to try out after upgrading.""" start="00:23:29.420" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""As mentioned initially, as of recording,""" start="00:23:31.600" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""this release has not been completed yet.""" start="00:23:33.840" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""If this is still not the case""" start="00:23:36.940" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""when you're seeing this video,""" start="00:23:38.880" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""please consider downloading and building Emacs 30 yourself.""" start="00:23:40.200" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""If you have any issues, which is always the case,""" start="00:23:43.800" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""please report them to using report-emacs-bug.""" start="00:23:48.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""That will pop up a mail buffer,""" start="00:23:51.960" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and then you can describe your issue and send them out.""" start="00:23:55.080" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""please report them to using report-emacs-bug.""" start="00:23:48.320" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""That will pop up a mail buffer,""" start="00:23:56.340" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and then you can describe your issue and send them out.""" start="00:23:57.741" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""All bug reports are valuable,""" start="00:23:59.520" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""even if they are false positives or duplicates--""" start="00:24:01.760" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""it doesn't matter--""" start="00:24:04.360" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""because when you take the time to submit a bug report,""" start="00:24:05.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which describes something that's specific to your setup,""" start="00:24:08.440" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""which the developers might not have noticed or known about,""" start="00:24:12.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""then you are certainly helping out a lot of other people""" start="00:24:16.640" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""even if they are false positives or duplicates--""" start="00:24:01.840" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""it doesn't matter--""" start="00:24:04.000" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""because when you take the time to submit a bug report,""" start="00:24:05.240" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which describes something that's specific to your setup,""" start="00:24:08.920" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""which the developers might not have noticed or known about,""" start="00:24:12.360" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""then you are certainly helping out a lot of other people""" start="00:24:16.840" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""which might run into the same issue in the future.""" start="00:24:19.080" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""Especially with upgrades,""" start="00:24:21.680" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""it would be nice to figure out small problems""" start="00:24:23.120" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""it would be nice to figure out small problems""" start="00:24:23.360" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""which make upgrading difficult for some people.""" start="00:24:26.560" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""The ideal is, of course, to have no issues""" start="00:24:30.760" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""The ideal is, of course, to have no issues""" start="00:24:30.880" video="mainVideo-emacs30" id="subtitle"]]
[[!template text="""when upgrading from one version to another.""" start="00:24:34.560" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""Having said that, I thank you for your attention,""" start="00:24:36.160" video="mainVideo-emacs30" id="subtitle"]]
-[[!template text="""and I'm saying goodbye.""" start="00:24:39.520" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""Having said that, I thank you for your attention,""" start="00:24:37.200" video="mainVideo-emacs30" id="subtitle"]]
+[[!template text="""and I'm saying goodbye.""" start="00:24:41.940" video="mainVideo-emacs30" id="subtitle"]]
</div>
diff --git a/2024/info/emacs30-before.md b/2024/info/emacs30-before.md
index 13f0e5c9..2a81a6ae 100644
--- a/2024/info/emacs30-before.md
+++ b/2024/info/emacs30-before.md
@@ -10,19 +10,15 @@ Status: TO_CAPTION_QA
# Talk
<div class="vid mainVideo"><video controls preload="none" id="mainVideo-emacs30"><source src="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-emacs30" data="""
-00:00.000 Introduction
-01:41.760 Android
-07:43.680 EditorConfig
-09:38.440 use-package integration with package-vc
-13:22.860 JSON
-15:56.800 Native compilation
-17:29.580 Tree-sitter
-18:16.680 Completion preview mode
-19:33.240 package-isolate
-21:15.960 Reindenting
-23:18.280 Wrapping up
-
-"""]]<div></div>Duration: 24:55 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-emacs30">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--edited.webm">Download --edited.webm (52MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.webm">Download --main.webm (53MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--notes.org">Download --notes.org</a></li><li><a href="https://toobnix.org/w/fxFD5JMMkmj1bazUw4zErx">View on Toobnix</a></li><li><a href="https://youtu.be/xZJhMAMI7A0">View on Youtube</a></li></ul></div></div>
+13:11.400 JSON
+15:56.840 Native compilation
+17:30.720 Tree-sitter
+18:16.820 Completion preview mode
+19:34.220 package-isolate
+21:16.780 Reindenting
+23:17.880 Wrapping up
+
+"""]]<div></div>Duration: 24:55 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-emacs30">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--edited.webm">Download --edited.webm (52MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt.rej">Download --main.vtt.rej</a> (unedited)</li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.webm">Download --main.webm (53MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--notes.org">Download --notes.org</a></li><li><a href="https://toobnix.org/w/fxFD5JMMkmj1bazUw4zErx">View on Toobnix</a></li><li><a href="https://youtu.be/xZJhMAMI7A0">View on Youtube</a></li></ul></div></div>
# Q&A