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.