WEBVTT
00:00:02.960 --> 00:00:04.960
"Far away in the heavenly abode of the
00:00:04.960 --> 00:00:06.560
great god Indra,
00:00:06.560 --> 00:00:08.320
there is a wonderful net which has been
00:00:08.320 --> 00:00:10.160
hung by some cunning artificer
00:00:10.160 --> 00:00:12.080
in such a manner that it stretches out
00:00:12.080 --> 00:00:14.320
infinitely in all directions.
00:00:14.320 --> 00:00:15.920
In accordance with the extravagant
00:00:15.920 --> 00:00:18.240
tastes of deities, the artificer has hung
00:00:18.240 --> 00:00:20.960
a single glittering jewel in each eye of
00:00:20.960 --> 00:00:22.080
the net,
00:00:22.080 --> 00:00:24.000
and since the net itself is infinite, the
00:00:24.000 --> 00:00:26.480
jewels are infinite in number.
00:00:26.480 --> 00:00:28.400
There hang the jewels, glittering like
00:00:28.400 --> 00:00:30.480
stars in the first magnitude,
00:00:30.480 --> 00:00:33.440
a wonderful sight to behold. Were we to
00:00:33.440 --> 00:00:34.800
select one of these jewels for
00:00:34.800 --> 00:00:35.680
inspection,
00:00:35.680 --> 00:00:37.760
we would discover that in its polished
00:00:37.760 --> 00:00:39.520
surface there are reflected
00:00:39.520 --> 00:00:41.920
all the other jewels in the net, infinite
00:00:41.920 --> 00:00:43.360
in number.
00:00:43.360 --> 00:00:45.600
If we look still more closely, we would
00:00:45.600 --> 00:00:47.840
see that each of the jewels reflected in
00:00:47.840 --> 00:00:48.960
this one jewel
00:00:48.960 --> 00:00:52.239
reflects all the others." This is the
00:00:52.239 --> 00:00:54.000
metaphor of Indra's Net,
00:00:54.000 --> 00:00:56.840
which is told in some schools of
00:00:56.840 --> 00:00:59.359
philosophy. Let's keep this metaphor in
00:00:59.359 --> 00:01:00.160
mind,
00:01:00.160 --> 00:01:01.920
because it'll help us understand the
00:01:01.920 --> 00:01:03.760
Emacs extension that we're about to
00:01:03.760 --> 00:01:06.960
discuss.
00:01:06.960 --> 00:01:10.080
In editing text, there's two
00:01:10.080 --> 00:01:13.200
main paradigms: one
00:01:13.200 --> 00:01:16.880
is editing at the ground level,
00:01:16.880 --> 00:01:19.439
where the characters that we type
00:01:19.439 --> 00:01:22.159
actually appear on the screen,
00:01:22.159 --> 00:01:25.960
the changes we make actually occur.
00:01:28.479 --> 00:01:30.720
The other editing paradigm is where we
00:01:30.720 --> 00:01:33.439
escape to a higher level
00:01:33.439 --> 00:01:36.000
and now the characters that we type are
00:01:36.000 --> 00:01:36.479
not...
00:01:36.479 --> 00:01:39.040
They don't actually appear on the screen
00:01:39.040 --> 00:01:41.600
because we're not at the ground level
00:01:41.600 --> 00:01:44.799
with the text, we are at a higher level
00:01:44.799 --> 00:01:48.479
looking down at the text
00:01:48.479 --> 00:01:51.920
and regarding the text, referring to
00:01:51.920 --> 00:01:54.640
this world of text in terms of a
00:01:54.640 --> 00:01:56.159
language.
00:01:56.159 --> 00:01:57.920
For instance, we could describe this
00:01:57.920 --> 00:02:00.640
world as having words and paragraphs and
00:02:00.640 --> 00:02:02.079
sentences and
00:02:02.079 --> 00:02:04.640
lines and so on. We could reason
00:02:04.640 --> 00:02:05.360
about this
00:02:05.360 --> 00:02:08.800
text in terms of these
00:02:08.800 --> 00:02:11.440
textual entities and this textual
00:02:11.440 --> 00:02:13.120
language.
00:02:13.120 --> 00:02:15.920
This is the second paradigm of text
00:02:15.920 --> 00:02:18.640
editing.
00:02:18.640 --> 00:02:22.800
When we're in the second paradigm,
00:02:22.800 --> 00:02:24.800
there is a way to go down to ground
00:02:24.800 --> 00:02:26.480
level. You hit Enter
00:02:26.480 --> 00:02:28.160
now--or we'll hit Enter to go down to the
00:02:28.160 --> 00:02:30.480
ground level, and you can hit Escape
00:02:30.480 --> 00:02:33.200
to go back out to the referential level.
00:02:33.200 --> 00:02:35.200
Enter to go down to ground level
00:02:35.200 --> 00:02:37.280
and Escape to go up to the referential
00:02:37.280 --> 00:02:40.160
level.
00:02:40.160 --> 00:02:44.879
Now, in Vim, the nouns
00:02:44.879 --> 00:02:48.239
in this world of text all
00:02:48.239 --> 00:02:50.959
share the same referential plane which
00:02:50.959 --> 00:02:51.519
we call
00:02:51.519 --> 00:02:54.319
normal mode. So in normal mode, all of the
00:02:54.319 --> 00:02:54.959
nouns
00:02:54.959 --> 00:02:57.360
of the world of text are available,
00:02:57.360 --> 00:02:58.959
whether it's words or sentences or
00:02:58.959 --> 00:03:00.959
paragraphs,
00:03:00.959 --> 00:03:04.400
and they all share this same
00:03:04.400 --> 00:03:08.319
referential plane.
00:03:08.319 --> 00:03:11.120
They compete for space on the
00:03:11.120 --> 00:03:12.720
keyboard.
00:03:12.720 --> 00:03:15.760
An alternative
00:03:15.760 --> 00:03:17.680
way to structure these modes is instead
00:03:17.680 --> 00:03:19.280
of having a single mode where all the
00:03:19.280 --> 00:03:21.840
nouns coexist,
00:03:21.840 --> 00:03:24.959
peacefully or otherwise, you instead
00:03:24.959 --> 00:03:30.400
have a dedicated mode for every noun.
00:03:30.400 --> 00:03:33.040
In that case, what happens is because
00:03:33.040 --> 00:03:35.440
your modal spaces are now much smaller,
00:03:35.440 --> 00:03:37.280
you're just talking about words or
00:03:37.280 --> 00:03:38.720
paragraphs or
00:03:38.720 --> 00:03:42.560
lines or something, the keys that you use
00:03:42.560 --> 00:03:45.760
can be much more targeted.
00:03:45.760 --> 00:03:48.560
You can use the same keystrokes in
00:03:48.560 --> 00:03:50.400
in all of your modes and they would have
00:03:50.400 --> 00:03:52.000
the same ideas behind them, but
00:03:52.000 --> 00:03:53.280
they would have different effects
00:03:53.280 --> 00:03:55.519
depending on which context you're using.
00:03:55.519 --> 00:03:57.519
It's the same keystrokes, different
00:03:57.519 --> 00:03:59.120
contexts.
00:03:59.120 --> 00:04:01.360
The advantage of that is it's often
00:04:01.360 --> 00:04:02.480
easier
00:04:02.480 --> 00:04:05.519
to change context than it is to
00:04:05.519 --> 00:04:09.040
learn new key bindings. So let's see
00:04:09.040 --> 00:04:12.080
an example of how that works. We go into
00:04:12.080 --> 00:04:13.680
character mode, and if you look at the
00:04:13.680 --> 00:04:15.439
mode line at the bottom of the screen there,
00:04:15.439 --> 00:04:18.720
you'll see that we're in character mode.
00:04:18.720 --> 00:04:21.519
Now, when we move up, down, left, and
00:04:21.519 --> 00:04:23.919
right, we're moving by character.
00:04:23.919 --> 00:04:28.479
We can also transform the text, and
00:04:28.479 --> 00:04:30.240
the transformations occur in terms of
00:04:30.240 --> 00:04:32.400
character.
00:04:32.400 --> 00:04:34.320
You can also go into word mode. In
00:04:34.320 --> 00:04:35.520
word mode,
00:04:35.520 --> 00:04:38.560
the transformations that you do are on
00:04:38.560 --> 00:04:40.000
words.
00:04:40.000 --> 00:04:42.320
and you try... Your movement is also in
00:04:42.320 --> 00:04:43.440
terms of words.
00:04:43.440 --> 00:04:45.600
So that's the level of granularity that
00:04:45.600 --> 00:04:46.560
you have.
00:04:46.560 --> 00:04:49.520
You could also go to line mode. When
00:04:49.520 --> 00:04:50.720
you're in line mode,
00:04:50.720 --> 00:04:53.759
you go up and down by line, and you can
00:04:53.759 --> 00:04:54.240
move lines
00:04:54.240 --> 00:04:57.520
up and down left and right and so on.
00:04:59.120 --> 00:05:00.880
The transformations you do are in
00:05:00.880 --> 00:05:02.800
terms of lines.
00:05:02.800 --> 00:05:08.400
You could also go to window mode, where
00:05:08.400 --> 00:05:10.639
now the objects that you're referring to
00:05:10.639 --> 00:05:12.400
are windows. You can
00:05:12.400 --> 00:05:15.759
move spatially amongst the windows or
00:05:15.759 --> 00:05:17.520
do transformations on the windows
00:05:17.520 --> 00:05:20.850
using the same keystrokes.
00:05:25.360 --> 00:05:28.720
So let's go to...
00:05:28.720 --> 00:05:32.800
Right. One of the things,
00:05:32.800 --> 00:05:35.280
the principles that play here is
00:05:35.280 --> 00:05:36.880
something called the Rumpelstiltskin
00:05:36.880 --> 00:05:38.000
principle, which is something
00:05:38.000 --> 00:05:40.720
that's known in computer science.
00:05:40.720 --> 00:05:42.320
If you can name something, then
00:05:43.759 --> 00:05:46.720
you have power over it. This is
00:05:46.720 --> 00:05:48.560
kind of an adaptation of that principle
00:05:48.560 --> 00:05:50.479
which says that if you can
00:05:50.479 --> 00:05:52.320
name something and if you can talk about
00:05:52.320 --> 00:05:54.000
it, then it's a noun
00:05:55.360 --> 00:05:56.960
in your editing language. If it's a
00:05:56.960 --> 00:05:58.960
noun, then it has...
00:05:58.960 --> 00:06:01.520
It's a mode. So if we can talk about it,
00:06:01.520 --> 00:06:02.319
it's a noun.
00:06:02.319 --> 00:06:05.039
If it's a noun, then it's a mode. One
00:06:05.039 --> 00:06:06.479
of the things we've been talking a lot
00:06:06.479 --> 00:06:07.039
about
00:06:07.039 --> 00:06:10.800
is modes. In fact,
00:06:10.800 --> 00:06:14.240
by this principle, modes also
00:06:14.240 --> 00:06:17.280
should be a mode.
00:06:17.280 --> 00:06:19.039
You should have a mode that can reason
00:06:19.039 --> 00:06:21.120
in terms of modes as objects, just like
00:06:21.120 --> 00:06:22.080
you have
00:06:22.080 --> 00:06:23.759
modes where you can reason in terms of
00:06:23.759 --> 00:06:26.560
words or lines as objects.
00:06:26.560 --> 00:06:28.800
So let's do that. Let's go to mode
00:06:28.800 --> 00:06:30.479
mode.
00:06:30.479 --> 00:06:34.000
When you go to mode mode, you see that
00:06:34.000 --> 00:06:36.080
the objects that are depicted here are
00:06:36.080 --> 00:06:37.919
the modes that are
00:06:37.919 --> 00:06:40.960
present in the buffer,
00:06:40.960 --> 00:06:44.880
which we knew about because the
00:06:44.880 --> 00:06:46.400
style of editing that we had in this
00:06:46.400 --> 00:06:48.720
buffer was the Vim style of editing
00:06:48.720 --> 00:06:50.479
where there's an insert mode at the
00:06:50.479 --> 00:06:52.400
ground level and a normal mode that you
00:06:52.400 --> 00:06:53.039
can escape to.
00:06:53.039 --> 00:06:57.280
You insert, enter the ground level.
00:06:57.280 --> 00:07:00.479
Enter to the insert mode and escape to
00:07:00.479 --> 00:07:02.880
normal mode. When you look at the
00:07:02.880 --> 00:07:03.680
mode mode
00:07:03.680 --> 00:07:06.160
representation, you see that in fact that
00:07:06.160 --> 00:07:10.479
is the structure that's depicted.
00:07:10.479 --> 00:07:12.720
But in different situations, you might
00:07:12.720 --> 00:07:14.080
find
00:07:14.080 --> 00:07:16.080
that these modes are not the
00:07:16.080 --> 00:07:17.680
ones that you want. You want something
00:07:17.680 --> 00:07:19.360
more tailored for the specific
00:07:19.360 --> 00:07:20.880
application.
00:07:20.880 --> 00:07:23.050
For instance, if you're editing
00:07:24.240 --> 00:07:27.360
Lisp code (or code in general, but
00:07:27.360 --> 00:07:30.880
Lisp code is a particular example),
00:07:30.880 --> 00:07:32.960
you might want to take advantage of the
00:07:32.960 --> 00:07:34.000
structure of
00:07:34.000 --> 00:07:37.599
the code. For Lisp code in particular,
00:07:37.599 --> 00:07:40.960
we have a mode called symex-mode
00:07:40.960 --> 00:07:44.240
which is able to reason
00:07:44.240 --> 00:07:46.720
about your code in terms of its tree
00:07:46.720 --> 00:07:47.919
structure.
00:07:47.919 --> 00:07:50.560
So you can use the same keystrokes: hjkl
00:07:50.560 --> 00:07:51.120
goes
00:07:51.120 --> 00:07:53.440
left, right, up, and down, but you also have
00:07:53.440 --> 00:07:54.960
other keystrokes that are more
00:07:54.960 --> 00:07:58.080
specialized to the application.
00:07:58.080 --> 00:08:01.520
You can run the code.
00:08:01.520 --> 00:08:06.960
We'll see that happen here in a minute.
00:08:06.960 --> 00:08:10.080
You can make changes to it really
00:08:10.080 --> 00:08:12.240
quickly
00:08:12.240 --> 00:08:18.000
and see the effects of those changes.
00:08:18.000 --> 00:08:19.440
You're doing this all in a mode
00:08:19.440 --> 00:08:21.360
that's convenient for
00:08:21.360 --> 00:08:23.199
this particular application, which is
00:08:23.199 --> 00:08:25.039
editing Lisp code,
00:08:25.039 --> 00:08:28.960
and that is, in this case, symex-mode.
00:08:28.960 --> 00:08:31.039
Typically, when you're editing code
00:08:31.039 --> 00:08:32.640
like this, you'd want to be
00:08:32.640 --> 00:08:34.800
in insert mode actually typing out the
00:08:34.800 --> 00:08:36.640
code,
00:08:36.640 --> 00:08:38.320
and then you'd want to escape to symex
00:08:38.320 --> 00:08:40.959
mode rather than normal mode,
00:08:40.959 --> 00:08:42.159
and then you could escape again and
00:08:42.159 --> 00:08:44.080
you'd end up in normal mode.
00:08:44.080 --> 00:08:46.720
So this, if we go to mode mode, we see is
00:08:46.720 --> 00:08:48.000
depicted
00:08:48.000 --> 00:08:51.040
as this tower where insert is at the
00:08:51.040 --> 00:08:52.800
bottom and normal is at the top, but
00:08:52.800 --> 00:08:54.800
symex-mode is in between
00:08:54.800 --> 00:08:57.200
the two. You could also change that if
00:08:57.200 --> 00:08:58.800
you like. If you don't want symex-mode to
00:08:58.800 --> 00:09:00.640
be there, you could just
00:09:00.640 --> 00:09:03.760
move it to the top. Now you find symex is
00:09:03.760 --> 00:09:05.600
at the top and you enter down to
00:09:05.600 --> 00:09:06.160
normal.
00:09:06.160 --> 00:09:07.600
You can see it on the status bar at the
00:09:07.600 --> 00:09:10.480
bottom there. Enter to insert,
00:09:10.480 --> 00:09:13.839
escape to normal, escape to symex.
00:09:13.839 --> 00:09:16.480
In fact, you can even add more modes if
00:09:16.480 --> 00:09:19.380
you don't like the existing ones.
00:09:21.519 --> 00:09:23.839
Now we have an additional mode here.
00:09:23.839 --> 00:09:25.440
We have window mode. It goes down to
00:09:25.440 --> 00:09:27.519
symex, it goes down to normal.
00:09:27.519 --> 00:09:30.320
Enter the insert, escape to normal, escape
00:09:30.320 --> 00:09:33.600
to symex, escape to window.
00:09:33.600 --> 00:09:37.600
So we've talked... Okay, so another thing
00:09:37.600 --> 00:09:41.760
actually to note here is that in editing
00:09:41.760 --> 00:09:45.360
modes,
00:09:45.360 --> 00:09:46.720
if you look at the mode line at the
00:09:46.720 --> 00:09:48.399
bottom of the screen,
00:09:48.399 --> 00:09:50.640
you'll see that we are currently, in this
00:09:50.640 --> 00:09:51.519
buffer,
00:09:51.519 --> 00:09:54.560
we are currently in line mode.
00:09:54.560 --> 00:09:57.600
I'm going to hit Enter now and
00:09:57.600 --> 00:09:58.720
you'll see that when I hit
00:09:58.720 --> 00:10:01.519
Enter, nothing is happening. It's still in
00:10:01.519 --> 00:10:02.160
line mode.
00:10:02.160 --> 00:10:05.120
If you hit Escape, it's still in line mode.
00:10:05.120 --> 00:10:07.200
You can find out the reason for that
00:10:07.200 --> 00:10:10.640
by taking another meta jump out of this.
00:10:10.640 --> 00:10:12.800
You'll see that, in fact, the reason
00:10:12.800 --> 00:10:15.279
is that we're currently in line mode,
00:10:15.279 --> 00:10:17.360
and line mode is the only one available
00:10:17.360 --> 00:10:19.519
in this tower
00:10:19.519 --> 00:10:21.760
for editing the modes that are in
00:10:21.760 --> 00:10:24.880
operation in your ground level.
00:10:24.880 --> 00:10:26.560
In fact, line mode is all you need
00:10:26.560 --> 00:10:28.320
here, because this is just
00:10:28.320 --> 00:10:30.320
the nature of how these modes are
00:10:30.320 --> 00:10:32.079
laid out is
00:10:32.079 --> 00:10:35.040
in rows. So line mode is the most
00:10:35.040 --> 00:10:36.399
appropriate thing here.
00:10:36.399 --> 00:10:37.680
But you could change it to something
00:10:37.680 --> 00:10:39.740
else if you like.
00:10:40.959 --> 00:10:44.160
Now we've seen two towers. We've
00:10:44.160 --> 00:10:44.560
seen
00:10:44.560 --> 00:10:48.079
the Vim tower and we've seen
00:10:48.079 --> 00:10:53.680
also the symex tower, the Lisp tower.
00:10:53.680 --> 00:10:56.959
It turns out that, because we've been
00:10:56.959 --> 00:10:58.880
talking about towers now,
00:10:58.880 --> 00:11:01.519
by the rumpelstiltskin principle, towers
00:11:01.519 --> 00:11:02.800
also
00:11:02.800 --> 00:11:06.399
can be talked about,
00:11:06.399 --> 00:11:09.279
and therefore they also are a mode. So
00:11:09.279 --> 00:11:11.200
how do we go to tower mode?
00:11:11.200 --> 00:11:14.640
The way we go to tower mode is
00:11:14.640 --> 00:11:19.200
we go in a slightly different direction,
00:11:19.200 --> 00:11:20.800
and we find that we are now in tower
00:11:20.800 --> 00:11:23.360
mode.
00:11:23.360 --> 00:11:27.440
We see that there are many towers
00:11:27.440 --> 00:11:29.279
available. We're now...
00:11:29.279 --> 00:11:32.640
We're seeing several possible
00:11:32.640 --> 00:11:36.240
towers that we have written
00:11:36.240 --> 00:11:39.120
to be available and for use in
00:11:39.120 --> 00:11:41.440
different buffers. You can edit them
00:11:41.440 --> 00:11:44.000
on the fly. For instance, let's enter this
00:11:44.000 --> 00:11:46.630
tower.
00:11:48.000 --> 00:11:49.920
Now you see that in the bottom of
00:11:49.920 --> 00:11:51.519
the... In the mode line, you see that we're
00:11:51.519 --> 00:11:52.480
going
00:11:52.480 --> 00:11:54.240
across all of these different modes that
00:11:54.240 --> 00:11:56.480
were in the tower.
00:11:56.480 --> 00:11:58.800
You could escape and you could even
00:11:58.800 --> 00:12:00.399
move things around. You could put window
00:12:00.399 --> 00:12:00.880
mode
00:12:00.880 --> 00:12:02.399
all the way at the bottom, right above
00:12:02.399 --> 00:12:04.079
insert mode.
00:12:04.079 --> 00:12:06.880
Let's see that happen. There it is, window
00:12:06.880 --> 00:12:09.839
is right above insert, and
00:12:09.839 --> 00:12:13.040
so on. The tower always reflects your
00:12:13.040 --> 00:12:14.240
current position,
00:12:14.240 --> 00:12:15.760
so if you're in buffer mode here and you
00:12:15.760 --> 00:12:17.600
go down to line mode,
00:12:17.600 --> 00:12:19.120
when you go back to mode mode, you see
00:12:19.120 --> 00:12:22.480
that we are in line mode.
00:12:22.480 --> 00:12:24.000
But in practice, you wouldn't have a
00:12:24.000 --> 00:12:26.160
tower this elaborate because
00:12:26.160 --> 00:12:28.959
you'd rather have several smaller towers
00:12:28.959 --> 00:12:29.440
you enter,
00:12:29.440 --> 00:12:33.360
that you alternate between.
00:12:33.360 --> 00:12:36.639
Okay. So one
00:12:36.639 --> 00:12:39.839
other thing of interest here is that
00:12:39.839 --> 00:12:42.240
when you're in tower mode,
00:12:42.240 --> 00:12:43.839
if you look at the status line at the
00:12:43.839 --> 00:12:45.920
bottom there, we are currently
00:12:45.920 --> 00:12:49.200
in buffer mode while we are in tower
00:12:49.200 --> 00:12:49.839
mode.
00:12:49.839 --> 00:12:51.600
Tower mode actually isn't a mode
00:12:51.600 --> 00:12:53.519
really. Neither is mode mode. They're
00:12:53.519 --> 00:12:53.920
really
00:12:53.920 --> 00:12:58.000
referential planes or meta planes.
00:12:58.000 --> 00:13:00.959
In any case, you can see that we're in
00:13:00.959 --> 00:13:03.120
buffer mode. We can take a meta jump
00:13:03.120 --> 00:13:04.560
out of this to confirm
00:13:04.560 --> 00:13:07.120
that buffer mode is the only mode
00:13:07.120 --> 00:13:08.000
available
00:13:08.000 --> 00:13:10.560
when we're editing towers because that's
00:13:10.560 --> 00:13:11.200
the one
00:13:11.200 --> 00:13:14.240
we need, given that our towers are
00:13:14.240 --> 00:13:15.200
represented
00:13:15.200 --> 00:13:23.200
in individual buffers.
00:13:23.200 --> 00:13:26.000
Right. So let's see where we're
00:13:26.000 --> 00:13:26.320
at.
00:13:26.320 --> 00:13:28.240
Rumpelstiltskin principle... We talked
00:13:28.240 --> 00:13:30.160
about mode mode.
00:13:30.160 --> 00:13:32.240
We talked about the strange loop
00:13:32.240 --> 00:13:33.920
application of
00:13:33.920 --> 00:13:37.820
ground level modes in meta levels.
00:13:39.600 --> 00:13:42.240
We saw the different towers, and
00:13:42.240 --> 00:13:43.199
in fact,
00:13:43.199 --> 00:13:46.639
we're currently in
00:13:46.639 --> 00:13:50.720
Vim tower,
00:13:50.720 --> 00:13:53.120
where you can go to Emacs tower. Now,
00:13:53.120 --> 00:13:54.720
with a single keystroke, you can
00:13:54.720 --> 00:13:55.760
alternate
00:13:55.760 --> 00:13:59.040
between Emacs
00:13:59.040 --> 00:14:02.399
and Vim, which are represented--which are
00:14:02.399 --> 00:14:05.519
modeled as towers.
00:14:13.360 --> 00:14:15.360
So there's... One thing that we've
00:14:15.360 --> 00:14:17.040
sort of alluded to is that there are two
00:14:17.040 --> 00:14:18.160
directions
00:14:18.160 --> 00:14:20.480
that you can travel in when you're going
00:14:20.480 --> 00:14:22.399
through this framework.
00:14:22.399 --> 00:14:25.120
One direction is--and we'll
00:14:25.120 --> 00:14:33.760
visualize it like so...
00:14:33.760 --> 00:14:35.120
There's two directions you can travel,
00:14:35.120 --> 00:14:37.040
and you can either go sideways or you
00:14:37.040 --> 00:14:38.399
can go up and down.
00:14:38.399 --> 00:14:40.399
If you go sideways, you're changing your
00:14:40.399 --> 00:14:41.680
perspective.
00:14:41.680 --> 00:14:45.440
So normal mode, word mode, line mode,
00:14:45.440 --> 00:14:47.360
window mode, and so on are all different
00:14:47.360 --> 00:14:49.120
perspectives on your
00:14:49.120 --> 00:14:51.680
ground editing experience.
00:14:51.680 --> 00:14:53.040
The other direction you can travel
00:14:53.040 --> 00:14:55.519
in is up or down, which takes you
00:14:55.519 --> 00:14:57.920
through meta levels. So you go from the
00:14:57.920 --> 00:14:59.600
ground level editing experience
00:14:59.600 --> 00:15:01.920
up to mode mode and then up to the tower
00:15:01.920 --> 00:15:03.440
plane and so on
00:15:03.440 --> 00:15:07.040
and so on.
00:15:07.040 --> 00:15:10.800
So this all sounds
00:15:10.800 --> 00:15:14.880
very complex, but the truth is
00:15:14.880 --> 00:15:18.160
it's not really that complicated
00:15:18.160 --> 00:15:21.519
even though it feels that way. The reason
00:15:21.519 --> 00:15:22.959
it isn't that complicated
00:15:22.959 --> 00:15:26.480
is because no matter how many levels
00:15:26.480 --> 00:15:28.800
up or down you go and no matter where
00:15:28.800 --> 00:15:30.160
you are,
00:15:30.160 --> 00:15:32.399
whether you're in at the ground level
00:15:32.399 --> 00:15:34.079
editing the actual text
00:15:34.079 --> 00:15:36.000
or whether you're at a meta level, some
00:15:36.000 --> 00:15:37.600
unknown meta level and you don't know
00:15:37.600 --> 00:15:39.279
where you are,
00:15:39.279 --> 00:15:42.320
no matter where you are, the way in which
00:15:42.320 --> 00:15:44.399
you interact with it
00:15:44.399 --> 00:15:47.519
is the same at every level.
00:15:47.519 --> 00:15:52.000
That is the great power of
00:15:52.000 --> 00:15:55.440
this approach: that
00:15:55.440 --> 00:15:58.720
all of the different levels are the
00:15:58.720 --> 00:16:00.880
same.
00:16:00.880 --> 00:16:03.839
In fact, the complexity of the whole
00:16:03.839 --> 00:16:05.759
is exactly identical to the
00:16:05.759 --> 00:16:08.720
complexity of each part, so if you know
00:16:08.720 --> 00:16:10.000
how to edit words
00:16:10.000 --> 00:16:12.959
in the ground level buffer and you know
00:16:12.959 --> 00:16:13.440
how to move
00:16:13.440 --> 00:16:15.839
lines around using line mode, then you
00:16:15.839 --> 00:16:16.720
know how to edit
00:16:16.720 --> 00:16:19.519
any aspect of your editing experience at
00:16:19.519 --> 00:16:22.800
any level.
00:16:30.079 --> 00:16:32.000
So this is a pre-release demo. This
00:16:32.000 --> 00:16:33.839
doesn't exist on MELPA
00:16:33.839 --> 00:16:36.880
yet, but you can follow updates
00:16:36.880 --> 00:16:40.079
at this repo on github.
00:16:40.079 --> 00:16:44.079
If you can also be a beta tester or
00:16:44.079 --> 00:16:45.199
something like that, if you like, that
00:16:45.199 --> 00:16:46.000
would be very
00:16:46.000 --> 00:16:49.199
helpful. You can learn more about
00:16:49.199 --> 00:16:50.560
this at
00:16:50.560 --> 00:16:53.920
drym.org, which is where I house
00:16:53.920 --> 00:16:55.920
the research that I work on. In
00:16:55.920 --> 00:16:57.279
particular
00:16:57.279 --> 00:17:00.800
the research on epistemic levels is what
00:17:00.800 --> 00:17:03.600
inspired this particular Emacs extension.
00:17:03.600 --> 00:17:06.480
You can also learn about dialectical
00:17:06.480 --> 00:17:08.480
inheritance attribution, which is the
00:17:08.480 --> 00:17:10.880
basis of
00:17:10.880 --> 00:17:14.559
a new economic system that could be fair
00:17:14.559 --> 00:17:16.959
and could lead to a prosperous and happy
00:17:16.959 --> 00:17:19.439
world.
00:17:19.439 --> 00:17:22.799
You can follow me on
00:17:22.799 --> 00:17:26.319
Twitter at @countvajhula.
00:17:26.319 --> 00:17:31.919
That's it! Thank you.