diff options
author | Sacha Chua <sacha@sachachua.com> | 2022-01-19 00:11:31 -0500 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2022-01-19 00:11:31 -0500 |
commit | c9a4426b64b70443152218bfbcbbefb198ff8244 (patch) | |
tree | 6198e8477350a85b6064eff57b0009f5db6ad4f8 /2021/captions | |
parent | 75b1ac1ed57b205624e2747c6fa1742345c3e855 (diff) | |
download | emacsconf-wiki-c9a4426b64b70443152218bfbcbbefb198ff8244.tar.xz emacsconf-wiki-c9a4426b64b70443152218bfbcbbefb198ff8244.zip |
Add clede transcript - thanks Hannah!
Diffstat (limited to '2021/captions')
-rw-r--r-- | 2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt | 1244 |
1 files changed, 1244 insertions, 0 deletions
diff --git a/2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt b/2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt new file mode 100644 index 00000000..7f4b8d30 --- /dev/null +++ b/2021/captions/emacsconf-2021-clede--clede-the-common-lisp-emacs-development-environment--fermin-mf--main.vtt @@ -0,0 +1,1244 @@ +00:00:01.040 --> 00:00:04.367 +Welcome, everyone, to this Emacs Conf 2021. + +00:00:04.467 --> 00:00:07.617 +My name is Fermin. I work as + +00:00:07.617 --> 00:00:09.717 +a Common Lisp engineer at RavenPack, + +00:00:09.817 --> 00:00:11.733 +and today I'm going to talk about + +00:00:11.833 --> 00:00:15.783 +CLEDE: the Common Lisp Emacs Development Environment. + +00:00:15.883 --> 00:00:19.400 +So what is CLEDE? + +00:00:19.500 --> 00:00:20.500 +So CLEDE is a project + +00:00:20.500 --> 00:00:22.017 +I've been working on this year + +00:00:22.117 --> 00:00:24.650 +for better... well, yeah... + +00:00:24.750 --> 00:00:27.117 +a better Common Lisp integration + +00:00:27.217 --> 00:00:30.317 +for static tools and + +00:00:30.417 --> 00:00:33.250 +for static and integrated Emacs tools. + +00:00:33.350 --> 00:00:35.367 +And to understand better what + +00:00:35.467 --> 00:00:37.650 +CLEDE is, one first has to understand + +00:00:37.750 --> 00:00:40.133 +the base that I use... + +00:00:40.233 --> 00:00:43.767 +so the foundation that I use for CLEDE. + +00:00:43.867 --> 00:00:46.050 +Um, so it is CEDET-- + +00:00:46.150 --> 00:00:47.417 +and specifically Semantic-- + +00:00:47.517 --> 00:00:49.733 +so we first have to talk about and + +00:00:49.833 --> 00:00:50.417 +understand what it is. + +00:00:50.517 --> 00:00:53.817 +So CEDET is a collection + +00:00:53.917 --> 00:00:55.183 +of Emacs development environment tools. + +00:00:55.283 --> 00:00:57.233 +It was created by Eric Ludlam + +00:00:57.333 --> 00:01:00.767 +(I hope to say that name right) + +00:01:00.867 --> 00:01:02.333 +in the late 90s, and + +00:01:02.433 --> 00:01:04.833 +the idea was to create entire IDE for Emacs. + +00:01:04.933 --> 00:01:10.433 +CEDET is still integrated into Emacs, + +00:01:10.533 --> 00:01:11.717 +and it has a lot of interesting things + +00:01:11.817 --> 00:01:14.033 +that are not used for too many people, + +00:01:14.133 --> 00:01:16.167 +so I'm going to explain some of those. + +00:01:16.267 --> 00:01:18.417 +First, let's go with the good ones that + +00:01:18.517 --> 00:01:21.233 +one that I use for CLEDE and that can + +00:01:21.333 --> 00:01:23.167 +be used for other projects as well. + +00:01:23.267 --> 00:01:28.450 +Some of the features that + +00:01:28.550 --> 00:01:32.450 +CEDET has is parse generators + +00:01:32.550 --> 00:01:35.217 +so we have Wisent and Bovine. + +00:01:35.317 --> 00:01:38.350 +Wisent is basically a Bison clone + +00:01:38.450 --> 00:01:40.200 +that was written in Emacs Lisp + +00:01:40.300 --> 00:01:43.117 +that you can also specify grammars. + +00:01:43.217 --> 00:01:45.617 +It's a really big and rather complex + +00:01:45.717 --> 00:01:47.350 +tool to work with, + +00:01:47.450 --> 00:01:49.183 +and it's secretly used for, as far as + +00:01:49.283 --> 00:01:51.667 +I know, two languages. + +00:01:51.767 --> 00:01:53.317 +They're not also well supported, + +00:01:53.417 --> 00:01:55.317 +but we'll get into that later. + +00:01:55.417 --> 00:01:58.133 +Also Bovine, which is a way more + +00:01:58.233 --> 00:01:59.867 +simple tool, like you can... + +00:01:59.967 --> 00:02:01.733 +you don't need grammar files, + +00:02:01.833 --> 00:02:07.350 +you can write just in plain Emacs Lisp. + +00:02:07.450 --> 00:02:10.917 +And you also have utilities to work with + +00:02:11.017 --> 00:02:16.550 +those generated tag trees, so to say. + +00:02:16.650 --> 00:02:23.533 +These are not AST parsers like real Bison; + +00:02:23.633 --> 00:02:25.617 +they are tag-based so they basically get + +00:02:25.717 --> 00:02:27.533 +tags and extract information from them, + +00:02:27.633 --> 00:02:30.083 +and I can use that information + +00:02:30.183 --> 00:02:31.000 +with Emacs Lisp + +00:02:31.000 --> 00:02:33.567 +to contextually understand better + +00:02:33.667 --> 00:02:36.267 +the language that you're parsing, + +00:02:36.367 --> 00:02:37.083 +but in general, + +00:02:37.183 --> 00:02:40.083 +this decision was made (as far as I know) + +00:02:40.183 --> 00:02:43.217 +because of the Emacs Lisp + +00:02:43.317 --> 00:02:44.217 +limitation of the time. + +00:02:44.317 --> 00:02:50.233 +So Emacs was a rather + +00:02:50.333 --> 00:02:52.167 +slower Lisp-- slow Lisp-- + +00:02:52.267 --> 00:02:55.850 +so they decide to just use + +00:02:55.950 --> 00:02:58.750 +tag-based thing instead of a parse-- + +00:02:58.850 --> 00:03:02.333 +I mean-- an AST-based one. + +00:03:02.433 --> 00:03:05.167 +And Semantic give you some utility with + +00:03:05.267 --> 00:03:06.250 +that as Senator, for example, give you + +00:03:06.350 --> 00:03:07.667 +some semantic navigation. + +00:03:07.767 --> 00:03:09.750 +So CEDET is way more than this, + +00:03:09.850 --> 00:03:12.433 +but this is not a CEDET talk. + +00:03:12.533 --> 00:03:13.983 +So if you want to get more information, + +00:03:14.083 --> 00:03:16.350 +you can go to the official webpage. + +00:03:16.450 --> 00:03:19.933 +I have to say that it is outdated, and + +00:03:20.033 --> 00:03:22.933 +Emacs changed some things over the years + +00:03:23.033 --> 00:03:24.067 +because CEDET was merged into Emacs + +00:03:24.167 --> 00:03:27.767 +in 2011, as far as I know. + +00:03:27.867 --> 00:03:30.417 +You can also go to the official Emacs + +00:03:30.517 --> 00:03:32.883 +documentation (the manual), which will get + +00:03:32.983 --> 00:03:35.317 +more information about every tool, + +00:03:35.417 --> 00:03:38.317 +but it's a really interesting thing, and + +00:03:38.417 --> 00:03:40.883 +I'm really sad that it is forgotten. + +00:03:40.983 --> 00:03:43.233 +So let's go with the bad things: + +00:03:43.333 --> 00:03:46.483 +that CEDET is an abandoned project. + +00:03:46.583 --> 00:03:48.217 +This has some benefits like it's not + +00:03:48.317 --> 00:03:50.550 +going to change that much, + +00:03:50.650 --> 00:03:52.367 +but it's, of course, not ideal. + +00:03:52.467 --> 00:03:56.833 +Most of the tooling that CEDET + +00:03:56.933 --> 00:03:58.100 +have right now are surpassed + +00:03:58.200 --> 00:03:59.633 +by other packages. + +00:03:59.733 --> 00:04:02.650 +And at first, I know Eric was working + +00:04:02.750 --> 00:04:07.467 +with C at the time so he totally has + +00:04:07.567 --> 00:04:10.533 +"real support" so you can use CEDET + +00:04:10.633 --> 00:04:13.033 +for other languages, but + +00:04:13.133 --> 00:04:15.383 +to work really like an IDE, more or less, + +00:04:15.483 --> 00:04:17.017 +it's all the... + +00:04:17.117 --> 00:04:19.517 +C is the only language supported, + +00:04:19.617 --> 00:04:21.667 +and maybe some simple C++, but that's it. + +00:04:21.767 --> 00:04:24.017 +It needs more documentation. + +00:04:24.117 --> 00:04:25.683 +People really don't know how to use it + +00:04:25.783 --> 00:04:28.583 +because, I have to say, rather complex + +00:04:28.683 --> 00:04:30.067 +to get a project working with it, + +00:04:30.167 --> 00:04:33.717 +and then make use of Semantic + +00:04:33.817 --> 00:04:36.667 +because [it] needs some maintenance and + +00:04:36.767 --> 00:04:38.567 +to update the code. + +00:04:38.667 --> 00:04:41.083 +But I will argue that even with these + +00:04:41.183 --> 00:04:44.383 +deficiencies, it's usable, and + +00:04:44.483 --> 00:04:47.517 +I use the foundation of base for + +00:04:47.617 --> 00:04:49.533 +parse infrastructure for other languages. + +00:04:49.633 --> 00:04:52.367 +I will say that with Common Lisp was + +00:04:52.467 --> 00:04:53.983 +rather easy because + +00:04:54.083 --> 00:04:56.033 +CEDET already have Emacs Lisp parser + +00:04:56.133 --> 00:04:57.900 +even though it's not great. + +00:04:58.000 --> 00:05:00.483 +It's easy to adapt and to use. + +00:05:00.583 --> 00:05:04.000 +It's not used in an Emacs + +00:05:04.100 --> 00:05:05.433 +right now because, well, + +00:05:05.533 --> 00:05:08.883 +Emacs know very well itself, + +00:05:08.983 --> 00:05:11.600 +but it's there. + +00:05:11.700 --> 00:05:17.583 +So these, of course, are static parsers + +00:05:17.683 --> 00:05:19.517 +so you don't need to run any + +00:05:19.617 --> 00:05:21.883 +other language-specific tools, which is + +00:05:21.983 --> 00:05:24.400 +an advantage for some things. + +00:05:24.500 --> 00:05:27.133 +And this was basically CEDET is, + +00:05:27.233 --> 00:05:30.283 +and I use the parse infrastructure + +00:05:30.383 --> 00:05:31.333 +and some tools + +00:05:31.433 --> 00:05:34.333 +to create a parser for Common Lisp. + +00:05:34.433 --> 00:05:36.700 +Well, more or less. *laughs* + +00:05:36.800 --> 00:05:37.900 +Let's go to details. + +00:05:38.000 --> 00:05:39.850 +So I will say that it's not a parser + +00:05:39.950 --> 00:05:42.433 +by itself because, as we all know, + +00:05:42.533 --> 00:05:44.500 +to parse a macro-based language + +00:05:44.600 --> 00:05:46.833 +is really hard. + +00:05:46.933 --> 00:05:48.450 +Mostly if you cannot have contextual + +00:05:48.550 --> 00:05:52.800 +information because if you create code + +00:05:52.900 --> 00:05:56.033 +at compile time or runtime is really hard + +00:05:56.133 --> 00:05:59.233 +if you don't have run time, right? + +00:05:59.333 --> 00:06:00.950 +Basically, CLEDE can be described + +00:06:01.050 --> 00:06:02.600 +as a Semantic extension. + +00:06:02.700 --> 00:06:03.867 +So basically it's like, + +00:06:03.967 --> 00:06:07.133 +you can have Semantic + +00:06:07.233 --> 00:06:09.817 +and use it with Common Lisp code + +00:06:09.917 --> 00:06:11.600 +and some Common Lisp Emacs tools. + +00:06:11.700 --> 00:06:17.350 +So Bison (which is not Bison) is + +00:06:17.450 --> 00:06:21.650 +Bovine, and Semantic and Senator + +00:06:21.750 --> 00:06:24.750 +for navigating tags, + +00:06:24.850 --> 00:06:26.367 +and then communication with SLIME, SLY, + +00:06:26.467 --> 00:06:28.733 +and inferior Lisp. + +00:06:28.833 --> 00:06:30.450 +That means... I will show that later, but + +00:06:30.550 --> 00:06:32.800 +basically, you can parse the buffer, + +00:06:32.900 --> 00:06:34.167 +get some tags, + +00:06:34.267 --> 00:06:35.967 +get information about the tags that you want, + +00:06:36.067 --> 00:06:38.017 +and then send some of that information + +00:06:38.117 --> 00:06:43.900 +to the SLIME, SLY, or inferior Lisp REPL buffer, + +00:06:44.000 --> 00:06:45.717 +so you can get both things + +00:06:45.817 --> 00:06:48.483 +at the same time. + +00:06:48.583 --> 00:06:50.217 +And given that it's a Lisp language, + +00:06:50.317 --> 00:06:53.300 +this can be pretty interesting. + +00:06:53.400 --> 00:06:57.600 +Also I wrote some common package integration, + +00:06:57.700 --> 00:06:59.217 +so even though there's not + +00:06:59.317 --> 00:07:00.300 +a Common Lisp standard, + +00:07:00.400 --> 00:07:05.100 +there's some libraries that are used + +00:07:05.200 --> 00:07:07.583 +by basically everyone. + +00:07:07.683 --> 00:07:09.417 +They're not part of the standard, + +00:07:09.517 --> 00:07:11.000 +but yeah. + +00:07:11.100 --> 00:07:13.900 +A lot of people use it: like `asdf`, + +00:07:14.000 --> 00:07:15.550 +which is the package manager, + +00:07:15.650 --> 00:07:18.967 +I will say it's [`asdf` is] the + +00:07:19.067 --> 00:07:21.783 +definition packages, so to say, + +00:07:21.883 --> 00:07:23.667 +better than packages itself + +00:07:23.767 --> 00:07:26.317 +and have more features. + +00:07:26.417 --> 00:07:28.383 +I wrote a nice integration with it + +00:07:28.483 --> 00:07:29.500 +and also `fiveam`, + +00:07:29.600 --> 00:07:34.417 +which is a well-known test package. + +00:07:34.517 --> 00:07:39.300 +I just wrote this as an example + +00:07:39.400 --> 00:07:41.883 +on how we can do with CLEDE. + +00:07:41.983 --> 00:07:43.633 +Let's look at the features, + +00:07:43.733 --> 00:07:46.267 +and then we go to a demo. + +00:07:51.367 --> 00:07:54.000 +You can go to the repository. + +00:07:54.100 --> 00:07:56.550 +Currently, it's not in Melpa + +00:07:56.650 --> 00:07:57.917 +although I wanted + +00:07:58.017 --> 00:08:01.250 +to merge it-- I mean, to add it-- + +00:08:01.450 --> 00:08:04.667 +to Melpa in the future. + +00:08:04.767 --> 00:08:06.367 +I want to clean the code and + +00:08:06.467 --> 00:08:07.417 +add some more features; + +00:08:07.517 --> 00:08:09.650 +I'm working on that and now + +00:08:09.750 --> 00:08:12.567 +like an eagle, so to say... + +00:08:12.667 --> 00:08:15.533 +but yeah, you can go here and then check + +00:08:15.633 --> 00:08:18.833 +all the features and test it. + +00:08:18.933 --> 00:08:20.733 +To install is pretty easy: + +00:08:20.833 --> 00:08:22.500 +just "add to path" thing. + +00:08:22.600 --> 00:08:23.650 +You don't need any external dependencies; + +00:08:23.750 --> 00:08:25.817 +everything's in Emacs. + +00:08:25.917 --> 00:08:28.467 +This was tested with Emacs 27, + +00:08:28.567 --> 00:08:29.883 +but probably going to work + +00:08:29.983 --> 00:08:32.750 +with Emacs 25 onwards so + +00:08:32.850 --> 00:08:34.267 +it shouldn't be any problem. + +00:08:34.367 --> 00:08:38.633 +So let's go with the features. + +00:08:38.733 --> 00:08:42.783 +This is some CEDET integrations, + +00:08:42.883 --> 00:08:44.417 +and first, like I said, it has + +00:08:44.517 --> 00:08:48.000 +support for SLY, SLIME, and inferior Lisp. + +00:08:48.100 --> 00:08:49.517 +If you are Common Lisp developer, you + +00:08:49.617 --> 00:08:52.267 +probably know a SLIME and a SLY, + +00:08:52.367 --> 00:08:53.483 +and inferior Lisp is basically + +00:08:53.583 --> 00:08:57.800 +just stock Emacs REPL. + +00:08:57.900 --> 00:09:00.817 +I support all three equally, so to say, + +00:09:00.917 --> 00:09:05.583 +and we have also `fiveam` integration, + +00:09:05.683 --> 00:09:08.867 +the ability to-- as I'm going to show later, + +00:09:08.967 --> 00:09:10.883 +you have the ability to send a test-- + +00:09:10.983 --> 00:09:16.233 +either packages or an entire suite of tests, + +00:09:16.333 --> 00:09:21.350 +and `asdf`, which currently I'm just + +00:09:21.450 --> 00:09:23.517 +supporting basic project navigation + +00:09:23.617 --> 00:09:25.433 +and some information, + +00:09:25.533 --> 00:09:28.517 +but it's a work-in-progress. + +00:09:28.617 --> 00:09:29.783 +I also have some general activities + +00:09:29.883 --> 00:09:31.917 +that are not directly related to CEDET + +00:09:32.017 --> 00:09:34.050 +but part of the CLEDE package, which + +00:09:34.150 --> 00:09:35.500 +is CLEDE highlight. + +00:09:35.600 --> 00:09:36.817 +It's highly inspired by the + +00:09:36.917 --> 00:09:41.167 +Emacs re-factor `erefactor`. + +00:09:41.267 --> 00:09:43.950 +Basically, you have some nice + +00:09:44.050 --> 00:09:47.883 +highlights for lint variables. + +00:09:47.983 --> 00:09:49.467 +I want to expand that to also + +00:09:49.567 --> 00:09:53.133 +support parameters and function stuff, + +00:09:53.233 --> 00:09:56.300 +but it's not a high priority for me. + +00:09:56.400 --> 00:09:58.117 +But yeah, I sometimes use this; + +00:09:58.217 --> 00:10:01.950 +it's pretty neat when you have a big lint. + +00:10:02.050 --> 00:10:05.333 +Also some refactoring utilities... + +00:10:05.433 --> 00:10:06.700 +some of those can be said + +00:10:06.800 --> 00:10:08.400 +that it's overlapped with some... + +00:10:08.500 --> 00:10:12.467 +because it is a string base, it doesn't + +00:10:12.567 --> 00:10:15.983 +have too much context information, + +00:10:16.083 --> 00:10:17.967 +but yeah, some sort of + +00:10:18.067 --> 00:10:22.167 +`replace-symbol-in-region` and `symbol-tag`. + +00:10:22.267 --> 00:10:23.867 +And then some CLEDE commands. + +00:10:23.967 --> 00:10:25.500 +This is the thing that I use all the time. + +00:10:25.600 --> 00:10:26.067 +It's like you're going to find + +00:10:26.167 --> 00:10:29.067 +some commands to send to a REPL. + +00:10:29.167 --> 00:10:31.367 +I will show some example, but basically, + +00:10:31.467 --> 00:10:32.983 +you have already an example. + +00:10:33.083 --> 00:10:34.333 +You define a list of commands, + +00:10:34.433 --> 00:10:37.867 +you put name, and then you put the + +00:10:37.967 --> 00:10:39.300 +Common Lisp code that you want to send. + +00:10:39.400 --> 00:10:41.550 +Given that, you're writing this + +00:10:41.650 --> 00:10:43.483 +Emacs Lisp in your configuration. + +00:10:43.583 --> 00:10:46.867 +You can have some runtime information + +00:10:46.967 --> 00:10:49.450 +when the code is sent, right? + +00:10:49.550 --> 00:10:53.450 +so insert, get a variable value, or whatever. + +00:10:53.550 --> 00:10:56.133 +OK, `imenu` integration. + +00:10:56.233 --> 00:10:58.967 +Yes, Semantic... + +00:10:59.067 --> 00:11:02.450 +CEDET has a great `imenu` utilities + +00:11:02.550 --> 00:11:05.600 +to have a better `imenu`. + +00:11:05.700 --> 00:11:10.383 +`imenu-list` also works really well. + +00:11:10.483 --> 00:11:12.917 +So you have better... when you go to a file + +00:11:13.017 --> 00:11:15.200 +that you don't fully know what is inside, + +00:11:15.300 --> 00:11:20.533 +it's better to navigate having like a tree. + +00:11:20.633 --> 00:11:22.383 +Yeah, this one's the thing is going + +00:11:22.483 --> 00:11:24.783 +to show that Senator, which is + +00:11:24.883 --> 00:11:26.633 +Semantic navigator, and then some + +00:11:26.733 --> 00:11:30.217 +Semantic-specific tools like `complete-jump`, + +00:11:30.317 --> 00:11:32.750 +which I don't use this one too much + +00:11:32.850 --> 00:11:35.300 +because we have SLY/SLIME, + +00:11:35.400 --> 00:11:39.083 +but they're there, so yeah. + +00:11:39.183 --> 00:11:41.433 +Like I said, Common Lisp library support, + +00:11:41.533 --> 00:11:44.333 +which is duplicated. + +00:11:44.433 --> 00:11:47.017 +OK, so let's go to the demo. + +00:11:47.117 --> 00:11:50.983 +Um. + +00:11:51.083 --> 00:11:53.567 +Let's go to the demo file. + +00:11:53.667 --> 00:11:55.300 +Right. + +00:11:55.400 --> 00:11:58.250 +First, we have to do is enable CLEDE. + +00:11:58.350 --> 00:11:59.433 +This is pretty easy: + +00:11:59.533 --> 00:12:03.400 +we call `clede-start`, right, + +00:12:03.500 --> 00:12:05.100 +and now it's started. + +00:12:05.200 --> 00:12:08.100 +CLEDE is not an asynchronous parser so + +00:12:08.200 --> 00:12:10.900 +Semantic (in this case, Bovine) is not. + +00:12:11.000 --> 00:12:15.917 +If the file is large, it may take some time. + +00:12:16.017 --> 00:12:16.017 +It shouldn't because we have + +00:12:16.117 --> 00:12:19.117 +powerful computers, but if your + +00:12:19.217 --> 00:12:21.917 +computer is not that powerful, + +00:12:22.017 --> 00:12:22.933 +it may take a while. + +00:12:23.033 --> 00:12:26.117 +To see the information that has been + +00:12:26.217 --> 00:12:31.167 +parsed, we're going to call `bovinate`. + +00:12:31.267 --> 00:12:33.767 +Oops... oops... + +00:12:33.867 --> 00:12:36.033 +Oh! I have to-- sorry... + +00:12:36.133 --> 00:12:43.267 +Let's enable Semantic again. + +00:12:43.367 --> 00:12:45.217 +Let's start... `bovinate`... + +00:12:45.317 --> 00:12:48.117 +OK, so... + +00:12:48.217 --> 00:12:49.917 +This is the information that + +00:12:50.017 --> 00:12:52.983 +currently CLEDE is taking from the buffer. + +00:12:53.083 --> 00:12:55.517 +So we can see it's taking this, and + +00:12:55.617 --> 00:12:58.550 +it doesn't know what it is, + +00:12:58.550 --> 00:13:02.167 +so this is the tag name... + +00:13:02.267 --> 00:13:02.850 +this is the type, + +00:13:02.950 --> 00:13:03.733 +and these are some information + +00:13:03.833 --> 00:13:05.750 +and the location. + +00:13:05.850 --> 00:13:08.150 +OK, so we know that this is a variable, + +00:13:08.250 --> 00:13:10.150 +and it has the full value. + +00:13:10.250 --> 00:13:13.233 +You know this is a package, right, + +00:13:13.333 --> 00:13:15.450 +because it's defined as a package. + +00:13:15.550 --> 00:13:18.100 +It doesn't understand what this is. + +00:13:18.300 --> 00:13:18.967 +This node is a function + +00:13:19.067 --> 00:13:19.817 +because of the `fun`, + +00:13:19.917 --> 00:13:23.133 +and some of this is code, + +00:13:23.233 --> 00:13:25.917 +and it also understands some tests + +00:13:26.017 --> 00:13:27.667 +because it has `fiveam` integration. + +00:13:27.767 --> 00:13:31.000 +If it detects that has some test here + +00:13:31.000 --> 00:13:34.517 +it will know that, indeed, it is test. + +00:13:34.517 --> 00:13:40.317 +So let's try some, first, `imenu`. + +00:13:40.417 --> 00:13:42.550 +So we can see here we have... + +00:13:42.650 --> 00:13:44.750 +I understand that this have + +00:13:44.850 --> 00:13:46.600 +some sort of `fiveam` switch + +00:13:46.700 --> 00:13:49.350 +and some tests defined. + +00:13:49.450 --> 00:13:51.000 +It understands this package, and + +00:13:51.100 --> 00:13:52.783 +it'll give you some variables-- `defuns`, + +00:13:52.883 --> 00:13:55.117 +and it also will give you some misc + +00:13:55.217 --> 00:13:59.917 +for things that doesn't know what it is. + +00:14:00.017 --> 00:14:00.983 +And you can also + +00:14:01.083 --> 00:14:04.417 +navigate with this-- like this `imenu`. + +00:14:06.000 --> 00:14:12.000 +So, um, let's go first with some Senator. + +00:14:12.000 --> 00:14:14.867 +So with Senator, we can navigate, + +00:14:14.967 --> 00:14:16.200 +go to the next stack, previous stack, + +00:14:16.300 --> 00:14:20.783 +all this, um, top-level `s-expression` + +00:14:20.883 --> 00:14:22.467 +are basically a tag, even though + +00:14:22.567 --> 00:14:28.467 +it's code... you can navigate, right. + +00:14:28.567 --> 00:14:31.333 +Um, copy/kill this or some other stuff. + +00:14:31.433 --> 00:14:34.017 +Um, some interesting thing that we can + +00:14:34.117 --> 00:14:38.717 +do is let's launch SLY, right. + +00:14:38.817 --> 00:14:44.317 +Um, let's load `fiveam`, + +00:14:44.417 --> 00:14:45.500 +and let's send some tests. + +00:14:45.600 --> 00:14:51.467 +We can say, OK, `clede-fiveam-send-current-test`, + +00:14:51.567 --> 00:14:53.033 +and it will-- OK, have to compile + +00:14:53.133 --> 00:14:54.750 +this file first. + +00:14:54.850 --> 00:14:55.983 +OK, you don't like this... + +00:14:56.083 --> 00:14:58.367 +you compile the tests. + +00:14:58.467 --> 00:15:03.667 +OK... um... well... + +00:15:03.767 --> 00:15:05.017 +I don't have-- yeah, I don't have + +00:15:05.117 --> 00:15:11.833 +the switch here so let's... + +00:15:11.933 --> 00:15:14.733 +OK, yeah because I guess it's getting... + +00:15:14.833 --> 00:15:19.583 +sorry about this... + +00:15:19.683 --> 00:15:22.983 +Let's say we're going to send this test... + +00:15:23.083 --> 00:15:28.667 +It isn't working... + +00:15:28.767 --> 00:15:36.967 +OK, why are you not working... + +00:15:37.067 --> 00:15:38.450 +maybe because we have to go + +00:15:38.550 --> 00:15:47.083 +to the package `fiveam`. + +00:15:47.183 --> 00:15:49.133 +Yes, sorry... um... + +00:15:49.233 --> 00:15:51.550 +Yeah, so we're gonna go here, and + +00:15:51.650 --> 00:15:54.117 +we can say `fiveam-send-tests`, + +00:15:54.217 --> 00:15:55.250 +and there we have it. + +00:15:55.350 --> 00:15:56.200 +It will send the test + +00:15:56.300 --> 00:16:00.217 +that we are currently in, right. + +00:16:00.317 --> 00:16:01.883 +So that's the thing. + +00:16:01.983 --> 00:16:04.000 +Another interesting thing that I said is + +00:16:04.000 --> 00:16:08.450 +`clede-highlight-minor-mode`. + +00:16:08.550 --> 00:16:11.567 +Basically, work in `let`'s context + +00:16:11.667 --> 00:16:13.450 +to know where to highlight + +00:16:13.550 --> 00:16:17.117 +all the variables, + +00:16:17.217 --> 00:16:20.217 +and we can disable. + +00:16:20.317 --> 00:16:21.833 +What else do we have? + +00:16:21.933 --> 00:16:24.100 +So we have framework integration. + +00:16:24.200 --> 00:16:25.900 +You can go `clede-` and + +00:16:26.000 --> 00:16:27.717 +see what more commands are. + +00:16:27.817 --> 00:16:29.767 +`commands-run` are basically a way + +00:16:29.867 --> 00:16:31.617 +to define commands, you have a variable, + +00:16:31.717 --> 00:16:35.317 +which is `clede-commands-list`. + +00:16:35.417 --> 00:16:37.233 +Let's explain that you can get + +00:16:37.333 --> 00:16:39.817 +some system working + +00:16:39.917 --> 00:16:42.617 +or whatever command you want, right. + +00:16:42.717 --> 00:16:46.083 +Also you have `asdf` basic integration. + +00:16:46.183 --> 00:16:48.067 +You can go to a definition file + +00:16:48.167 --> 00:16:51.050 +of some of the systems are already loaded. + +00:16:51.150 --> 00:16:53.667 +For example, let's go to here, + +00:16:53.767 --> 00:16:55.550 +and we go to the definition file-- + +00:16:55.650 --> 00:16:57.917 +there's the file, right? + +00:16:58.017 --> 00:16:59.000 +This is used because I'm sending + +00:16:59.100 --> 00:17:00.800 +commands for the REPL, so this + +00:17:00.900 --> 00:17:04.117 +functionality is not provided + +00:17:04.217 --> 00:17:09.167 +by CEDET or Semantic, + +00:17:09.267 --> 00:17:11.633 +but I can also get some sort + +00:17:11.733 --> 00:17:19.717 +of information for `asd` file, + +00:17:19.817 --> 00:17:21.550 +which is a work-in-progress, + +00:17:21.650 --> 00:17:23.100 +but you can go to some component file + +00:17:23.200 --> 00:17:24.150 +when you have a big `asd` file + +00:17:24.250 --> 00:17:25.200 +with lots of components + +00:17:25.300 --> 00:17:27.783 +and some other interesting thing. + +00:17:27.883 --> 00:17:30.283 +Like I said, that's a work-in-progress, + +00:17:30.383 --> 00:17:34.967 +Yes, so this is most of the functionality. + +00:17:35.067 --> 00:17:37.000 +The most interesting thing, I think, + +00:17:37.100 --> 00:17:40.267 +is the base for the foundation. + +00:17:40.367 --> 00:17:43.000 +So you can expand: let's go to source code, + +00:17:43.100 --> 00:17:48.333 +for example, that `fiveam`. + +00:17:48.433 --> 00:17:49.900 +So as we can see here, this is + +00:17:50.000 --> 00:17:53.433 +the `fiveam` integration, and to add it, + +00:17:53.533 --> 00:17:58.233 +I just define some new functions, + +00:17:58.333 --> 00:18:01.983 +and then you use this... + +00:18:02.083 --> 00:18:04.150 +set up a new form parser that we use + +00:18:04.250 --> 00:18:06.400 +to get some information + +00:18:06.500 --> 00:18:09.150 +about the `s-expression` top-level, + +00:18:09.250 --> 00:18:10.433 +and we define the names, + +00:18:10.533 --> 00:18:11.617 +we define information we want to take + +00:18:11.717 --> 00:18:13.700 +from the symbol and everything else. + +00:18:13.800 --> 00:18:17.133 +Also some [??] types + +00:18:17.233 --> 00:18:19.367 +that would be going to be added + +00:18:19.467 --> 00:18:21.067 +to the `imenu` thing: + +00:18:21.167 --> 00:18:24.033 +for example, `imenu test switch and test`. + +00:18:24.133 --> 00:18:27.317 +And then, these are, for example, + +00:18:27.417 --> 00:18:29.333 +some function to send information + +00:18:29.433 --> 00:18:33.483 +to the SLY, SLIME, or inferior Lisp + +00:18:33.583 --> 00:18:37.050 +depending on the Lisp that you're using. + +00:18:37.150 --> 00:18:39.400 +So I do not have more time. + +00:18:39.500 --> 00:18:40.367 +Sorry about that. + +00:18:40.467 --> 00:18:44.917 +Thank you very much. + +00:18:45.017 --> 00:18:46.383 +My name is Fermin. + +00:18:46.483 --> 00:18:49.733 +You can send me a mail in my mail, + +00:18:49.833 --> 00:18:51.233 +and that's my webpage. + +00:18:51.333 --> 00:18:54.950 +I hope you like it. |