diff options
Diffstat (limited to '')
6 files changed, 1439 insertions, 511 deletions
diff --git a/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main--chapters.vtt b/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main--chapters.vtt new file mode 100644 index 00000000..9d9dc2ba --- /dev/null +++ b/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main--chapters.vtt @@ -0,0 +1,56 @@ +WEBVTT + + +00:00:00.000 --> 00:00:52.515 +Introduction + +00:00:52.516 --> 00:03:29.119 +Motivation + +00:03:29.120 --> 00:04:37.599 +My requirements + +00:04:37.600 --> 00:05:02.959 +Basic setup: corfu + eglot + +00:05:02.960 --> 00:06:44.879 +Looking at completion-at-point functions + +00:06:44.880 --> 00:08:10.899 +Making my own (basic) c-a-p-f for yasnippet: the completion properties + +00:08:10.900 --> 00:09:18.879 +Getting yas-kw-list right: What do I want? + +00:09:18.880 --> 00:11:33.840 +Diving in yasnippet + +00:11:33.840 --> 00:13:03.803 +Fine-tuning: adding cape + +00:13:03.804 --> 00:14:05.359 +Automatic snippet expansion + +00:14:05.360 --> 00:14:58.319 +Themes + +00:14:58.320 --> 00:15:48.583 +My check-list + +00:15:48.584 --> 00:16:58.039 +Takeaways + +00:16:58.040 --> 00:18:54.999 +Requests (to whom it may concern) + +00:18:55.000 --> 00:19:40.159 +Q: Did you try yasnippet-capf? If so, what did you miss from it that this approach has? Thanks! https://github.com/elken/yasnippet-capf + +00:19:40.160 --> 00:24:51.879 +A small demo + +00:24:51.880 --> 00:32:32.119 +Q: Do special characters in yasnippets work well too? example <FD ? + +00:32:32.120 --> 00:35:44.920 +Emacs Lisp diff --git a/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt b/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt index 49bf10f3..ba28468e 100644 --- a/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt +++ b/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt @@ -1,5 +1,7 @@ WEBVTT +NOTE Introduction + 00:00:00.000 --> 00:00:02.319 Nice to have you here on this talk. @@ -16,7 +18,7 @@ Just as a side note, this presentation that I'm going to share with you 00:00:16.280 --> 00:00:19.879 -about my work on Corfu and Jasnipit. +about my work on Corfu and Yasnippet. 00:00:19.880 --> 00:00:21.839 I've prepared that on Org Mode @@ -45,11 +47,16 @@ So just a short outline, my motivation, 00:00:46.960 --> 00:00:49.959 step-by-step of the things that I've been investigating, -00:00:49.960 --> 00:00:55.919 -and some takeaways. So my motivation, yeah, snippet is old. +00:00:49.960 --> 00:00:52.515 +and some takeaways. + +NOTE Motivation + +00:00:52.516 --> 00:00:55.919 +So my motivation, yasnippet is old. 00:00:55.920 --> 00:00:59.599 -So I've tried another, I've tried Temple +So I've tried another. I've tried Tempel 00:00:59.600 --> 00:01:02.519 and other template management packages, @@ -58,7 +65,7 @@ and other template management packages, but it was really not my cup of tea. So mainly why? 00:01:08.160 --> 00:01:10.919 -Mainly because I have a nice base of VR snippets +Mainly because I have a nice base of yasnippets 00:01:10.920 --> 00:01:14.479 I have generated for my needs. @@ -78,53 +85,62 @@ And of course, migration counts as a cost. 00:01:26.560 --> 00:01:32.639 I've been using Company as my completion point function GUI for years, -00:01:32.640 --> 00:01:38.919 -but with the time coming in features and so on it +00:01:32.640 --> 00:01:38.167 +but with the time coming in features and so on, + +00:01:38.168 --> 00:01:44.359 +it was not as easy to set up as I wanted for my needs. + +00:01:44.360 --> 00:01:47.181 +So I had been working, -00:01:38.920 --> 00:01:44.359 -was it's was not as easy to set up as I wanted for my needs +00:01:47.182 --> 00:01:49.839 +I've been playing with Eglot already some time -00:01:44.360 --> 00:01:53.119 -so I had been working I've been playing with Eaglet already some time for a language server protocol +00:01:49.840 --> 00:01:53.119 +for a language server protocol. 00:01:53.120 --> 00:01:57.039 -I had read about how easy it was to integrate with Corfu +I had read about how easy it was to integrate with Corfu, 00:01:57.040 --> 00:02:02.839 -which was really nice and I had given it a try, +which was really nice, and I had given it a try, -00:02:02.840 --> 00:02:06.439 +00:02:02.840 --> 00:02:10.250 but I'm using both graphical user interface mode in Emacs -00:02:06.440 --> 00:02:07.839 +00:02:10.251 --> 00:02:11.000 and text mode, -00:02:07.840 --> 00:02:10.319 -and for text mode you need a corporate terminal, +00:02:11.001 --> 00:02:13.042 +and for text mode you need corfu-terminal, -00:02:10.320 --> 00:02:16.399 -which was yet another package that I don't download. +00:02:13.043 --> 00:02:16.399 +which was yet another package that I didn't download. 00:02:16.400 --> 00:02:21.479 Well, and I didn't really find a quick way 00:02:21.480 --> 00:02:24.479 -to get rid of company to get just snippet. +to get rid of company to get yasnippet. 00:02:24.480 --> 00:02:26.679 So at the end, when, at the beginning, -00:02:26.680 --> 00:02:33.959 -when I was using Corfu and Eglot, I also needed to load a company +00:02:26.680 --> 00:02:30.107 +when I was using Corfu and Eglot, + +00:02:30.108 --> 00:02:33.959 +I also needed to load company 00:02:33.960 --> 00:02:35.759 -to have a snippet support, +to have yasnippet support, 00:02:35.760 --> 00:02:37.639 which was really like sort of weird 00:02:37.640 --> 00:02:40.559 -because I wanted to get rid of, of your snippet. +because I wanted to get rid of yasnippet. 00:02:40.560 --> 00:02:47.199 Anyhow, while I try now, I'm following the mailing list, @@ -136,7 +152,7 @@ the development mailing list, and I got interested when I heard something about 00:02:51.800 --> 00:02:57.119 -TTI charge frames being announced for master. +TTY child frames being announced for master. 00:02:57.120 --> 00:02:59.599 That would mean less packages to download @@ -145,7 +161,7 @@ That would mean less packages to download because I thought I could get rid of Corfu, 00:03:04.160 --> 00:03:07.359 -and I wanted to try if I could get rid of Corfu terminal +and I wanted to try if I could get rid of corfu-terminal 00:03:07.360 --> 00:03:11.199 and run Corfu without that. @@ -157,43 +173,48 @@ So, there were some hints there in that mailing list that made it interesting for me. 00:03:21.880 --> 00:03:26.639 -And at the end, I'm also like a why not trying man, +And at the end, I'm also like a "why not try"ing man, 00:03:26.640 --> 00:03:29.119 -so I said let's give it a try. +so I said, let's give it a try. + +NOTE My requirements 00:03:29.120 --> 00:03:33.479 My requirements, I'm working always on a new Emacs, 00:03:33.480 --> 00:03:36.759 -a decently new Emacs, normally from Master Vanilla. +a decently new Emacs, normally from master, vanilla, + +00:03:36.760 --> 00:03:41.209 +completely vanilla, and I don't have any extras -00:03:36.760 --> 00:03:42.559 -completely Vanilla and I don't have any extras like Doom or things like that. +00:03:41.210 --> 00:03:42.559 +like Doom or things like that. 00:03:42.560 --> 00:03:45.519 -So I'm only Vanilla. And one of the things +So I'm only vanilla. And one of the things 00:03:45.520 --> 00:03:50.279 -that I don't want is that on this Vanilla recent Emacs, +that I don't want is that on this vanilla recent Emacs, 00:03:50.280 --> 00:03:55.719 -I don't want a Kung Fu Terminal. I need your snippet. +I don't want a corfu-terminal. I need yasnippet. 00:03:55.720 --> 00:03:57.359 I'm basically an old man. 00:03:57.360 --> 00:04:02.479 -Old dog does new tricks and snippets must, +Old dog doesn't do new tricks and snippets must, 00:04:02.480 --> 00:04:06.239 -in my way of working, must be easy and quick to configure +in my way of working, must be easy and quick to configure, 00:04:06.240 --> 00:04:10.479 -and Tempo or others that I've seen are not. +and tempel or others that I've seen are not. 00:04:10.480 --> 00:04:13.919 -I don't want any reminiscence of a company in my setup. +I don't want any reminiscence of company in my setup. 00:04:13.920 --> 00:04:18.679 And of course, don't forget that I've embraced @@ -205,10 +226,12 @@ the language protocol implementations and basically Eglot. My main focus now is Python and LaTeX, 00:04:28.160 --> 00:04:31.719 -and I have PyLSB and TechLab. +and I have pylsp and texlab. 00:04:31.720 --> 00:04:37.599 -And I don't want to have to stop using them. +I don't want to have to stop using them. + +NOTE Basic setup: corfu + eglot 00:04:37.600 --> 00:04:40.479 So basic setup for Corfu and Eglot. @@ -226,7 +249,7 @@ And actually, I also do something somehow naughty, which is to set this variable, 00:04:53.080 --> 00:04:55.519 -the Corfu auto variable to true, +the corfu-auto variable to true, 00:04:55.520 --> 00:04:58.399 although I know it's not recommended, blah, blah, blah. @@ -234,53 +257,55 @@ although I know it's not recommended, blah, blah, blah. 00:04:58.400 --> 00:05:02.959 But I use that because I'm a bit lazy in that. +NOTE Looking at completion-at-point functions + 00:05:02.960 --> 00:05:07.239 So next step was looking at completion at point functions. 00:05:07.240 --> 00:05:10.479 -So the information there if you go through the scatter +So the information there, if you go through, is scattered -00:05:10.480 --> 00:05:13.999 +00:05:10.480 --> 00:05:13.739 and sometimes a bit cryptic. -00:05:14.000 --> 00:05:16.599 +00:05:13.740 --> 00:05:16.599 At the end I came up with something like the thing 00:05:16.600 --> 00:05:18.399 that you see there on the screen. 00:05:18.400 --> 00:05:21.879 -So it's a function for just completion point +It's a function for yas-completion-at-point. 00:05:21.880 --> 00:05:24.639 -so I need my list of keywords +I need my list of keywords, 00:05:24.640 --> 00:05:30.039 -so that I'm going to be talking later +so that I'm going to be talking later, 00:05:30.040 --> 00:05:34.399 -and I have my bounds which is normally a word +and I have my bounds, which is normally a word, 00:05:34.400 --> 00:05:37.119 -and from that I get the start and the end +and from that, I get the start and the end -00:05:37.120 --> 00:05:38.919 -of the of the thing that I want to +00:05:37.120 --> 00:05:40.879 +of the thing that I want to -00:05:38.920 --> 00:05:47.319 -that I want to be my seed for looking and bringing up Corfu +00:05:40.880 --> 00:05:47.319 +be my seed for looking and bringing up Corfu, -00:05:47.320 --> 00:05:53.439 -and of course I need some completion properties here +00:05:47.320 --> 00:05:52.599 +and of course, I need some completion properties here. -00:05:53.440 --> 00:05:55.719 +00:05:52.600 --> 00:05:55.719 This looked like this is what you need to do, 00:05:55.720 --> 00:05:57.519 but I had to dig quite deep 00:05:57.520 --> 00:06:01.319 -to create a JavaScript keyword test +to create a yasnippet keyword test 00:06:01.320 --> 00:06:04.759 and to understand the completion props. @@ -288,11 +313,11 @@ and to understand the completion props. 00:06:04.760 --> 00:06:11.759 And as an update of what I've been doing in the last weeks, -00:06:11.760 --> 00:06:13.879 -I've created a bound of things +00:06:11.760 --> 00:06:17.606 +I've created a bound of things at point for me -00:06:13.880 --> 00:06:18.679 -that point for me with a different thing +00:06:17.607 --> 00:06:18.679 +with a different thing 00:06:18.680 --> 00:06:22.039 that doesn't skip over non-blank characters, @@ -301,7 +326,7 @@ that doesn't skip over non-blank characters, that only skips over non-blank characters. 00:06:25.040 --> 00:06:28.999 -Why? Because Word was confusingly tech, +Why? Because 'word was confusing LaTeX, 00:06:29.000 --> 00:06:30.759 because the backslash, @@ -309,50 +334,52 @@ because the backslash, 00:06:30.760 --> 00:06:34.999 like in the example for the teletype text, -00:06:35.000 --> 00:06:36.919 -was not taken into account by Word. +00:06:35.000 --> 00:06:37.999 +was not taken into account by 'word. -00:06:36.920 --> 00:06:39.959 +00:06:38.000 --> 00:06:39.959 So I had to create my own one, 00:06:39.960 --> 00:06:42.119 -which was a bunch of thing at point, +which was a bounds-of-thing-at-point, 00:06:42.120 --> 00:06:44.879 and then my thing is non-blanks. -00:06:44.880 --> 00:06:53.239 +NOTE Making my own (basic) c-a-p-f for yasnippet: the completion properties + +00:06:44.880 --> 00:06:51.179 Completion at point properties, what are they? -00:06:53.240 --> 00:06:56.039 +00:06:51.180 --> 00:06:56.039 They allow Emacs to know how to handle the information -00:06:56.040 --> 00:06:57.879 +00:06:56.040 --> 00:06:58.899 for a specific completion time. -00:06:57.880 --> 00:07:02.319 +00:06:58.900 --> 00:07:03.239 So you normally will have an annotation, -00:07:02.320 --> 00:07:08.519 -which then can disappear if you use NerdIconScoreFull. +00:07:03.240 --> 00:07:08.519 +which then can disappear if you use nerd-icons-corfu, 00:07:08.520 --> 00:07:11.839 which is what I'm doing currently, -00:07:11.840 --> 00:07:17.559 +00:07:11.840 --> 00:07:17.900 but I keep it commented just in case I get tired of Corfu -00:07:17.560 --> 00:07:20.079 +00:07:17.901 --> 00:07:20.000 and I want to have my completion function. -00:07:20.080 --> 00:07:26.759 -Then the company kind is actually not something +00:07:20.001 --> 00:07:24.959 +Then the :company-kind is actually not something -00:07:26.760 --> 00:07:30.999 +00:07:24.960 --> 00:07:30.999 that comes from the company package, but does not require. 00:07:31.000 --> 00:07:39.439 -And that's going to allow NerdEye Conscorfu to identify +And that's going to allow nerd-icons-corfu to identify 00:07:39.440 --> 00:07:44.839 and put the right icon there in the completion list, @@ -373,21 +400,23 @@ is that this is a snippet keyword. These two lines, either line, 00:07:56.800 --> 00:07:59.999 -tell you that this is a snippet keyword. +tell you that this is a snippet keyword, 00:08:00.000 --> 00:08:05.279 -And that it should be added to the other completions +and that it should be added to the other completions -00:08:05.280 --> 00:08:08.079 +00:08:05.280 --> 00:08:10.899 that you already have in your list. -00:08:08.080 --> 00:08:15.479 -Problems looking now next step +NOTE Getting yas-kw-list right: What do I want? + +00:08:10.900 --> 00:08:15.479 +Problems. Looking... Now, next step, -00:08:15.480 --> 00:08:19.079 +00:08:15.480 --> 00:08:18.479 once I had the completion props -00:08:19.080 --> 00:08:21.439 +00:08:18.480 --> 00:08:21.439 which was relatively easy was to go 00:08:21.440 --> 00:08:24.399 @@ -397,10 +426,13 @@ and get the keyword list right. I've been looking at pre-existing solutions 00:08:27.200 --> 00:08:29.319 -like for example how the menu +like, for example, how the menu + +00:08:29.320 --> 00:08:32.539 +is built in by yasnippet -00:08:29.320 --> 00:08:34.399 -is built in by your snippet and it looked a bit like Mission Impossible. +00:08:32.540 --> 00:08:34.399 +and it looked a bit like Mission Impossible, 00:08:34.400 --> 00:08:40.439 because the approach by all the things @@ -408,10 +440,10 @@ because the approach by all the things 00:08:40.440 --> 00:08:43.199 that I have seen and I have examined -00:08:43.200 --> 00:08:45.639 +00:08:43.200 --> 00:08:48.659 is to get the keys and the names -00:08:45.640 --> 00:08:50.799 +00:08:48.660 --> 00:08:50.799 and then further process them. 00:08:50.800 --> 00:08:55.279 @@ -424,99 +456,101 @@ At the end, if I use my own snippets, I'm going to be using something 00:09:00.440 --> 00:09:02.559 -I would call meaningful keys for them +I would call meaningful keys for them, 00:09:02.560 --> 00:09:06.359 -or at least meaningful for these keys are meaningful for me +or at least meaningful for... These keys are meaningful for me, 00:09:06.360 --> 00:09:07.679 -and I try not to repeat them +and I try not to repeat them, 00:09:07.680 --> 00:09:09.959 because it makes little sense to repeat a keyword. 00:09:09.960 --> 00:09:13.919 -So why not center everything around the keys only +So why not center everything around the keys only, 00:09:13.920 --> 00:09:18.879 and can that help simplify my code? +NOTE Diving in yasnippet + 00:09:18.880 --> 00:09:23.639 -So I started to dive into your snippet +So I started to dive into yasnippet 00:09:23.640 --> 00:09:27.319 and I found a lot of useful semi-hidden functions there. 00:09:27.320 --> 00:09:30.679 -I discovered that getting the list +I discovered that getting the list, 00:09:30.680 --> 00:09:34.959 the list of keys for a given mode was not that difficult. 00:09:34.960 --> 00:09:40.079 -And at the end what I started doing +And at the end, what I started doing -00:09:40.080 --> 00:09:47.079 -is get all the snipple tables used by a major mode +00:09:40.080 --> 00:09:43.399 +is get all the snippet tables used by a major mode -00:09:47.080 --> 00:09:52.399 +00:09:43.400 --> 00:09:47.999 and get the lists of the keys that you have in each table. -00:09:52.400 --> 00:09:55.839 +00:09:48.000 --> 00:09:50.375 Sometimes the list is empty -00:09:55.840 --> 00:10:01.959 +00:09:50.376 --> 00:09:54.319 so it's going to return a nil and that you have to discard. -00:10:01.960 --> 00:10:05.999 +00:09:54.320 --> 00:09:57.559 When you're using structured snippets -00:10:06.000 --> 00:10:08.919 +00:09:57.560 --> 00:10:02.479 like snippets and submenus and so on -00:10:08.920 --> 00:10:12.359 -to get a structured menu, +00:10:02.480 --> 00:10:06.399 +to get a structured menu. -00:10:12.360 --> 00:10:14.999 -you also get some non-strings that you need to filter out +00:10:06.400 --> 00:10:09.834 +You also get some non-strings that you need to filter out -00:10:15.000 --> 00:10:18.999 +00:10:09.835 --> 00:10:15.039 in order to get a workable keyword list. -00:10:19.000 --> 00:10:24.879 +00:10:15.040 --> 00:10:21.799 At the end of the day, what I had was something like this. -00:10:24.880 --> 00:10:30.959 +00:10:21.800 --> 00:10:29.519 I have, for a mode, I went through all modes. -00:10:30.960 --> 00:10:37.159 -through all modes associated to that and then I went +00:10:29.520 --> 00:10:38.799 +through all modes associated to that, and then I went, -00:10:37.160 --> 00:10:42.519 +00:10:38.800 --> 00:10:42.480 I got my results from all the tables that I had 00:10:42.520 --> 00:10:45.279 -for a for a given time for a given table +for a given time, for a given table. 00:10:45.280 --> 00:10:48.079 -so what you do is you get your the tables +So what you do is you get the tables 00:10:48.080 --> 00:10:53.119 -that are associated to a mode because surprise surprise +that are associated to a mode, because, surprise, surprise, 00:10:53.120 --> 00:10:55.958 -Some modes have more than one table, +some modes have more than one table. 00:10:55.959 --> 00:11:00.917 -and then what you do is you filter out all non strings +And then what you do is you filter out all non strings 00:11:00.918 --> 00:11:07.719 from each of the keys list that you have for each table. -00:11:07.720 --> 00:11:12.679 +00:11:07.720 --> 00:11:12.379 So as you see, it's a 1, 2, 3, 4, 5, 6, 7 liner, -00:11:12.680 --> 00:11:14.319 +00:11:12.380 --> 00:11:14.319 which was not too much. 00:11:14.320 --> 00:11:20.039 @@ -529,104 +563,116 @@ I sent a pull request to include this as a public function in Yasnipit 00:11:29.000 --> 00:11:32.319 -because it might be nice to have it in a packet +because it might be nice to have it in the package 00:11:32.320 --> 00:11:33.840 in order to do this kind of things. +NOTE Fine-tuning: adding cape + 00:11:33.840 --> 00:11:41.239 -So fine-tuning I just adding a yes completion +So fine-tuning. Just adding a yas completion 00:11:41.240 --> 00:11:44.719 -to the completion point functions was not enough +to the completion point functions was not enough. 00:11:44.720 --> 00:11:46.799 -I don't really know +I don't really know, 00:11:46.800 --> 00:11:51.199 -but exclusive node didn't seem to work how I wanted +but :exclusive no didn't seem to work how I wanted -00:11:51.200 --> 00:11:57.399 -so I needed to escape sorry yeah I was saying I was getting rid of packages +00:11:51.200 --> 00:11:54.549 +so I needed to escape... Sorry. Yeah. -00:11:57.400 --> 00:12:00.999 +00:11:54.550 --> 00:11:57.399 +I was saying I was getting rid of packages, + +00:11:57.400 --> 00:12:00.279 and I had to add one package -00:12:01.000 --> 00:12:04.479 -in order to get a function which is very very nice +00:12:00.280 --> 00:12:04.479 +in order to get a function, which is very, very, nice, 00:12:04.480 --> 00:12:08.919 -and which is part of the cape function of the cape package +and which is part of the cape function of the cape package, 00:12:08.920 --> 00:12:12.799 -and that's cape cap super. +and that's cape-capf-super. 00:12:12.800 --> 00:12:16.439 -So at the end using that you define an alias +So at the end, using that, you define an alias, 00:12:16.440 --> 00:12:23.199 -which for that where you use cape cap super +which, for that, where you use cape-capf-super 00:12:23.200 --> 00:12:25.799 -to have a list of what you want +to have a list of what you want... 00:12:25.800 --> 00:12:29.079 -so in this case for example for the demo +So in this case, for example, for the demo + +00:12:29.080 --> 00:12:31.419 +I'm going to make, I'm using yas completion -00:12:29.080 --> 00:12:32.759 -I'm going to make I'm using yes completion +00:12:31.420 --> 00:12:36.172 +and then the elisp-completion-at-point function -00:12:32.760 --> 00:12:37.719 -and then the elisp completion point function provided by Emacs. +00:12:36.173 --> 00:12:37.719 +provided by Emacs. 00:12:37.720 --> 00:12:43.999 -I combine them using cape cap super +I combine them using cape-capf-super, 00:12:44.000 --> 00:12:47.679 -and with that I create a completion point +and with that, I create a completion point, 00:12:47.680 --> 00:12:53.159 -a new completion point function which I call cape list mode +a new completion point function which I call cape-lisp-mode, 00:12:53.160 --> 00:12:58.480 -and then I add this alias to the completion functions list +and then I add this alias to the completion functions list, + +00:12:58.520 --> 00:13:03.803 +and with that, it is enough. + +NOTE Automatic snippet expansion -00:12:58.520 --> 00:13:05.719 -and with that it is enough snippet expansion +00:13:03.804 --> 00:13:05.719 +Snippet expansion. -00:13:05.720 --> 00:13:14.479 -if you want to have your snippets expanded automatically, +00:13:05.720 --> 00:13:13.839 +If you want to have your snippets expanded automatically, -00:13:14.480 --> 00:13:27.999 +00:13:13.840 --> 00:13:27.999 you have to add an exit function to the, I'm sorry, 00:13:28.000 --> 00:13:30.879 -to the completion properties +to the completion properties. 00:13:30.880 --> 00:13:34.119 -yet another functionality you have to add +Yet another functionality you have to add. 00:13:34.120 --> 00:13:39.199 -and to avoid this automatic selection to be too eager +And to avoid this automatic selection to be too eager, -00:13:39.200 --> 00:13:43.319 -you need to add this set corfu +00:13:39.200 --> 00:13:47.973 +you need to add this setq corfu-on-exact-match to nil -00:13:43.320 --> 00:13:48.599 -on exact match to nil because otherwise - -00:13:48.600 --> 00:13:51.839 -you will always get the snippet expanded +00:13:47.974 --> 00:13:51.839 +because otherwise, you will always get the snippet expanded, 00:13:51.840 --> 00:13:55.039 -even if you don't want it Basically why? +even if you don't want it. Basically, why? 00:13:55.040 --> 00:13:57.639 -Basically because this would be suboptimal +Basically, because this would be suboptimal 00:13:57.640 --> 00:14:05.359 because the key can appear as part of a variable name. +NOTE Themes + 00:14:05.360 --> 00:14:10.599 Another nice thing, I'm also creating my own themes. @@ -640,15 +686,15 @@ that only cover the modes that I use and for that I have my own theme creator fork 00:14:22.960 --> 00:14:26.959 -from the original team creator. +from the original theme creator. -00:14:26.960 --> 00:14:31.719 -In my personal work that I'm running at home, +00:14:26.960 --> 00:14:29.292 +In my personal fork that I'm running at home, -00:14:31.720 --> 00:14:34.159 +00:14:29.293 --> 00:14:33.859 I only have the faces for the modes I use. -00:14:34.160 --> 00:14:38.159 +00:14:33.860 --> 00:14:38.159 I don't want to overload the thing 00:14:38.160 --> 00:14:41.839 @@ -658,7 +704,7 @@ with too much different things. Looking at this, I really didn't need, as you will see now, 00:14:46.000 --> 00:14:50.079 -I don't need to add anything to my themes +I don't need to add anything to my themes, 00:14:50.080 --> 00:14:53.279 because the default faces for Corfu @@ -666,23 +712,28 @@ because the default faces for Corfu 00:14:53.280 --> 00:14:58.319 adapt quite well to most of the themes. -00:14:58.320 --> 00:15:02.839 -So if I go back to my checklist decently remax yes +NOTE My check-list + +00:14:58.320 --> 00:15:01.478 +So if I go back to my checklist, + +00:15:01.479 --> 00:15:02.839 +decently new Emacs, yes, 00:15:02.840 --> 00:15:06.559 -compiled the one you'll see +compiled. The one you'll see 00:15:06.560 --> 00:15:09.239 -for the for in the demo I'm doing is a master +in the demo I'm doing is a master 00:15:09.240 --> 00:15:11.999 compiled the day before yesterday 00:15:12.000 --> 00:15:15.199 -so and I don't need Corfu terminal there. +and I don't need corfu-terminal there. 00:15:15.200 --> 00:15:16.559 -I need your snippet, +I need yasnippet, 00:15:16.560 --> 00:15:20.159 and you're going to see that in a second @@ -694,25 +745,30 @@ with a couple of snippets that I can expand here. I don't want any reminiscence of a company in my setup, 00:15:27.480 --> 00:15:32.119 -and there's none. Well, actually, company kind is there +and there's none. Well, actually, :company-kind is there 00:15:32.120 --> 00:15:33.719 -you see the company there +you see the company there, 00:15:33.720 --> 00:15:39.559 -but it isn't if I buy companies strictly speaking +but it isn't defined by company strictly speaking, 00:15:39.560 --> 00:15:44.679 -and for I don't want I need Eglot integration +and for... I don't want... I need Eglot integration + +00:15:44.680 --> 00:15:48.583 +which I will also be showing you. -00:15:44.680 --> 00:15:50.400 -which I will also be showing you. Takeaways from all this, +NOTE Takeaways + +00:15:48.584 --> 00:15:50.400 +Takeaways from all this, 00:15:50.440 --> 00:15:55.279 if you accept the extra burden 00:15:55.280 --> 00:16:02.239 -of Corfu terminal for Emacs 30 or earlier Emacs 30s, +of corfu-terminal for Emacs 30 or earlier Emacs 30s, 00:16:02.240 --> 00:16:07.559 it's not too difficult to get this set up running. @@ -742,55 +798,54 @@ I've learned a lot about computational functions in the process, which is, something that is always nice to learn new things 00:16:40.440 --> 00:16:45.039 -and the Nerd Icons Corfu makes the +and the nerd-icons-corfu makes the... 00:16:45.040 --> 00:16:48.319 -at least at this point in time I might get tired of it +at least, at this point in time... I might get tired of it, 00:16:48.320 --> 00:16:50.399 -but at this point in time it makes +but at this point in time, it makes -00:16:50.400 --> 00:16:53.679 -a makes a very nice overall look +00:16:50.400 --> 00:16:58.039 +a very nice overall look and feel for Emacs. -00:16:53.680 --> 00:16:58.039 -and look and feel for for Emacs. +NOTE Requests (to whom it may concern) 00:16:58.040 --> 00:17:02.039 -requests to whom it may concern cape has nice features +Requests (to whom it may concern): cape has nice features 00:17:02.040 --> 00:17:06.279 -that maybe could make their way into emacs +that maybe could make their way into emacs. -00:17:06.280 --> 00:17:09.159 -i'm thinking basically about this cape super fun +00:17:06.280 --> 00:17:08.064 +I'm thinking basically about -00:17:09.160 --> 00:17:12.399 -uh super function super cape function functionality +00:17:08.065 --> 00:17:12.399 +this super cape functionality 00:17:12.400 --> 00:17:18.799 -which is very nice and overcomes the problem of linking +which is very nice, and overcomes the problem of linking, 00:17:18.800 --> 00:17:22.239 -and this exclusive and all this kind of things +and this :exclusive and all this kind of things 00:17:22.240 --> 00:17:26.479 that we have currently in Corfu 00:17:26.480 --> 00:17:28.439 -with the computational point functions. +with the completion-at-point functions. 00:17:28.440 --> 00:17:32.959 -Corfu is also really nice to have and it's not too big +Corfu is also really nice to have, and it's not too big. 00:17:32.960 --> 00:17:35.559 -so is there any possibility +So is there any possibility 00:17:35.560 --> 00:17:40.079 that it makes its way into Emacs? 00:17:40.080 --> 00:17:42.399 -Please keep Yarn Snippet alive. +Please keep yasnippet alive. 00:17:42.400 --> 00:17:48.559 I'm not saying here that my pull request should be there, @@ -799,43 +854,45 @@ I'm not saying here that my pull request should be there, but it would be nice if someone took a look 00:17:51.560 --> 00:17:57.399 -and made it part of Yarn Snippet. +and made it part of Yasnippet. 00:17:57.400 --> 00:18:01.799 -And PS, currently on master, +And P.S., currently on master, -00:18:01.800 --> 00:18:07.799 +00:18:01.800 --> 00:18:04.292 there's a lot of semantic highlighting going on, -00:18:07.800 --> 00:18:13.719 +00:18:04.293 --> 00:18:07.125 which is very, very nice. No criticism on that. -00:18:13.720 --> 00:18:19.639 -but you may need to add to your snippet hook +00:18:07.126 --> 00:18:12.417 +But you may need to add to your snippet hook -00:18:19.640 --> 00:18:25.039 -this simple local value for ElixirFontify semantically +00:18:12.418 --> 00:18:25.039 +this simple local value for elisp-fontify-semantically, 00:18:25.040 --> 00:18:30.719 -because at least in my case I felt that +because at least in my case, I felt that 00:18:30.720 --> 00:18:32.439 -the face were a bit too pushy +the faces were a bit too pushy, 00:18:32.440 --> 00:18:37.280 -so I had to make a snippet mode +so I had to make the snippet mode -00:18:37.334 --> 00:18:41.279 +00:18:37.334 --> 00:18:43.579 use the old Emacs Lisp fontification. -00:18:41.280 --> 00:18:46.279 -That's what we want to talk about. +00:18:43.580 --> 00:18:46.279 +This would be my talk. 00:18:46.280 --> 00:18:54.999 Any initial reactions to this? There's a question here. +NOTE Q: Did you try yasnippet-capf? If so, what did you miss from it that this approach has? Thanks! https://github.com/elken/yasnippet-capf + 00:18:55.000 --> 00:18:59.159 -Someone asked, did you try Jasnepet Cup? +Someone asked, did you try yasnippet-capf? 00:18:59.160 --> 00:19:05.959 If so, what did you miss from this approach? I tried that. @@ -843,10 +900,10 @@ If so, what did you miss from this approach? I tried that. 00:19:05.960 --> 00:19:11.239 And it's not that I missed anything. -00:19:11.240 --> 00:19:16.519 +00:19:11.240 --> 00:19:15.839 It was more or less that I wanted to do it myself. -00:19:16.520 --> 00:19:24.159 +00:19:15.840 --> 00:19:24.159 So I wanted to see what was behind it. That's my answer. 00:19:24.160 --> 00:19:26.679 @@ -858,6 +915,8 @@ but I try to keep learning. So, this was a nice objective 00:19:31.720 --> 00:19:40.159 to learn a bit more about Emacs. And now, just a second. +NOTE A small demo + 00:19:40.160 --> 00:19:44.879 Now, a small demo. This is the interaction. @@ -880,7 +939,7 @@ And what you see here is that I have two snippets appearing and then some variables. 00:20:04.320 --> 00:20:09.879 -So, I could go for def one or if I want a key map, for def key map, +So, I could go for defun or if I want a key map, for def-keymap, 00:20:09.880 --> 00:20:11.479 which would be something like this. @@ -889,46 +948,49 @@ which would be something like this. And then when I press enter, I get directly into the map 00:20:18.320 --> 00:20:26.719 -and I could say like, Show off mob. +and I could say like, show off map. 00:20:26.720 --> 00:20:30.079 -Then it sets out directly a prefix T, +Then it sets out directly a :prefix t, 00:20:30.080 --> 00:20:35.039 which is something that I asked for in Emacs master. 00:20:35.040 --> 00:20:39.479 -So with prefix T, for those who prefix it true, +So with :prefix t, for those who prefix it true, 00:20:39.480 --> 00:20:41.399 for those who don't know it, -00:20:41.400 --> 00:20:46.799 -it makes integrating this into keymaps in use package much easier. +00:20:41.400 --> 00:20:49.042 +it makes integrating this into keymaps + +00:20:49.043 --> 00:20:52.125 +in use-package much easier. -00:20:46.800 --> 00:20:51.119 -So the next thing would be +00:20:52.126 --> 00:20:54.167 +So the next thing would be, -00:20:51.120 --> 00:20:55.999 -I would like to write a description +00:20:54.168 --> 00:20:56.500 +I would like to write a description, -00:20:56.000 --> 00:21:04.999 -like for example a cool show off team up +00:20:56.501 --> 00:21:04.999 +like, for example, a cool show-off keymap, 00:21:05.000 --> 00:21:08.599 -and then my keys are my functions and that would be it +and then my keys are my functions, and that would be it. 00:21:08.600 --> 00:21:15.839 -but you also have like but also have like this define function +Of course, you also have like this define function. 00:21:15.840 --> 00:21:21.679 -and of course you can say that's nice but there's no +And of course you can say, that's nice, 00:21:21.680 --> 00:21:23.799 but you're not showing the integration 00:21:23.800 --> 00:21:25.439 -with Eglot and you're right. +with Eglot, and you're right. 00:21:25.440 --> 00:21:30.279 So I'm going just to open up a small program @@ -937,16 +999,16 @@ So I'm going just to open up a small program that I'm currently developing in Python. 00:21:33.320 --> 00:21:38.239 -X is a tool to do things in MP3. +This is a tool to do things in MP3. 00:21:38.240 --> 00:21:42.279 -And here I would have like all these things. +And here I would have, like, all these things. 00:21:42.280 --> 00:21:45.359 As you see here in the bottom, 00:21:45.360 --> 00:21:49.079 -service running, pilot is local, eglot is active. +server is running, file is local, eglot is active. 00:21:49.080 --> 00:21:57.919 So I have my eglot stop and then I go down. @@ -960,71 +1022,71 @@ I would go like for it. I would go like add flag. 00:22:08.800 --> 00:22:13.759 For example, I would add a flag -00:22:13.760 --> 00:22:21.759 +00:22:13.760 --> 00:22:27.859 and I would get a new flag to add here. -00:22:21.760 --> 00:22:33.119 -Oops. Of course, this is integrated into Eagle Lord. +00:22:27.860 --> 00:22:33.119 +Oops. Of course, this is integrated into Eglot, 00:22:33.120 --> 00:22:42.759 -So I'm getting your information about what I have. +so I'm getting your information about what I have. 00:22:42.760 --> 00:22:52.359 -I don't have OS, so I would need to import here, +I could... I don't have os, so I would need to import here, 00:22:52.360 --> 00:22:59.279 -but I can go up just to see +but I can go up just to see... 00:22:59.280 --> 00:23:01.759 -if I would like to, for example, +If I would like to, for example, 00:23:01.760 --> 00:23:11.879 -create a new a regular expression +create a new regular expression, 00:23:11.880 --> 00:23:15.439 -I'm getting this information that you see right now on call +I'm getting this information that you see right now on call. 00:23:15.440 --> 00:23:17.359 -for I'm getting that from Eglot +I'm getting that from Eglot. 00:23:17.360 --> 00:23:18.919 -so you see there's the integration +So you see there's the integration 00:23:18.920 --> 00:23:20.839 -with with Eglot too in Python +with Eglot too in Python. 00:23:20.840 --> 00:23:23.559 -I have Eglot and as you've seen +I have Eglot, and as you've seen 00:23:23.560 --> 00:23:30.239 -I also have the and all these are snippets fine +I also have the... and all these are snippets. Fine. 00:23:30.240 --> 00:23:38.199 -more reactions and questions +More reactions and questions? 00:23:38.200 --> 00:23:54.239 Because that would be my show off here. -00:23:54.240 --> 00:23:56.759 +00:23:54.240 --> 00:24:09.379 Any questions? Any more questions on the pad? -00:23:56.760 --> 00:24:11.479 -but anyhow i'm going to try +00:24:09.380 --> 00:24:11.479 +but anyhow I'm going to try, 00:24:11.480 --> 00:24:13.239 -i'm going to try your snippet too +I'm going to try yasnippet too 00:24:13.240 --> 00:24:16.279 -and i'm going to be answering this question more +and I'm going to be answering this question more 00:24:16.280 --> 00:24:21.079 yeah time is good okay fine 00:24:21.080 --> 00:24:30.039 -so I would be done if there's no more reactions +so I would be done if there's no more reactions... 00:24:30.040 --> 00:24:33.239 -thank you so much You're welcome. +Thank you so much. You're welcome. 00:24:33.240 --> 00:24:34.919 If you have any other questions, folks, @@ -1045,34 +1107,36 @@ Oh, I see some questions coming in now. You may go ahead if you like. 00:24:46.200 --> 00:24:51.879 -okay fine uh what uh there's someone asking +Okay, fine. There's someone asking: + +NOTE Q: Do special characters in yasnippets work well too? example <FD ? 00:24:51.880 --> 00:24:57.079 -what do special characters in your snippets work well too +Do special characters in your snippets work well too? 00:24:57.080 --> 00:25:02.479 -what kind of i don't use special characters in the key name +what kind of... I don't use special characters in the key name, 00:25:02.480 --> 00:25:05.199 -so in this case everything works quite nicely +so in this case everything works quite nicely, 00:25:05.200 --> 00:25:11.359 -and then i'm passing i'm passing the control to your snippets +and then I'm passing, I'm passing the control to yasnippet, 00:25:11.360 --> 00:25:13.679 -so if there's any problem in your snippets +so if there's any problem in yasnippet 00:25:13.680 --> 00:25:15.359 -with uh special characters +with special characters, 00:25:15.360 --> 00:25:24.399 -that i don't know I don't use that as a key. +that, I don't know. I don't use that as a key. 00:25:24.400 --> 00:25:30.519 I'm just using for key names. 00:25:30.520 --> 00:25:38.399 -I normally use a, I only use letters, but that should work. +I normally use a... I only use letters, but that should work. 00:25:38.400 --> 00:25:43.959 I mean, let's, uh, let's give it a trial. @@ -1081,51 +1145,48 @@ I mean, let's, uh, let's give it a trial. Let's kill here. Yes. I don't want, I don't want to touch this. 00:25:58.040 --> 00:26:01.039 -Ugh. let's go into this one uh +Ugh. Let's go into this one. 00:26:01.040 --> 00:26:06.920 -let's say I'm going to define this for example like this +Let's say I'm going to define this, for example, like this, 00:26:06.959 --> 00:26:10.919 -and I'm going to create a new snippet +and I'm going to create a new snippet. 00:26:10.920 --> 00:26:15.359 I'm going to create a new snippet 00:26:15.360 --> 00:26:18.119 -and use this is for example when you look at this - -00:26:18.120 --> 00:26:20.599 -if you if you have the the venue uh the new +and use this. For example, when you look at this, -00:26:20.600 --> 00:26:26.159 -sorry the new way of the the new emacs uh +00:26:18.120 --> 00:26:31.042 +if you have the new way of the new Emacs -00:26:26.160 --> 00:26:31.639 -semantical highlighting working +00:26:31.043 --> 00:26:37.667 +semantical highlighting working, -00:26:31.640 --> 00:26:39.199 -this would be quite cramped this is why i'm using +00:26:37.668 --> 00:26:40.625 +this would be quite cramped. This is why I'm using, -00:26:39.200 --> 00:26:43.039 -this is why i said uh the snippet the +00:26:40.626 --> 00:26:44.899 +this is why I said the snippet, the... -00:26:43.040 --> 00:26:49.039 -so is this more or less what you're talking about +00:26:44.900 --> 00:26:55.139 +So is this more or less what you're talking about? -00:26:49.040 --> 00:27:01.479 +00:26:55.140 --> 00:27:12.579 This is what you're talking about. Snippet. Save the snippet. -00:27:01.480 --> 00:27:15.479 -So I'm going to... Snippet, load and put window. +00:27:12.580 --> 00:27:15.479 +Snippet, load and put window. 00:27:15.480 --> 00:27:21.279 Enable interaction mode. Yes, I'm going to save. -00:27:21.280 --> 00:27:24.439 -And I'm going to save that as FD test. on the file. +00:27:21.280 --> 00:27:31.059 +And I'm going to save that as fd test in the file. -00:27:24.440 --> 00:27:41.479 +00:27:31.060 --> 00:27:41.479 No, I'm going to save this. Load. Load input window. 00:27:41.480 --> 00:27:53.679 @@ -1135,16 +1196,19 @@ I'm going to put this in Emacs Lisp mode. I want to save it. No. I'm going to write that directly into Emacs Lisp mode. 00:28:27.360 --> 00:28:30.639 -going to go back into scratch buffer +Going to go back into scratch buffer, 00:28:30.640 --> 00:28:43.079 -and here I have it and we have it here but anyhow +and here I have it. We have it here. But anyhow... + +00:28:43.080 --> 00:28:46.934 +And I'm just going to try to see, if I feel like... -00:28:43.080 --> 00:28:52.079 -and I'm just going to try to see if I feel like empty of course +00:28:46.935 --> 00:28:52.663 +Empty? Of course, there's only one. -00:28:52.080 --> 00:28:58.839 -there's only one it will not show in Corfu, +00:28:52.664 --> 00:28:58.839 +It will not show in Corfu. 00:28:58.840 --> 00:29:01.519 but I mean, I don't have any problems @@ -1185,17 +1249,17 @@ And I'm going to go and write this 00:30:08.800 --> 00:30:16.719 into, with a second, fine. -00:30:16.720 --> 00:30:19.919 +00:30:16.720 --> 00:30:18.179 And now I need to quit here, sorry. -00:30:19.920 --> 00:30:26.639 +00:30:18.180 --> 00:30:26.639 And I'm going to come back in a second with another remark. 00:30:26.640 --> 00:30:31.559 Well, I'm bringing back and now let's see. 00:30:31.560 --> 00:30:34.839 -Let's see what we have in your snippets. +Let's see what we have in yasnippet. 00:30:34.840 --> 00:30:44.159 It's not there. Why not? Just a second. Let's see if I go. @@ -1206,20 +1270,23 @@ I don't know if it matters that the name was 00:30:47.840 --> 00:30:52.599 that didn't have the characters in the beginning. -00:30:52.600 --> 00:31:03.159 +00:30:52.600 --> 00:31:05.699 Just a second. I think I know what is happening here. -00:31:03.160 --> 00:31:21.439 -Do I have here? I have them. I'm going to clean. +00:31:05.700 --> 00:31:21.439 +Do I have them? I'm going to clean. 00:31:21.440 --> 00:31:28.879 -Oh, you're back in your home directories. Why? +[Sacha]: Oh, you're back in your home directories is why. -00:31:28.880 --> 00:31:35.879 -CD dash to get back in. Yeah. That's right. +00:31:28.880 --> 00:31:35.004 +cd - to get back in. + +00:31:35.005 --> 00:31:35.879 +Yeah. That's right. 00:31:35.880 --> 00:31:37.799 -So you see how the name also has +So you see how the name also has... 00:31:37.800 --> 00:31:39.319 it doesn't have the same as the keys. @@ -1227,10 +1294,13 @@ it doesn't have the same as the keys. 00:31:39.320 --> 00:31:41.039 I don't know if that affects what shows up. -00:31:41.040 --> 00:31:49.399 -Yeah, we we can try that. That's a quick one. This is my. +00:31:41.040 --> 00:31:44.880 +[Pedro]: Yeah, we we can try that. + +00:31:44.881 --> 00:31:49.999 +That's a quick one. This is my... -00:31:49.400 --> 00:31:51.279 +00:31:50.000 --> 00:31:51.279 Fine, now that I have this, 00:31:51.280 --> 00:31:55.359 @@ -1243,25 +1313,33 @@ They both seem to be the same now and I don't know if that affects, but anyhow, let's try it. 00:32:03.080 --> 00:32:07.679 -I go and then I look at the AR snippets, if it's there. +I go and then I look at the yasnippet, if it's there. -00:32:07.680 --> 00:32:11.879 -Yes, it is. Yeah, it's there. +00:32:07.680 --> 00:32:09.956 +Yes, it is. + +00:32:09.957 --> 00:32:11.879 +[Sacha]: Yeah, it's there. 00:32:11.880 --> 00:32:18.559 -And then if I say there, there you are. Oh, look at that. +[Pedro]: And then if I say there, there you are. Oh, look at that. + +00:32:18.560 --> 00:32:22.167 +It doesn't seem to be affecting. -00:32:18.560 --> 00:32:24.159 -It doesn't seem to be affecting. Fantastic. +00:32:22.168 --> 00:32:24.159 +[Sacha]: Fantastic. 00:32:24.160 --> 00:32:32.119 -And by the way, it is there. +[Pedro]: And by the way, it is there. + +NOTE Emacs Lisp 00:32:32.120 --> 00:32:33.999 -Yeah, I really should spend time +[Sacha]: Yeah, I really should spend time 00:32:34.000 --> 00:32:36.599 -getting more templates set up with Snippet. +getting more templates set up with yasnippet. 00:32:36.600 --> 00:32:37.639 I really love the fact that @@ -1270,7 +1348,7 @@ I really love the fact that you can evaluate Emacs Lisp in it too. 00:32:40.400 --> 00:32:43.399 -Yeah, I mean, just to make it bigger, +[Pedro]: Yeah, I mean, just to make it bigger, 00:32:43.400 --> 00:32:51.359 try that because if I go into my, for example, @@ -1284,13 +1362,13 @@ and in my org mode, I go to the article, 00:32:59.440 --> 00:33:03.319 which is one of the big ones. -00:33:03.320 --> 00:33:06.199 +00:33:03.320 --> 00:33:05.119 I have things like, for example, -00:33:06.200 --> 00:33:10.719 +00:33:05.120 --> 00:33:09.199 I defined a couple of functions here to do if it's empty, -00:33:10.720 --> 00:33:16.399 +00:33:09.200 --> 00:33:16.399 if that is empty, just add a white space. 00:33:16.400 --> 00:33:19.599 @@ -1300,28 +1378,28 @@ If one is empty, add a white space. add a white space here so it becomes a comment. 00:33:23.320 --> 00:33:27.279 -I have functions for to do more things on that +I have functions to do more things on that, 00:33:27.280 --> 00:33:29.799 -and I also have like menus to see +and I also have menus to see -00:33:29.800 --> 00:33:33.599 +00:33:29.800 --> 00:33:31.439 what language I want to choose for -00:33:33.600 --> 00:33:37.079 -for my spell checking and so on so +00:33:31.440 --> 00:33:33.250 +my spell checking and so on. -00:33:37.080 --> 00:33:40.319 -and that's all that's as you see +00:33:33.251 --> 00:33:35.480 +And that's all... As you see, -00:33:40.320 --> 00:33:41.959 -this is a Lisp being evaluated +00:33:35.481 --> 00:33:39.417 +this is Lisp being evaluated. -00:33:41.960 --> 00:33:45.119 -so yes do I really encourage you +00:33:39.418 --> 00:33:45.119 +So yes, do. I really encourage you 00:33:45.120 --> 00:33:46.519 -I've also heard people use it, +[Sacha]: I've also heard people use it, 00:33:46.520 --> 00:33:47.799 like, especially if they're working @@ -1336,10 +1414,10 @@ so they can just have the syntax for the different languages 00:33:54.360 --> 00:33:58.239 -be condensed into a consistent abbreviation. Yeah. +be condensed into a consistent abbreviation. 00:33:58.240 --> 00:34:01.319 -And look, this is my article. I have another. +[Pedro]: Yeah. And look, this is my article. I have another. 00:34:01.320 --> 00:34:07.799 This is when I'm writing articles. I have another one. @@ -1360,7 +1438,7 @@ and you don't have to type it by hand. So, it's really, really nice. 00:34:22.880 --> 00:34:25.959 -Hmm, I think it might be nice to have +[Sacha]: Hmm, I think it might be nice to have 00:34:25.960 --> 00:34:28.079 a future Emacs carnival, you know, @@ -1372,7 +1450,7 @@ shared blogging theme thing be around having people share their snippets. 00:34:33.360 --> 00:34:39.359 -No snippets and other things like for example, +[Pedro]: Yasnippets and other things. Like for example, 00:34:39.360 --> 00:34:41.319 this is something stupid. @@ -1386,10 +1464,10 @@ And of course, there you see, 00:34:48.640 --> 00:34:51.439 I have also, this is also with, -00:34:51.440 --> 00:34:54.519 +00:34:51.440 --> 00:34:55.792 this is my way of switching buffers, -00:34:54.520 --> 00:34:58.159 +00:34:55.793 --> 00:34:58.159 which is with the shift control and tab, 00:34:58.160 --> 00:35:00.559 @@ -1401,26 +1479,29 @@ and then when I'm in a family, 00:35:02.520 --> 00:35:06.999 I can go and switch with control tab between the different, -00:35:07.000 --> 00:35:15.599 +00:35:07.000 --> 00:35:13.659 I'm using tab line by the way. I'm not using the other one. -00:35:15.600 --> 00:35:20.839 +00:35:13.660 --> 00:35:20.839 I'm using the old plain tab line with my themes. 00:35:20.840 --> 00:35:23.519 So that's more or less everything. 00:35:23.520 --> 00:35:26.519 -Thank you for the peek into your workflow. +[Sacha]: Thank you for the peek into your workflow. 00:35:26.520 --> 00:35:30.759 I will work on getting the recordings for the live talks -00:35:30.760 --> 00:35:33.919 +00:35:30.760 --> 00:35:34.458 sorted out at some point very soon. -00:35:33.920 --> 00:35:37.839 +00:35:34.459 --> 00:35:37.084 I might even be able to get them out next week. -00:35:37.840 --> 00:35:44.920 -So thanks again. All right. Have a nice supper. Same to you. +00:35:37.085 --> 00:35:43.667 +So thanks again. All right. Have a nice supper. + +00:35:43.668 --> 00:35:44.920 +[Pedro]: Same to you. diff --git a/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt b/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt index f35c2d27..849f7619 100644 --- a/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt +++ b/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt @@ -1,5 +1,7 @@ WEBVTT +NOTE Q: My biggest question with AI code editors trying to integrate with Emacs is -- are the AI code editors able to read unsaved buffers and not just saved files? + 00:00:00.000 --> 00:00:01.759 So let's, I'm just going to answer @@ -165,6 +167,8 @@ But yes, that's what I think about. 00:02:16.600 --> 00:02:20.319 that interesting questions about unsaved buffers. +NOTE Q: Personally I don't agree with the comment you made about VS Code usage dying out because I see companies/products pushing for tightly-integrated VS-Code agents/products like Windsurf. Thoughts? + 00:02:20.320 --> 00:02:22.239 The next question is, @@ -172,7 +176,7 @@ The next question is, I don't agree with the comment you made 00:02:23.800 --> 00:02:25.199 -about VS code usage dying out +about VS Code usage dying out 00:02:25.200 --> 00:02:26.719 because I see companies and products @@ -264,6 +268,8 @@ I think it's gonna be the opposite, but I guess we'll see. 00:03:43.200 --> 00:03:47.759 Like, let's reconvene in a year and see what happens. +NOTE Q: Do you have any thoughts about the environmental cost of using LLMs - either the training of models we can download and use locally, or the larger, commercial models used from the cloud? + 00:03:47.760 --> 00:03:49.159 Uh, the 3rd question answer, @@ -408,6 +414,8 @@ So I think it's wise to be cautious, 00:06:06.120 --> 00:06:09.079 but I think it's okay, I think, at least for personal use. +NOTE Q: I must say, I liked your conclusion, but I differ insofar as you said that VS Code differ from Emacs because the former is not as easy to adapt as the latter. Why should Microsoft not adapt VS Code as we adapt Emacs for the new era of coding? And why would VS Code be harder hit? Could you please elaborate on this point? + 00:06:09.080 --> 00:06:13.159 The next question is another, @@ -538,10 +546,10 @@ which people are really just using to edit code and if people find it less useful to edit code. 00:08:16.800 --> 00:08:20.919 -I think it's VS code will be harder hit than emails +I think it's VS Code will be harder hit than emails 00:08:20.920 --> 00:08:24.239 -because that's its whole like that's in the name +because that's its whole, like, that's in the name, 00:08:24.240 --> 00:08:25.559 like the whole reason for it @@ -556,7 +564,7 @@ So I think that it's it's vulnerable in a way that Emacs isn't 00:08:31.960 --> 00:08:34.519 -just because emacs is so very... +just because Emacs is so very... 00:08:34.520 --> 00:08:40.119 you know, it's, it could do so many things @@ -595,11 +603,13 @@ Is that touching on the point? Yeah, that's a great way to say it. 00:09:09.080 --> 00:09:12.439 -Thank you. Thank you, Colin. Yeah. +Thank you. Thank you, Corwin. Yeah. 00:09:12.440 --> 00:09:14.039 Thank you. Thank you for that question. +NOTE Q: Do you think that we are falling behind in productivity as Emacs users? Compared to all these VSCode forks that have 1000 buttons and textboxes everywhere (i.e. much richer UIs which are basically webpages). + 00:09:14.040 --> 00:09:18.759 Do you think we're falling behind in productivity as Emacs users @@ -774,6 +784,8 @@ I shouldn't be doing so much active listening. 00:12:12.280 --> 00:12:17.479 No, no, I appreciate your input. +NOTE Q: I've been using Claude Code extensively. I recently switched to Agent Shell with Claude Code. Have you tried it, what are your thoughts? + 00:12:17.480 --> 00:12:23.079 OK, next is I've been using Claude Code extensively. @@ -799,10 +811,10 @@ If Agent Shell did exist, I probably would have demoed it as well. 00:12:41.240 --> 00:12:45.359 -Agent Hell is great in the sense of it's +Agent shell is great in the sense of it's... 00:12:45.360 --> 00:12:53.719 -It does use comment, which is the way that I think all Emacs users +It does use comint, which is the way that I think all Emacs users 00:12:53.720 --> 00:12:57.039 would prefer to interact with something like Claude Code, @@ -853,13 +865,13 @@ It's progressing rapidly. But it's not as rich in functionality 00:13:37.480 --> 00:13:40.119 -as using quad code directly. +as using Claude Code directly. 00:13:40.120 --> 00:13:44.839 On the other hand, because it's letting Emacs be Emacs 00:13:44.840 --> 00:13:49.239 -and using comment, it's a much better experience +and using comint, it's a much better experience 00:13:49.240 --> 00:13:50.919 to actually give instructions. @@ -901,7 +913,7 @@ in order to me, I think there's kind of the sweet spot that I like. 00:14:23.520 --> 00:14:26.639 -Um, but HHL is a great step forward +Um, but agent-shell is a great step forward 00:14:26.640 --> 00:14:29.879 and I think it's, uh, it's quite good to use. @@ -909,6 +921,8 @@ and I think it's, uh, it's quite good to use. 00:14:29.880 --> 00:14:32.119 And I, I personally use it a lot. +NOTE Q: In terms of agent selection, what has your experience been with different agents, and have you had any success with hosting your own models and using open weights? + 00:14:32.120 --> 00:14:40.479 Um, OK, so in terms of, next question, @@ -937,7 +951,7 @@ I think Claude Code is, most people I know would say Claude Code is probably, 00:15:03.480 --> 00:15:07.479 -sorry, Cloud is probably the best for coding right now. +sorry, Claude is probably the best for coding right now. 00:15:07.480 --> 00:15:09.919 Gemini can be very hit and miss even with 3.0, @@ -1027,7 +1041,7 @@ just because they just have more horsepower, they can churn through those tokens a little quicker. 00:16:38.680 --> 00:16:44.719 -So, I'll just break in here to say, +[Corwin]: So, I'll just break in here to say, 00:16:44.720 --> 00:16:46.239 we've got about 7 minutes left @@ -1050,11 +1064,11 @@ to jump in and prep with the next speaker, 00:16:58.680 --> 00:17:00.359 but you'll be able to keep going -00:17:00.360 --> 00:17:02.599 +00:17:00.360 --> 00:17:04.119 as long as you have the steam for it. -00:17:02.600 --> 00:17:06.159 -Yeah, I think we have 3 questions. Yeah, thanks. +00:17:04.120 --> 00:17:06.159 +[Andrew]: Yeah, I think we have 3 questions. Yeah, thanks. 00:17:06.160 --> 00:17:08.239 I think we have 3 questions. @@ -1062,8 +1076,11 @@ I think we have 3 questions. 00:17:08.240 --> 00:17:09.719 Let's see if we can get through them -00:17:09.720 --> 00:17:17.359 -all in that time period. OK, this one is interesting talk. +00:17:09.720 --> 00:17:13.267 +all in that time period. + +00:17:13.268 --> 00:17:17.359 +OK, this one is interesting talk. 00:17:17.360 --> 00:17:20.439 I'll start by asking it for everything, but is it editing? @@ -1077,6 +1094,8 @@ So yes, let us all ask, but is it editing? 00:17:29.720 --> 00:17:33.439 All right. I can move on to the comment area. +NOTE Q: I'm reading angst in your thinking about AI/editing. What are you excited about? + 00:17:33.440 --> 00:17:40.319 I'm reading angst in your thinking about AI editing. @@ -1108,19 +1127,19 @@ And I think there's lots of opportunities, clever opportunities to do things 00:18:07.840 --> 00:18:11.079 -we couldn't have thought of Things that are useful, +we couldn't have thought of... Things that are useful, 00:18:11.080 --> 00:18:14.919 but in ways that are not super obvious to us, -00:18:14.920 --> 00:18:18.519 +00:18:14.920 --> 00:18:17.019 and I think I'm still excited -00:18:18.520 --> 00:18:23.839 +00:18:17.020 --> 00:18:22.939 about the possibilities of using them in ways that are super helpful -00:18:23.840 --> 00:18:29.319 -and different than. normal. I'll give you an example. +00:18:22.940 --> 00:18:29.319 +and different than normal. I'll give you an example. 00:18:29.320 --> 00:18:33.199 This is something that I intend to, I think, @@ -1159,7 +1178,7 @@ Yes. There are some smart people who remember this but I am not one of them. 00:19:11.200 --> 00:19:13.639 -And so I think like something like this is like you just type out, +And so I think, like, something like this is like, you just type out, 00:19:13.640 --> 00:19:17.279 find me this file, and it will substitute @@ -1174,7 +1193,7 @@ I think this is, there's a lot of little, little tweaks you could do like, you know, if you want the AI, 00:19:24.320 --> 00:19:26.679 -it could be there for you. And it will help you. +it could be there for you, and it will help you. 00:19:26.680 --> 00:19:27.559 And if you don't want it, @@ -1183,7 +1202,7 @@ And if you don't want it, it's not going to get in your way. 00:19:28.920 --> 00:19:30.639 -And I think this is where eMath can really shine. +And I think this is where Emacs can really shine. 00:19:30.640 --> 00:19:33.079 It can really take advantage of LLMs, @@ -1200,6 +1219,8 @@ So thank you for that great question. 00:19:43.920 --> 00:19:47.919 And then the final question. Yep. +NOTE Q: Why does it matter to have a richer UI? All that is left is basically writing and getting the results. + 00:19:47.920 --> 00:19:50.839 This final question is, why does it matter to have a richer UI? @@ -1216,7 +1237,7 @@ about Emacs not having a richer UI before, but I think it does matter a lot for all sorts of things. 00:20:03.160 --> 00:20:07.159 -It's hard to kind of explain succinctly +It's hard to kind of explain succinctly, 00:20:07.160 --> 00:20:08.519 because I'm talking about UI @@ -1225,28 +1246,28 @@ because I'm talking about UI and I'd have to show you things. 00:20:09.760 --> 00:20:14.599 -But it should be just something like oh I have an error +But it should be just something like, oh I have an error, 00:20:14.600 --> 00:20:15.799 and I'm using flymake and I'm, 00:20:15.800 --> 00:20:17.759 -I'm using the you know I have options +I'm using the... I have options 00:20:17.760 --> 00:20:19.839 where it'll show me the error in line 00:20:19.840 --> 00:20:22.639 -by like underlining things and having a little message, +by underlining things and having a little message, 00:20:22.640 --> 00:20:24.079 -but like, you know what that message +but like, you know what, that message 00:20:24.080 --> 00:20:26.399 -doesn't appear quite right, a lot of the times, +doesn't appear quite right a lot of the times. 00:20:26.400 --> 00:20:30.159 -or here's another one like. I program in Python a lot. +Or here's another one like. I program in Python a lot. 00:20:30.160 --> 00:20:33.479 And Python, it's super hard to program in @@ -1275,11 +1296,14 @@ And so you kind of have to hack it in. 00:20:47.760 --> 00:20:49.479 And there's lots of ways to mess it up. -00:20:49.480 --> 00:20:52.799 -And when editing, you'll find yourself messing this thing up. +00:20:49.480 --> 00:20:52.156 +And when editing, you'll find yourself -00:20:52.800 --> 00:20:57.159 -regularly. So it doesn't look quite clean. +00:20:52.157 --> 00:20:55.260 +messing this thing up regularly. + +00:20:55.261 --> 00:20:57.159 +So it doesn't look quite clean. 00:20:57.160 --> 00:20:59.079 And like, there's little artifacts, @@ -1290,17 +1314,17 @@ or, you know, there's little ways that it, 00:21:01.040 --> 00:21:02.359 it kind of gets things wrong, -00:21:02.360 --> 00:21:06.279 -or you can, you can get things wrong with it. +00:21:02.360 --> 00:21:03.939 +or you can get things wrong with it. -00:21:06.280 --> 00:21:10.039 +00:21:03.940 --> 00:21:07.519 So I think that, like, -00:21:10.040 --> 00:21:11.879 +00:21:07.520 --> 00:21:13.619 there's a lot of issues with that sort of thing. -00:21:11.880 --> 00:21:15.759 -And, and also, like, you know, +00:21:13.620 --> 00:21:15.759 +And also, like, you know, 00:21:15.760 --> 00:21:17.719 what if you want to do something like play a video inline, @@ -1308,23 +1332,23 @@ what if you want to do something like play a video inline, 00:21:17.720 --> 00:21:19.559 like, I don't know, you might should be able to do that, -00:21:19.560 --> 00:21:20.839 +00:21:19.560 --> 00:21:21.599 you might should be able to do anything. -00:21:20.840 --> 00:21:23.799 -But right now it just can't and I think +00:21:21.600 --> 00:21:23.799 +But right now, it just can't. I think 00:21:23.800 --> 00:21:24.999 -a lot of the reason as well +a lot of the reason as well... 00:21:25.000 --> 00:21:26.519 -we you know we wanted to be compatible +you know, we wanted to be compatible 00:21:26.520 --> 00:21:29.919 -with you know TRS 80 machines or something like that +with TRS 80 machines or something like that. 00:21:29.920 --> 00:21:33.159 -and it's this is important this really is important, +This is important, this really is important, 00:21:33.160 --> 00:21:34.719 but I hope there's some way @@ -1333,7 +1357,7 @@ but I hope there's some way that we can kind of eventually figure out 00:21:36.080 --> 00:21:39.279 -how to get the best of you know both compatibility and. +how to get the best of both compatibility and 00:21:39.280 --> 00:21:44.879 more modern UIs. So, you know, we can have more modern UIs @@ -1389,6 +1413,8 @@ that are working behind the scenes. 00:22:23.320 --> 00:22:25.079 So thank you all for putting this together. +NOTE Wrapping up + 00:22:25.080 --> 00:22:29.199 I'm so happy that we all are here. We care about Emacs. @@ -1405,22 +1431,22 @@ this really remarkable achievement. Like it's amazing that it exists. It continues to exist. 00:22:41.800 --> 00:22:42.999 -It hasn't got, it's hard. +It hasn't got... It's hard. 00:22:43.000 --> 00:22:45.159 It's like, really, there's a lot of work to go into it. 00:22:45.160 --> 00:22:47.559 -So I think let's all just appreciate everyone who, +So I think let's all just appreciate everyone 00:22:47.560 --> 00:22:50.679 -who like contributes and makes all of this possible. +who contributes and makes all of this possible. 00:22:50.680 --> 00:22:52.159 Cause it's, if you ever read 00:22:52.160 --> 00:22:53.279 -the Emacs Develop mailing list, +the emacs-devel mailing list, 00:22:53.280 --> 00:22:55.479 it's a lot of work, a lot of deep thinking, @@ -1443,8 +1469,11 @@ all the libraries, all the LLM stuff we mentioned before. 00:23:07.760 --> 00:23:09.839 You're all doing such a fantastic job. -00:23:09.840 --> 00:23:13.799 -It's exciting to be here. Thank you for your talk, Andrew. +00:23:09.840 --> 00:23:12.323 +It's exciting to be here. + +00:23:12.324 --> 00:23:13.799 +[Corwin]: Thank you for your talk, Andrew. 00:23:13.800 --> 00:23:16.159 It's been just fascinating. @@ -1455,6 +1484,8 @@ If you don't mind, I'd love to jump 00:23:19.760 --> 00:23:23.879 right over to the last question. OK, let's do that. +NOTE Q: I have 45+ years editing, programming. I'm not sure I can think about things without thinking of buffers, editors etc. Is this a handicap/should we just have people with no experience with code learn to prompt? + 00:23:23.880 --> 00:23:27.599 It says, I have 45 plus years editing programming. @@ -1474,7 +1505,7 @@ Should we have people with no experience with code learning to prompt? 00:23:35.320 --> 00:23:38.799 -Well, this is something I do have a strong opinion about. +[Andrew]: Well, this is something I do have a strong opinion about. 00:23:38.800 --> 00:23:42.159 I feel like I do not want to see people that have no experience @@ -1522,7 +1553,7 @@ Software engineering is making sure everything is scalable and all sorts of things that it's unlikely, 00:24:19.600 --> 00:24:21.759 -I think, that an LM is going to get right. +I think, that an LLM is going to get right. 00:24:21.760 --> 00:24:25.279 And I've seen a lot of bad cases @@ -1531,13 +1562,13 @@ And I've seen a lot of bad cases where people who don't understand code 00:24:27.200 --> 00:24:31.159 -are doing things and it's not working well +are doing things and it's not working well, 00:24:31.160 --> 00:24:33.239 because they don't understand 00:24:33.240 --> 00:24:35.279 -some of the some of the complexities +some of the complexities 00:24:35.280 --> 00:24:36.959 or some of the concerns that that you might have @@ -1581,11 +1612,8 @@ not 45 years, but a lot. And, and I think that it's those, 00:25:13.080 --> 00:25:14.839 those years of experience will only help you. -00:25:14.840 --> 00:25:16.919 -And I think it's, it's, it's a great, - -00:25:16.920 --> 00:25:19.639 -it's great to kind of dip your toes in the water +00:25:14.840 --> 00:25:19.639 +And I think it's great to dip your toes in the water 00:25:19.640 --> 00:25:20.732 and see what you can do. diff --git a/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main--chapters.vtt b/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main--chapters.vtt new file mode 100644 index 00000000..e7ff6eec --- /dev/null +++ b/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main--chapters.vtt @@ -0,0 +1,41 @@ +WEBVTT + + +00:00:00.000 --> 00:01:05.000 +Introduction + +00:01:05.000 --> 00:02:18.000 +The main themes of this video + +00:02:18.000 --> 00:02:54.000 +Inner views of Emacs objects + +00:02:54.000 --> 00:03:35.000 +Older Emacses + +00:03:35.000 --> 00:05:30.000 +Newer Emacses + +00:05:30.000 --> 00:06:41.000 +Help buttons + +00:06:41.000 --> 00:09:34.000 +"Anyone can learn Lisp in one day" + +00:09:34.000 --> 00:12:56.000 +Lambdas for beginners broken + +00:12:59.302 --> 00:17:29.119 +Demo + +00:17:29.120 --> 00:21:52.839 +Printing something in different ways for lambdas + +00:21:52.840 --> 00:22:42.159 +Exploring buttons + +00:22:42.160 --> 00:24:05.799 +Some design decisions behind EEV + +00:24:05.800 --> 00:25:22.520 +Tests diff --git a/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt b/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt index e461b1f1..3acf1d66 100644 --- a/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt +++ b/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt @@ -2,8 +2,52 @@ WEBVTT Kind: captions Language: en-GB -00:00:54.000 --> 00:00:55.000 - +NOTE Introduction + +00:00:00.000 --> 00:00:02.359 +Hi, my name is Eduardo Ochs, + +00:00:02.360 --> 00:00:06.639 +and this is my video for the EmacsConf 2025. + +00:00:06.640 --> 00:00:09.799 +Its title is Some Problems of Modernizing Emacs, + +00:00:09.800 --> 00:00:12.839 +and that is the same title as a video + +00:00:12.840 --> 00:00:16.199 +that I tried to record in March. + +00:00:16.200 --> 00:00:19.879 +But my video from March had a good "beginning" and a bad "rest", + +00:00:19.880 --> 00:00:23.759 +and I thought, I can't release that because the rest is very bad. + +00:00:23.760 --> 00:00:27.919 +I need to replace... to re-record the last part of the video. + +00:00:27.920 --> 00:00:29.759 +But I never did that. + +00:00:29.760 --> 00:00:33.199 +So this video is going to be the first 12 minutes + +00:00:33.200 --> 00:00:37.959 +of that other video, with another ending. + +00:00:37.960 --> 00:00:41.439 +And in this other ending, I'm going to show some things + +00:00:41.440 --> 00:00:46.639 +that are very easy to test. And, if people are interested, + +00:00:46.640 --> 00:00:51.799 +then the rest of the old video will make more sense. + +00:00:51.800 --> 00:00:55.059 +Anyway, let me start. 00:00:55.000 --> 00:00:57.000 Hi! My name is Eduardo Ochs. I'm the @@ -17,6 +61,8 @@ the title of this video is 00:01:03.000 --> 00:01:05.000 "Some problems of modernizing Emacs". +NOTE The main themes of this video + 00:01:05.000 --> 00:01:08.000 Here is a summary of the main themes @@ -78,11 +124,13 @@ I will also show how to display better "inner views" of Emacs objects... 00:02:13.000 --> 00:02:16.000 -I'm going to Define what is an inner view, +I'm going to define what is an inner view, 00:02:16.000 --> 00:02:18.000 of course. +NOTE Inner views of Emacs objects + 00:02:18.000 --> 00:02:20.000 The main trick is that we are going @@ -90,13 +138,13 @@ The main trick is that we are going to use one of the ways of displaying 00:02:24.000 --> 00:02:29.000 -internal objects, that is the `cl-print' +internal objects, that is the `cl-print` 00:02:29.000 --> 00:02:32.000 family of functions, for example, 00:02:32.000 --> 00:02:35.000 -`cl-prin1-to-string', and here are some +`cl-prin1-to-string`, and here are some 00:02:35.000 --> 00:02:37.000 examples of the kind of output that we @@ -108,16 +156,18 @@ are going to see... for example, if we run these two lines 00:02:44.000 --> 00:02:47.000 -here the first line defines a function `foo' +here the first line defines a function `foo` 00:02:47.000 --> 00:02:52.000 -and the second line sets `o' to the +and the second line sets `o` to the 00:02:52.000 --> 00:02:54.000 -internal view of the definition of `foo'. +internal view of the definition of `foo`. + +NOTE Older Emacses 00:02:54.000 --> 00:02:59.000 -In older Emacses `o' would be just a +In older Emacses `o` would be just a 00:02:59.000 --> 00:03:02.000 list that looks... that would look very @@ -129,7 +179,7 @@ similar to this line here... but in newer Emacses the result of this - I mean, the 00:03:09.000 --> 00:03:12.000 -the contents of `o' is this thing here, +the contents of `o` is this thing here, 00:03:12.000 --> 00:03:15.000 that looks quite different @@ -144,10 +194,10 @@ So, in older Emacses the contents of the 00:03:25.000 --> 00:03:28.000 -function cell of `o'... +function cell of `o`... 00:03:28.000 --> 00:03:30.000 -sorry, of the function cell of `foo', +sorry, of the function cell of `foo`, 00:03:30.000 --> 00:03:32.000 would be an "old-style lambda", @@ -155,6 +205,8 @@ would be an "old-style lambda", 00:03:32.000 --> 00:03:35.000 that would be just a list like this... +NOTE Newer Emacses + 00:03:35.000 --> 00:03:39.000 and in newer Emacses uh the contents of O would @@ -195,7 +247,7 @@ printed representation is this one, that is generated by a family of functions with 00:04:07.000 --> 00:04:09.000 -names like `prin1'... +names like `prin1`... 00:04:09.000 --> 00:04:13.000 and the second semicanonical printed @@ -210,16 +262,16 @@ it looks like a list... it looks somewhat like this definition 00:04:23.000 --> 00:04:27.000 -of `foo' here, but it has this +of `foo` here, but it has this 00:04:27.000 --> 00:04:29.000 -`:dynbind' symbol here... +`:dynbind` symbol here... 00:04:29.000 --> 00:04:32.000 and it turns out that when we use 00:04:32.000 --> 00:04:35.000 -the `cl-print' family of functions we can +the `cl-print` family of functions we can 00:04:35.000 --> 00:04:37.000 reconfigure how things are printed... @@ -237,7 +289,7 @@ and one of the ways is going to be like this. 00:04:52.000 --> 00:04:56.000 -We can also use the `cl-print' +We can also use the `cl-print` 00:04:56.000 --> 00:04:59.000 functions with my indentation tricks to @@ -258,7 +310,7 @@ This is what Emacs considers as being the definition of the type 00:05:16.000 --> 00:05:18.000 -`cl-structure-class', +`cl-structure-class`, 00:05:18.000 --> 00:05:21.000 class and it is this big thing here. @@ -267,10 +319,12 @@ class and it is this big thing here. I edited it very lightly... 00:05:24.000 --> 00:05:30.000 -I just uh deleted some line breaks here. +I just deleted some line breaks here. + +NOTE Help buttons 00:05:30.000 --> 00:05:33.000 -And another thing that I want to to +And another thing that I want to 00:05:33.000 --> 00:05:35.000 explain is that Emacs @@ -306,10 +360,10 @@ this type here, that we just saw in its internal view here... 00:06:00.000 --> 00:06:02.000 -we can run either `describe-type' +we can run either `describe-type` 00:06:02.000 --> 00:06:04.000 -or my variant of `describe-type', +or my variant of `describe-type`, 00:06:04.000 --> 00:06:07.000 and we get a help buffer @@ -353,6 +407,8 @@ and what I'm trying to do to 00:06:37.000 --> 00:06:41.000 overcome these problems... +NOTE "Anyone can learn Lisp in one day" + 00:06:41.000 --> 00:06:43.000 One of my slogans in this video @@ -423,7 +479,7 @@ and another one is its "value as a function"... and if we run this we store 42 00:08:02.000 --> 00:08:07.000 -in the "value cell" of the symbol `foo', and +in the "value cell" of the symbol `foo`, and 00:08:07.000 --> 00:08:11.000 if we run this defun here it stores a @@ -432,7 +488,7 @@ if we run this defun here it stores a certain anonymous function in the 00:08:14.000 --> 00:08:18.000 -"function cell" of the symbol `foo'... +"function cell" of the symbol `foo`... 00:08:18.000 --> 00:08:22.000 and in Emacs, until some time ago @@ -483,13 +539,13 @@ this expression here, (foo foo)... Emacs would do this: it would 00:09:04.000 --> 00:09:06.000 -replace the first `foo' by this +replace the first `foo` by this 00:09:06.000 --> 00:09:09.000 anonymous function here, it would replace 00:09:09.000 --> 00:09:11.000 -the second `foo' by the value of `foo' as a +the second `foo` by the value of `foo` as a 00:09:11.000 --> 00:09:13.000 variable, that is 42, @@ -515,6 +571,8 @@ Let me show... let me talk 00:09:30.000 --> 00:09:34.000 a bit more about why... +NOTE Lambdas for beginners broken + 00:09:34.000 --> 00:09:36.000 the title of this slide is @@ -624,7 +682,7 @@ open black boxes like this... they could try to see what was in the 00:11:20.000 --> 00:11:24.000 -function cell of the symbol `foo'... +function cell of the symbol `foo`... 00:11:24.000 --> 00:11:27.000 and they would see something elegant and @@ -650,29 +708,26 @@ very difficult to understand... 00:11:41.000 --> 00:11:44.000 and now our beginners are overwhelmed -00:11:44.000 --> 00:11:46.000 -instead of mind-blown. - -00:11:46.000 --> 00:11:48.000 -Note that I said "black box" here. +00:11:44.000 --> 00:11:48.000 +instead of mind-blown. Note that I said "black box" here. 00:11:48.000 --> 00:11:52.000 Let me explain the term. 00:11:52.000 --> 00:11:57.000 -We can open what's inside of `foo'... +We can open what's inside of `foo`... 00:11:57.000 --> 00:11:59.000 -we can open `foo' to see the contents of +we can open `foo` to see the contents of 00:11:59.000 --> 00:12:02.000 -the symbol `foo', and we can try to see +the symbol `foo`, and we can try to see 00:12:02.000 --> 00:12:06.000 what's in the function cell of the 00:12:06.000 --> 00:12:08.000 -symbol `foo'... +symbol `foo`... 00:12:08.000 --> 00:12:10.000 so we can open the box, but what we get @@ -722,6 +777,645 @@ as the ones that we had before. 00:12:54.000 --> 00:12:56.000 Anyway... -00:12:56.000 --> 00:20:38.000 - +NOTE Demo + +00:12:59.302 --> 00:13:00.599 +In the beginning of the video, + +00:13:00.600 --> 00:13:02.879 +I said that I was going to replace + +00:13:02.880 --> 00:13:06.359 +the second part of my video from March + +00:13:06.360 --> 00:13:08.799 +by something that was very easy to test. + +00:13:08.800 --> 00:13:11.839 +So this is a quick demo for the _very_ impatient. + +00:13:11.840 --> 00:13:16.919 +I'm recording this in December for the EmacsConf 2025. + +00:13:16.920 --> 00:13:18.999 +This is the demo that I'm going to present. + +00:13:19.000 --> 00:13:21.759 +The idea is that people can run the demo a first time + +00:13:21.760 --> 00:13:24.399 +just to check that everything works + +00:13:24.400 --> 00:13:27.559 +and to have a notion of how things look like, + +00:13:27.560 --> 00:13:29.239 +and then, in a second moment, + +00:13:29.240 --> 00:13:32.279 +they can rerun the demo more slowly + +00:13:32.280 --> 00:13:34.879 +to understand what each step does. + +00:13:34.880 --> 00:13:38.799 +So... we are in a file called "00-try-this"... + +00:13:38.800 --> 00:13:42.199 +and the idea is that we can execute most of this file + +00:13:42.200 --> 00:13:45.359 +just by typing `f8`s in the right places. + +00:13:45.360 --> 00:13:47.479 +Remember that when we type `f8` + +00:13:47.480 --> 00:13:49.839 +on a line that starts with two red stars, + +00:13:49.840 --> 00:13:53.199 +eev treats that line as a comment. + +00:13:53.200 --> 00:13:58.007 +So I'm going to start here... Note that it says in the bottom + +00:13:58.008 --> 00:13:59.740 +of the screen that this is a comment. + +00:13:59.741 --> 00:14:09.879 +We are going to run this to download some files... + +00:14:09.880 --> 00:14:12.959 +Now the files are there... + +00:14:12.960 --> 00:14:17.319 +This `find-2a` here shows a certain file + +00:14:17.320 --> 00:14:19.159 +at the window at the right, + +00:14:19.160 --> 00:14:22.479 +but we don't need to pay attention to that. + +00:14:22.480 --> 00:14:24.199 +And this thing `load`s that file. + +00:14:24.200 --> 00:14:27.519 +So when we load that file, it defines some functions here + +00:14:27.520 --> 00:14:29.799 +that are going to be used by the rest of the examples. + +00:14:29.800 --> 00:14:34.019 +Now we can run this thing here... Note that + +00:14:34.020 --> 00:14:34.879 +we just defined some functions + +00:14:34.880 --> 00:14:39.359 +and then we ran these functions here... `find-eoutput-2a`... + +00:14:39.360 --> 00:14:42.679 +and they show some things in the window at the right. + +00:14:42.680 --> 00:14:45.679 +These things are boring. + +00:14:45.680 --> 00:14:49.679 +When we run `adt-insert` with argument 42, + +00:14:49.680 --> 00:14:52.399 +it just shows a 42, in this way... + +00:14:52.400 --> 00:14:55.639 +The other ones show other numbers... and so on. + +00:14:55.640 --> 00:14:59.479 +And... what happens when we modify + +00:14:59.480 --> 00:15:02.359 +this function here, `adt-2`, + +00:15:02.360 --> 00:15:05.199 +by adding and removing advices to it? + +00:15:05.200 --> 00:15:06.919 +The idea is that people can run + +00:15:06.920 --> 00:15:08.679 +this thing here several times, + +00:15:08.680 --> 00:15:10.799 +watching the window at the right, + +00:15:10.800 --> 00:15:14.719 +because the results are going to be shown there. + +00:15:14.720 --> 00:15:17.799 +So, in the first moment, when we run... + +00:15:17.800 --> 00:15:21.679 +no, no, sorry, sorry, let me run it again. + +00:15:21.680 --> 00:15:24.039 +In the first moment when we run `adt-2` + +00:15:24.040 --> 00:15:28.239 +it just shows a 2, and then we modify it in a certain way, + +00:15:28.240 --> 00:15:29.479 +and we run it again, + +00:15:29.480 --> 00:15:33.799 +and now before showing the 2 it shows a 1, mysteriously, + +00:15:33.800 --> 00:15:37.119 +and then we add something to be run after the 2, + +00:15:37.120 --> 00:15:38.479 +And we run it again, + +00:15:38.480 --> 00:15:41.839 +and now `adt-2` shows these three things. + +00:15:41.840 --> 00:15:43.959 +And then we remove the advices, + +00:15:43.960 --> 00:15:45.159 +we remove these other things, + +00:15:45.160 --> 00:15:49.079 +and when we run `adt-2` again, it shows only `;; --> 2`. + +00:15:49.080 --> 00:15:51.879 +It's impossible to understand that in the first time, + +00:15:51.880 --> 00:15:57.879 +so we can run that several times... to see how things work. + +00:15:57.880 --> 00:16:02.279 +And now we want to understand + +00:16:02.280 --> 00:16:04.959 +what changes in the function `adt-2`... + +00:16:04.960 --> 00:16:08.639 +how it is modified internally. + +00:16:08.640 --> 00:16:11.479 +I'm calling that the internal view of the function, + +00:16:11.480 --> 00:16:13.599 +and we are going to compare + +00:16:13.600 --> 00:16:16.679 +several internal views of the function `adt-2`. + +00:16:16.680 --> 00:16:19.999 +I'm going to reset the function `adt-2` + +00:16:20.000 --> 00:16:25.679 +by removing the advices and placing the advices on it again... + +00:16:25.680 --> 00:16:28.507 +and if we just pretty-print this function here, + +00:16:28.508 --> 00:16:36.319 +the symbol... the value of this symbol here as a function, + +00:16:36.320 --> 00:16:38.639 +it is something very ugly. + +00:16:38.640 --> 00:16:43.839 +But if we print it in another way, with `cl-prin1`, + +00:16:43.840 --> 00:16:47.239 +then we get something that is much nicer... + +00:16:47.240 --> 00:16:51.159 +but that is not indented. And if we use this thing here, + +00:16:51.160 --> 00:16:55.839 +`cl-prin2` instead of `cl-prin1`, it becomes indented. + +00:16:55.840 --> 00:17:00.839 +So let's try it again. + +00:17:00.840 --> 00:17:06.799 +Here is the current view of what is `adt-2`. + +00:17:06.800 --> 00:17:09.999 +So, the original `adt-insert` is here... + +00:17:10.000 --> 00:17:11.839 +and here are some modifications + +00:17:11.840 --> 00:17:13.519 +that were added by the advices. + +00:17:13.520 --> 00:17:16.759 +And we can run these things many times + +00:17:16.760 --> 00:17:19.239 +to understand what each step does. + +00:17:19.240 --> 00:17:21.239 +But my suggestion is: in the first time + +00:17:21.240 --> 00:17:23.879 +just run everything very quickly... + +00:17:23.880 --> 00:17:25.199 +and then you run it again, + +00:17:25.200 --> 00:17:29.119 +paying attention to the parts that look more interesting. + +NOTE Printing something in different ways for lambdas + +00:17:29.120 --> 00:17:37.373 +Now, I'm going to... Remember that here + +00:17:37.374 --> 00:17:42.559 +I printed the contents of `adt-2` in several different ways, + +00:17:42.560 --> 00:17:47.119 +and now I'm going to show how we can do the same idea + +00:17:47.120 --> 00:17:51.599 +of printing something in different ways for lambdas... + +00:17:51.600 --> 00:17:52.919 +that is something that I explained + +00:17:52.920 --> 00:17:54.639 +in the first part of the video. + +00:17:54.640 --> 00:18:00.639 +In this part of the demo we define a function `foo`... + +00:18:00.640 --> 00:18:06.360 +this `setq` here defines `o` as + +00:18:06.361 --> 00:18:08.959 +the contents of the function cell of `foo`... + +00:18:08.960 --> 00:18:12.999 +And now we are going to print + +00:18:13.000 --> 00:18:15.399 +that `o` in several different ways. + +00:18:15.400 --> 00:18:19.199 +The default way is this one, it's very ugly, + +00:18:19.200 --> 00:18:22.239 +but we can redefine how these things are printed + +00:18:22.240 --> 00:18:24.559 +by just running these lines... + +00:18:24.560 --> 00:18:28.719 +and if we pay attention at what's happening + +00:18:28.720 --> 00:18:30.519 +at the window at the right, + +00:18:30.520 --> 00:18:33.559 +we can see that we have several different + +00:18:33.560 --> 00:18:35.759 +printed representations for the same thing... + +00:18:35.760 --> 00:18:36.879 +and then at the last step, + +00:18:36.880 --> 00:18:41.079 +we reset the printer to the default representation. + +00:18:41.080 --> 00:18:43.279 +And the details are here. + +00:18:43.280 --> 00:18:44.999 +If we run these lines here, + +00:18:45.000 --> 00:18:48.759 +they show the definitions at the window at the right. + +00:18:48.760 --> 00:18:53.879 +And this... now comes the difficult part, + +00:18:53.880 --> 00:18:56.679 +in which we have to do something + +00:18:56.680 --> 00:19:02.079 +besides just running things with F8. We need + +00:19:02.080 --> 00:19:04.919 +a help buffer with buttons... + +00:19:04.920 --> 00:19:08.919 +buttons in the traditional sense, + +00:19:08.920 --> 00:19:11.559 +and we need to choose a certain button there, + +00:19:11.560 --> 00:19:13.439 +or any button there, + +00:19:13.440 --> 00:19:17.940 +and run `M-x ee-set-button` on that button. + +00:19:17.941 --> 00:19:24.719 +So, let me define a `struct` here, + +00:19:24.720 --> 00:19:29.359 +and this is some help on what is that structure. + +00:19:29.360 --> 00:19:33.599 +I'm going to choose this button here + +00:19:33.600 --> 00:19:40.159 +and I'm going to type `M-x ee-set-button`. + +00:19:40.160 --> 00:19:43.559 +The message is a bit obscure. + +00:19:43.560 --> 00:19:47.959 +And now we have something that displays + +00:19:47.960 --> 00:19:51.079 +a lot of information about that button... + +00:19:51.080 --> 00:19:53.919 +And we can also run that with just `F8`s. + +00:19:53.920 --> 00:20:00.279 +By the way, if we want to understand + +00:20:00.280 --> 00:20:02.319 +the code that's behind these things, + +00:20:02.320 --> 00:20:04.839 +we can run this sexp here. + +00:20:04.840 --> 00:20:07.959 +It is going to show the code here at the right. + +00:20:07.960 --> 00:20:10.759 +But anyway, these first lines here... + +00:20:10.760 --> 00:20:15.479 +they display the output in the echo area... Let's try... + +00:20:15.480 --> 00:20:20.559 +And each one of them extracts a different part + +00:20:20.560 --> 00:20:22.559 +of the information on that button. + +00:20:22.560 --> 00:20:26.039 +And these other lines here create a three-window setting + +00:20:26.040 --> 00:20:29.639 +in which the help buffer is shown here, + +00:20:29.640 --> 00:20:33.119 +and the result of some other thing + +00:20:33.120 --> 00:20:39.979 +is shown in the third window. Let's try... + +00:20:39.980 --> 00:20:41.164 +So now that we have... well... I said + +00:20:41.165 --> 00:20:48.407 +that we needed to choose a certain button + +00:20:48.408 --> 00:20:53.439 +and run `M-x ee-set-button` there. We have done that... + +00:20:53.440 --> 00:20:55.919 +so now this variable `ee-button` + +00:20:55.920 --> 00:20:58.439 +contains information about the button... + +00:20:58.440 --> 00:21:01.119 +And now we can run this part here + +00:21:01.120 --> 00:21:03.479 +as many times as we want to... + +00:21:03.480 --> 00:21:07.479 +try to understand what are the values of these things here... + +00:21:07.480 --> 00:21:11.679 +and how some things start with a value that is very complex + +00:21:11.680 --> 00:21:13.839 +and very difficult to understand, + +00:21:13.840 --> 00:21:16.839 +and then we extract the more interesting parts. + +00:21:16.840 --> 00:21:22.279 +And the details, as I said, are here. + +00:21:22.280 --> 00:21:26.759 +That was the end of the demo, and my question is, + +00:21:26.760 --> 00:21:28.559 +what was your reaction to that? + +00:21:28.560 --> 00:21:32.679 +If your reaction was more like "wow" than like "blergh" + +00:21:32.680 --> 00:21:37.039 +then you might like the last part of the video that I recorded in March, + +00:21:37.040 --> 00:21:38.399 +that was very technical... + +00:21:38.400 --> 00:21:42.719 +When I recorded it, I thought, oh my god, this video is very bad... + +00:21:42.720 --> 00:21:47.279 +only the hardcore eev users are going to like that, + +00:21:47.280 --> 00:21:51.039 +and there are less than five hardcore + +00:21:51.040 --> 00:21:52.839 +eev users in the world... + +NOTE Exploring buttons + +00:21:52.840 --> 00:21:56.639 +But anyway, if you saw that introduction + +00:21:56.640 --> 00:21:59.079 +and you think that these things are interesting, + +00:21:59.080 --> 00:22:02.999 +you can execute any one of these S-expressions here + +00:22:03.000 --> 00:22:05.999 +and take a look at the final part of that video + +00:22:06.000 --> 00:22:09.559 +that describes how I wrote some functions + +00:22:09.560 --> 00:22:14.239 +for exploring buttons. If you execute this sexp here, + +00:22:14.240 --> 00:22:19.559 +it plays a part of the video starting from that position. + +00:22:19.560 --> 00:22:26.919 +If you execute this one, you go to the subtitles in HTML... + +00:22:26.920 --> 00:22:30.559 +and if you run this one, you go + +00:22:30.560 --> 00:22:36.159 +to the subtitles in another format. And... that's it! + +00:22:36.160 --> 00:22:40.119 +No, no, sorry, I said "that's it", + +00:22:40.120 --> 00:22:42.159 +but I forgot a very important part... + +NOTE Some design decisions behind eev + +00:22:42.160 --> 00:22:45.159 +I had prepared this slide here + +00:22:45.160 --> 00:22:48.507 +to explain some design decisions behind eev + +00:22:48.508 --> 00:22:53.679 +and why there are so few users of eev... and let me do that. + +00:22:53.680 --> 00:22:57.919 +The thing is that my working memory is very small, + +00:22:57.920 --> 00:23:01.279 +and I need examples that are easy to visualize... + +00:23:01.280 --> 00:23:04.959 +ideally, examples that are easy to run + +00:23:04.960 --> 00:23:10.307 +and that I can compare the outputs + +00:23:10.308 --> 00:23:12.159 +of different ways of running them. + +00:23:12.160 --> 00:23:16.359 +For me, understanding specifications + +00:23:16.360 --> 00:23:20.679 +in an API is not enough... examples work much better for me. + +00:23:20.680 --> 00:23:24.439 +Also, I make lots of mistakes when I type... + +00:23:24.440 --> 00:23:28.399 +so I need ways to run my executable notes + +00:23:28.400 --> 00:23:31.879 +by just typing `f8` and `M-e`... + +00:23:31.880 --> 00:23:37.039 +and... most people in the #emacs channel and in other places + +00:23:37.040 --> 00:23:44.519 +recommend executing sexps by typing `M-:`, like this... + +00:23:44.520 --> 00:23:49.239 +But I hate that... I think that `M-:` and IELM are + +00:23:49.240 --> 00:23:54.559 +for people who type well, so not me... + +00:23:54.560 --> 00:23:58.839 +And also, 99% of what I do is scratch code. + +00:23:58.840 --> 00:24:01.639 +Very few things that I do go + +00:24:01.640 --> 00:24:05.799 +into "production" - between quotes. + +NOTE Tests + +00:24:05.800 --> 00:24:10.199 +So most of my tests are not automated tests. + +00:24:10.200 --> 00:24:12.439 +They are just things that I run with F8, + +00:24:12.440 --> 00:24:15.879 +and they don't include the expected result. + +00:24:15.880 --> 00:24:19.159 +Many people feel that this is very, very, very wrong. + +00:24:19.160 --> 00:24:23.279 +Tests MUST MEAN automated tests. + +00:24:23.280 --> 00:24:25.639 +Also, and this is very frustrating, + +00:24:25.640 --> 00:24:28.399 +eev has lots of "non-users", + +00:24:28.400 --> 00:24:31.519 +I mean, people who have tried to use it, + +00:24:31.520 --> 00:24:34.759 +but they said that they couldn't figure out how to use it. + +00:24:34.760 --> 00:24:36.159 +They couldn't understand + +00:24:36.160 --> 00:24:38.079 +what would be the workflows for eev. + +00:24:38.080 --> 00:24:43.679 +And that's the same that happens with me with code blocks in Org... + +00:24:43.680 --> 00:24:48.759 +I'm still at the point in which code blocks in Org just feel wrong. + +00:24:48.760 --> 00:24:55.199 +I still don't understand how to organize my workflows around code blocks. + +00:24:55.200 --> 00:24:58.999 +I said that eev has very few users, + +00:24:59.000 --> 00:25:02.239 +and they are all very weird and very busy, + +00:25:02.240 --> 00:25:06.359 +and I decided that all my blog-ish posts about eev + +00:25:06.360 --> 00:25:09.719 +would be things that they can run in a few minutes... + +00:25:09.720 --> 00:25:13.039 +just like the demo that I showed a few minutes ago. + +00:25:13.040 --> 00:25:16.119 +I said "like the examples in the rest of the video", + +00:25:16.120 --> 00:25:17.399 +but I forgot this slide, + +00:25:17.400 --> 00:25:19.639 +and I'm recording this after the demo. +00:25:19.640 --> 00:25:22.520 +So... that's it. Thanks! diff --git a/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt b/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt index 676fa744..2ab53895 100644 --- a/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt +++ b/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt @@ -1,5 +1,7 @@ WEBVTT +NOTE Developing Python in Emacs + 00:00:00.000 --> 00:00:02.839 So as we wait for people to drop @@ -60,6 +62,8 @@ So I think Emacs is really good for Python development. 00:01:14.440 --> 00:01:16.679 So what are some other... +NOTE Q: How long have you been using Emacs? + 00:01:16.680 --> 00:01:18.319 How long have you been using Emacs? @@ -138,6 +142,8 @@ So that's how it started. So like five years ago, maybe. 00:02:33.520 --> 00:02:39.519 Cool. Um, so did you, what were some other, +NOTE Q: What editor were you primarily using before? + 00:02:39.520 --> 00:02:43.999 what, what, what editor were you primarily using before you? @@ -207,6 +213,8 @@ I don't quite see how your setup works with IPython. 00:03:58.240 --> 00:04:00.279 Sorry if you already answered this. +NOTE Q: Do you have your Emacs connect to the IPython kernel over the XMPP socket that IPython sets up? + 00:04:00.280 --> 00:04:03.519 Do you have your Emacs connect to the IPython kernel @@ -282,6 +290,8 @@ or if I want this connection to a running app, 00:05:32.240 --> 00:05:38.479 I'm using the Jupyter console, basically. +NOTE Q: Not sure if you've explored Org Babel, but what are the benefits of using your approach over Org? + 00:05:38.480 --> 00:05:45.199 Have you explored Org Babel at all? @@ -342,8 +352,10 @@ that are probably more relevant, 00:07:01.640 --> 00:07:05.799 just because a lot of it's kind of over my head. +NOTE Q: Have you seen marimo.io notebooks? It uses standard Python. + 00:07:05.800 --> 00:07:12.879 -Have you seen the miramo.io notebooks? +Have you seen the marimo.io notebooks? 00:07:12.880 --> 00:07:15.279 These use standard Python? @@ -390,6 +402,8 @@ and you ask about making pasta or some other sort of thing. 00:08:16.600 --> 00:08:20.559 No, go ahead. Go ahead. I'm glad to ask any questions. +NOTE Q: what LLM did you say you've used? + 00:08:20.560 --> 00:08:25.679 So just generally about Emacs as a coding developer, @@ -399,59 +413,59 @@ what are the features 00:08:27.000 --> 00:08:28.479 that you tend to lean on more heavily? -00:08:28.480 --> 00:08:34.319 -you know completion or you know what what have you +00:08:28.480 --> 00:08:34.059 +You know completion or you know, what have you... -00:08:34.320 --> 00:08:36.199 -maybe I could put it better +00:08:34.060 --> 00:08:35.257 +Maybe I could put it better as: -00:08:36.200 --> 00:08:40.079 -as what have you spent more time configuring for Emacs +00:08:35.258 --> 00:08:40.079 +what have you spent more time configuring for Emacs 00:08:40.080 --> 00:08:45.439 to facilitate development? 00:08:45.440 --> 00:08:49.639 -Yes initially it was basically taking away +Yes, initially, it was basically taking away 00:08:49.640 --> 00:08:51.319 -some of the UI features +some of the UI features, 00:08:51.320 --> 00:08:56.599 -basically disabling it and and but fairly quickly +basically disabling it, but fairly quickly, 00:08:56.600 --> 00:08:58.919 -for for both closure development +for both Clojure development 00:08:58.920 --> 00:09:04.599 -where i was using cider which is like a really good uh good tool um +where I was using CIDER, which is like a really good tool, 00:09:04.600 --> 00:09:08.159 -and for python when i quickly found lp elp +and for Python, when I quickly found elpy, 00:09:08.160 --> 00:09:10.599 -i'm not sure how to pronounce it +I'm not sure how to pronounce it, 00:09:10.600 --> 00:09:16.039 -but you you get so much uh good things from these tools +but you get so much good things from these tools... -00:09:16.040 --> 00:09:21.719 -so what i've done additionally is like theme +00:09:16.040 --> 00:09:21.019 +So what I've done additionally is theme -00:09:21.720 --> 00:09:27.159 +00:09:21.020 --> 00:09:27.159 and maybe having this environment -00:09:27.160 --> 00:09:31.479 +00:09:27.160 --> 00:09:29.019 that is without disturbance. -00:09:31.480 --> 00:09:34.839 +00:09:29.020 --> 00:09:34.839 So I really like the code to have my full attention. 00:09:34.840 --> 00:09:41.239 So I rarely have, maybe I have like a preview sometimes, 00:09:41.240 --> 00:09:45.359 -but mostly it's the window or the buffer where I have my code +but mostly, it's the window or the buffer where I have my code, 00:09:45.360 --> 00:09:49.879 and I've minimized the running REPL buffer. @@ -469,21 +483,23 @@ spent my configuration doing that. And also lately, trying out some LLM tools. 00:10:04.800 --> 00:10:09.279 -So I think I have two packages +I think I have two packages 00:10:09.280 --> 00:10:12.239 that I'm using actively today. 00:10:12.240 --> 00:10:15.799 -And my favorite is a tool called ECA, +My favorite is a tool called ECA, 00:10:15.800 --> 00:10:20.199 which is a LLM chat assistant, which is really good. -00:10:20.200 --> 00:10:24.399 +00:10:20.200 --> 00:10:28.479 The developer is also an Emacs enthusiast. -00:10:24.400 --> 00:10:33.639 +NOTE Q: Are you building your own Emacs, or using the system packages? + +00:10:28.480 --> 00:10:33.639 So are you the type of person that tends to work with 00:10:33.640 --> 00:10:37.039 @@ -505,21 +521,21 @@ I'm not there yet with doing my own builds. Currently, I'm on macOS, 00:10:55.600 --> 00:11:00.039 -so I'm installing Emacs through broom basically, homebrew. +so I'm installing Emacs through brew, basically, homebrew. 00:11:00.040 --> 00:11:04.919 I've yet so much Emacs things to learn 00:11:04.920 --> 00:11:07.739 -because I'm not even using org yet. +because I'm not even using Org yet. 00:11:07.740 --> 00:11:11.559 I'm exploring the this editor. -00:11:11.560 --> 00:11:14.799 +00:11:11.560 --> 00:11:13.919 So I feel like I'm very much a beginner. -00:11:14.800 --> 00:11:17.919 +00:11:13.920 --> 00:11:17.919 I'm not using Emacs to its full potential yet. 00:11:17.920 --> 00:11:23.279 @@ -537,10 +553,10 @@ Ed Stallthroat says, thank you 00:11:35.800 --> 00:11:40.839 for publishing your configuration and offers a link. -00:11:40.840 --> 00:11:41.879 +00:11:40.840 --> 00:11:43.199 Oh, great. Great. -00:11:41.880 --> 00:11:46.359 +00:11:43.200 --> 00:11:46.359 Yes, those things that I showed in my talk, 00:11:46.360 --> 00:11:49.319 @@ -588,6 +604,8 @@ Yeah, in Sweden, it's dinner time. 00:12:36.600 --> 00:12:40.079 It's like 6 p.m. soon. That fits. +NOTE Q: Are you involved with local Emacs meetups? + 00:12:40.080 --> 00:12:46.439 So are you involved with local Emacs meetups? @@ -615,10 +633,10 @@ into a local community there at all, No, I haven't. 00:13:08.720 --> 00:13:10.759 Not in any community. I haven't done that yet, -00:13:10.760 --> 00:13:15.679 -but we are like friends that I've gotten to know +00:13:10.760 --> 00:13:18.215 +but we are... Like, friends that I've gotten to know -00:13:15.680 --> 00:13:23.439 +00:13:18.216 --> 00:13:23.439 through work and through like open source work that also use Emacs. 00:13:23.440 --> 00:13:28.959 @@ -666,6 +684,8 @@ and thank you so much also for... 00:14:18.760 --> 00:14:24.639 I'm sorry, I saw another question here. Let me cover that. +NOTE Q: Can you repeat the name of the LLM that you specifically mentioned there? - ECA + 00:14:24.640 --> 00:14:27.959 Can you repeat the name of the LLM @@ -738,29 +758,32 @@ so I can send that to the REPL. 00:16:08.880 --> 00:16:11.479 But for some reason, I forgot the name of it. -00:16:11.480 --> 00:16:25.159 +00:16:11.480 --> 00:16:29.859 I can look it up. Just give me one minute, sorry. -00:16:25.160 --> 00:16:35.559 -oh yeah gptel gptel that's that's the name of the other tool +00:16:29.860 --> 00:16:35.559 +Oh yeah, gptel, that's that's the name of the other tool 00:16:35.560 --> 00:16:37.879 -which is uh also a good tool yeah +which is also a good tool, yeah, 00:16:37.880 --> 00:16:41.279 -but ECA is more like a more chat companion +but ECA is more like a chat companion 00:16:41.280 --> 00:16:46.679 -and this you can also you can tell it to write code and things like that +and this, you can also tell it to write code and things like that, 00:16:46.680 --> 00:16:51.679 -but i mostly use it for reviews and research +but I mostly use it for reviews and research -00:16:51.680 --> 00:16:54.599 -and like asking questions +00:16:51.680 --> 00:16:53.739 +and asking questions -00:16:54.600 --> 00:17:00.279 -because i want to my I don't have a problem with typing code. +00:16:53.740 --> 00:16:57.544 +because I want to... My... + +00:16:57.545 --> 00:17:00.279 +I don't have a problem with typing code. 00:17:00.280 --> 00:17:01.919 I don't think that slows me down, @@ -778,7 +801,7 @@ that's what I'm using LLM for, on LLM for two, mostly today. That really hits for me. 00:17:13.520 --> 00:17:15.199 -I don't mind typing either. +[Corwin]: I don't mind typing either. 00:17:15.200 --> 00:17:18.479 I think somehow having things be so simple @@ -811,40 +834,45 @@ and I don't see a backlog. There are a couple more comments here 00:17:44.520 --> 00:17:49.319 -linking linking to the ECA Emacs and gptel. +linking to the ECA Emacs and gptel. 00:17:49.320 --> 00:17:52.239 Comment also saying very cool setup. 00:17:52.240 --> 00:17:56.959 -So I suppose I'll I'll hand it over to you +So I suppose I'll hand it over to you 00:17:56.960 --> 00:17:59.319 -if you have kind of final thoughts or. +if you have kind of final thoughts or 00:17:59.320 --> 00:18:02.079 additional wisdoms you want to share -00:18:02.080 --> 00:18:05.399 -I really appreciate your taking the time to prepare this presentation +00:18:02.080 --> 00:18:03.974 +I really appreciate your taking the time + +00:18:03.975 --> 00:18:05.399 +to prepare this presentation + +00:18:05.400 --> 00:18:08.741 +especially to do the live Q&A with us. -00:18:05.400 --> 00:18:11.079 -especially to do the live Q&A with us. Thank you +NOTE Wrapping up -00:18:11.080 --> 00:18:13.919 -and I haven't anything more than that I will +00:18:08.742 --> 00:18:12.988 +[David]: Thank you. I haven't anything more than that -00:18:13.920 --> 00:18:19.479 -of course I will continue like have evolving my setup +00:18:12.989 --> 00:18:19.479 +I will of course continue evolving my setup, 00:18:19.480 --> 00:18:21.359 -because there's like new tools +because there's new tools 00:18:21.360 --> 00:18:24.759 -and maybe new ideas also coming up +and maybe new ideas also coming up. 00:18:24.760 --> 00:18:28.719 -and my What I'm aiming for in Python development +What I'm aiming for in Python development 00:18:28.720 --> 00:18:30.479 is the great developer experience @@ -853,7 +881,7 @@ is the great developer experience of what's called Lisp programming, basically. 00:18:34.520 --> 00:18:41.699 -So that's what I'm aiming at for Python 2. +So that's what I'm aiming at for Python too. 00:18:41.700 --> 00:18:44.359 Thank you. Thank you so much. |
