diff options
Diffstat (limited to '2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.sbv')
-rw-r--r-- | 2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.sbv | 633 |
1 files changed, 633 insertions, 0 deletions
diff --git a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.sbv b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.sbv new file mode 100644 index 00000000..73cdf64b --- /dev/null +++ b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.sbv @@ -0,0 +1,633 @@ +0:00:00.880,0:00:06.080 +hello and welcome to the stock + +0:00:03.760,0:00:07.919 +the title of the stock is a tour feature + +0:00:06.080,0:00:08.559 +a fast and fully featured terminal + +0:00:07.919,0:00:11.840 +emulator + +0:00:08.559,0:00:13.360 +inside new e-max so let's try to + +0:00:11.840,0:00:14.559 +understand what we mean with the pass + +0:00:13.360,0:00:17.520 +and fully featured + +0:00:14.559,0:00:18.320 +and to do that we'll compare v term with + +0:00:17.520,0:00:20.640 +the + +0:00:18.320,0:00:22.400 +packages which are built in emacs mean + +0:00:20.640,0:00:25.199 +the term + +0:00:22.400,0:00:26.720 +so let's let's jump into the v term so + +0:00:25.199,0:00:29.679 +this is a feature buffer + +0:00:26.720,0:00:31.519 +and this is a ansi term buffer what i'm + +0:00:29.679,0:00:32.160 +going to do now is first i'm going to + +0:00:31.519,0:00:35.760 +prove you + +0:00:32.160,0:00:37.520 +what we move fast so to do that let me + +0:00:35.760,0:00:39.280 +open a large file display on screen or + +0:00:37.520,0:00:40.239 +large file this is about one megabyte of + +0:00:39.280,0:00:43.520 +data + +0:00:40.239,0:00:44.160 +and let me time that it takes about 0.6 + +0:00:43.520,0:00:47.200 +seconds + +0:00:44.160,0:00:49.760 +with feature let's do the same with + +0:00:47.200,0:00:51.520 +with ancient term well we already + +0:00:49.760,0:00:53.039 +already see the difference + +0:00:51.520,0:00:54.559 +so i will use this time to tell you + +0:00:53.039,0:00:57.360 +what's different and + +0:00:54.559,0:00:58.879 +what is v term exactly so v term is a + +0:00:57.360,0:01:01.120 +terminal emulator built + +0:00:58.879,0:01:02.719 +on top of an external library the + +0:01:01.120,0:01:05.519 +library is called libvi term + +0:01:02.719,0:01:07.200 +and is the same library used by newton + +0:01:05.519,0:01:10.000 +for their own terminal emulator + +0:01:07.200,0:01:10.799 +it's a c library and this is what gives + +0:01:10.000,0:01:15.119 +us + +0:01:10.799,0:01:17.280 +a lot of good features first the speed + +0:01:15.119,0:01:18.479 +time spent here 0.6 is essentially the + +0:01:17.280,0:01:21.520 +time that it takes to + +0:01:18.479,0:01:22.240 +one convert the emax representation of + +0:01:21.520,0:01:23.840 +like text + +0:01:22.240,0:01:26.400 +into the visa and representation of what + +0:01:23.840,0:01:28.479 +was a string and two into + +0:01:26.400,0:01:29.520 +actually displaying that and that can + +0:01:28.479,0:01:31.840 +take time + +0:01:29.520,0:01:33.680 +if there's a if there's quantification + +0:01:31.840,0:01:34.240 +involved so these are the 0.6 seconds + +0:01:33.680,0:01:36.960 +there + +0:01:34.240,0:01:37.920 +as we say in the in ancestor that's much + +0:01:36.960,0:01:39.920 +much + +0:01:37.920,0:01:41.680 +more time it's much slower so the + +0:01:39.920,0:01:42.880 +terminal will feel much snappier much + +0:01:41.680,0:01:46.079 +faster + +0:01:42.880,0:01:47.840 +but that's not the main benefit or the + +0:01:46.079,0:01:48.799 +only benefit of using this external + +0:01:47.840,0:01:52.320 +library + +0:01:48.799,0:01:55.439 +feature the second big benefit + +0:01:52.320,0:01:56.560 +is that v term has support for all the + +0:01:55.439,0:01:59.200 +escape codes + +0:01:56.560,0:02:01.119 +that exterm has support for so v term is + +0:01:59.200,0:02:03.600 +essentially as running x term + +0:02:01.119,0:02:04.799 +inside an imax buffer so let's see that + +0:02:03.600,0:02:07.119 +this for example + +0:02:04.799,0:02:08.239 +let's start by looking at the support + +0:02:07.119,0:02:09.920 +for colors + +0:02:08.239,0:02:11.840 +we have support for all the colors out + +0:02:09.920,0:02:15.040 +of the box we don't have to do anything + +0:02:11.840,0:02:15.680 +and if we did the same here well we have + +0:02:15.040,0:02:17.920 +only + +0:02:15.680,0:02:19.680 +20 colors there's a way to get all the + +0:02:17.920,0:02:23.040 +colors but it's much more involved + +0:02:19.680,0:02:26.000 +but this is not where v term shines + +0:02:23.040,0:02:27.200 +uh we can run all the commands that we + +0:02:26.000,0:02:30.480 +want + +0:02:27.200,0:02:33.040 +h top and cdu + +0:02:30.480,0:02:33.840 +everything runs here also this title + +0:02:33.040,0:02:36.400 +it's a + +0:02:33.840,0:02:37.040 +it's a fairly complicated manipulation + +0:02:36.400,0:02:40.879 +of + +0:02:37.040,0:02:42.319 +the window and it will not work here + +0:02:40.879,0:02:44.640 +it just doesn't work actually now the + +0:02:42.319,0:02:48.400 +terminal is probably messed up + +0:02:44.640,0:02:50.959 +yes so using this external library + +0:02:48.400,0:02:52.000 +removes the burden from the developers + +0:02:50.959,0:02:54.000 +of having to implement + +0:02:52.000,0:02:55.360 +support for all these cape codes we just + +0:02:54.000,0:02:58.480 +use those + +0:02:55.360,0:03:01.760 +so in many ways running veteran + +0:02:58.480,0:03:04.400 +is us running extern inside a max + +0:03:01.760,0:03:05.840 +but it's better than that because since + +0:03:04.400,0:03:08.879 +this is an e-max buffer + +0:03:05.840,0:03:09.760 +we can enjoy a lot of features from + +0:03:08.879,0:03:11.920 +emacs + +0:03:09.760,0:03:13.200 +as well as a tighter integration with + +0:03:11.920,0:03:16.560 +e-max itself + +0:03:13.200,0:03:17.599 +for example as you see here the title of + +0:03:16.560,0:03:20.720 +my buffer + +0:03:17.599,0:03:21.760 +is from the director i'm in so let's go + +0:03:20.720,0:03:24.799 +to my tmp + +0:03:21.760,0:03:26.560 +the title will change so there's + +0:03:24.799,0:03:28.000 +information being exchanged between v + +0:03:26.560,0:03:29.760 +term and index + +0:03:28.000,0:03:32.000 +and of course the title is not the only + +0:03:29.760,0:03:34.799 +place where information is exchanged + +0:03:32.000,0:03:35.920 +i can find a file and i will be in the + +0:03:34.799,0:03:38.239 +directory + +0:03:35.920,0:03:40.000 +where my terminal is this feature is + +0:03:38.239,0:03:41.680 +also available in nc term + +0:03:40.000,0:03:43.840 +and it works also on b term and it + +0:03:41.680,0:03:44.720 +follows me so if i go to tmp i'll get + +0:03:43.840,0:03:48.000 +the tmp + +0:03:44.720,0:03:48.640 +if i ssh to a remote server it will work + +0:03:48.000,0:03:51.120 +also + +0:03:48.640,0:03:53.920 +on remote servers as well which is a + +0:03:51.120,0:03:55.760 +very nice way to edit files remotely + +0:03:53.920,0:03:57.360 +while we're working on a shelf and + +0:03:55.760,0:03:59.599 +second while vterm + +0:03:57.360,0:04:02.159 +is not an e-lisp interpreter like + +0:03:59.599,0:04:06.080 +initial what we can do is we can + +0:04:02.159,0:04:08.319 +still run inbox functions so for example + +0:04:06.080,0:04:10.159 +that requires some configuration the + +0:04:08.319,0:04:12.480 +term + +0:04:10.159,0:04:14.000 +command message i as you see there's a + +0:04:12.480,0:04:16.239 +higher so what i'm doing + +0:04:14.000,0:04:17.199 +is i'm executing the eagles function i + +0:04:16.239,0:04:19.840 +and i can drop that + +0:04:17.199,0:04:20.320 +and turn it around uh hash function to + +0:04:19.840,0:04:24.880 +run + +0:04:20.320,0:04:27.600 +a-list functions or another one file see + +0:04:24.880,0:04:28.800 +we call this feature message passing and + +0:04:27.600,0:04:30.880 +it requires + +0:04:28.800,0:04:32.000 +some configuration on the emac side as + +0:04:30.880,0:04:34.000 +well as in the shell side + +0:04:32.000,0:04:35.360 +it's important to stress what's the + +0:04:34.000,0:04:37.360 +nature of feature + +0:04:35.360,0:04:39.120 +for instance every time i'm sending a + +0:04:37.360,0:04:40.800 +key binding it's not immediately clear + +0:04:39.120,0:04:42.720 +if my intention is to send it to the + +0:04:40.800,0:04:44.320 +shell or to imax so v term implements + +0:04:42.720,0:04:46.800 +some reasonable defaults + +0:04:44.320,0:04:49.120 +but at the moment it's mainly packaged + +0:04:46.800,0:04:51.199 +to display characters on a screen + +0:04:49.120,0:04:53.600 +so for example if you're using evil the + +0:04:51.199,0:04:55.759 +editing commands in evil will not work + +0:04:53.600,0:04:57.840 +immediately there's some work to be done + +0:04:55.759,0:04:58.479 +and integration can be improved on that + +0:04:57.840,0:05:00.240 +side but + +0:04:58.479,0:05:02.240 +sometimes we really want this to behave + +0:05:00.240,0:05:05.440 +exactly like a imax buffer + +0:05:02.240,0:05:07.039 +we want to be able to search if + +0:05:05.440,0:05:08.880 +if i try to get it to search it will not + +0:05:07.039,0:05:09.360 +work i will send it to the shop so to do + +0:05:08.880,0:05:12.400 +that + +0:05:09.360,0:05:12.800 +we enabled the term copy mode so as you + +0:05:12.400,0:05:15.280 +see + +0:05:12.800,0:05:17.039 +copy mode and now this buffer is + +0:05:15.280,0:05:21.120 +essentially a fundamental buffer + +0:05:17.039,0:05:24.400 +i can move around as i can search + +0:05:21.120,0:05:25.840 +uh so it must have i + +0:05:24.400,0:05:27.120 +can do everything i want and there are + +0:05:25.840,0:05:29.600 +additional features for example i can + +0:05:27.120,0:05:31.440 +jump around + +0:05:29.600,0:05:32.639 +all the prompts and i find this + +0:05:31.440,0:05:34.400 +extremely useful + +0:05:32.639,0:05:35.919 +because i can copy update from my + +0:05:34.400,0:05:39.199 +programs or + +0:05:35.919,0:05:42.400 +what i always have to do is i have to + +0:05:39.199,0:05:43.120 +google some errors so what i do is i + +0:05:42.400,0:05:45.919 +select that + +0:05:43.120,0:05:46.880 +and i have my keybinding in maksakov and + +0:05:45.919,0:05:49.199 +i'm googling + +0:05:46.880,0:05:50.400 +what i have to google so this is very + +0:05:49.199,0:05:52.800 +nice and + +0:05:50.400,0:05:54.400 +if i now that have selected something if + +0:05:52.800,0:05:57.120 +i just press return i will + +0:05:54.400,0:05:57.440 +go back to my normal editing mode with + +0:05:57.120,0:06:00.400 +the + +0:05:57.440,0:06:01.600 +text copied so i can paste it back so + +0:06:00.400,0:06:04.160 +it's a quick way to + +0:06:01.600,0:06:06.400 +interact with copy and interact with uh + +0:06:04.160,0:06:07.840 +with the output of a buffer so finally + +0:06:06.400,0:06:10.560 +let's discuss how to actually + +0:06:07.840,0:06:12.400 +use beta let's circle back and let's go + +0:06:10.560,0:06:14.400 +and let's look at the github repo + +0:06:12.400,0:06:15.520 +where development is happening v term is + +0:06:14.400,0:06:17.919 +available in velpa + +0:06:15.520,0:06:18.960 +but since it's leveraging the power of + +0:06:17.919,0:06:20.639 +an external module + +0:06:18.960,0:06:22.000 +you must have emacs compiled with + +0:06:20.639,0:06:25.600 +support for modules + +0:06:22.000,0:06:27.199 +and many distros like ubuntu debian + +0:06:25.600,0:06:29.840 +that's not there so you have to get + +0:06:27.199,0:06:30.160 +emacs with support for modules compiling + +0:06:29.840,0:06:32.000 +or + +0:06:30.160,0:06:33.840 +getting images somewhere else and also + +0:06:32.000,0:06:34.400 +the first time you are going to use this + +0:06:33.840,0:06:37.440 +which + +0:06:34.400,0:06:40.319 +works only on mac or + +0:06:37.440,0:06:41.759 +new linux systems emacs will try to find + +0:06:40.319,0:06:43.680 +and compile this module + +0:06:41.759,0:06:45.440 +so it's important this requirement is + +0:06:43.680,0:06:47.600 +important if you're using windows + +0:06:45.440,0:06:49.199 +well that's not it's not available and + +0:06:47.600,0:06:52.560 +will not work + +0:06:49.199,0:06:53.440 +so to conclude i want to just advertise + +0:06:52.560,0:06:56.240 +this page + +0:06:53.440,0:06:57.120 +if you have problems look at the issues + +0:06:56.240,0:06:59.039 +and + +0:06:57.120,0:07:00.800 +open unusual in case we'll try to help + +0:06:59.039,0:07:02.639 +you we are very excited about feature + +0:07:00.800,0:07:10.319 +and i think it's a transformative + +0:07:02.639,0:07:10.319 +terminal experience inside glue imax + |