diff options
Diffstat (limited to '')
2 files changed, 0 insertions, 1878 deletions
diff --git a/2021/captions/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt b/2021/captions/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt deleted file mode 100644 index 12a7a6ad..00000000 --- a/2021/captions/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt +++ /dev/null @@ -1,1421 +0,0 @@ -WEBVTT - - -00:00.960 --> 00:00:03.760 -welcome everyone uh my name is ferming i - -00:03.760 --> 00:00:05.120 -work as a commonwealth engineer at - -00:05.120 --> 00:00:08.000 -ribbon pack and today i'm going to talk - -00:08.000 --> 00:00:09.519 -about - -00:09.519 --> 00:00:11.360 -how to build an e-max - -00:11.360 --> 00:00:12.240 -right - -00:12.240 --> 00:00:16.640 -so uh let's start by defining what is an - -00:16.640 --> 00:00:18.000 -imax - -00:18.000 --> 00:00:20.080 -so that this can be a really this can be - -00:20.080 --> 00:00:21.920 -really hard depending on - -00:21.920 --> 00:00:23.920 -what you want to say what you want to - -00:23.920 --> 00:00:26.320 -qualify what emas is and not i'm going - -00:26.320 --> 00:00:27.920 -to - -00:27.920 --> 00:00:29.519 -get just this definition it's not the - -00:29.519 --> 00:00:31.840 -best but it's mine right - -00:31.840 --> 00:00:34.480 -so i would argue that an emacs should - -00:34.480 --> 00:00:37.440 -have text editing capabilities - -00:37.440 --> 00:00:38.879 -i wouldn't say it should be a text - -00:38.879 --> 00:00:41.120 -editor but it should be able to work - -00:41.120 --> 00:00:43.200 -really well with text - -00:43.200 --> 00:00:45.680 -as you have introspection and a global - -00:45.680 --> 00:00:46.879 -state - -00:46.879 --> 00:00:49.760 -so you can ask them every time - -00:49.760 --> 00:00:51.680 -um software itself i think it should be - -00:51.680 --> 00:00:54.879 -able to modify itself while running - -00:54.879 --> 00:00:56.640 -um so you shouldn't be static and you - -00:56.640 --> 00:00:59.280 -shouldn't never restart for - -00:59.280 --> 00:01:01.359 -any reason like in engineering max you - -01:01.359 --> 00:01:03.280 -can't predefine every function or every - -01:03.280 --> 00:01:05.680 -functionality the way you want - -01:05.680 --> 00:01:09.360 -and extensibility should not be limited - -01:09.360 --> 00:01:11.040 -with this i mean that if you add a new - -01:11.040 --> 00:01:12.560 -package shouldn't be a difference you - -01:12.560 --> 00:01:14.960 -shouldn't have an api - -01:14.960 --> 00:01:18.560 -to extend the software and the entire uh - -01:18.560 --> 00:01:20.640 -software itself should be the external - -01:20.640 --> 00:01:22.640 -api code - -01:22.640 --> 00:01:25.360 -i'll argue that's also - -01:25.360 --> 00:01:26.640 -um - -01:26.640 --> 00:01:28.320 -should be list base - -01:28.320 --> 00:01:29.759 -but - -01:29.759 --> 00:01:32.880 -um it's controversial so - -01:32.880 --> 00:01:34.720 -yes they're going to get this definition - -01:34.720 --> 00:01:37.280 -and then extend upon it so - -01:37.280 --> 00:01:38.880 -bear with me - -01:38.880 --> 00:01:41.920 -so right now uh genuine max is the best - -01:41.920 --> 00:01:44.079 -emacs that we have that's not the only - -01:44.079 --> 00:01:46.320 -one uh - -01:46.320 --> 00:01:48.479 -not even the first one imax but it's the - -01:48.479 --> 00:01:49.680 -best one that we have the one that we're - -01:49.680 --> 00:01:51.759 -using the one that we that i'm using - -01:51.759 --> 00:01:54.079 -right now and the one that we're here - -01:54.079 --> 00:01:55.280 -for - -01:55.280 --> 00:01:57.759 -but as we all know it's not perfect i'm - -01:57.759 --> 00:01:59.759 -going to highlight some - -01:59.759 --> 00:02:02.479 -um imperfection that all that we should - -02:02.479 --> 00:02:05.119 -know i guess that you must have - -02:05.119 --> 00:02:07.360 -so the first one is that uh i would - -02:07.360 --> 00:02:09.440 -argue that inmate lisp is a good lisp - -02:09.440 --> 00:02:11.280 -but it's not a general purpose - -02:11.280 --> 00:02:13.280 -programming language - -02:13.280 --> 00:02:15.040 -you can do pretty crazy things with - -02:15.040 --> 00:02:16.959 -emacs but i will argue that you can do - -02:16.959 --> 00:02:18.400 -also do that with - -02:18.400 --> 00:02:20.640 -brain [ __ ] i'm not comparing them i know - -02:20.640 --> 00:02:22.239 -with my list so much better than brain - -02:22.239 --> 00:02:24.720 -[ __ ] but that's not an argument in - -02:24.720 --> 00:02:26.480 -mclisp it's - -02:26.480 --> 00:02:29.599 -a language for an editor - -02:29.599 --> 00:02:32.080 -not for writing - -02:32.080 --> 00:02:34.720 -game engine for example - -02:34.720 --> 00:02:37.040 -um it's not the fastest lisp we all know - -02:37.040 --> 00:02:40.239 -this is um - -02:40.239 --> 00:02:42.319 -not in the middle i will say was really - -02:42.319 --> 00:02:44.720 -slow now it's getting better maybe with - -02:44.720 --> 00:02:46.480 -the c integration - -02:46.480 --> 00:02:49.200 -um thanks to andrea it can be even - -02:49.200 --> 00:02:51.680 -better but we'll see and has limited - -02:51.680 --> 00:02:55.360 -concurrency this will still be the case - -02:55.360 --> 00:02:58.159 -it has shared threats first i know - -02:58.159 --> 00:03:00.000 -it's not perfect and it's also not that - -03:00.000 --> 00:03:01.040 -fast - -03:01.040 --> 00:03:03.360 -and even though this for some people is - -03:03.360 --> 00:03:04.480 -not an issue - -03:04.480 --> 00:03:06.080 -i'll argue that for me it's an issue - -03:06.080 --> 00:03:07.920 -which is the canoe emac score is written - -03:07.920 --> 00:03:09.840 -in the c - -03:09.840 --> 00:03:13.519 -um i'm not a big fan of c i mean i have - -03:13.519 --> 00:03:15.519 -wrote things about c in the past and - -03:15.519 --> 00:03:16.840 -it's - -03:16.840 --> 00:03:20.560 -okay as a language but um i prefer i'll - -03:20.560 --> 00:03:22.800 -be in lisp so i can hack on it easily - -03:22.800 --> 00:03:24.720 -and really find it while it's running - -03:24.720 --> 00:03:27.440 -all in just one language so you don't - -03:27.440 --> 00:03:29.920 -have to learn two languages to get into - -03:29.920 --> 00:03:30.959 -it - -03:30.959 --> 00:03:33.120 -um even though it's just ten percent of - -03:33.120 --> 00:03:35.599 -emacs right but still there needs to be - -03:35.599 --> 00:03:38.799 -maintained and yeah - -03:38.799 --> 00:03:41.120 -i don't like that uh kind of uh a max - -03:41.120 --> 00:03:43.040 -aspect but just - -03:43.040 --> 00:03:45.360 -this was just my opinion okay so while - -03:45.360 --> 00:03:46.720 -you're like you know mac's pretty good - -03:46.720 --> 00:03:48.400 -you should use it - -03:48.400 --> 00:03:50.319 -you probably use it if you're here and - -03:50.319 --> 00:03:53.280 -use it every day it's great - -03:53.280 --> 00:03:54.239 -so - -03:54.239 --> 00:03:56.560 -some people in the past - -03:56.560 --> 00:03:58.080 -wanted to write - -03:58.080 --> 00:04:00.480 -an e-max of course and not the emacs - -04:00.480 --> 00:04:02.400 -and they think about different things - -04:02.400 --> 00:04:04.799 -and they attempt to write similar emacs - -04:04.799 --> 00:04:07.680 -like things i'm going to um - -04:07.680 --> 00:04:09.519 -i know there's a lot of more way more - -04:09.519 --> 00:04:12.879 -emacs than the one i'm going to say now - -04:12.879 --> 00:04:16.000 -but i just going to - -04:16.000 --> 00:04:18.639 -focus on the emacs that uh meets the - -04:18.639 --> 00:04:20.639 -criteria are not like - -04:20.639 --> 00:04:23.280 -uh the linux turbo's emacs right which - -04:23.280 --> 00:04:24.479 -is just a c - -04:24.479 --> 00:04:28.400 -simple e max to write c for me that may - -04:28.400 --> 00:04:30.160 -be uh - -04:30.160 --> 00:04:32.400 -an e max for the people but not for me i - -04:32.400 --> 00:04:34.639 -wouldn't argue that that's not - -04:34.639 --> 00:04:36.720 -really an emacs just an editor with - -04:36.720 --> 00:04:38.560 -commands similar to imax - -04:38.560 --> 00:04:40.160 -but - -04:40.160 --> 00:04:43.120 -i digress okay so the language i will - -04:43.120 --> 00:04:45.120 -argue that common lisp may be the best - -04:45.120 --> 00:04:46.320 -language - -04:46.320 --> 00:04:47.759 -period - -04:47.759 --> 00:04:49.600 -sorry about that the best language for - -04:49.600 --> 00:04:51.520 -writing emacs also - -04:51.520 --> 00:04:53.759 -um it's a timeless standard reaching in - -04:53.759 --> 00:04:57.520 -the 1990s is fast and reliable - -04:57.520 --> 00:05:00.160 -it's a great lisp i will argue that the - -05:00.160 --> 00:05:01.840 -best lisp but i don't want to get any - -05:01.840 --> 00:05:03.280 -trouble so i would just say it's great - -05:03.280 --> 00:05:04.400 -lisp - -05:04.400 --> 00:05:06.880 -um has good library support doesn't have - -05:06.880 --> 00:05:08.720 -like a huge library like i would say - -05:08.720 --> 00:05:12.160 -python or c but pretty - -05:12.160 --> 00:05:14.800 -robust and good library - -05:14.800 --> 00:05:18.000 -similar to mclisp which may seem as a - -05:18.000 --> 00:05:21.120 -historical accident which maybe it is - -05:21.120 --> 00:05:23.919 -but also in this case has some - -05:23.919 --> 00:05:26.160 -interesting properties that will - -05:26.160 --> 00:05:29.280 -be discussed - -05:29.280 --> 00:05:30.960 -later - -05:30.960 --> 00:05:32.400 -okay so - -05:32.400 --> 00:05:33.600 -um - -05:33.600 --> 00:05:35.280 -taking common lisps a language to write - -05:35.280 --> 00:05:36.479 -an imax i'm going to get some - -05:36.479 --> 00:05:37.759 -technologies in documentation that we - -05:37.759 --> 00:05:40.720 -can use to write an e-max in common lisp - -05:40.720 --> 00:05:43.440 -so the first one is mcclaim which is an - -05:43.440 --> 00:05:45.039 -implementation of a - -05:45.039 --> 00:05:47.120 -common lisp interface standard - -05:47.120 --> 00:05:50.320 -this is great i mean i loved how - -05:50.320 --> 00:05:52.720 -this is written how it is defined i like - -05:52.720 --> 00:05:54.479 -standard things - -05:54.479 --> 00:05:57.440 -um mclean it's a marvelous tool i will - -05:57.440 --> 00:05:59.759 -argue that it's the best - -05:59.759 --> 00:06:01.280 -um toolkit - -06:01.280 --> 00:06:03.039 -i wouldn't say there's a toolkit because - -06:03.039 --> 00:06:05.360 -it's way more extense than it but it's - -06:05.360 --> 00:06:07.919 -great i would highly recommend if you - -06:07.919 --> 00:06:10.639 -want to write a gui application in - -06:10.639 --> 00:06:14.400 -common lisp well mcclain is great - -06:14.400 --> 00:06:18.400 -also some people thought about - -06:18.400 --> 00:06:20.160 -libraries for writing emac style - -06:20.160 --> 00:06:22.720 -application so to create an emacs some - -06:22.720 --> 00:06:24.720 -people already thought about this and - -06:24.720 --> 00:06:26.479 -wrote a paper - -06:26.479 --> 00:06:27.440 -um - -06:27.440 --> 00:06:29.840 -one of them was robert strand - -06:29.840 --> 00:06:32.319 -which is the guy more interested in in - -06:32.319 --> 00:06:34.880 -imax like things - -06:34.880 --> 00:06:36.479 -and this paper is great you can get a - -06:36.479 --> 00:06:37.759 -lot of information how you can write - -06:37.759 --> 00:06:39.360 -your application get - -06:39.360 --> 00:06:41.039 -similar functionality and all the things - -06:41.039 --> 00:06:43.600 -that i said before - -06:43.600 --> 00:06:45.840 -and also the same - -06:45.840 --> 00:06:47.039 -of the - -06:47.039 --> 00:06:49.199 -robert strand or the guys that wrote - -06:49.199 --> 00:06:52.240 -that paper also wrote clefo which is - -06:52.240 --> 00:06:54.479 -a library for text editor buffer but - -06:54.479 --> 00:06:57.599 -more important it's also a definition - -06:57.599 --> 00:06:59.599 -so this video - -06:59.599 --> 00:07:02.639 -out there will where he explains - -07:02.639 --> 00:07:03.599 -um - -07:03.599 --> 00:07:05.919 -what clapper is so he wrote an - -07:05.919 --> 00:07:08.479 -implementation of clover but it's more - -07:08.479 --> 00:07:12.000 -of like a - -07:12.000 --> 00:07:12.880 -um - -07:12.880 --> 00:07:14.400 -yeah - -07:14.400 --> 00:07:17.599 -like a standard like a way to write - -07:17.599 --> 00:07:20.639 -uh how buffers or work in emacs - -07:20.639 --> 00:07:23.280 -and i think it's better - -07:23.280 --> 00:07:25.599 -in some ways that what imac genuine mac - -07:25.599 --> 00:07:26.960 -does right now - -07:26.960 --> 00:07:29.039 -um in other ways it's really interesting - -07:29.039 --> 00:07:31.759 -and i just have had a lot of fun - -07:31.759 --> 00:07:33.360 -implementing it so - -07:33.360 --> 00:07:35.919 -i'm using it more or less - -07:35.919 --> 00:07:38.080 -uh so yeah that's some great - -07:38.080 --> 00:07:40.479 -documentation great foundation so you - -07:40.479 --> 00:07:42.080 -don't have to - -07:42.080 --> 00:07:43.599 -i mean it's - -07:43.599 --> 00:07:44.879 -really - -07:44.879 --> 00:07:46.319 -interesting to write everything by - -07:46.319 --> 00:07:48.080 -yourself because you are - -07:48.080 --> 00:07:49.120 -a great - -07:49.120 --> 00:07:51.440 -programmer and you you want to have - -07:51.440 --> 00:07:52.879 -control of everything i understand - -07:52.879 --> 00:07:54.800 -everything from the ground up but we - -07:54.800 --> 00:07:56.720 -have to understand that - -07:56.720 --> 00:07:58.879 -an imax it's a really complex - -07:58.879 --> 00:08:00.639 -application - -08:00.639 --> 00:08:01.759 -and - -08:01.759 --> 00:08:03.120 -i will say that if you have some - -08:03.120 --> 00:08:05.520 -foundation it will be easier and you - -08:05.520 --> 00:08:08.479 -don't have to rewrite the wheel 20 times - -08:08.479 --> 00:08:10.080 -right - -08:10.080 --> 00:08:12.720 -okay so attempts uh the same guy robert - -08:12.720 --> 00:08:13.680 -strand - -08:13.680 --> 00:08:16.879 -have two climax which is emacs and emacs - -08:16.879 --> 00:08:19.360 -like thing written in common lisp - -08:19.360 --> 00:08:21.599 -um the first ones the third one is - -08:21.599 --> 00:08:23.360 -abandon and the second one is a work in - -08:23.360 --> 00:08:24.840 -progress - -08:24.840 --> 00:08:27.039 -um it's really interesting the second - -08:27.039 --> 00:08:29.440 -one uses in fact the clefor buffer - -08:29.440 --> 00:08:32.159 -implementation one question - -08:32.159 --> 00:08:36.880 -and the first one is just a mcclaim um - -08:36.880 --> 00:08:39.200 -front end remax so it's really tight the - -08:39.200 --> 00:08:40.800 -so the the - -08:40.800 --> 00:08:42.959 -interface retired with the api so it's - -08:42.959 --> 00:08:44.880 -basically i'm sickly - -08:44.880 --> 00:08:48.320 -um software that's similar to an emacs - -08:48.320 --> 00:08:49.360 -right - -08:49.360 --> 00:08:51.760 -and the third one it's a lem project - -08:51.760 --> 00:08:54.240 -which is a common lisp editor that aims - -08:54.240 --> 00:08:56.320 -to be really close to remax and it - -08:56.320 --> 00:08:59.519 -probably fits the criteria but - -08:59.519 --> 00:09:01.600 -and uses the encourages for the - -09:01.600 --> 00:09:03.279 -interface for as i know and it's really - -09:03.279 --> 00:09:05.200 -commonly focused so it even has some - -09:05.200 --> 00:09:08.560 -major modes for other languages but - -09:08.560 --> 00:09:09.839 -i mean it's - -09:09.839 --> 00:09:11.279 -um - -09:11.279 --> 00:09:13.440 -it's mainly for common lisp written by - -09:13.440 --> 00:09:15.680 -common lisp and for common list - -09:15.680 --> 00:09:18.080 -developers - -09:18.080 --> 00:09:21.839 -um so i decided to write my own emacs - -09:21.839 --> 00:09:23.839 -but i don't want to write everything - -09:23.839 --> 00:09:25.680 -from scratch - -09:25.680 --> 00:09:28.720 -because i'm not a creator programmer - -09:28.720 --> 00:09:29.839 -and also because probably there's - -09:29.839 --> 00:09:33.040 -something that some people already tried - -09:33.040 --> 00:09:34.640 -and the first thing i noticed with all - -09:34.640 --> 00:09:36.480 -these attempts - -09:36.480 --> 00:09:38.959 -that they fail in compete with emacs so - -09:38.959 --> 00:09:41.920 -to say they don't have an imax conf - -09:41.920 --> 00:09:43.839 -and they don't support genuine max - -09:43.839 --> 00:09:45.440 -packages - -09:45.440 --> 00:09:46.880 -and that's a big deal because they're - -09:46.880 --> 00:09:49.519 -more of the thousands packages out there - -09:49.519 --> 00:09:51.040 -under great - -09:51.040 --> 00:09:53.120 -and imagine they want to convince - -09:53.120 --> 00:09:54.800 -someone to say hey try this editor - -09:54.800 --> 00:09:57.440 -instead of x thing - -09:57.440 --> 00:09:59.839 -i would say okay can i use git things so - -09:59.839 --> 00:10:02.079 -i have to write a git - -10:02.079 --> 00:10:02.959 -um - -10:02.959 --> 00:10:04.640 -liar - -10:04.640 --> 00:10:07.360 -maggot or mode and i want to play tetris - -10:07.360 --> 00:10:09.440 -the other road so that's - -10:09.440 --> 00:10:10.640 -really - -10:10.640 --> 00:10:12.640 -hard for one person to do - -10:12.640 --> 00:10:14.079 -so someone - -10:14.079 --> 00:10:16.240 -thought similar so they say okay i'm - -10:16.240 --> 00:10:18.079 -going to rewrite the maxi aph common - -10:18.079 --> 00:10:19.200 -lisp - -10:19.200 --> 00:10:21.440 -it was this is what back in 2005 by sol - -10:21.440 --> 00:10:22.399 -bets - -10:22.399 --> 00:10:24.000 -sabits - -10:24.000 --> 00:10:26.000 -but it was banjo in 2007. the project - -10:26.000 --> 00:10:27.600 -was called lice - -10:27.600 --> 00:10:28.640 -and - -10:28.640 --> 00:10:31.600 -it was a really interesting approach - -10:31.600 --> 00:10:34.880 -um it wasn't finished and it was lost in - -10:34.880 --> 00:10:35.920 -time - -10:35.920 --> 00:10:37.440 -so my idea was to continue with the - -10:37.440 --> 00:10:38.880 -project so the foundation was really - -10:38.880 --> 00:10:40.320 -interesting even though i didn't like - -10:40.320 --> 00:10:42.160 -some other - -10:42.160 --> 00:10:43.760 -designing choices - -10:43.760 --> 00:10:45.360 -um but i want to continue with projects - -10:45.360 --> 00:10:47.519 -finished you cannot see emacs api add a - -10:47.519 --> 00:10:49.839 -compatibility layer to use canoe max - -10:49.839 --> 00:10:52.000 -packages that's the selling point right - -10:52.000 --> 00:10:53.760 -so you don't have to - -10:53.760 --> 00:10:56.000 -use new things - -10:56.000 --> 00:10:57.839 -i like my emacs i just want to have my - -10:57.839 --> 00:11:00.560 -emacs with commodities that's it and - -11:00.560 --> 00:11:02.959 -also better probably a better buffer - -11:02.959 --> 00:11:05.519 -implementation so the idea now that uh - -11:05.519 --> 00:11:07.839 -having an imaginativity layer - -11:07.839 --> 00:11:10.320 -is there improving e-max upon it right - -11:10.320 --> 00:11:13.040 -you can use the e-max api or the new one - -11:13.040 --> 00:11:14.880 -depending on your needs - -11:14.880 --> 00:11:15.760 -you can also have that that - -11:15.760 --> 00:11:19.120 -compatibility of both - -11:19.120 --> 00:11:21.920 -so um i come up with cedar - -11:21.920 --> 00:11:25.839 -um cedar is my attempt is a nice - -11:25.839 --> 00:11:27.120 -fork - -11:27.120 --> 00:11:30.079 -i will say the hug for hard fork because - -11:30.079 --> 00:11:32.399 -i change um - -11:32.399 --> 00:11:35.200 -a lot of things and add a lot of things - -11:35.200 --> 00:11:37.519 -but it's similar still similar - -11:37.519 --> 00:11:38.320 -um - -11:38.320 --> 00:11:39.680 -and for this demo i'm going to use the - -11:39.680 --> 00:11:41.839 -cidar and courses branch we want to test - -11:41.839 --> 00:11:44.880 -it out because the other ones are a work - -11:44.880 --> 00:11:46.560 -in progress so one - -11:46.560 --> 00:11:48.079 -it's the mclean - -11:48.079 --> 00:11:49.519 -club for implementation which is not - -11:49.519 --> 00:11:51.360 -finished and doesn't run - -11:51.360 --> 00:11:54.560 -and the other one is with the visual - -11:54.560 --> 00:11:54.959 -that's to explain here but basically - -11:54.959 --> 00:11:57.200 -and debugger - -11:57.200 --> 00:11:59.600 -it's an interesting debugger similar to - -11:59.600 --> 00:12:01.839 -slime - -12:01.839 --> 00:12:04.560 -which is the superior lisp - -12:04.560 --> 00:12:07.279 -for re max let's begin with max so it's - -12:07.279 --> 00:12:12.079 -increases base also like um - -12:12.079 --> 00:12:13.760 -like limb - -12:13.760 --> 00:12:16.959 -but um way more easy simple - -12:16.959 --> 00:12:19.279 -um i - -12:19.279 --> 00:12:22.880 -write well i translate more or less this - -12:22.880 --> 00:12:24.560 -list mode functionality - -12:24.560 --> 00:12:26.079 -and it has similar - -12:26.079 --> 00:12:28.079 -genuine max api - -12:28.079 --> 00:12:29.600 -we'll see that in the demo - -12:29.600 --> 00:12:31.600 -um it's usable but i work in progress - -12:31.600 --> 00:12:33.279 -instead of functionality right now i'm - -12:33.279 --> 00:12:35.279 -not focusing on stability yet i'm - -12:35.279 --> 00:12:38.240 -focusing finish the mclean front end - -12:38.240 --> 00:12:41.120 -which i'm not even halfway there - -12:41.120 --> 00:12:42.720 -but i hope to finish it - -12:42.720 --> 00:12:45.519 -maybe next year who knows - -12:45.519 --> 00:12:46.959 -finish the compatibility layer from the - -12:46.959 --> 00:12:48.399 -new max packages i seen this i think - -12:48.399 --> 00:12:50.959 -this is doable i know how to do it i - -12:50.959 --> 00:12:52.639 -just need time - -12:52.639 --> 00:12:53.600 -maybe - -12:53.600 --> 00:12:55.760 -a little bit of caffeine - -12:55.760 --> 00:12:57.040 -coffee - -12:57.040 --> 00:12:59.279 -so uh let's go with the demo right - -12:59.279 --> 00:13:02.079 -so uh let's open terminal what's this - -13:02.079 --> 00:13:04.800 -anchor base let's go to quick lisp - -13:04.800 --> 00:13:06.800 -log there - -13:06.800 --> 00:13:11.279 -um and let's run it - -13:11.279 --> 00:13:13.760 -okay so now that we're here um it give - -13:13.760 --> 00:13:16.000 -us the welcome thing this is the main - -13:16.000 --> 00:13:17.519 -buffer it's like we'll say the emacs - -13:17.519 --> 00:13:19.200 -buffer when you enter - -13:19.200 --> 00:13:21.040 -um so we know that it's firming this is - -13:21.040 --> 00:13:22.800 -not hardcoded - -13:22.800 --> 00:13:25.040 -okay and now we see it's a major mode in - -13:25.040 --> 00:13:27.200 -the bottom right lisp - -13:27.200 --> 00:13:29.360 -it's lisp interaction and - -13:29.360 --> 00:13:32.880 -this is the name of the buffer right - -13:32.880 --> 00:13:35.600 -um okay so we have a couple of buffers - -13:35.600 --> 00:13:38.240 -we have scratch which is the fundamental - -13:38.240 --> 00:13:40.720 -mode and messages all right - -13:40.720 --> 00:13:42.399 -okay so - -13:42.399 --> 00:13:44.639 -let's get some interesting things first - -13:44.639 --> 00:13:46.399 -uh let's open a file - -13:46.399 --> 00:13:48.959 -so i think it's in - -13:48.959 --> 00:13:51.199 -programming - -13:51.199 --> 00:13:53.440 -a max - -13:53.440 --> 00:13:56.480 -conf 2021 and let's go to c there - -13:56.480 --> 00:13:58.079 -let's go to demo - -13:58.079 --> 00:14:00.000 -so let's open a file so - -14:00.000 --> 00:14:01.440 -um - -14:01.440 --> 00:14:03.040 -phone lock is not yet - -14:03.040 --> 00:14:04.399 -um - -14:04.399 --> 00:14:06.240 -well it's implemented so it's there but - -14:06.240 --> 00:14:07.920 -it's not active by default - -14:07.920 --> 00:14:09.680 -so let's open - -14:09.680 --> 00:14:11.360 -uh mx - -14:11.360 --> 00:14:13.600 -and let's go lisp - -14:13.600 --> 00:14:16.079 -interaction mode - -14:16.079 --> 00:14:17.279 -right - -14:17.279 --> 00:14:19.199 -so this when you show me here is the - -14:19.199 --> 00:14:21.680 -implementation of the kill sex sex - -14:21.680 --> 00:14:24.240 -express s expression command - -14:24.240 --> 00:14:28.880 -which is exactly the same point by point - -14:28.880 --> 00:14:31.279 -from the emacs one you can go right now - -14:31.279 --> 00:14:32.959 -umax and ask - -14:32.959 --> 00:14:35.279 -how is skills s expression defined this - -14:35.279 --> 00:14:36.480 -is the same - -14:36.480 --> 00:14:38.560 -and this is how you define a key so we - -14:38.560 --> 00:14:41.920 -have we can say uh describe - -14:41.920 --> 00:14:43.839 -symbol - -14:43.839 --> 00:14:46.399 -the package will be - -14:46.399 --> 00:14:48.399 -cedar and the symbol is - -14:48.399 --> 00:14:50.480 -global map - -14:50.480 --> 00:14:51.610 -global map - -14:51.610 --> 00:14:53.279 -[Applause] - -14:53.279 --> 00:14:54.240 -so - -14:54.240 --> 00:14:56.160 -it's a top level global keymap - -14:56.160 --> 00:14:58.480 -thank you for the information - -14:58.480 --> 00:15:02.160 -um but you can also say okay uh can i - -15:02.160 --> 00:15:05.120 -say okay - -15:05.120 --> 00:15:08.000 -global map - -15:08.000 --> 00:15:10.079 -okay i'll be giving this a key map so - -15:10.079 --> 00:15:11.600 -even though i want to aim to have the - -15:11.600 --> 00:15:12.480 -same - -15:12.480 --> 00:15:15.920 -um api the - -15:15.920 --> 00:15:17.760 -um sorry - -15:17.760 --> 00:15:20.079 -uh the back thing so the back end is - -15:20.079 --> 00:15:22.480 -going to be class oriented and not same - -15:22.480 --> 00:15:24.720 -any max but the return expression should - -15:24.720 --> 00:15:27.680 -be really similar so if we say current - -15:27.680 --> 00:15:29.759 -buffer - -15:29.759 --> 00:15:31.759 -it will give us the buffer it's not the - -15:31.759 --> 00:15:33.759 -same in emacs but it's a buffer object - -15:33.759 --> 00:15:35.519 -and we can also ask - -15:35.519 --> 00:15:37.519 -about let me try to remember - -15:37.519 --> 00:15:39.440 -oh there we are - -15:39.440 --> 00:15:40.639 -um - -15:40.639 --> 00:15:41.839 -but for - -15:41.839 --> 00:15:45.680 -name we can close this and open one here - -15:45.680 --> 00:15:48.079 -and we can say okay so we have this - -15:48.079 --> 00:15:48.959 -thing - -15:48.959 --> 00:15:50.959 -that will give us the name so uh this is - -15:50.959 --> 00:15:52.800 -similar to the emacs api - -15:52.800 --> 00:15:54.399 -as we saw we - -15:54.399 --> 00:15:55.120 -so - -15:55.120 --> 00:15:57.519 -briefly we have a lot a couple of - -15:57.519 --> 00:15:58.639 -commands - -15:58.639 --> 00:16:00.240 -um - -16:00.240 --> 00:16:02.160 -kills expression also have a little bit - -16:02.160 --> 00:16:03.759 -of - -16:03.759 --> 00:16:06.639 -help kill word kill line - -16:06.639 --> 00:16:07.680 -region - -16:07.680 --> 00:16:08.959 -kill buffer - -16:08.959 --> 00:16:11.440 -all things that we expect from emacs - -16:11.440 --> 00:16:12.800 -um - -16:12.800 --> 00:16:14.320 -and yeah this is there's a couple of - -16:14.320 --> 00:16:16.160 -things i may show but i think this is - -16:16.160 --> 00:16:18.320 -good enough i don't have enough time if - -16:18.320 --> 00:16:20.720 -you want more information - -16:20.720 --> 00:16:22.800 -so let's go back to it let's close the - -16:22.800 --> 00:16:25.680 -buffer does it work no it doesn't work - -16:25.680 --> 00:16:28.079 -okay now the head buffer no ah let's go - -16:28.079 --> 00:16:29.920 -to cedar - -16:29.920 --> 00:16:32.320 -okay so if you want more information - -16:32.320 --> 00:16:32.870 -um - -16:32.870 --> 00:16:34.399 -[Applause] - -16:34.399 --> 00:16:36.880 -first of all thank you very much um - -16:36.880 --> 00:16:39.040 -sorry i don't have enough time to show - -16:39.040 --> 00:16:40.320 -too much too many things i will see - -16:40.320 --> 00:16:42.560 -there but um - -16:42.560 --> 00:16:44.639 -yeah uh - -16:44.639 --> 00:16:45.839 -if you want more information you can - -16:45.839 --> 00:16:48.079 -always send me an email this is my - -16:48.079 --> 00:16:50.240 -webpage - -16:50.240 --> 16:53.720 -thank you very much 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 deleted file mode 100644 index b10e834a..00000000 --- a/2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt +++ /dev/null @@ -1,457 +0,0 @@ -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 |