diff options
| author | Sacha Chua <sacha@sachachua.com> | 2025-12-18 20:22:40 -0500 |
|---|---|---|
| committer | Sacha Chua <sacha@sachachua.com> | 2025-12-18 20:22:40 -0500 |
| commit | e9ff894e5be4c25d20a6c9df8b9b399280418293 (patch) | |
| tree | 2f2f56b6a8a753945bdbbed2064f570c7da99bd3 /2025/info/completion-after.md | |
| parent | eec65463925fc48780f115e32e14f5cceebfeeee (diff) | |
| download | emacsconf-wiki-e9ff894e5be4c25d20a6c9df8b9b399280418293.tar.xz emacsconf-wiki-e9ff894e5be4c25d20a6c9df8b9b399280418293.zip | |
Diffstat (limited to '')
| -rw-r--r-- | 2025/info/completion-after.md | 480 |
1 files changed, 479 insertions, 1 deletions
diff --git a/2025/info/completion-after.md b/2025/info/completion-after.md index 14e33ea5..e70f4409 100644 --- a/2025/info/completion-after.md +++ b/2025/info/completion-after.md @@ -1,7 +1,485 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [paaguti@gmail.com](mailto:paaguti@gmail.com?subject=Comment%20for%20EmacsConf%202023%20completion%3A%20corfu%2Byasnippet%3A%20Easier%20than%20I%20thought) +<div class="transcript transcript-mainVideo"><a name="completion-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""Nice to have you here on this talk.""" start="00:00:00.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""This is my second talk this year.""" start="00:00:02.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""First one was on things that I've done to Org Mode.""" start="00:00:04.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Just as a side note, this presentation""" start="00:00:09.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I'm going to share with you""" start="00:00:13.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""about my work on Corfu and Jasnipit.""" start="00:00:16.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've prepared that on Org Mode""" start="00:00:19.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and exported that with a work I've been doing""" start="00:00:21.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to the latest exporter.""" start="00:00:25.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Anyhow, what is my talk going to be about?""" start="00:00:26.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It's going to be about Corfu and Yasnippet,""" start="00:00:31.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which I thought would be difficult to integrate,""" start="00:00:34.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and it was much easier than I thought.""" start="00:00:36.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So just a short outline, my motivation,""" start="00:00:42.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""step-by-step of the things that I've been investigating,""" start="00:00:46.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and some takeaways. So my motivation, yeah, snippet is old.""" start="00:00:49.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I've tried another, I've tried Temple""" start="00:00:55.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and other template management packages,""" start="00:00:59.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but it was really not my cup of tea. So mainly why?""" start="00:01:02.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Mainly because I have a nice base of VR snippets""" start="00:01:08.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have generated for my needs.""" start="00:01:10.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So it's not that I've been importing snippets""" start="00:01:14.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""from packages which are out there.""" start="00:01:17.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""No, they are my snippets. I'm used to them.""" start="00:01:20.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And of course, migration counts as a cost.""" start="00:01:23.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've been using Company as my completion point function GUI for years,""" start="00:01:26.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but with the time coming in features and so on it""" start="00:01:32.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""was it's was not as easy to set up as I wanted for my needs""" start="00:01:38.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I had been working I've been playing with Eaglet already some time for a language server protocol""" start="00:01:44.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I had read about how easy it was to integrate with Corfu""" start="00:01:53.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was really nice and I had given it a try,""" start="00:01:57.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I'm using both graphical user interface mode in Emacs""" start="00:02:02.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and text mode,""" start="00:02:06.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and for text mode you need a corporate terminal,""" start="00:02:07.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was yet another package that I don't download.""" start="00:02:10.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Well, and I didn't really find a quick way""" start="00:02:16.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to get rid of company to get just snippet.""" start="00:02:21.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So at the end, when, at the beginning,""" start="00:02:24.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""when I was using Corfu and Eglot, I also needed to load a company""" start="00:02:26.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to have a snippet support,""" start="00:02:33.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was really like sort of weird""" start="00:02:35.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because I wanted to get rid of, of your snippet.""" start="00:02:37.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Anyhow, while I try now, I'm following the mailing list,""" start="00:02:40.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the development mailing list,""" start="00:02:47.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I got interested when I heard something about""" start="00:02:48.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""TTI charge frames being announced for master.""" start="00:02:51.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""That would mean less packages to download""" start="00:02:57.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because I thought I could get rid of Corfu,""" start="00:02:59.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I wanted to try if I could get rid of Corfu terminal""" start="00:03:04.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and run Corfu without that.""" start="00:03:07.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So, there were some hints there in that mailing list""" start="00:03:11.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that made it interesting for me.""" start="00:03:18.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And at the end, I'm also like a why not trying man,""" start="00:03:21.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I said let's give it a try.""" start="00:03:26.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""My requirements, I'm working always on a new Emacs,""" start="00:03:29.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""a decently new Emacs, normally from Master Vanilla.""" start="00:03:33.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""completely Vanilla and I don't have any extras like Doom or things like that.""" start="00:03:36.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I'm only Vanilla. And one of the things""" start="00:03:42.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I don't want is that on this Vanilla recent Emacs,""" start="00:03:45.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't want a Kung Fu Terminal. I need your snippet.""" start="00:03:50.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm basically an old man.""" start="00:03:55.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Old dog does new tricks and snippets must,""" start="00:03:57.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in my way of working, must be easy and quick to configure""" start="00:04:02.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and Tempo or others that I've seen are not.""" start="00:04:06.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't want any reminiscence of a company in my setup.""" start="00:04:10.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And of course, don't forget that I've embraced""" start="00:04:13.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the language protocol implementations and basically Eglot.""" start="00:04:18.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""My main focus now is Python and LaTeX,""" start="00:04:24.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I have PyLSB and TechLab.""" start="00:04:28.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I don't want to have to stop using them.""" start="00:04:31.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So basic setup for Corfu and Eglot.""" start="00:04:37.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""You can find it everywhere you look for it.""" start="00:04:40.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It's really easy.""" start="00:04:43.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And actually, I also do something somehow naughty,""" start="00:04:46.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is to set this variable,""" start="00:04:51.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the Corfu auto variable to true,""" start="00:04:53.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""although I know it's not recommended, blah, blah, blah.""" start="00:04:55.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""But I use that because I'm a bit lazy in that.""" start="00:04:58.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So next step was looking at completion at point functions.""" start="00:05:02.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So the information there if you go through the scatter""" start="00:05:07.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and sometimes a bit cryptic.""" start="00:05:10.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""At the end I came up with something like the thing""" start="00:05:14.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that you see there on the screen.""" start="00:05:16.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So it's a function for just completion point""" start="00:05:18.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I need my list of keywords""" start="00:05:21.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so that I'm going to be talking later""" start="00:05:24.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I have my bounds which is normally a word""" start="00:05:30.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and from that I get the start and the end""" start="00:05:34.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""of the of the thing that I want to""" start="00:05:37.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I want to be my seed for looking and bringing up Corfu""" start="00:05:38.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and of course I need some completion properties here""" start="00:05:47.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""This looked like this is what you need to do,""" start="00:05:53.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I had to dig quite deep""" start="00:05:55.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to create a JavaScript keyword test""" start="00:05:57.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and to understand the completion props.""" start="00:06:01.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And as an update of what I've been doing in the last weeks,""" start="00:06:04.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've created a bound of things""" start="00:06:11.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that point for me with a different thing""" start="00:06:13.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that doesn't skip over non-blank characters,""" start="00:06:18.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that only skips over non-blank characters.""" start="00:06:22.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Why? Because Word was confusingly tech,""" start="00:06:25.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because the backslash,""" start="00:06:29.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like in the example for the teletype text,""" start="00:06:30.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""was not taken into account by Word.""" start="00:06:35.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I had to create my own one,""" start="00:06:36.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was a bunch of thing at point,""" start="00:06:39.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then my thing is non-blanks.""" start="00:06:42.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Completion at point properties, what are they?""" start="00:06:44.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""They allow Emacs to know how to handle the information""" start="00:06:53.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for a specific completion time.""" start="00:06:56.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So you normally will have an annotation,""" start="00:06:57.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which then can disappear if you use NerdIconScoreFull.""" start="00:07:02.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is what I'm doing currently,""" start="00:07:08.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I keep it commented just in case I get tired of Corfu""" start="00:07:11.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I want to have my completion function.""" start="00:07:17.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Then the company kind is actually not something""" start="00:07:20.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that comes from the company package, but does not require.""" start="00:07:26.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And that's going to allow NerdEye Conscorfu to identify""" start="00:07:31.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and put the right icon there in the completion list,""" start="00:07:39.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""as you will see in a couple of minutes.""" start="00:07:44.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So it's a snippet key.""" start="00:07:47.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So basically what this is telling you""" start="00:07:50.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""is that this is a snippet keyword.""" start="00:07:52.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""These two lines, either line,""" start="00:07:54.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""tell you that this is a snippet keyword.""" start="00:07:56.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And that it should be added to the other completions""" start="00:08:00.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that you already have in your list.""" start="00:08:05.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Problems looking now next step""" start="00:08:08.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""once I had the completion props""" start="00:08:15.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was relatively easy was to go""" start="00:08:19.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and get the keyword list right.""" start="00:08:21.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've been looking at pre-existing solutions""" start="00:08:24.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like for example how the menu""" start="00:08:27.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""is built in by your snippet and it looked a bit like Mission Impossible.""" start="00:08:29.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because the approach by all the things""" start="00:08:34.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I have seen and I have examined""" start="00:08:40.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""is to get the keys and the names""" start="00:08:43.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then further process them.""" start="00:08:45.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""My take was, do I really need both?""" start="00:08:50.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""At the end, if I use my own snippets,""" start="00:08:55.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to be using something""" start="00:08:58.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I would call meaningful keys for them""" start="00:09:00.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""or at least meaningful for these keys are meaningful for me""" start="00:09:02.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I try not to repeat them""" start="00:09:06.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because it makes little sense to repeat a keyword.""" start="00:09:07.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So why not center everything around the keys only""" start="00:09:09.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and can that help simplify my code?""" start="00:09:13.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I started to dive into your snippet""" start="00:09:18.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I found a lot of useful semi-hidden functions there.""" start="00:09:23.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I discovered that getting the list""" start="00:09:27.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the list of keys for a given mode was not that difficult.""" start="00:09:30.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And at the end what I started doing""" start="00:09:34.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""is get all the snipple tables used by a major mode""" start="00:09:40.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and get the lists of the keys that you have in each table.""" start="00:09:47.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Sometimes the list is empty""" start="00:09:52.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so it's going to return a nil and that you have to discard.""" start="00:09:55.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""When you're using structured snippets""" start="00:10:01.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like snippets and submenus and so on""" start="00:10:06.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to get a structured menu,""" start="00:10:08.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you also get some non-strings that you need to filter out""" start="00:10:12.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in order to get a workable keyword list.""" start="00:10:15.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""At the end of the day, what I had was something like this.""" start="00:10:19.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have, for a mode, I went through all modes.""" start="00:10:24.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""through all modes associated to that and then I went""" start="00:10:30.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I got my results from all the tables that I had""" start="00:10:37.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for a for a given time for a given table""" start="00:10:42.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so what you do is you get your the tables""" start="00:10:45.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that are associated to a mode because surprise surprise""" start="00:10:48.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Some modes have more than one table,""" start="00:10:53.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then what you do is you filter out all non strings""" start="00:10:55.959" video="mainVideo-completion" id="subtitle"]] +[[!template text="""from each of the keys list that you have for each table.""" start="00:11:00.918" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So as you see, it's a 1, 2, 3, 4, 5, 6, 7 liner,""" start="00:11:07.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was not too much.""" start="00:11:12.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""By the way, if someone from Yasnippet is around,""" start="00:11:14.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I sent a pull request to include this""" start="00:11:20.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""as a public function in Yasnipit""" start="00:11:26.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because it might be nice to have it in a packet""" start="00:11:29.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in order to do this kind of things.""" start="00:11:32.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So fine-tuning I just adding a yes completion""" start="00:11:33.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to the completion point functions was not enough""" start="00:11:41.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't really know""" start="00:11:44.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but exclusive node didn't seem to work how I wanted""" start="00:11:46.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I needed to escape sorry yeah I was saying I was getting rid of packages""" start="00:11:51.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I had to add one package""" start="00:11:57.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in order to get a function which is very very nice""" start="00:12:01.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and which is part of the cape function of the cape package""" start="00:12:04.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and that's cape cap super.""" start="00:12:08.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So at the end using that you define an alias""" start="00:12:12.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which for that where you use cape cap super""" start="00:12:16.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to have a list of what you want""" start="00:12:23.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so in this case for example for the demo""" start="00:12:25.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to make I'm using yes completion""" start="00:12:29.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then the elisp completion point function provided by Emacs.""" start="00:12:32.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I combine them using cape cap super""" start="00:12:37.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and with that I create a completion point""" start="00:12:44.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""a new completion point function which I call cape list mode""" start="00:12:47.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then I add this alias to the completion functions list""" start="00:12:53.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and with that it is enough snippet expansion""" start="00:12:58.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if you want to have your snippets expanded automatically,""" start="00:13:05.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you have to add an exit function to the, I'm sorry,""" start="00:13:14.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to the completion properties""" start="00:13:28.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""yet another functionality you have to add""" start="00:13:30.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and to avoid this automatic selection to be too eager""" start="00:13:34.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you need to add this set corfu""" start="00:13:39.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""on exact match to nil because otherwise""" start="00:13:43.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you will always get the snippet expanded""" start="00:13:48.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""even if you don't want it Basically why?""" start="00:13:51.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Basically because this would be suboptimal""" start="00:13:55.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because the key can appear as part of a variable name.""" start="00:13:57.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Another nice thing, I'm also creating my own themes.""" start="00:14:05.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm trying to have very sleek themes""" start="00:14:10.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that only cover the modes that I use""" start="00:14:13.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and for that I have my own theme creator fork""" start="00:14:16.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""from the original team creator.""" start="00:14:22.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""In my personal work that I'm running at home,""" start="00:14:26.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I only have the faces for the modes I use.""" start="00:14:31.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't want to overload the thing""" start="00:14:34.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with too much different things.""" start="00:14:38.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Looking at this, I really didn't need, as you will see now,""" start="00:14:41.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't need to add anything to my themes""" start="00:14:46.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because the default faces for Corfu""" start="00:14:50.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""adapt quite well to most of the themes.""" start="00:14:53.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So if I go back to my checklist decently remax yes""" start="00:14:58.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""compiled the one you'll see""" start="00:15:02.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for the for in the demo I'm doing is a master""" start="00:15:06.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""compiled the day before yesterday""" start="00:15:09.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so and I don't need Corfu terminal there.""" start="00:15:12.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I need your snippet,""" start="00:15:15.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and you're going to see that in a second""" start="00:15:16.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with a couple of snippets that I can expand here.""" start="00:15:20.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't want any reminiscence of a company in my setup,""" start="00:15:24.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and there's none. Well, actually, company kind is there""" start="00:15:27.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you see the company there""" start="00:15:32.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but it isn't if I buy companies strictly speaking""" start="00:15:33.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and for I don't want I need Eglot integration""" start="00:15:39.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which I will also be showing you. Takeaways from all this,""" start="00:15:44.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if you accept the extra burden""" start="00:15:50.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""of Corfu terminal for Emacs 30 or earlier Emacs 30s,""" start="00:15:55.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""it's not too difficult to get this set up running.""" start="00:16:02.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Corfu was easier to integrate and configure than Company,""" start="00:16:07.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and it's much lighter in terms""" start="00:16:11.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""of number of lines, et cetera. I learned a lot.""" start="00:16:13.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Well, actually, yes, with the help of Cape,""" start="00:16:20.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but it is much lighter and much easier""" start="00:16:25.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to integrate and configure.""" start="00:16:27.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've learned a lot about computational functions in the process,""" start="00:16:30.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is, something that is always nice to learn new things""" start="00:16:34.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and the Nerd Icons Corfu makes the""" start="00:16:40.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""at least at this point in time I might get tired of it""" start="00:16:45.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but at this point in time it makes""" start="00:16:48.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""a makes a very nice overall look""" start="00:16:50.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and look and feel for for Emacs.""" start="00:16:53.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""requests to whom it may concern cape has nice features""" start="00:16:58.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that maybe could make their way into emacs""" start="00:17:02.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""i'm thinking basically about this cape super fun""" start="00:17:06.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""uh super function super cape function functionality""" start="00:17:09.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is very nice and overcomes the problem of linking""" start="00:17:12.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and this exclusive and all this kind of things""" start="00:17:18.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that we have currently in Corfu""" start="00:17:22.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with the computational point functions.""" start="00:17:26.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Corfu is also really nice to have and it's not too big""" start="00:17:28.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so is there any possibility""" start="00:17:32.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that it makes its way into Emacs?""" start="00:17:35.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Please keep Yarn Snippet alive.""" start="00:17:40.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm not saying here that my pull request should be there,""" start="00:17:42.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but it would be nice if someone took a look""" start="00:17:48.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and made it part of Yarn Snippet.""" start="00:17:51.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And PS, currently on master,""" start="00:17:57.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""there's a lot of semantic highlighting going on,""" start="00:18:01.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is very, very nice. No criticism on that.""" start="00:18:07.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but you may need to add to your snippet hook""" start="00:18:13.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this simple local value for ElixirFontify semantically""" start="00:18:19.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because at least in my case I felt that""" start="00:18:25.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the face were a bit too pushy""" start="00:18:30.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I had to make a snippet mode""" start="00:18:32.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""use the old Emacs Lisp fontification.""" start="00:18:37.334" video="mainVideo-completion" id="subtitle"]] +[[!template text="""That's what we want to talk about.""" start="00:18:41.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Any initial reactions to this? There's a question here.""" start="00:18:46.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Someone asked, did you try Jasnepet Cup?""" start="00:18:55.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""If so, what did you miss from this approach? I tried that.""" start="00:18:59.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And it's not that I missed anything.""" start="00:19:05.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It was more or less that I wanted to do it myself.""" start="00:19:11.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I wanted to see what was behind it. That's my answer.""" start="00:19:16.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""There are lots of packages there,""" start="00:19:24.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I try to keep learning. So, this was a nice objective""" start="00:19:26.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to learn a bit more about Emacs. And now, just a second.""" start="00:19:31.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Now, a small demo. This is the interaction.""" start="00:19:40.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And as you see, I have the snippet there.""" start="00:19:44.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I have a couple of snippets.""" start="00:19:47.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So, for example, if I would like to say""" start="00:19:52.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I want to define a function, I can go like this.""" start="00:19:55.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And what you see here is that""" start="00:19:58.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have two snippets appearing and then some variables.""" start="00:20:00.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So, I could go for def one or if I want a key map, for def key map,""" start="00:20:04.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which would be something like this.""" start="00:20:09.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And then when I press enter, I get directly into the map""" start="00:20:11.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I could say like, Show off mob.""" start="00:20:18.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Then it sets out directly a prefix T,""" start="00:20:26.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is something that I asked for in Emacs master.""" start="00:20:30.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So with prefix T, for those who prefix it true,""" start="00:20:35.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for those who don't know it,""" start="00:20:39.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""it makes integrating this into keymaps in use package much easier.""" start="00:20:41.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So the next thing would be""" start="00:20:46.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I would like to write a description""" start="00:20:51.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like for example a cool show off team up""" start="00:20:56.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then my keys are my functions and that would be it""" start="00:21:05.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but you also have like but also have like this define function""" start="00:21:08.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and of course you can say that's nice but there's no""" start="00:21:15.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but you're not showing the integration""" start="00:21:21.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with Eglot and you're right.""" start="00:21:23.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I'm going just to open up a small program""" start="00:21:25.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I'm currently developing in Python.""" start="00:21:30.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""X is a tool to do things in MP3.""" start="00:21:33.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And here I would have like all these things.""" start="00:21:38.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""As you see here in the bottom,""" start="00:21:42.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""service running, pilot is local, eglot is active.""" start="00:21:45.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I have my eglot stop and then I go down.""" start="00:21:49.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I want to add a new argument here.""" start="00:21:57.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I would go like for it. I would go like add flag.""" start="00:22:00.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""For example, I would add a flag""" start="00:22:08.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I would get a new flag to add here.""" start="00:22:13.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Oops. Of course, this is integrated into Eagle Lord.""" start="00:22:21.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I'm getting your information about what I have.""" start="00:22:33.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't have OS, so I would need to import here,""" start="00:22:42.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I can go up just to see""" start="00:22:52.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if I would like to, for example,""" start="00:22:59.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""create a new a regular expression""" start="00:23:01.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm getting this information that you see right now on call""" start="00:23:11.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for I'm getting that from Eglot""" start="00:23:15.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so you see there's the integration""" start="00:23:17.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with with Eglot too in Python""" start="00:23:18.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have Eglot and as you've seen""" start="00:23:20.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I also have the and all these are snippets fine""" start="00:23:23.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""more reactions and questions""" start="00:23:30.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Because that would be my show off here.""" start="00:23:38.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Any questions? Any more questions on the pad?""" start="00:23:54.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but anyhow i'm going to try""" start="00:23:56.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""i'm going to try your snippet too""" start="00:24:11.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and i'm going to be answering this question more""" start="00:24:13.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""yeah time is good okay fine""" start="00:24:16.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I would be done if there's no more reactions""" start="00:24:21.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""thank you so much You're welcome.""" start="00:24:30.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""If you have any other questions, folks,""" start="00:24:33.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you can always follow up on the pad.""" start="00:24:34.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""That was a great demonstration, and I'm sure lots of people""" start="00:24:37.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""are looking forward to trying it out.""" start="00:24:39.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Oh, I see some questions coming in now.""" start="00:24:43.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""You may go ahead if you like.""" start="00:24:45.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""okay fine uh what uh there's someone asking""" start="00:24:46.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""what do special characters in your snippets work well too""" start="00:24:51.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""what kind of i don't use special characters in the key name""" start="00:24:57.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so in this case everything works quite nicely""" start="00:25:02.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then i'm passing i'm passing the control to your snippets""" start="00:25:05.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so if there's any problem in your snippets""" start="00:25:11.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with uh special characters""" start="00:25:13.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that i don't know I don't use that as a key.""" start="00:25:15.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm just using for key names.""" start="00:25:24.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I normally use a, I only use letters, but that should work.""" start="00:25:30.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I mean, let's, uh, let's give it a trial.""" start="00:25:38.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Let's kill here. Yes. I don't want, I don't want to touch this.""" start="00:25:43.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Ugh. let's go into this one uh""" start="00:25:58.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""let's say I'm going to define this for example like this""" start="00:26:01.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I'm going to create a new snippet""" start="00:26:06.959" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to create a new snippet""" start="00:26:10.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and use this is for example when you look at this""" start="00:26:15.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if you if you have the the venue uh the new""" start="00:26:18.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""sorry the new way of the the new emacs uh""" start="00:26:20.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""semantical highlighting working""" start="00:26:26.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this would be quite cramped this is why i'm using""" start="00:26:31.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this is why i said uh the snippet the""" start="00:26:39.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so is this more or less what you're talking about""" start="00:26:43.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""This is what you're talking about. Snippet. Save the snippet.""" start="00:26:49.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I'm going to... Snippet, load and put window.""" start="00:27:01.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Enable interaction mode. Yes, I'm going to save.""" start="00:27:15.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I'm going to save that as FD test. on the file.""" start="00:27:21.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""No, I'm going to save this. Load. Load input window.""" start="00:27:24.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to put this in Emacs Lisp mode. I want to save it. No.""" start="00:27:41.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to write that directly into Emacs Lisp mode.""" start="00:27:53.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""going to go back into scratch buffer""" start="00:28:27.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and here I have it and we have it here but anyhow""" start="00:28:30.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I'm just going to try to see if I feel like empty of course""" start="00:28:43.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""there's only one it will not show in Corfu,""" start="00:28:52.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I mean, I don't have any problems""" start="00:28:58.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with that, as you see. Was that what you were meaning?""" start="00:29:01.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, I guess that works. Fine.""" start="00:29:21.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""All right, shall we wrap up here""" start="00:29:24.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so that you can have supper""" start="00:29:29.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and have lunch and other things? Okay, fine for me.""" start="00:29:31.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I was hoping to see the drop down. Just a second.""" start="00:29:40.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I think we can do that too. Two seconds.""" start="00:29:46.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""How can we do that with a drop down?""" start="00:29:49.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, if I say something like this.""" start="00:29:52.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And then I go and save it.""" start="00:29:57.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I'm going to go and write this""" start="00:30:04.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""into, with a second, fine.""" start="00:30:08.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And now I need to quit here, sorry.""" start="00:30:16.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I'm going to come back in a second with another remark.""" start="00:30:19.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Well, I'm bringing back and now let's see.""" start="00:30:26.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Let's see what we have in your snippets.""" start="00:30:31.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It's not there. Why not? Just a second. Let's see if I go.""" start="00:30:34.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't know if it matters that the name was""" start="00:30:44.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that didn't have the characters in the beginning.""" start="00:30:47.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Just a second. I think I know what is happening here.""" start="00:30:52.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Do I have here? I have them. I'm going to clean.""" start="00:31:03.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Oh, you're back in your home directories. Why?""" start="00:31:21.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""CD dash to get back in. Yeah. That's right.""" start="00:31:28.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So you see how the name also has""" start="00:31:35.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""it doesn't have the same as the keys.""" start="00:31:37.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't know if that affects what shows up.""" start="00:31:39.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, we we can try that. That's a quick one. This is my.""" start="00:31:41.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Fine, now that I have this,""" start="00:31:49.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is going to be quicker, we check again.""" start="00:31:51.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""They both seem to be the same now""" start="00:31:55.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I don't know if that affects, but anyhow, let's try it.""" start="00:31:57.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I go and then I look at the AR snippets, if it's there.""" start="00:32:03.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yes, it is. Yeah, it's there.""" start="00:32:07.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And then if I say there, there you are. Oh, look at that.""" start="00:32:11.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It doesn't seem to be affecting. Fantastic.""" start="00:32:18.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And by the way, it is there.""" start="00:32:24.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, I really should spend time""" start="00:32:32.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""getting more templates set up with Snippet.""" start="00:32:34.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I really love the fact that""" start="00:32:36.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you can evaluate Emacs Lisp in it too.""" start="00:32:37.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, I mean, just to make it bigger,""" start="00:32:40.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""try that because if I go into my, for example,""" start="00:32:43.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""into my org mode stuff""" start="00:32:51.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and in my org mode, I go to the article,""" start="00:32:55.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is one of the big ones.""" start="00:32:59.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have things like, for example,""" start="00:33:03.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I defined a couple of functions here to do if it's empty,""" start="00:33:06.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if that is empty, just add a white space.""" start="00:33:10.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""If one is empty, add a white space.""" start="00:33:16.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""add a white space here so it becomes a comment.""" start="00:33:19.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have functions for to do more things on that""" start="00:33:23.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I also have like menus to see""" start="00:33:27.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""what language I want to choose for""" start="00:33:29.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for my spell checking and so on so""" start="00:33:33.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and that's all that's as you see""" start="00:33:37.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this is a Lisp being evaluated""" start="00:33:40.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so yes do I really encourage you""" start="00:33:41.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've also heard people use it,""" start="00:33:45.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like, especially if they're working""" start="00:33:46.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in different programming languages,""" start="00:33:47.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so they can just have the syntax""" start="00:33:49.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for the different languages""" start="00:33:52.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""be condensed into a consistent abbreviation. Yeah.""" start="00:33:54.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And look, this is my article. I have another.""" start="00:33:58.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""This is when I'm writing articles. I have another one.""" start="00:34:01.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have another one for writing letters""" start="00:34:07.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in org mode and so on. So, it's like letter, block,""" start="00:34:10.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and you have the complete infrastructure""" start="00:34:14.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and you don't have to type it by hand.""" start="00:34:16.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So, it's really, really nice.""" start="00:34:20.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Hmm, I think it might be nice to have""" start="00:34:22.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""a future Emacs carnival, you know,""" start="00:34:25.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""shared blogging theme thing be around""" start="00:34:28.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""having people share their snippets.""" start="00:34:31.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""No snippets and other things like for example,""" start="00:34:33.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this is something stupid.""" start="00:34:39.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm switching my themes. All right.""" start="00:34:41.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And of course, there you see,""" start="00:34:44.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have also, this is also with,""" start="00:34:48.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this is my way of switching buffers,""" start="00:34:51.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is with the shift control and tab,""" start="00:34:54.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I can switch different families""" start="00:34:58.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then when I'm in a family,""" start="00:35:00.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I can go and switch with control tab between the different,""" start="00:35:02.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm using tab line by the way. I'm not using the other one.""" start="00:35:07.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm using the old plain tab line with my themes.""" start="00:35:15.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So that's more or less everything.""" start="00:35:20.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Thank you for the peek into your workflow.""" start="00:35:23.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I will work on getting the recordings for the live talks""" start="00:35:26.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""sorted out at some point very soon.""" start="00:35:30.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I might even be able to get them out next week.""" start="00:35:33.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So thanks again. All right. Have a nice supper. Same to you.""" start="00:35:37.840" video="mainVideo-completion" id="subtitle"]] + +</div>Questions or comments? Please e-mail [paaguti@gmail.com](mailto:paaguti@gmail.com?subject=Comment%20for%20EmacsConf%202023%20completion%3A%20corfu%2Byasnippet%3A%20Easier%20than%20I%20thought) <!-- End of emacsconf-publish-after-page --> |
