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