From f53968f2a9019a5d483d7b7e968daeb4668b2beb Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 2 Jan 2022 02:04:43 -0500 Subject: Add transcript for vterm talk from EmacsConf 2020 --- 2020/info/30.md | 185 +++++- ...f-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt | 526 +++++++++++++++++ ...of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt | 634 --------------------- 2020/talks/30.md | 6 - 4 files changed, 710 insertions(+), 641 deletions(-) create mode 100644 2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt delete mode 100644 2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt diff --git a/2020/info/30.md b/2020/info/30.md index c699d467..5591aa6f 100644 --- a/2020/info/30.md +++ b/2020/info/30.md @@ -1,9 +1,10 @@ # A tour of vterm Gabriele Bozzola (@sbozzolo) -[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.webm"]] +[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.webm" subtitles="/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.vtt"]] [Download compressed .webm video (17.7M)](https://media.emacsconf.org/2020/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo--compressed32.webm) [Download compressed .webm video (10.9M, highly compressed)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo--vp9-q56-video-original-audio.webm) +[View transcript](#transcript) [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo.webm" download="Download Q&A video"]] [Download compressed Q&A .webm video (4.1M)](https://media.emacsconf.org/2020/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo--compressed32.webm) @@ -49,3 +50,185 @@ in Emacs. # Notes + + +# Transcript + + +# Transcript + +[[!template text="Hello and welcome to this talk." start="00:00:00.880" video="mainVideo" id=subtitle]] +[[!template text="The title of this talk is a tour of vterm," start="00:00:03.760" video="mainVideo" id=subtitle]] +[[!template text="a fast and fully featured terminal emulator" start="00:00:06.080" video="mainVideo" id=subtitle]] +[[!template text="inside GNU Emacs." start="00:00:08.559" video="mainVideo" id=subtitle]] +[[!template text="So let's try to understand what we mean" start="00:00:10.801" video="mainVideo" id=subtitle]] +[[!template text="with " ;fast and fully featured." ;" start="00:00:12.720" video="mainVideo" id=subtitle]] +[[!template text="To do that we'll compare vterm" start="00:00:14.559" video="mainVideo" id=subtitle]] +[[!template text="with the packages which are built in Emacs," start="00:00:16.801" video="mainVideo" id=subtitle]] +[[!template text="mainly, term." start="00:00:20.401" video="mainVideo" id=subtitle]] +[[!template text="So let's jump into the vterm." start="00:00:22.400" video="mainVideo" id=subtitle]] +[[!template text="So this is a vterm buffer" start="00:00:25.040" video="mainVideo" id=subtitle]] +[[!template text="and this is a ansi-term buffer." start="00:00:26.720" video="mainVideo" id=subtitle]] +[[!template new="1" text="What I'm going to do now is" start="00:00:29.440" video="mainVideo" id=subtitle]] +[[!template text="first I'm going to prove to you" start="00:00:30.721" video="mainVideo" id=subtitle]] +[[!template text="what we mean by fast." start="00:00:32.160" video="mainVideo" id=subtitle]] +[[!template text="To do that, let me open a large file display on screen--" start="00:00:34.161" video="mainVideo" id=subtitle]] +[[!template text="a large file, this is about one megabyte of data--" start="00:00:37.441" video="mainVideo" id=subtitle]] +[[!template text="and let me time that." start="00:00:40.239" video="mainVideo" id=subtitle]] +[[!template text="It takes about 0.6 seconds with vterm." start="00:00:41.841" video="mainVideo" id=subtitle]] +[[!template text="Let's do the same with with ansi-term." start="00:00:45.201" video="mainVideo" id=subtitle]] +[[!template text="Well, we already see the difference." start="00:00:48.321" video="mainVideo" id=subtitle]] +[[!template new="1" text="So I will use this time to tell you" start="00:00:51.520" video="mainVideo" id=subtitle]] +[[!template text="what's different, and what is vterm exactly." start="00:00:53.039" video="mainVideo" id=subtitle]] +[[!template text="vterm is a terminal emulator" start="00:00:56.321" video="mainVideo" id=subtitle]] +[[!template text="built on top of an external library." start="00:00:58.400" video="mainVideo" id=subtitle]] +[[!template text="The library is called libvterm," start="00:01:00.801" video="mainVideo" id=subtitle]] +[[!template text="and is the same library used by Newton" start="00:01:02.719" video="mainVideo" id=subtitle]] +[[!template text="for their own terminal emulator." start="00:01:05.519" video="mainVideo" id=subtitle]] +[[!template text="It's a C library, and this is what gives us" start="00:01:07.200" video="mainVideo" id=subtitle]] +[[!template text="a lot of good features. First, the speed." start="00:01:10.799" video="mainVideo" id=subtitle]] +[[!template text="Time spent here, 0.6, is essentially" start="00:01:15.119" video="mainVideo" id=subtitle]] +[[!template text="the time that it takes to:" start="00:01:17.120" video="mainVideo" id=subtitle]] +[[!template text="1. convert the Emacs representation of text" start="00:01:18.479" video="mainVideo" id=subtitle]] +[[!template text="into the vterm representation of what is a string," start="00:01:22.241" video="mainVideo" id=subtitle]] +[[!template text="and 2., into actually displaying that," start="00:01:25.041" video="mainVideo" id=subtitle]] +[[!template text="and that can take time" start="00:01:27.361" video="mainVideo" id=subtitle]] +[[!template text="if there's fontification involved." start="00:01:29.520" video="mainVideo" id=subtitle]] +[[!template text="So these are the 0.6 seconds there." start="00:01:32.241" video="mainVideo" id=subtitle]] +[[!template text="As we say, in ansi-term, that's much more time." start="00:01:34.240" video="mainVideo" id=subtitle]] +[[!template text="It's much slower. So the terminal will feel" start="00:01:38.480" video="mainVideo" id=subtitle]] +[[!template text="much snappier, much faster." start="00:01:40.721" video="mainVideo" id=subtitle]] +[[!template new="1" text="But that's not the main benefit or the only benefit" start="00:01:42.880" video="mainVideo" id=subtitle]] +[[!template text="of using this external library vterm." start="00:01:46.721" video="mainVideo" id=subtitle]] +[[!template text="The second big benefit is that" start="00:01:49.760" video="mainVideo" id=subtitle]] +[[!template text="vterm has support for all the escape codes" start="00:01:53.041" video="mainVideo" id=subtitle]] +[[!template text="that xterm has support for," start="00:01:56.560" video="mainVideo" id=subtitle]] +[[!template text="so vterm is essentially as running xterm" start="00:01:58.321" video="mainVideo" id=subtitle]] +[[!template text="inside an Emacs buffer. So let's see that." start="00:02:01.119" video="mainVideo" id=subtitle]] +[[!template text="For example, let's start by looking" start="00:02:03.600" video="mainVideo" id=subtitle]] +[[!template text="at the support for colors." start="00:02:05.760" video="mainVideo" id=subtitle]] +[[!template text="We have support for all the colors out of the box." start="00:02:08.239" video="mainVideo" id=subtitle]] +[[!template text="We don't have to do anything." start="00:02:10.320" video="mainVideo" id=subtitle]] +[[!template text="And if we did the same here, well," start="00:02:11.840" video="mainVideo" id=subtitle]] +[[!template text="we have only 20 colors." start="00:02:14.721" video="mainVideo" id=subtitle]] +[[!template text="There's a way to get all the colors," start="00:02:16.801" video="mainVideo" id=subtitle]] +[[!template text="but it's much more involved." start="00:02:18.240" video="mainVideo" id=subtitle]] +[[!template new="1" text="But this is not where vterm shines." start="00:02:19.680" video="mainVideo" id=subtitle]] +[[!template text="We can run all the commands that we want." start="00:02:23.040" video="mainVideo" id=subtitle]] +[[!template text="htop, ncdu, everything runs here." start="00:02:27.200" video="mainVideo" id=subtitle]] +[[!template text="Also this title, it's a fairly complicated" start="00:02:31.441" video="mainVideo" id=subtitle]] +[[!template text="manipulation of the window" start="00:02:35.520" video="mainVideo" id=subtitle]] +[[!template text="and it will not work here." start="00:02:37.921" video="mainVideo" id=subtitle]] +[[!template text="It just doesn't work actually." start="00:02:40.879" video="mainVideo" id=subtitle]] +[[!template text="Now the terminal is probably messed up. Yes." start="00:02:42.001" video="mainVideo" id=subtitle]] +[[!template text="So using this external library" start="00:02:46.161" video="mainVideo" id=subtitle]] +[[!template text="removes the burden from the developers" start="00:02:48.400" video="mainVideo" id=subtitle]] +[[!template text="of having to implement support" start="00:02:50.959" video="mainVideo" id=subtitle]] +[[!template text="for all the escape codes." start="00:02:52.320" video="mainVideo" id=subtitle]] +[[!template text="We just use those." start="00:02:53.281" video="mainVideo" id=subtitle]] +[[!template new="1" text="So in many ways, running vterm" start="00:02:55.360" video="mainVideo" id=subtitle]] +[[!template text="is running xterm inside Emacs," start="00:02:58.480" video="mainVideo" id=subtitle]] +[[!template text="but it's better than that because," start="00:03:01.760" video="mainVideo" id=subtitle]] +[[!template text="since this is an Emacs buffer," start="00:03:04.160" video="mainVideo" id=subtitle]] +[[!template text="we can enjoy a lot of features from Emacs" start="00:03:05.840" video="mainVideo" id=subtitle]] +[[!template text="as well as a tighter integration" start="00:03:09.760" video="mainVideo" id=subtitle]] +[[!template text="with Emacs itself." start="00:03:11.361" video="mainVideo" id=subtitle]] +[[!template text="For example, as you see here," start="00:03:13.200" video="mainVideo" id=subtitle]] +[[!template text="the title of my buffer is from the directory I'm in." start="00:03:15.841" video="mainVideo" id=subtitle]] +[[!template text="So let's go to my tmp." start="00:03:20.240" video="mainVideo" id=subtitle]] +[[!template text="The title will change." start="00:03:21.760" video="mainVideo" id=subtitle]] +[[!template text="So there's information being exchanged" start="00:03:23.441" video="mainVideo" id=subtitle]] +[[!template text="between vterm and Emacs." start="00:03:25.921" video="mainVideo" id=subtitle]] +[[!template text="And of course, the title is not the only place" start="00:03:28.000" video="mainVideo" id=subtitle]] +[[!template text="where information is exchanged." start="00:03:30.001" video="mainVideo" id=subtitle]] +[[!template text="I can find a file and I will be in the directory" start="00:03:32.000" video="mainVideo" id=subtitle]] +[[!template text="where my terminal is." start="00:03:35.920" video="mainVideo" id=subtitle]] +[[!template text="This feature is also available in ansi-term," start="00:03:37.681" video="mainVideo" id=subtitle]] +[[!template text="and it works also on vterm," start="00:03:40.000" video="mainVideo" id=subtitle]] +[[!template text="and it follows me. So if I go to tmp," start="00:03:41.361" video="mainVideo" id=subtitle]] +[[!template text="I'll get the tmp." start="00:03:43.441" video="mainVideo" id=subtitle]] +[[!template text="If I ssh to a remote server," start="00:03:44.720" video="mainVideo" id=subtitle]] +[[!template text="it will work also on remote servers as well," start="00:03:47.121" video="mainVideo" id=subtitle]] +[[!template text="which is a very nice way to edit files remotely" start="00:03:50.240" video="mainVideo" id=subtitle]] +[[!template text="while we're working on a shell." start="00:03:53.920" video="mainVideo" id=subtitle]] +[[!template new="1" text="And second, while vterm is not an Elisp interpreter" start="00:03:55.600" video="mainVideo" id=subtitle]] +[[!template text="like eshell, what we can do is" start="00:03:59.281" video="mainVideo" id=subtitle]] +[[!template text="we can still run Emacs functions." start="00:04:01.201" video="mainVideo" id=subtitle]] +[[!template text="So for example..." start="00:04:04.721" video="mainVideo" id=subtitle]] +[[!template text="that requires some configuration." start="00:04:06.081" video="mainVideo" id=subtitle]] +[[!template text="vterm command (message "hi")" start="00:04:08.001" video="mainVideo" id=subtitle]] +[[!template text="as you see there's a "hi" here." start="00:04:11.600" video="mainVideo" id=subtitle]] +[[!template text="So what I'm doing is I'm executing" start="00:04:13.121" video="mainVideo" id=subtitle]] +[[!template text="the Elisp function hi." start="00:04:14.960" video="mainVideo" id=subtitle]] +[[!template text="I can drop that and turn it around," start="00:04:16.239" video="mainVideo" id=subtitle]] +[[!template text="hash function to run Elisp functions." start="00:04:18.960" video="mainVideo" id=subtitle]] +[[!template text="Or another one, find-file, same." start="00:04:21.601" video="mainVideo" id=subtitle]] +[[!template text="We call this feature "message passing,"" start="00:04:24.880" video="mainVideo" id=subtitle]] +[[!template text="and it requires some configuration" start="00:04:27.361" video="mainVideo" id=subtitle]] +[[!template text="on the Emacs side as well as in the shell side." start="00:04:30.001" video="mainVideo" id=subtitle]] +[[!template new="1" text="It's important to stress" start="00:04:32.000" video="mainVideo" id=subtitle]] +[[!template text="what's the nature of vterm." start="00:04:33.441" video="mainVideo" id=subtitle]] +[[!template text="For instance, every time I'm sending a key binding," start="00:04:35.360" video="mainVideo" id=subtitle]] +[[!template text="it's not immediately clear if my intention is" start="00:04:37.920" video="mainVideo" id=subtitle]] +[[!template text="to send it to the shell or to Emacs." start="00:04:40.001" video="mainVideo" id=subtitle]] +[[!template text="So vterm implements some reasonable defaults," start="00:04:41.841" video="mainVideo" id=subtitle]] +[[!template text="but at the moment it's mainly packaged" start="00:04:44.320" video="mainVideo" id=subtitle]] +[[!template text="to display characters on a screen." start="00:04:46.800" video="mainVideo" id=subtitle]] +[[!template text="So for example, if you're using evil," start="00:04:49.120" video="mainVideo" id=subtitle]] +[[!template text="the editing commands in evil" start="00:04:50.721" video="mainVideo" id=subtitle]] +[[!template text="will not work immediately." start="00:04:52.640" video="mainVideo" id=subtitle]] +[[!template text="There's some work to be done" start="00:04:54.081" video="mainVideo" id=subtitle]] +[[!template text="and integration can be improved on that side," start="00:04:55.759" video="mainVideo" id=subtitle]] +[[!template new="1" text="but sometimes we really want this to behave" start="00:04:58.161" video="mainVideo" id=subtitle]] +[[!template text="exactly like a Emacs buffer." start="00:05:00.240" video="mainVideo" id=subtitle]] +[[!template text="We want to be able to search." start="00:05:02.240" video="mainVideo" id=subtitle]] +[[!template text="If I try to get it to search," start="00:05:03.681" video="mainVideo" id=subtitle]] +[[!template text="it will not work." start="00:05:06.640" video="mainVideo" id=subtitle]] +[[!template text="I will send it to the shell." start="00:05:07.281" video="mainVideo" id=subtitle]] +[[!template text="So to do that, we enabled vterm copy mode." start="00:05:08.401" video="mainVideo" id=subtitle]] +[[!template text="As you see, copy mode, and now this buffer" start="00:05:11.920" video="mainVideo" id=subtitle]] +[[!template text="is essentially a fundamental buffer." start="00:05:14.721" video="mainVideo" id=subtitle]] +[[!template text="I can move around. I can search." start="00:05:17.039" video="mainVideo" id=subtitle]] +[[!template text="So it must have... I can do everything I want." start="00:05:21.120" video="mainVideo" id=subtitle]] +[[!template text="And there are additional features." start="00:05:25.521" video="mainVideo" id=subtitle]] +[[!template text="For example, I can jump around all the prompts." start="00:05:26.480" video="mainVideo" id=subtitle]] +[[!template text="I find this extremely useful," start="00:05:30.561" video="mainVideo" id=subtitle]] +[[!template text="because I can copy updates from my programs." start="00:05:32.639" video="mainVideo" id=subtitle]] +[[!template text="What I always have to do is" start="00:05:35.040" video="mainVideo" id=subtitle]] +[[!template text="I have to Google some errors." start="00:05:38.321" video="mainVideo" id=subtitle]] +[[!template text="So what I do is I select that" start="00:05:41.521" video="mainVideo" id=subtitle]] +[[!template text="and I have my keybinding in Emacs conf," start="00:05:43.120" video="mainVideo" id=subtitle]] +[[!template text="and I'm Googling what I have to Google." start="00:05:45.121" video="mainVideo" id=subtitle]] +[[!template text="So this is very nice and if I..." start="00:05:48.480" video="mainVideo" id=subtitle]] +[[!template text="now that I have selected something," start="00:05:51.121" video="mainVideo" id=subtitle]] +[[!template text="if I just press return," start="00:05:52.640" video="mainVideo" id=subtitle]] +[[!template text="I will go back to my normal editing mode" start="00:05:53.841" video="mainVideo" id=subtitle]] +[[!template text="with the text copied, so I can paste it back." start="00:05:56.401" video="mainVideo" id=subtitle]] +[[!template text="So it's a quick way to interact with copy" start="00:06:00.161" video="mainVideo" id=subtitle]] +[[!template text="and interact with the output of a buffer." start="00:06:02.721" video="mainVideo" id=subtitle]] +[[!template new="1" text="So finally, let's discuss how to actually use vterm." start="00:06:05.841" video="mainVideo" id=subtitle]] +[[!template text="Let's circle back, let's go," start="00:06:09.121" video="mainVideo" id=subtitle]] +[[!template text="and let's look at the GitHub repo" start="00:06:10.560" video="mainVideo" id=subtitle]] +[[!template text="where development is happening." start="00:06:12.400" video="mainVideo" id=subtitle]] +[[!template text="vterm is available in MELPA," start="00:06:14.001" video="mainVideo" id=subtitle]] +[[!template text="but since it's leveraging the power" start="00:06:15.520" video="mainVideo" id=subtitle]] +[[!template text="of an external module," start="00:06:17.760" video="mainVideo" id=subtitle]] +[[!template text="you must have Emacs compiled" start="00:06:18.960" video="mainVideo" id=subtitle]] +[[!template text="with support for modules," start="00:06:20.480" video="mainVideo" id=subtitle]] +[[!template text="and many distros like Ubuntu, Debian," start="00:06:22.000" video="mainVideo" id=subtitle]] +[[!template text="that's not there. So you have to" start="00:06:25.600" video="mainVideo" id=subtitle]] +[[!template text="get Emacs with support for modules:" start="00:06:26.881" video="mainVideo" id=subtitle]] +[[!template text="compiling or getting images somewhere else." start="00:06:29.200" video="mainVideo" id=subtitle]] +[[!template text="And also, the first time you are going to use this," start="00:06:31.361" video="mainVideo" id=subtitle]] +[[!template text="which works only on Mac or GNU Linux systems," start="00:06:33.840" video="mainVideo" id=subtitle]] +[[!template text="Emacs will try to find and compile this module," start="00:06:38.961" video="mainVideo" id=subtitle]] +[[!template text="so it's important. This requirement is important." start="00:06:41.759" video="mainVideo" id=subtitle]] +[[!template text="If you're using Windows, well," start="00:06:44.241" video="mainVideo" id=subtitle]] +[[!template text="it's not available and will not work." start="00:06:46.401" video="mainVideo" id=subtitle]] +[[!template new="1" text="So to conclude, I want to just advertise this page." start="00:06:49.199" video="mainVideo" id=subtitle]] +[[!template text="If you have problems, look at the issues" start="00:06:53.440" video="mainVideo" id=subtitle]] +[[!template text="and open an issue in case." start="00:06:56.240" video="mainVideo" id=subtitle]] +[[!template text="We'll try to help you." start="00:06:58.241" video="mainVideo" id=subtitle]] +[[!template text="We are very excited about vterm," start="00:06:59.200" video="mainVideo" id=subtitle]] +[[!template text="and I think it's a transformative" start="00:07:00.800" video="mainVideo" id=subtitle]] +[[!template text="terminal experience inside GNU Emacs." start="00:07:02.639" video="mainVideo" id=subtitle]] diff --git a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt new file mode 100644 index 00000000..183ea9f6 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt @@ -0,0 +1,526 @@ +WEBVTT + +00:00:00.880 --> 00:00:03.760 +Hello and welcome to this talk. + +00:00:03.760 --> 00:00:06.080 +The title of this talk is a tour of vterm, + +00:00:06.080 --> 00:00:08.559 +a fast and fully featured terminal emulator + +00:00:08.559 --> 00:00:10.800 +inside GNU Emacs. + +00:00:10.801 --> 00:00:12.719 +So let's try to understand what we mean + +00:00:12.720 --> 00:00:14.559 +with "fast and fully featured." + +00:00:14.559 --> 00:00:16.800 +To do that we'll compare vterm + +00:00:16.801 --> 00:00:20.400 +with the packages which are built in Emacs, + +00:00:20.401 --> 00:00:22.400 +mainly, term. + +00:00:22.400 --> 00:00:25.039 +So let's jump into the vterm. + +00:00:25.040 --> 00:00:26.720 +So this is a vterm buffer + +00:00:26.720 --> 00:00:29.439 +and this is a ansi-term buffer. + +00:00:29.440 --> 00:00:30.720 +What I'm going to do now is + +00:00:30.721 --> 00:00:32.160 +first I'm going to prove to you + +00:00:32.160 --> 00:00:34.160 +what we mean by fast. + +00:00:34.161 --> 00:00:37.440 +To do that, let me open a large file display on screen-- + +00:00:37.441 --> 00:00:40.239 +a large file, this is about one megabyte of data-- + +00:00:40.239 --> 00:00:41.840 +and let me time that. + +00:00:41.841 --> 00:00:45.200 +It takes about 0.6 seconds with vterm. + +00:00:45.201 --> 00:00:48.320 +Let's do the same with with ansi-term. + +00:00:48.321 --> 00:00:51.520 +Well, we already see the difference. + +00:00:51.520 --> 00:00:53.039 +So I will use this time to tell you + +00:00:53.039 --> 00:00:56.320 +what's different, and what is vterm exactly. + +00:00:56.321 --> 00:00:58.399 +vterm is a terminal emulator + +00:00:58.400 --> 00:01:00.800 +built on top of an external library. + +00:01:00.801 --> 00:01:02.719 +The library is called libvterm, + +00:01:02.719 --> 00:01:05.519 +and is the same library used by Newton + +00:01:05.519 --> 00:01:07.200 +for their own terminal emulator. + +00:01:07.200 --> 00:01:10.799 +It's a C library, and this is what gives us + +00:01:10.799 --> 00:01:15.119 +a lot of good features. First, the speed. + +00:01:15.119 --> 00:01:17.119 +Time spent here, 0.6, is essentially + +00:01:17.120 --> 00:01:18.479 +the time that it takes to: + +00:01:18.479 --> 00:01:22.240 +1. convert the Emacs representation of text + +00:01:22.241 --> 00:01:25.040 +into the vterm representation of what is a string, + +00:01:25.041 --> 00:01:27.360 +and 2., into actually displaying that, + +00:01:27.361 --> 00:01:29.520 +and that can take time + +00:01:29.520 --> 00:01:32.240 +if there's fontification involved. + +00:01:32.241 --> 00:01:34.240 +So these are the 0.6 seconds there. + +00:01:34.240 --> 00:01:38.479 +As we say, in ansi-term, that's much more time. + +00:01:38.480 --> 00:01:40.720 +It's much slower. So the terminal will feel + +00:01:40.721 --> 00:01:42.880 +much snappier, much faster. + +00:01:42.880 --> 00:01:46.720 +But that's not the main benefit or the only benefit + +00:01:46.721 --> 00:01:49.759 +of using this external library vterm. + +00:01:49.760 --> 00:01:53.040 +The second big benefit is that + +00:01:53.041 --> 00:01:56.560 +vterm has support for all the escape codes + +00:01:56.560 --> 00:01:58.320 +that xterm has support for, + +00:01:58.321 --> 00:02:01.119 +so vterm is essentially as running xterm + +00:02:01.119 --> 00:02:03.600 +inside an Emacs buffer. So let's see that. + +00:02:03.600 --> 00:02:05.759 +For example, let's start by looking + +00:02:05.760 --> 00:02:08.239 +at the support for colors. + +00:02:08.239 --> 00:02:10.319 +We have support for all the colors out of the box. + +00:02:10.320 --> 00:02:11.840 +We don't have to do anything. + +00:02:11.840 --> 00:02:14.720 +And if we did the same here, well, + +00:02:14.721 --> 00:02:16.800 +we have only 20 colors. + +00:02:16.801 --> 00:02:18.239 +There's a way to get all the colors, + +00:02:18.240 --> 00:02:19.680 +but it's much more involved. + +00:02:19.680 --> 00:02:23.040 +But this is not where vterm shines. + +00:02:23.040 --> 00:02:27.200 +We can run all the commands that we want. + +00:02:27.200 --> 00:02:31.440 +htop, ncdu, everything runs here. + +00:02:31.441 --> 00:02:35.519 +Also this title, it's a fairly complicated + +00:02:35.520 --> 00:02:37.920 +manipulation of the window + +00:02:37.921 --> 00:02:40.879 +and it will not work here. + +00:02:40.879 --> 00:02:42.000 +It just doesn't work actually. + +00:02:42.001 --> 00:02:46.160 +Now the terminal is probably messed up. Yes. + +00:02:46.161 --> 00:02:48.400 +So using this external library + +00:02:48.400 --> 00:02:50.959 +removes the burden from the developers + +00:02:50.959 --> 00:02:52.319 +of having to implement support + +00:02:52.320 --> 00:02:53.280 +for all the escape codes. + +00:02:53.281 --> 00:02:55.360 +We just use those. + +00:02:55.360 --> 00:02:58.480 +So in many ways, running vterm + +00:02:58.480 --> 00:03:01.760 +is running xterm inside Emacs, + +00:03:01.760 --> 00:03:04.159 +but it's better than that because, + +00:03:04.160 --> 00:03:05.840 +since this is an Emacs buffer, + +00:03:05.840 --> 00:03:09.760 +we can enjoy a lot of features from Emacs + +00:03:09.760 --> 00:03:11.360 +as well as a tighter integration + +00:03:11.361 --> 00:03:13.200 +with Emacs itself. + +00:03:13.200 --> 00:03:15.840 +For example, as you see here, + +00:03:15.841 --> 00:03:20.239 +the title of my buffer is from the directory I'm in. + +00:03:20.240 --> 00:03:21.760 +So let's go to my tmp. + +00:03:21.760 --> 00:03:23.440 +The title will change. + +00:03:23.441 --> 00:03:25.920 +So there's information being exchanged + +00:03:25.921 --> 00:03:28.000 +between vterm and Emacs. + +00:03:28.000 --> 00:03:30.000 +And of course, the title is not the only place + +00:03:30.001 --> 00:03:32.000 +where information is exchanged. + +00:03:32.000 --> 00:03:35.920 +I can find a file and I will be in the directory + +00:03:35.920 --> 00:03:37.680 +where my terminal is. + +00:03:37.681 --> 00:03:40.000 +This feature is also available in ansi-term, + +00:03:40.000 --> 00:03:41.360 +and it works also on vterm, + +00:03:41.361 --> 00:03:43.440 +and it follows me. So if I go to tmp, + +00:03:43.441 --> 00:03:44.720 +I'll get the tmp. + +00:03:44.720 --> 00:03:47.120 +If I ssh to a remote server, + +00:03:47.121 --> 00:03:50.239 +it will work also on remote servers as well, + +00:03:50.240 --> 00:03:53.920 +which is a very nice way to edit files remotely + +00:03:53.920 --> 00:03:55.599 +while we're working on a shell. + +00:03:55.600 --> 00:03:59.280 +And second, while vterm is not an Elisp interpreter + +00:03:59.281 --> 00:04:01.200 +like eshell, what we can do is + +00:04:01.201 --> 00:04:04.720 +we can still run Emacs functions. + +00:04:04.721 --> 00:04:06.080 +So for example... + +00:04:06.081 --> 00:04:08.000 +that requires some configuration. + +00:04:08.001 --> 00:04:11.599 +vterm command (message "hi") + +00:04:11.600 --> 00:04:13.120 +as you see there's a "hi" here. + +00:04:13.121 --> 00:04:14.959 +So what I'm doing is I'm executing + +00:04:14.960 --> 00:04:16.239 +the Elisp function hi. + +00:04:16.239 --> 00:04:18.959 +I can drop that and turn it around, + +00:04:18.960 --> 00:04:21.600 +hash function to run Elisp functions. + +00:04:21.601 --> 00:04:24.880 +Or another one, find-file, same. + +00:04:24.880 --> 00:04:27.360 +We call this feature "message passing," + +00:04:27.361 --> 00:04:30.000 +and it requires some configuration + +00:04:30.001 --> 00:04:32.000 +on the Emacs side as well as in the shell side. + +00:04:32.000 --> 00:04:33.440 +It's important to stress + +00:04:33.441 --> 00:04:35.360 +what's the nature of vterm. + +00:04:35.360 --> 00:04:37.919 +For instance, every time I'm sending a key binding, + +00:04:37.920 --> 00:04:40.000 +it's not immediately clear if my intention is + +00:04:40.001 --> 00:04:41.840 +to send it to the shell or to Emacs. + +00:04:41.841 --> 00:04:44.320 +So vterm implements some reasonable defaults, + +00:04:44.320 --> 00:04:46.800 +but at the moment it's mainly packaged + +00:04:46.800 --> 00:04:49.120 +to display characters on a screen. + +00:04:49.120 --> 00:04:50.720 +So for example, if you're using evil, + +00:04:50.721 --> 00:04:52.639 +the editing commands in evil + +00:04:52.640 --> 00:04:54.080 +will not work immediately. + +00:04:54.081 --> 00:04:55.759 +There's some work to be done + +00:04:55.759 --> 00:04:58.160 +and integration can be improved on that side, + +00:04:58.161 --> 00:05:00.240 +but sometimes we really want this to behave + +00:05:00.240 --> 00:05:02.240 +exactly like a Emacs buffer. + +00:05:02.240 --> 00:05:03.680 +We want to be able to search. + +00:05:03.681 --> 00:05:06.639 +If I try to get it to search, + +00:05:06.640 --> 00:05:07.280 +it will not work. + +00:05:07.281 --> 00:05:08.400 +I will send it to the shell. + +00:05:08.401 --> 00:05:11.919 +So to do that, we enabled vterm copy mode. + +00:05:11.920 --> 00:05:14.720 +As you see, copy mode, and now this buffer + +00:05:14.721 --> 00:05:17.039 +is essentially a fundamental buffer. + +00:05:17.039 --> 00:05:21.120 +I can move around. I can search. + +00:05:21.120 --> 00:05:25.520 +So it must have... I can do everything I want. + +00:05:25.521 --> 00:05:26.479 +And there are additional features. + +00:05:26.480 --> 00:05:30.560 +For example, I can jump around all the prompts. + +00:05:30.561 --> 00:05:32.639 +I find this extremely useful, + +00:05:32.639 --> 00:05:35.039 +because I can copy updates from my programs. + +00:05:35.040 --> 00:05:38.320 +What I always have to do is + +00:05:38.321 --> 00:05:41.520 +I have to Google some errors. + +00:05:41.521 --> 00:05:43.120 +So what I do is I select that + +00:05:43.120 --> 00:05:45.120 +and I have my keybinding in Emacs conf, + +00:05:45.121 --> 00:05:48.479 +and I'm Googling what I have to Google. + +00:05:48.480 --> 00:05:51.120 +So this is very nice and if I... + +00:05:51.121 --> 00:05:52.639 +now that I have selected something, + +00:05:52.640 --> 00:05:53.840 +if I just press return, + +00:05:53.841 --> 00:05:56.400 +I will go back to my normal editing mode + +00:05:56.401 --> 00:06:00.160 +with the text copied, so I can paste it back. + +00:06:00.161 --> 00:06:02.720 +So it's a quick way to interact with copy + +00:06:02.721 --> 00:06:05.840 +and interact with the output of a buffer. + +00:06:05.841 --> 00:06:09.120 +So finally, let's discuss how to actually use vterm. + +00:06:09.121 --> 00:06:10.560 +Let's circle back, let's go, + +00:06:10.560 --> 00:06:12.400 +and let's look at the GitHub repo + +00:06:12.400 --> 00:06:14.000 +where development is happening. + +00:06:14.001 --> 00:06:15.520 +vterm is available in MELPA, + +00:06:15.520 --> 00:06:17.759 +but since it's leveraging the power + +00:06:17.760 --> 00:06:18.960 +of an external module, + +00:06:18.960 --> 00:06:20.479 +you must have Emacs compiled + +00:06:20.480 --> 00:06:22.000 +with support for modules, + +00:06:22.000 --> 00:06:25.600 +and many distros like Ubuntu, Debian, + +00:06:25.600 --> 00:06:26.880 +that's not there. So you have to + +00:06:26.881 --> 00:06:29.199 +get Emacs with support for modules: + +00:06:29.200 --> 00:06:31.360 +compiling or getting images somewhere else. + +00:06:31.361 --> 00:06:33.840 +And also, the first time you are going to use this, + +00:06:33.840 --> 00:06:38.960 +which works only on Mac or GNU Linux systems, + +00:06:38.961 --> 00:06:41.759 +Emacs will try to find and compile this module, + +00:06:41.759 --> 00:06:44.240 +so it's important. This requirement is important. + +00:06:44.241 --> 00:06:46.400 +If you're using Windows, well, + +00:06:46.401 --> 00:06:49.199 +it's not available and will not work. + +00:06:49.199 --> 00:06:53.440 +So to conclude, I want to just advertise this page. + +00:06:53.440 --> 00:06:56.240 +If you have problems, look at the issues + +00:06:56.240 --> 00:06:58.240 +and open an issue in case. + +00:06:58.241 --> 00:06:59.199 +We'll try to help you. + +00:06:59.200 --> 00:07:00.800 +We are very excited about vterm, + +00:07:00.800 --> 00:07:02.639 +and I think it's a transformative + +00:07:02.639 --> 00:07:10.319 +terminal experience inside GNU Emacs. diff --git a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt deleted file mode 100644 index 49db0989..00000000 --- a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt +++ /dev/null @@ -1,634 +0,0 @@ -WEBVTT - -00:00:00.880 --> 00:00:03.760 -hello and welcome to the stock - -00:00:03.760 --> 00:00:06.080 -the title of the stock is a tour feature - -00:00:06.080 --> 00:00:07.919 -a fast and fully featured terminal - -00:00:07.919 --> 00:00:08.559 -emulator - -00:00:08.559 --> 00:00:11.840 -inside new e-max so let's try to - -00:00:11.840 --> 00:00:13.360 -understand what we mean with the pass - -00:00:13.360 --> 00:00:14.559 -and fully featured - -00:00:14.559 --> 00:00:17.520 -and to do that we'll compare v term with - -00:00:17.520 --> 00:00:18.320 -the - -00:00:18.320 --> 00:00:20.640 -packages which are built in Emacs mean - -00:00:20.640 --> 00:00:22.400 -the term - -00:00:22.400 --> 00:00:25.199 -so let's let's jump into the v term so - -00:00:25.199 --> 00:00:26.720 -this is a feature buffer - -00:00:26.720 --> 00:00:29.679 -and this is a ansi term buffer what I'm - -00:00:29.679 --> 00:00:31.519 -going to do now is first I'm going to - -00:00:31.519 --> 00:00:32.160 -prove you - -00:00:32.160 --> 00:00:35.760 -what we move fast so to do that let me - -00:00:35.760 --> 00:00:37.520 -open a large file display on screen or - -00:00:37.520 --> 00:00:39.280 -large file this is about one megabyte of - -00:00:39.280 --> 00:00:40.239 -data - -00:00:40.239 --> 00:00:43.520 -and let me time that it takes about 0.6 - -00:00:43.520 --> 00:00:44.160 -seconds - -00:00:44.160 --> 00:00:47.200 -with feature let's do the same with - -00:00:47.200 --> 00:00:49.760 -with ancient term well we already - -00:00:49.760 --> 00:00:51.520 -already see the difference - -00:00:51.520 --> 00:00:53.039 -so I will use this time to tell you - -00:00:53.039 --> 00:00:54.559 -what's different and - -00:00:54.559 --> 00:00:57.360 -what is v term exactly so v term is a - -00:00:57.360 --> 00:00:58.879 -terminal emulator built - -00:00:58.879 --> 00:01:01.120 -on top of an external library the - -00:01:01.120 --> 00:01:02.719 -library is called libvi term - -00:01:02.719 --> 00:01:05.519 -and is the same library used by newton - -00:01:05.519 --> 00:01:07.200 -for their own terminal emulator - -00:01:07.200 --> 00:01:10.000 -it's a c library and this is what gives - -00:01:10.000 --> 00:01:10.799 -us - -00:01:10.799 --> 00:01:15.119 -a lot of good features first the speed - -00:01:15.119 --> 00:01:17.280 -time spent here 0.6 is essentially the - -00:01:17.280 --> 00:01:18.479 -time that it takes to - -00:01:18.479 --> 00:01:21.520 -one convert the emax representation of - -00:01:21.520 --> 00:01:22.240 -like text - -00:01:22.240 --> 00:01:23.840 -into the visa and representation of what - -00:01:23.840 --> 00:01:26.400 -was a string and two into - -00:01:26.400 --> 00:01:28.479 -actually displaying that and that can - -00:01:28.479 --> 00:01:29.520 -take time - -00:01:29.520 --> 00:01:31.840 -if there's a if there's quantification - -00:01:31.840 --> 00:01:33.680 -involved so these are the 0.6 seconds - -00:01:33.680 --> 00:01:34.240 -there - -00:01:34.240 --> 00:01:36.960 -as we say in the in ancestor that's much - -00:01:36.960 --> 00:01:37.920 -much - -00:01:37.920 --> 00:01:39.920 -more time it's much slower so the - -00:01:39.920 --> 00:01:41.680 -terminal will feel much snappier much - -00:01:41.680 --> 00:01:42.880 -faster - -00:01:42.880 --> 00:01:46.079 -but that's not the main benefit or the - -00:01:46.079 --> 00:01:47.840 -only benefit of using this external - -00:01:47.840 --> 00:01:48.799 -library - -00:01:48.799 --> 00:01:52.320 -feature the second big benefit - -00:01:52.320 --> 00:01:55.439 -is that v term has support for all the - -00:01:55.439 --> 00:01:56.560 -escape codes - -00:01:56.560 --> 00:01:59.200 -that exterm has support for so v term is - -00:01:59.200 --> 00:02:01.119 -essentially as running x term - -00:02:01.119 --> 00:02:03.600 -inside an imax buffer so let's see that - -00:02:03.600 --> 00:02:04.799 -this for example - -00:02:04.799 --> 00:02:07.119 -let's start by looking at the support - -00:02:07.119 --> 00:02:08.239 -for colors - -00:02:08.239 --> 00:02:09.920 -we have support for all the colors out - -00:02:09.920 --> 00:02:11.840 -of the box we don't have to do anything - -00:02:11.840 --> 00:02:15.040 -and if we did the same here well we have - -00:02:15.040 --> 00:02:15.680 -only - -00:02:15.680 --> 00:02:17.920 -20 colors there's a way to get all the - -00:02:17.920 --> 00:02:19.680 -colors but it's much more involved - -00:02:19.680 --> 00:02:23.040 -but this is not where v term shines - -00:02:23.040 --> 00:02:26.000 -uh we can run all the commands that we - -00:02:26.000 --> 00:02:27.200 -want - -00:02:27.200 --> 00:02:30.480 -h top and cdu - -00:02:30.480 --> 00:02:33.040 -everything runs here also this title - -00:02:33.040 --> 00:02:33.840 -it's a - -00:02:33.840 --> 00:02:36.400 -it's a fairly complicated manipulation - -00:02:36.400 --> 00:02:37.040 -of - -00:02:37.040 --> 00:02:40.879 -the window and it will not work here - -00:02:40.879 --> 00:02:42.319 -it just doesn't work actually now the - -00:02:42.319 --> 00:02:44.640 -terminal is probably messed up - -00:02:44.640 --> 00:02:48.400 -yes so using this external library - -00:02:48.400 --> 00:02:50.959 -removes the burden from the developers - -00:02:50.959 --> 00:02:52.000 -of having to implement - -00:02:52.000 --> 00:02:54.000 -support for all these cape codes we just - -00:02:54.000 --> 00:02:55.360 -use those - -00:02:55.360 --> 00:02:58.480 -so in many ways running veteran - -00:02:58.480 --> 00:03:01.760 -is us running extern inside a max - -00:03:01.760 --> 00:03:04.400 -but it's better than that because since - -00:03:04.400 --> 00:03:05.840 -this is an e-max buffer - -00:03:05.840 --> 00:03:08.879 -we can enjoy a lot of features from - -00:03:08.879 --> 00:03:09.760 -Emacs - -00:03:09.760 --> 00:03:11.920 -as well as a tighter integration with - -00:03:11.920 --> 00:03:13.200 -e-max itself - -00:03:13.200 --> 00:03:16.560 -for example as you see here the title of - -00:03:16.560 --> 00:03:17.599 -my buffer - -00:03:17.599 --> 00:03:20.720 -is from the director I'm in so let's go - -00:03:20.720 --> 00:03:21.760 -to my tmp - -00:03:21.760 --> 00:03:24.799 -the title will change so there's - -00:03:24.799 --> 00:03:26.560 -information being exchanged between v - -00:03:26.560 --> 00:03:28.000 -term and index - -00:03:28.000 --> 00:03:29.760 -and of course the title is not the only - -00:03:29.760 --> 00:03:32.000 -place where information is exchanged - -00:03:32.000 --> 00:03:34.799 -I can find a file and I will be in the - -00:03:34.799 --> 00:03:35.920 -directory - -00:03:35.920 --> 00:03:38.239 -where my terminal is this feature is - -00:03:38.239 --> 00:03:40.000 -also available in nc term - -00:03:40.000 --> 00:03:41.680 -and it works also on b term and it - -00:03:41.680 --> 00:03:43.840 -follows me so if I go to tmp I'll get - -00:03:43.840 --> 00:03:44.720 -the tmp - -00:03:44.720 --> 00:03:48.000 -if I ssh to a remote server it will work - -00:03:48.000 --> 00:03:48.640 -also - -00:03:48.640 --> 00:03:51.120 -on remote servers as well which is a - -00:03:51.120 --> 00:03:53.920 -very nice way to edit files remotely - -00:03:53.920 --> 00:03:55.760 -while we're working on a shelf and - -00:03:55.760 --> 00:03:57.360 -second while vterm - -00:03:57.360 --> 00:03:59.599 -is not an e-lisp interpreter like - -00:03:59.599 --> 00:04:02.159 -initial what we can do is we can - -00:04:02.159 --> 00:04:06.080 -still run inbox functions so for example - -00:04:06.080 --> 00:04:08.319 -that requires some configuration the - -00:04:08.319 --> 00:04:10.159 -term - -00:04:10.159 --> 00:04:12.480 -command message I as you see there's a - -00:04:12.480 --> 00:04:14.000 -higher so what I'm doing - -00:04:14.000 --> 00:04:16.239 -is I'm executing the eagles function I - -00:04:16.239 --> 00:04:17.199 -and I can drop that - -00:04:17.199 --> 00:04:19.840 -and turn it around uh hash function to - -00:04:19.840 --> 00:04:20.320 -run - -00:04:20.320 --> 00:04:24.880 -a-list functions or another one file see - -00:04:24.880 --> 00:04:27.600 -we call this feature message passing and - -00:04:27.600 --> 00:04:28.800 -it requires - -00:04:28.800 --> 00:04:30.880 -some configuration on the emac side as - -00:04:30.880 --> 00:04:32.000 -well as in the shell side - -00:04:32.000 --> 00:04:34.000 -it's important to stress what's the - -00:04:34.000 --> 00:04:35.360 -nature of feature - -00:04:35.360 --> 00:04:37.360 -for instance every time I'm sending a - -00:04:37.360 --> 00:04:39.120 -key binding it's not immediately clear - -00:04:39.120 --> 00:04:40.800 -if my intention is to send it to the - -00:04:40.800 --> 00:04:42.720 -shell or to imax so v term implements - -00:04:42.720 --> 00:04:44.320 -some reasonable defaults - -00:04:44.320 --> 00:04:46.800 -but at the moment it's mainly packaged - -00:04:46.800 --> 00:04:49.120 -to display characters on a screen - -00:04:49.120 --> 00:04:51.199 -so for example if you're using evil the - -00:04:51.199 --> 00:04:53.600 -editing commands in evil will not work - -00:04:53.600 --> 00:04:55.759 -immediately there's some work to be done - -00:04:55.759 --> 00:04:57.840 -and integration can be improved on that - -00:04:57.840 --> 00:04:58.479 -side but - -00:04:58.479 --> 00:05:00.240 -sometimes we really want this to behave - -00:05:00.240 --> 00:05:02.240 -exactly like a imax buffer - -00:05:02.240 --> 00:05:05.440 -we want to be able to search if - -00:05:05.440 --> 00:05:07.039 -if I try to get it to search it will not - -00:05:07.039 --> 00:05:08.880 -work I will send it to the shop so to do - -00:05:08.880 --> 00:05:09.360 -that - -00:05:09.360 --> 00:05:12.400 -we enabled the term copy mode so as you - -00:05:12.400 --> 00:05:12.800 -see - -00:05:12.800 --> 00:05:15.280 -copy mode and now this buffer is - -00:05:15.280 --> 00:05:17.039 -essentially a fundamental buffer - -00:05:17.039 --> 00:05:21.120 -I can move around as I can search - -00:05:21.120 --> 00:05:24.400 -uh so it must have I - -00:05:24.400 --> 00:05:25.840 -can do everything I want and there are - -00:05:25.840 --> 00:05:27.120 -additional features for example I can - -00:05:27.120 --> 00:05:29.600 -jump around - -00:05:29.600 --> 00:05:31.440 -all the prompts and I find this - -00:05:31.440 --> 00:05:32.639 -extremely useful - -00:05:32.639 --> 00:05:34.400 -because I can copy update from my - -00:05:34.400 --> 00:05:35.919 -programs or - -00:05:35.919 --> 00:05:39.199 -what I always have to do is I have to - -00:05:39.199 --> 00:05:42.400 -google some errors so what I do is I - -00:05:42.400 --> 00:05:43.120 -select that - -00:05:43.120 --> 00:05:45.919 -and I have my keybinding in maksakov and - -00:05:45.919 --> 00:05:46.880 -I'm googling - -00:05:46.880 --> 00:05:49.199 -what I have to google so this is very - -00:05:49.199 --> 00:05:50.400 -nice and - -00:05:50.400 --> 00:05:52.800 -if I now that have selected something if - -00:05:52.800 --> 00:05:54.400 -I just press return I will - -00:05:54.400 --> 00:05:57.120 -go back to my normal editing mode with - -00:05:57.120 --> 00:05:57.440 -the - -00:05:57.440 --> 00:06:00.400 -text copied so I can paste it back so - -00:06:00.400 --> 00:06:01.600 -it's a quick way to - -00:06:01.600 --> 00:06:04.160 -interact with copy and interact with uh - -00:06:04.160 --> 00:06:06.400 -with the output of a buffer so finally - -00:06:06.400 --> 00:06:07.840 -let's discuss how to actually - -00:06:07.840 --> 00:06:10.560 -use beta let's circle back and let's go - -00:06:10.560 --> 00:06:12.400 -and let's look at the github repo - -00:06:12.400 --> 00:06:14.400 -where development is happening v term is - -00:06:14.400 --> 00:06:15.520 -available in velpa - -00:06:15.520 --> 00:06:17.919 -but since it's leveraging the power of - -00:06:17.919 --> 00:06:18.960 -an external module - -00:06:18.960 --> 00:06:20.639 -you must have Emacs compiled with - -00:06:20.639 --> 00:06:22.000 -support for modules - -00:06:22.000 --> 00:06:25.600 -and many distros like ubuntu debian - -00:06:25.600 --> 00:06:27.199 -that's not there so you have to get - -00:06:27.199 --> 00:06:29.840 -Emacs with support for modules compiling - -00:06:29.840 --> 00:06:30.160 -or - -00:06:30.160 --> 00:06:32.000 -getting images somewhere else and also - -00:06:32.000 --> 00:06:33.840 -the first time you are going to use this - -00:06:33.840 --> 00:06:34.400 -which - -00:06:34.400 --> 00:06:37.440 -works only on mac or - -00:06:37.440 --> 00:06:40.319 -new linux systems Emacs will try to find - -00:06:40.319 --> 00:06:41.759 -and compile this module - -00:06:41.759 --> 00:06:43.680 -so it's important this requirement is - -00:06:43.680 --> 00:06:45.440 -important if you're using windows - -00:06:45.440 --> 00:06:47.600 -well that's not it's not available and - -00:06:47.600 --> 00:06:49.199 -will not work - -00:06:49.199 --> 00:06:52.560 -so to conclude I want to just advertise - -00:06:52.560 --> 00:06:53.440 -this page - -00:06:53.440 --> 00:06:56.240 -if you have problems look at the issues - -00:06:56.240 --> 00:06:57.120 -and - -00:06:57.120 --> 00:06:59.039 -open unusual in case we'll try to help - -00:06:59.039 --> 00:07:00.800 -you we are very excited about feature - -00:07:00.800 --> 00:07:02.639 -and I think it's a transformative - -00:07:02.639 --> 00:07:10.319 -terminal experience inside glue imax diff --git a/2020/talks/30.md b/2020/talks/30.md index 2f5637e8..1b6c41f4 100644 --- a/2020/talks/30.md +++ b/2020/talks/30.md @@ -8,12 +8,6 @@ Back to the [[schedule]] Previous: Pathing of Least Resistance Next: Lakota Language and Emacs -[[!template id="help" tags="help_with_main_captions" -summary="main talk does not have captions" -volunteer="" -message="""This talk does not have captions yet. Would you like to help [caption this talk](/help_with_main_captions)? You may be able to start with these -[autogenerated captions](/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt)."""]] - [[!inline pages="internal(2020/info/30)" raw="yes"]] Sunday, Nov 29 2020, ~ 2:45 PM - 2:55 PM EST -- cgit v1.2.3