summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.sbv
diff options
context:
space:
mode:
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.sbv633
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
+