From e8e25c3c457b30b34bbae4c93ebd08ae48d1d710 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Mon, 29 Nov 2021 09:45:57 -0500 Subject: Update --- ...cs-development-environment--fermin-mf--main.vtt | 457 +++++++++++++++++++++ 1 file changed, 457 insertions(+) create mode 100644 2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt (limited to '2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt') 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 -- cgit v1.2.3