summaryrefslogtreecommitdiffstats
path: root/2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt
diff options
context:
space:
mode:
Diffstat (limited to '2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt')
-rw-r--r--2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt457
1 files changed, 457 insertions, 0 deletions
diff --git a/2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt b/2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt
new file mode 100644
index 00000000..b10e834a
--- /dev/null
+++ b/2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt
@@ -0,0 +1,457 @@
+WEBVTT
+
+00:00.240 --> 00:00:02.639
+hi my name is eduardox i'm the author of
+
+00:02.639 --> 00:00:05.040
+an mx package called ev and this talk is
+
+00:05.040 --> 00:00:07.200
+about a new feature of ev called test
+
+00:07.200 --> 00:00:08.400
+blocks
+
+00:08.400 --> 00:00:10.320
+let's start by demo
+
+00:10.320 --> 00:00:12.559
+this is a file in lua that defines these
+
+00:12.559 --> 00:00:14.160
+two functions here
+
+00:14.160 --> 00:00:16.720
+and with it if we type f8 several times
+
+00:16.720 --> 00:00:18.000
+here
+
+00:18.000 --> 00:00:20.880
+the f8s create a lower apple here and
+
+00:20.880 --> 00:00:24.400
+then they send these lines to the rebel
+
+00:24.400 --> 00:00:27.039
+where this line here loads this file
+
+00:27.039 --> 00:00:29.679
+into the repo and these other lines here
+
+00:29.679 --> 00:00:33.200
+are tests for these lines
+
+00:33.200 --> 00:00:35.120
+there's a lot of information here so let
+
+00:35.120 --> 00:00:40.480
+me organize them in a more visual way
+
+00:40.480 --> 00:00:42.960
+this is our file in lua
+
+00:42.960 --> 00:00:45.760
+lua sees this thing as a as a multi-line
+
+00:45.760 --> 00:00:47.760
+comment but we are going to see it as a
+
+00:47.760 --> 00:00:51.920
+test block and eev mode is active and so
+
+00:51.920 --> 00:00:54.480
+f8 does the right thing
+
+00:54.480 --> 00:00:57.360
+uh these three lines here set up the
+
+00:57.360 --> 00:01:00.079
+target buffer running a lower apple you
+
+01:00.079 --> 00:01:03.520
+can see the the prompt of the rebel here
+
+01:03.520 --> 00:01:05.360
+and these lines here are sent to the
+
+01:05.360 --> 00:01:07.200
+rebel
+
+01:07.200 --> 00:01:09.680
+and when we type f8 on the line that
+
+01:09.680 --> 00:01:10.720
+starts
+
+01:10.720 --> 00:01:13.600
+with the red star like these lines here
+
+01:13.600 --> 00:01:15.759
+what if it does is that it sends the
+
+01:15.759 --> 00:01:18.240
+rest of the line sorry it
+
+01:18.240 --> 00:01:21.119
+executes the rest of the line as lisp
+
+01:21.119 --> 00:01:23.920
+so it executes the three effects here
+
+01:23.920 --> 00:01:26.240
+executes these lines as lisp and they
+
+01:26.240 --> 00:01:29.520
+set up the target buffer here
+
+01:29.520 --> 00:01:31.759
+and when we type f8 on the line that
+
+01:31.759 --> 00:01:34.159
+does not start with the red star
+
+01:34.159 --> 00:01:36.640
+the f8 sends the line to the target
+
+01:36.640 --> 00:01:38.799
+buffer and moves down
+
+01:38.799 --> 00:01:41.040
+and this line loads this file under
+
+01:41.040 --> 00:01:45.200
+apple and these lines are tests
+
+01:45.200 --> 00:01:47.520
+so we just saw how to use an existing
+
+01:47.520 --> 00:01:50.000
+test block let's now see how to create a
+
+01:50.000 --> 00:01:52.640
+new test block we just have to run this
+
+01:52.640 --> 00:01:55.680
+meta x e insert test block
+
+01:55.680 --> 00:01:58.079
+or meta x euat
+
+01:58.079 --> 00:02:01.439
+and the result depends on the major mode
+
+02:01.439 --> 00:02:03.920
+uh let's see let's understand that that
+
+02:03.920 --> 00:02:06.079
+by looking at the source code
+
+02:06.079 --> 00:02:08.720
+eeit is an alias to this function here
+
+02:08.720 --> 00:02:10.640
+and this function is just five lines of
+
+02:10.640 --> 00:02:12.800
+code plus a dot string
+
+02:12.800 --> 00:02:14.560
+and the dot string explains that if the
+
+02:14.560 --> 00:02:16.480
+major mode is full mode then this
+
+02:16.480 --> 00:02:18.800
+function tries to call
+
+02:18.800 --> 00:02:21.360
+a function called e insert test plot
+
+02:21.360 --> 00:02:24.800
+test full mode if that function exists
+
+02:24.800 --> 00:02:27.280
+and that if that function does not exist
+
+02:27.280 --> 00:02:29.680
+then it yields an error
+
+02:29.680 --> 00:02:32.080
+and here's an example of one such
+
+02:32.080 --> 00:02:34.239
+function that's a function that
+
+02:34.239 --> 00:02:37.280
+inserts a test block in haskell mode
+
+02:37.280 --> 00:02:40.319
+and here we can see two functions like
+
+02:40.319 --> 00:02:42.480
+this one for haskell mode and one for
+
+02:42.480 --> 00:02:46.080
+javascript mode
+
+02:46.080 --> 00:02:48.560
+uh these functions look quite similar
+
+02:48.560 --> 00:02:49.440
+but
+
+02:49.440 --> 00:02:52.720
+their effects look quite different
+
+02:52.720 --> 00:02:55.760
+to make this comparison here i started
+
+02:55.760 --> 00:02:57.280
+by writing
+
+02:57.280 --> 00:02:59.680
+by creating seven files each one in a
+
+02:59.680 --> 00:03:01.120
+different language
+
+03:01.120 --> 00:03:03.040
+and initially each one of these files
+
+03:03.040 --> 00:03:04.959
+only had a comment with the name of the
+
+03:04.959 --> 00:03:08.239
+language so c haskell javascript org
+
+03:08.239 --> 00:03:10.560
+mode etc
+
+03:10.560 --> 00:03:13.040
+and in each one of these files i typed
+
+03:13.040 --> 00:03:16.959
+meta x eeit to insert the test block
+
+03:16.959 --> 00:03:18.800
+so here we can see that these test
+
+03:18.800 --> 00:03:20.319
+blocks are different
+
+03:20.319 --> 00:03:22.080
+for example the syntax for multi-line
+
+03:22.080 --> 00:03:24.000
+comments is different depending on the
+
+03:24.000 --> 00:03:25.200
+language
+
+03:25.200 --> 00:03:27.760
+uh this block here that selects which
+
+03:27.760 --> 00:03:30.319
+rebel to run is also different
+
+03:30.319 --> 00:03:33.200
+this line here that shows how that
+
+03:33.200 --> 00:03:34.879
+tells the repo to
+
+03:34.879 --> 00:03:37.680
+load the current file is also different
+
+03:37.680 --> 00:03:39.680
+depending on the language
+
+03:39.680 --> 00:03:41.840
+in some cases i had to improvise a bit
+
+03:41.840 --> 00:03:43.360
+for example
+
+03:43.360 --> 00:03:46.400
+uh to implement test blocks in shell
+
+03:46.400 --> 00:03:48.560
+mode i had to use this
+
+03:48.560 --> 00:03:52.560
+this with syntax using a rear document
+
+03:52.560 --> 00:03:55.280
+in tcl i also had to improvise a bit and
+
+03:55.280 --> 00:03:57.840
+in some cases i had to improvise a lot
+
+03:57.840 --> 00:04:01.120
+for example in org mode there isn't an
+
+04:01.120 --> 00:04:03.360
+obvious rebel to run and there isn't an
+
+04:03.360 --> 00:04:05.280
+obvious way to load the
+
+04:05.280 --> 00:04:08.080
+the current org file into the repo so
+
+04:08.080 --> 00:04:11.680
+the default action of meta x eeit
+
+04:11.680 --> 00:04:14.400
+in log mode is just to insert this thing
+
+04:14.400 --> 00:04:15.439
+here
+
+04:15.439 --> 00:04:17.519
+that we can use to run a
+
+04:17.519 --> 00:04:22.320
+shell in a rebel
+
+04:22.320 --> 00:04:23.199
+so
+
+04:23.199 --> 00:04:25.680
+these functions are quite similar and in
+
+04:25.680 --> 00:04:27.440
+the beginning i was writing all of them
+
+04:27.440 --> 00:04:29.680
+by hand but then i got bored and i wrote
+
+04:29.680 --> 00:04:32.320
+a function to help you write functions
+
+04:32.320 --> 00:04:33.840
+like that
+
+04:33.840 --> 00:04:35.759
+this function is called
+
+04:35.759 --> 00:04:38.080
+find e-uit-links and it creates a
+
+04:38.080 --> 00:04:39.919
+temporary buffer
+
+04:39.919 --> 00:04:41.680
+and the contents of this temporary
+
+04:41.680 --> 00:04:43.440
+buffer depends on the major mode for
+
+04:43.440 --> 00:04:45.680
+example if the current mode is python
+
+04:45.680 --> 00:04:48.880
+mode then running this function here
+
+04:48.880 --> 00:04:51.840
+creates a temporary buffer that lets me
+
+04:51.840 --> 00:04:53.840
+write the support for
+
+04:53.840 --> 00:04:56.880
+test blocks into python mode or rewrite
+
+04:56.880 --> 00:04:59.040
+the function that supports test blocks
+
+04:59.040 --> 00:05:00.880
+and python mode
+
+05:00.880 --> 00:05:03.600
+so if i'm in python mode and i run this
+
+05:03.600 --> 00:05:06.639
+i get a temporary buffer like this
+
+05:06.639 --> 00:05:08.800
+in which this thing is my template for
+
+05:08.800 --> 00:05:11.120
+the function usually this thing is
+
+05:11.120 --> 00:05:13.039
+totally wrong i have to rewrite to this
+
+05:13.039 --> 00:05:13.919
+string
+
+05:13.919 --> 00:05:16.400
+but the rest is right you can see python
+
+05:16.400 --> 00:05:18.720
+mode here in the name of the function so
+
+05:18.720 --> 00:05:21.360
+we have to edit this and save that to
+
+05:21.360 --> 00:05:22.840
+our home
+
+05:22.840 --> 00:05:25.520
+slash.mx and by the way these things
+
+05:25.520 --> 00:05:28.880
+here hyperlinks to many different things
+
+05:28.880 --> 00:05:31.600
+this elias piper link here
+
+05:31.600 --> 00:05:34.160
+points to the source code to the section
+
+05:34.160 --> 00:05:35.280
+in which
+
+05:35.280 --> 00:05:36.400
+these
+
+05:36.400 --> 00:05:38.400
+functions are defined
+
+05:38.400 --> 00:05:40.320
+so you can see this here the function
+
+05:40.320 --> 00:05:41.759
+that supports c
+
+05:41.759 --> 00:05:43.440
+the function for haskell the function
+
+05:43.440 --> 00:05:46.400
+for javascript etc
+
+05:46.400 --> 00:05:49.440
+and that's it this is a five-minute talk
+
+05:49.440 --> 00:05:50.960
+so i can't say much
+
+05:50.960 --> 00:05:52.639
+if you want more information or if you
+
+05:52.639 --> 00:05:55.120
+want to see real world examples how i
+
+05:55.120 --> 00:05:58.000
+use test blocks etc etc see this page
+
+05:58.000 --> 00:06:00.479
+here and i do not have time to explain
+
+06:00.479 --> 00:06:02.560
+this by the way here
+
+06:02.560 --> 06:06.080
+so that's it thanks