summaryrefslogtreecommitdiffstats
path: root/2023/captions/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--main.vtt
blob: ccc2126facbd6f3d3a95c549d0289269d0c13957 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
WEBVTT captioned by sachac

NOTE Intro

00:00:00.000 --> 00:00:04.199
Hello everyone. Welcome to my talk.

00:00:04.200 --> 00:00:09.359
I am Akib Azmain Turja and my talk is titled

00:00:09.360 --> 00:00:11.519
"Eat and Eat-powered Eshell:

00:00:11.520 --> 00:00:15.439
Fast, featureful terminal inside Emacs."

NOTE Benchmarking

00:00:15.440 --> 00:00:22.839
So I just claimed that Eat is a fast terminal emulator.

00:00:22.840 --> 00:00:33.279
Let me show you that. I will print a 1-megabyte sized file

00:00:33.280 --> 00:00:39.039
in the terminal using this command.

00:00:39.040 --> 00:00:47.359
It takes 0.76 seconds. Now let's benchmark term-mode.

00:00:47.360 --> 00:00:54.799
I will be in term -mode. I use the same command,

00:00:54.800 --> 00:01:06.599
and it's clearly the loser.

00:01:06.600 --> 00:01:18.319
It took 12 seconds, more than an order of magnitude slower.

00:01:18.320 --> 00:01:27.279
Let's also measure the speed of return.

00:01:27.280 --> 00:01:33.479
And it took 0.79 seconds.

00:01:33.480 --> 00:01:36.159
But this is actually a little bit slower than Eat.

00:01:36.160 --> 00:01:41.799
Why? That shouldn't happen.

00:01:41.800 --> 00:01:49.719
Anyway, hopefully that shows how fast Eat is.

NOTE Running programs

00:01:49.720 --> 00:01:54.439
So let's run some extra programs in Eat,

00:01:54.440 --> 00:02:05.639
like top. You can also run htop or even btop.

00:02:05.640 --> 00:02:08.559
There is a fancy version of top.

00:02:08.560 --> 00:02:20.239
And obviously you can run Emacs in it.

00:02:20.240 --> 00:02:33.879
There is mouse support, and there is true color support.

00:02:33.880 --> 00:02:38.799
You can show any color in the terminal

00:02:38.800 --> 00:02:47.079
as long as your main display supports it.

NOTE Shell integration

00:02:47.080 --> 00:02:50.359
And then there is shell integration.

00:02:50.360 --> 00:02:52.399
For example, directory tracking.

00:02:52.400 --> 00:03:07.479
Like, I can switch to some other directory

00:03:07.480 --> 00:03:11.919
and Emacs follows the shell directory.

NOTE Prompt annotation

00:03:11.920 --> 00:03:16.439
Then there is prompt annotation,

00:03:16.440 --> 00:03:20.319
this column. These zeros indicate

00:03:20.320 --> 00:03:27.079
that the command has executed successfully.

00:03:27.080 --> 00:03:37.679
Then you can navigate between commands like this.

NOTE Message passing

00:03:37.680 --> 00:03:39.399
There is message passing.

00:03:39.400 --> 00:03:44.119
By message passing, I mean sending something

00:03:44.120 --> 00:03:46.959
from the terminal to the host Emacs.

00:03:46.960 --> 00:03:52.119
By host Emacs, I mean Emacs running the terminal.

00:03:52.120 --> 00:03:57.439
For example I can say "hi" and it's showing "hi"

00:03:57.440 --> 00:04:03.519
in this echo area of my Emacs.

NOTE Shell integration

00:04:03.520 --> 00:04:08.679
Then let's show you the killer feature of Eat,

00:04:08.680 --> 00:04:20.239
Eat's shell integration.

00:04:20.240 --> 00:04:37.839
You can run any program in it. For example: top, btop,

00:04:37.840 --> 00:04:52.159
and obviously Emacs itself.

NOTE Input modes

00:04:52.160 --> 00:05:03.159
So let's discuss how to use Eat. There are four input modes.

00:05:03.160 --> 00:05:07.319
The first one is semi-char mode. That is the default mode.

00:05:07.320 --> 00:05:10.919
This is like vterm. All keys are the same to your terminal

00:05:10.920 --> 00:05:17.879
except these keys: C-c, C-x, C-g, M-x, etc.

00:05:17.880 --> 00:05:20.599
And then there is char-mode, where all keys

00:05:20.600 --> 00:05:26.919
are same to your terminal, except this M-RET key

00:05:26.920 --> 00:05:29.679
which takes you back to the semi-char mode.

00:05:29.680 --> 00:05:34.559
Then there is Emacs mode where you can select

00:05:34.560 --> 00:05:39.719
and copy from the terminal buffer.

00:05:39.720 --> 00:05:42.679
And finally, there is line mode.

00:05:42.680 --> 00:05:49.199
You can use it to use your terminal like a comint buffer.

00:05:49.200 --> 00:05:55.999
All these input modes are available in both Eat

00:05:56.000 --> 00:06:05.879
and eat-eshell mode, except this line mode--

00:06:05.880 --> 00:06:10.439
it's only available on Eat.

00:06:10.440 --> 00:06:13.959
By "on Eat", I mean the terminal you get

00:06:13.960 --> 00:06:20.159
by this eat command. By eshell, I mean

00:06:20.160 --> 00:06:23.144
when eat-eshell integration is enabled

00:06:23.145 --> 00:06:28.446
inside the eshell buffer.

NOTE Documentation

00:06:33.760 --> 00:06:36.719
There is an info manual,

00:06:36.720 --> 00:06:51.599
And also the README is quite informative

00:06:51.600 --> 00:06:54.999
for you to get started.

00:06:55.000 --> 00:07:13.519
If you hit any problem,

00:07:13.520 --> 00:07:22.959
there is a dedicated chapter for debugging that,

00:07:22.960 --> 00:07:26.119
a common problems chapter.

00:07:26.120 --> 00:07:27.999
If your problem is still not fixed,

00:07:28.000 --> 00:07:29.519
please report it to me.

00:07:29.520 --> 00:07:36.119
This helps me improve it for everyone.

00:07:36.120 --> 00:07:40.359
When you report, please read this chapter

00:07:40.360 --> 00:07:53.159
so that you can make a better bug report.

00:07:53.160 --> 00:07:57.639
I am really looking forward to how people use it

00:07:57.640 --> 00:07:59.079
in their workflow.

00:07:59.080 --> 00:08:03.479
I am excited about that.

00:08:03.480 --> 00:08:10.759
Hopefully you enjoyed my talk. That was all.

00:08:10.760 --> 00:08:12.720
Enjoy EmacsConf. Goodbye.