<a name="transcript"></a>
# Transcript
Thanks to Hannah Miller for these captions!
[[!template text="My name is Fermin. I work as" start="00:00:04.467" video="mainVideo" id=subtitle]]
[[!template text="a Common Lisp engineer at RavenPack," start="00:00:07.617" video="mainVideo" id=subtitle]]
[[!template text="and today I'm going to talk about" start="00:00:09.817" video="mainVideo" id=subtitle]]
[[!template text="CLEDE: the Common Lisp Emacs Development Environment." start="00:00:11.833" video="mainVideo" id=subtitle]]
[[!template text="So what is CLEDE?" start="00:00:15.883" video="mainVideo" id=subtitle]]
[[!template text="So CLEDE is a project" start="00:00:19.500" video="mainVideo" id=subtitle]]
[[!template text="I've been working on this year" start="00:00:20.500" video="mainVideo" id=subtitle]]
[[!template text="for better... well, yeah..." start="00:00:22.117" video="mainVideo" id=subtitle]]
[[!template text="a better Common Lisp integration" start="00:00:24.750" video="mainVideo" id=subtitle]]
[[!template text="for static tools and" start="00:00:27.217" video="mainVideo" id=subtitle]]
[[!template text="for static and integrated Emacs tools." start="00:00:30.417" video="mainVideo" id=subtitle]]
[[!template text="And to understand better what" start="00:00:33.350" video="mainVideo" id=subtitle]]
[[!template text="CLEDE is, one first has to understand" start="00:00:35.467" video="mainVideo" id=subtitle]]
[[!template text="the base that I use..." start="00:00:37.750" video="mainVideo" id=subtitle]]
[[!template text="so the foundation that I use for CLEDE." start="00:00:40.233" video="mainVideo" id=subtitle]]
[[!template text="Um, so it is CEDET--" start="00:00:43.867" video="mainVideo" id=subtitle]]
[[!template text="and specifically Semantic--" start="00:00:46.150" video="mainVideo" id=subtitle]]
[[!template text="so we first have to talk about and" start="00:00:47.517" video="mainVideo" id=subtitle]]
[[!template text="understand what it is." start="00:00:49.833" video="mainVideo" id=subtitle]]
[[!template text="So CEDET is a collection" start="00:00:50.517" video="mainVideo" id=subtitle]]
[[!template text="of Emacs development environment tools." start="00:00:53.917" video="mainVideo" id=subtitle]]
[[!template text="It was created by Eric Ludlam" start="00:00:55.283" video="mainVideo" id=subtitle]]
[[!template text="(I hope to say that name right)" start="00:00:57.333" video="mainVideo" id=subtitle]]
[[!template text="in the late 90s, and" start="00:01:00.867" video="mainVideo" id=subtitle]]
[[!template text="the idea was to create entire IDE for Emacs." start="00:01:02.433" video="mainVideo" id=subtitle]]
[[!template text="CEDET is still integrated into Emacs," start="00:01:04.933" video="mainVideo" id=subtitle]]
[[!template text="and it has a lot of interesting things" start="00:01:10.533" video="mainVideo" id=subtitle]]
[[!template text="that are not used for too many people," start="00:01:11.817" video="mainVideo" id=subtitle]]
[[!template text="so I'm going to explain some of those." start="00:01:14.133" video="mainVideo" id=subtitle]]
[[!template text="First, let's go with the good ones that" start="00:01:16.267" video="mainVideo" id=subtitle]]
[[!template text="one that I use for CLEDE and that can" start="00:01:18.517" video="mainVideo" id=subtitle]]
[[!template text="be used for other projects as well." start="00:01:21.333" video="mainVideo" id=subtitle]]
[[!template text="Some of the features that" start="00:01:23.267" video="mainVideo" id=subtitle]]
[[!template text="CEDET has is parse generators" start="00:01:28.550" video="mainVideo" id=subtitle]]
[[!template text="so we have Wisent and Bovine." start="00:01:32.550" video="mainVideo" id=subtitle]]
[[!template text="Wisent is basically a Bison clone" start="00:01:35.317" video="mainVideo" id=subtitle]]
[[!template text="that was written in Emacs Lisp" start="00:01:38.450" video="mainVideo" id=subtitle]]
[[!template text="that you can also specify grammars." start="00:01:40.300" video="mainVideo" id=subtitle]]
[[!template text="It's a really big and rather complex" start="00:01:43.217" video="mainVideo" id=subtitle]]
[[!template text="tool to work with," start="00:01:45.717" video="mainVideo" id=subtitle]]
[[!template text="and it's secretly used for, as far as" start="00:01:47.450" video="mainVideo" id=subtitle]]
[[!template text="I know, two languages." start="00:01:49.283" video="mainVideo" id=subtitle]]
[[!template text="They're not also well supported," start="00:01:51.767" video="mainVideo" id=subtitle]]
[[!template text="but we'll get into that later." start="00:01:53.417" video="mainVideo" id=subtitle]]
[[!template text="Also Bovine, which is a way more" start="00:01:55.417" video="mainVideo" id=subtitle]]
[[!template text="simple tool, like you can..." start="00:01:58.233" video="mainVideo" id=subtitle]]
[[!template text="you don't need grammar files," start="00:01:59.967" video="mainVideo" id=subtitle]]
[[!template text="you can write just in plain Emacs Lisp." start="00:02:01.833" video="mainVideo" id=subtitle]]
[[!template text="And you also have utilities to work with" start="00:02:07.450" video="mainVideo" id=subtitle]]
[[!template text="those generated tag trees, so to say." start="00:02:11.017" video="mainVideo" id=subtitle]]
[[!template text="These are not AST parsers like real Bison;" start="00:02:16.650" video="mainVideo" id=subtitle]]
[[!template text="they are tag-based so they basically get" start="00:02:23.633" video="mainVideo" id=subtitle]]
[[!template text="tags and extract information from them," start="00:02:25.717" video="mainVideo" id=subtitle]]
[[!template text="and I can use that information" start="00:02:27.633" video="mainVideo" id=subtitle]]
[[!template text="with Emacs Lisp" start="00:02:30.183" video="mainVideo" id=subtitle]]
[[!template text="to contextually understand better" start="00:02:31.000" video="mainVideo" id=subtitle]]
[[!template text="the language that you're parsing," start="00:02:33.667" video="mainVideo" id=subtitle]]
[[!template text="but in general," start="00:02:36.367" video="mainVideo" id=subtitle]]
[[!template text="this decision was made (as far as I know)" start="00:02:37.183" video="mainVideo" id=subtitle]]
[[!template text="because of the Emacs Lisp" start="00:02:40.183" video="mainVideo" id=subtitle]]
[[!template text="limitation of the time." start="00:02:43.317" video="mainVideo" id=subtitle]]
[[!template text="So Emacs was a rather" start="00:02:44.317" video="mainVideo" id=subtitle]]
[[!template text="slower Lisp-- slow Lisp--" start="00:02:50.333" video="mainVideo" id=subtitle]]
[[!template text="so they decide to just use" start="00:02:52.267" video="mainVideo" id=subtitle]]
[[!template text="tag-based thing instead of a parse--" start="00:02:55.950" video="mainVideo" id=subtitle]]
[[!template text="I mean-- an AST-based one." start="00:02:58.850" video="mainVideo" id=subtitle]]
[[!template text="And Semantic give you some utility with" start="00:03:02.433" video="mainVideo" id=subtitle]]
[[!template text="that as Senator, for example, give you" start="00:03:05.267" video="mainVideo" id=subtitle]]
[[!template text="some semantic navigation." start="00:03:06.350" video="mainVideo" id=subtitle]]
[[!template text="So CEDET is way more than this," start="00:03:07.767" video="mainVideo" id=subtitle]]
[[!template text="but this is not a CEDET talk." start="00:03:09.850" video="mainVideo" id=subtitle]]
[[!template text="So if you want to get more information," start="00:03:12.533" video="mainVideo" id=subtitle]]
[[!template text="you can go to the official webpage." start="00:03:14.083" video="mainVideo" id=subtitle]]
[[!template text="I have to say that it is outdated, and" start="00:03:16.450" video="mainVideo" id=subtitle]]
[[!template text="Emacs changed some things over the years" start="00:03:20.033" video="mainVideo" id=subtitle]]
[[!template text="because CEDET was merged into Emacs" start="00:03:23.033" video="mainVideo" id=subtitle]]
[[!template text="in 2011, as far as I know." start="00:03:24.167" video="mainVideo" id=subtitle]]
[[!template text="You can also go to the official Emacs" start="00:03:27.867" video="mainVideo" id=subtitle]]
[[!template text="documentation (the manual), which will get" start="00:03:30.517" video="mainVideo" id=subtitle]]
[[!template text="more information about every tool," start="00:03:32.983" video="mainVideo" id=subtitle]]
[[!template text="but it's a really interesting thing, and" start="00:03:35.417" video="mainVideo" id=subtitle]]
[[!template text="I'm really sad that it is forgotten." start="00:03:38.417" video="mainVideo" id=subtitle]]
[[!template text="So let's go with the bad things:" start="00:03:40.983" video="mainVideo" id=subtitle]]
[[!template text="that CEDET is an abandoned project." start="00:03:43.333" video="mainVideo" id=subtitle]]
[[!template text="This has some benefits like it's not" start="00:03:46.583" video="mainVideo" id=subtitle]]
[[!template text="going to change that much," start="00:03:48.317" video="mainVideo" id=subtitle]]
[[!template text="but it's, of course, not ideal." start="00:03:50.650" video="mainVideo" id=subtitle]]
[[!template text="Most of the tooling that CEDET" start="00:03:52.467" video="mainVideo" id=subtitle]]
[[!template text="have right now are surpassed" start="00:03:56.933" video="mainVideo" id=subtitle]]
[[!template text="by other packages." start="00:03:58.200" video="mainVideo" id=subtitle]]
[[!template text="And at first, I know Eric was working" start="00:03:59.733" video="mainVideo" id=subtitle]]
[[!template text="with C at the time so he totally has" start="00:04:02.750" video="mainVideo" id=subtitle]]
[[!template text="" ;real support" ; so you can use CEDET" start="00:04:07.567" video="mainVideo" id=subtitle]]
[[!template text="for other languages, but" start="00:04:10.633" video="mainVideo" id=subtitle]]
[[!template text="to work really like an IDE, more or less," start="00:04:13.133" video="mainVideo" id=subtitle]]
[[!template text="it's all the..." start="00:04:15.483" video="mainVideo" id=subtitle]]
[[!template text="C is the only language supported," start="00:04:17.117" video="mainVideo" id=subtitle]]
[[!template text="and maybe some simple C++, but that's it." start="00:04:19.617" video="mainVideo" id=subtitle]]
[[!template text="It needs more documentation." start="00:04:21.767" video="mainVideo" id=subtitle]]
[[!template text="People really don't know how to use it" start="00:04:24.117" video="mainVideo" id=subtitle]]
[[!template text="because, I have to say, rather complex" start="00:04:25.783" video="mainVideo" id=subtitle]]
[[!template text="to get a project working with it," start="00:04:28.683" video="mainVideo" id=subtitle]]
[[!template text="and then make use of Semantic" start="00:04:30.167" video="mainVideo" id=subtitle]]
[[!template text="because it needs some maintenance and" start="00:04:33.817" video="mainVideo" id=subtitle]]
[[!template text="to update the code." start="00:04:36.767" video="mainVideo" id=subtitle]]
[[!template text="But I will argue that even with these" start="00:04:38.667" video="mainVideo" id=subtitle]]
[[!template text="deficiencies, it's usable, and" start="00:04:41.183" video="mainVideo" id=subtitle]]
[[!template text="I use the foundation of base for" start="00:04:44.483" video="mainVideo" id=subtitle]]
[[!template text="parse infrastructure for other languages." start="00:04:47.617" video="mainVideo" id=subtitle]]
[[!template text="I will say that with Common Lisp was" start="00:04:49.633" video="mainVideo" id=subtitle]]
[[!template text="rather easy because" start="00:04:52.467" video="mainVideo" id=subtitle]]
[[!template text="CEDET already have Emacs Lisp parser" start="00:04:54.083" video="mainVideo" id=subtitle]]
[[!template text="even though it's not great." start="00:04:56.133" video="mainVideo" id=subtitle]]
[[!template text="It's easy to adapt and to use." start="00:04:58.000" video="mainVideo" id=subtitle]]
[[!template text="It's not used in an Emacs" start="00:05:00.583" video="mainVideo" id=subtitle]]
[[!template text="right now because, well," start="00:05:04.100" video="mainVideo" id=subtitle]]
[[!template text="Emacs know very well itself," start="00:05:05.533" video="mainVideo" id=subtitle]]
[[!template text="but it's there." start="00:05:08.983" video="mainVideo" id=subtitle]]
[[!template text="So these, of course, are static parsers" start="00:05:11.700" video="mainVideo" id=subtitle]]
[[!template text="so you don't need to run any" start="00:05:17.683" video="mainVideo" id=subtitle]]
[[!template text="other language-specific tools, which is" start="00:05:19.617" video="mainVideo" id=subtitle]]
[[!template text="an advantage for some things." start="00:05:21.983" video="mainVideo" id=subtitle]]
[[!template text="And this was basically CEDET is," start="00:05:24.500" video="mainVideo" id=subtitle]]
[[!template text="and I use the parse infrastructure" start="00:05:27.233" video="mainVideo" id=subtitle]]
[[!template text="and some tools" start="00:05:30.383" video="mainVideo" id=subtitle]]
[[!template text="to create a parser for Common Lisp." start="00:05:31.433" video="mainVideo" id=subtitle]]
[[!template text="Well, more or less. *laughs*" start="00:05:34.433" video="mainVideo" id=subtitle]]
[[!template text="Let's go to details." start="00:05:36.800" video="mainVideo" id=subtitle]]
[[!template text="So I will say that it's not a parser" start="00:05:38.000" video="mainVideo" id=subtitle]]
[[!template text="by itself because, as we all know," start="00:05:39.950" video="mainVideo" id=subtitle]]
[[!template text="to parse a macro-based language" start="00:05:42.533" video="mainVideo" id=subtitle]]
[[!template text="is really hard." start="00:05:44.600" video="mainVideo" id=subtitle]]
[[!template text="Mostly if you cannot have contextual" start="00:05:46.933" video="mainVideo" id=subtitle]]
[[!template text="information because if you create code" start="00:05:48.550" video="mainVideo" id=subtitle]]
[[!template text="at compile time or runtime is really hard" start="00:05:52.900" video="mainVideo" id=subtitle]]
[[!template text="if you don't have run time, right?" start="00:05:56.133" video="mainVideo" id=subtitle]]
[[!template text="Basically, CLEDE can be described" start="00:05:59.333" video="mainVideo" id=subtitle]]
[[!template text="as a Semantic extension." start="00:06:01.050" video="mainVideo" id=subtitle]]
[[!template text="So basically it's like," start="00:06:02.700" video="mainVideo" id=subtitle]]
[[!template text="you can have Semantic" start="00:06:03.967" video="mainVideo" id=subtitle]]
[[!template text="and use it with Common Lisp code" start="00:06:07.233" video="mainVideo" id=subtitle]]
[[!template text="and some Common Lisp Emacs tools." start="00:06:09.917" video="mainVideo" id=subtitle]]
[[!template text="So Bison (which is not Bison) is" start="00:06:11.700" video="mainVideo" id=subtitle]]
[[!template text="Bovine, and Semantic and Senator" start="00:06:17.450" video="mainVideo" id=subtitle]]
[[!template text="for navigating tags," start="00:06:21.750" video="mainVideo" id=subtitle]]
[[!template text="and then communication with SLIME, SLY," start="00:06:24.850" video="mainVideo" id=subtitle]]
[[!template text="and inferior Lisp." start="00:06:26.467" video="mainVideo" id=subtitle]]
[[!template text="That means... I will show that later, but" start="00:06:28.833" video="mainVideo" id=subtitle]]
[[!template text="basically, you can parse the buffer," start="00:06:30.550" video="mainVideo" id=subtitle]]
[[!template text="get some tags," start="00:06:32.900" video="mainVideo" id=subtitle]]
[[!template text="get information about the tags that you want," start="00:06:34.267" video="mainVideo" id=subtitle]]
[[!template text="and then send some of that information" start="00:06:36.067" video="mainVideo" id=subtitle]]
[[!template text="to the SLIME, SLY, or inferior Lisp REPL buffer," start="00:06:38.117" video="mainVideo" id=subtitle]]
[[!template text="so you can get both things" start="00:06:44.000" video="mainVideo" id=subtitle]]
[[!template text="at the same time." start="00:06:45.817" video="mainVideo" id=subtitle]]
[[!template text="And given that it's a Lisp language," start="00:06:48.583" video="mainVideo" id=subtitle]]
[[!template text="this can be pretty interesting." start="00:06:50.317" video="mainVideo" id=subtitle]]
[[!template text="Also I wrote some common package integration," start="00:06:53.400" video="mainVideo" id=subtitle]]
[[!template text="so even though there's not" start="00:06:57.700" video="mainVideo" id=subtitle]]
[[!template text="a Common Lisp standard," start="00:06:59.317" video="mainVideo" id=subtitle]]
[[!template text="there's some libraries that are used" start="00:07:00.400" video="mainVideo" id=subtitle]]
[[!template text="by basically everyone." start="00:07:05.200" video="mainVideo" id=subtitle]]
[[!template text="They're not part of the standard," start="00:07:07.683" video="mainVideo" id=subtitle]]
[[!template text="but yeah." start="00:07:09.517" video="mainVideo" id=subtitle]]
[[!template text="A lot of people use it: like `asdf`," start="00:07:11.100" video="mainVideo" id=subtitle]]
[[!template text="which is the package manager," start="00:07:14.000" video="mainVideo" id=subtitle]]
[[!template text="I will say it's `asdf` is the" start="00:07:15.650" video="mainVideo" id=subtitle]]
[[!template text="definition packages, so to say," start="00:07:19.067" video="mainVideo" id=subtitle]]
[[!template text="better than packages itself" start="00:07:21.883" video="mainVideo" id=subtitle]]
[[!template text="and have more features." start="00:07:23.767" video="mainVideo" id=subtitle]]
[[!template text="I wrote a nice integration with it" start="00:07:26.417" video="mainVideo" id=subtitle]]
[[!template text="and also `fiveam`," start="00:07:28.483" video="mainVideo" id=subtitle]]
[[!template text="which is a well-known test package." start="00:07:29.600" video="mainVideo" id=subtitle]]
[[!template text="I just wrote this as an example" start="00:07:34.517" video="mainVideo" id=subtitle]]
[[!template text="on how we can do with CLEDE." start="00:07:39.400" video="mainVideo" id=subtitle]]
[[!template text="Let's look at the features," start="00:07:41.983" video="mainVideo" id=subtitle]]
[[!template text="and then we go to a demo." start="00:07:43.733" video="mainVideo" id=subtitle]]
[[!template text="You can go to the repository." start="00:07:51.367" video="mainVideo" id=subtitle]]
[[!template text="Currently, it's not in Melpa" start="00:07:54.100" video="mainVideo" id=subtitle]]
[[!template text="although I wanted" start="00:07:56.650" video="mainVideo" id=subtitle]]
[[!template text="to merge it-- I mean, to add it--" start="00:07:58.017" video="mainVideo" id=subtitle]]
[[!template text="to Melpa in the future." start="00:08:01.450" video="mainVideo" id=subtitle]]
[[!template text="I want to clean the code and" start="00:08:04.767" video="mainVideo" id=subtitle]]
[[!template text="add some more features;" start="00:08:06.467" video="mainVideo" id=subtitle]]
[[!template text="I'm working on that and now" start="00:08:07.517" video="mainVideo" id=subtitle]]
[[!template text="like an eagle, so to say..." start="00:08:09.750" video="mainVideo" id=subtitle]]
[[!template text="but yeah, you can go here and then check" start="00:08:12.667" video="mainVideo" id=subtitle]]
[[!template text="all the features and test it." start="00:08:15.633" video="mainVideo" id=subtitle]]
[[!template text="To install is pretty easy:" start="00:08:18.933" video="mainVideo" id=subtitle]]
[[!template text="just " ;add to path" ; thing." start="00:08:20.833" video="mainVideo" id=subtitle]]
[[!template text="You don't need any external dependencies;" start="00:08:22.600" video="mainVideo" id=subtitle]]
[[!template text="everything's in Emacs." start="00:08:23.750" video="mainVideo" id=subtitle]]
[[!template text="This was tested with Emacs 27," start="00:08:25.917" video="mainVideo" id=subtitle]]
[[!template text="but probably going to work" start="00:08:28.567" video="mainVideo" id=subtitle]]
[[!template text="with Emacs 25 onwards so" start="00:08:29.983" video="mainVideo" id=subtitle]]
[[!template text="it shouldn't be any problem." start="00:08:32.850" video="mainVideo" id=subtitle]]
[[!template text="So let's go with the features." start="00:08:34.367" video="mainVideo" id=subtitle]]
[[!template text="This is some CEDET integrations," start="00:08:38.733" video="mainVideo" id=subtitle]]
[[!template text="and first, like I said, it has" start="00:08:42.883" video="mainVideo" id=subtitle]]
[[!template text="support for SLY, SLIME, and inferior Lisp." start="00:08:44.517" video="mainVideo" id=subtitle]]
[[!template text="If you are Common Lisp developer, you" start="00:08:48.100" video="mainVideo" id=subtitle]]
[[!template text="probably know a SLIME and a SLY," start="00:08:49.617" video="mainVideo" id=subtitle]]
[[!template text="and inferior Lisp is basically" start="00:08:52.367" video="mainVideo" id=subtitle]]
[[!template text="just stock Emacs REPL." start="00:08:53.583" video="mainVideo" id=subtitle]]
[[!template text="I support all three equally, so to say," start="00:08:57.900" video="mainVideo" id=subtitle]]
[[!template text="and we have also `fiveam` integration," start="00:09:00.917" video="mainVideo" id=subtitle]]
[[!template text="the ability to-- as I'm going to show later," start="00:09:05.683" video="mainVideo" id=subtitle]]
[[!template text="you have the ability to send a test--" start="00:09:08.967" video="mainVideo" id=subtitle]]
[[!template text="either packages or an entire suite of tests," start="00:09:10.983" video="mainVideo" id=subtitle]]
[[!template text="and `asdf`, which currently I'm just" start="00:09:16.333" video="mainVideo" id=subtitle]]
[[!template text="supporting basic project navigation" start="00:09:21.450" video="mainVideo" id=subtitle]]
[[!template text="and some information," start="00:09:23.617" video="mainVideo" id=subtitle]]
[[!template text="but it's a work-in-progress." start="00:09:25.533" video="mainVideo" id=subtitle]]
[[!template text="I also have some general activities" start="00:09:28.617" video="mainVideo" id=subtitle]]
[[!template text="that are not directly related to CEDET" start="00:09:29.883" video="mainVideo" id=subtitle]]
[[!template text="but part of the CLEDE package, which" start="00:09:32.017" video="mainVideo" id=subtitle]]
[[!template text="is CLEDE highlight." start="00:09:34.150" video="mainVideo" id=subtitle]]
[[!template text="It's highly inspired by the" start="00:09:35.600" video="mainVideo" id=subtitle]]
[[!template text="Emacs re-factor `erefactor`." start="00:09:36.917" video="mainVideo" id=subtitle]]
[[!template text="Basically, you have some nice" start="00:09:41.267" video="mainVideo" id=subtitle]]
[[!template text="highlights for lint variables." start="00:09:44.050" video="mainVideo" id=subtitle]]
[[!template text="I want to expand that to also" start="00:09:47.983" video="mainVideo" id=subtitle]]
[[!template text="support parameters and function stuff," start="00:09:49.567" video="mainVideo" id=subtitle]]
[[!template text="but it's not a high priority for me." start="00:09:53.233" video="mainVideo" id=subtitle]]
[[!template text="But yeah, I sometimes use this;" start="00:09:56.400" video="mainVideo" id=subtitle]]
[[!template text="it's pretty neat when you have a big lint." start="00:09:58.217" video="mainVideo" id=subtitle]]
[[!template text="Also some refactoring utilities..." start="00:10:02.050" video="mainVideo" id=subtitle]]
[[!template text="some of those can be said" start="00:10:05.433" video="mainVideo" id=subtitle]]
[[!template text="that it's overlapped with some..." start="00:10:06.800" video="mainVideo" id=subtitle]]
[[!template text="because it is a string base, it doesn't" start="00:10:08.500" video="mainVideo" id=subtitle]]
[[!template text="have too much context information," start="00:10:12.567" video="mainVideo" id=subtitle]]
[[!template text="but yeah, some sort of" start="00:10:16.083" video="mainVideo" id=subtitle]]
[[!template text="`replace-symbol-in-region` and `symbol-tag`." start="00:10:18.067" video="mainVideo" id=subtitle]]
[[!template text="And then some CLEDE commands." start="00:10:22.267" video="mainVideo" id=subtitle]]
[[!template text="This is the thing that I use all the time." start="00:10:23.967" video="mainVideo" id=subtitle]]
[[!template text="It's like you're going to find" start="00:10:25.600" video="mainVideo" id=subtitle]]
[[!template text="some commands to send to a REPL." start="00:10:26.167" video="mainVideo" id=subtitle]]
[[!template text="I will show some example, but basically," start="00:10:29.167" video="mainVideo" id=subtitle]]
[[!template text="you have already an example." start="00:10:31.467" video="mainVideo" id=subtitle]]
[[!template text="You define a list of commands," start="00:10:33.083" video="mainVideo" id=subtitle]]
[[!template text="you put name, and then you put the" start="00:10:34.433" video="mainVideo" id=subtitle]]
[[!template text="Common Lisp code that you want to send." start="00:10:37.967" video="mainVideo" id=subtitle]]
[[!template text="Given that, you're writing this" start="00:10:39.400" video="mainVideo" id=subtitle]]
[[!template text="Emacs Lisp in your configuration." start="00:10:41.650" video="mainVideo" id=subtitle]]
[[!template text="You can have some runtime information" start="00:10:43.583" video="mainVideo" id=subtitle]]
[[!template text="when the code is sent, right?" start="00:10:46.967" video="mainVideo" id=subtitle]]
[[!template text="so insert, get a variable value, or whatever." start="00:10:49.550" video="mainVideo" id=subtitle]]
[[!template text="OK, `imenu` integration." start="00:10:53.550" video="mainVideo" id=subtitle]]
[[!template text="Yes, Semantic..." start="00:10:56.233" video="mainVideo" id=subtitle]]
[[!template text="CEDET has a great `imenu` utilities" start="00:10:59.067" video="mainVideo" id=subtitle]]
[[!template text="to have a better `imenu`." start="00:11:02.550" video="mainVideo" id=subtitle]]
[[!template text="`imenu-list` also works really well." start="00:11:05.700" video="mainVideo" id=subtitle]]
[[!template text="So you have better... when you go to a file" start="00:11:10.483" video="mainVideo" id=subtitle]]
[[!template text="that you don't fully know what is inside," start="00:11:13.017" video="mainVideo" id=subtitle]]
[[!template text="it's better to navigate having like a tree." start="00:11:15.300" video="mainVideo" id=subtitle]]
[[!template text="Yeah, this one's the thing is going" start="00:11:20.633" video="mainVideo" id=subtitle]]
[[!template text="to show that Senator, which is" start="00:11:22.483" video="mainVideo" id=subtitle]]
[[!template text="Semantic navigator, and then some" start="00:11:24.883" video="mainVideo" id=subtitle]]
[[!template text="Semantic-specific tools like `complete-jump`," start="00:11:26.733" video="mainVideo" id=subtitle]]
[[!template text="which I don't use this one too much" start="00:11:30.317" video="mainVideo" id=subtitle]]
[[!template text="because we have SLY/SLIME," start="00:11:32.850" video="mainVideo" id=subtitle]]
[[!template text="but they're there, so yeah." start="00:11:35.400" video="mainVideo" id=subtitle]]
[[!template text="Like I said, Common Lisp library support," start="00:11:39.183" video="mainVideo" id=subtitle]]
[[!template text="which is duplicated." start="00:11:41.533" video="mainVideo" id=subtitle]]
[[!template text="OK, so let's go to the demo." start="00:11:44.433" video="mainVideo" id=subtitle]]
[[!template text="Um." start="00:11:47.117" video="mainVideo" id=subtitle]]
[[!template text="Let's go to the demo file." start="00:11:51.083" video="mainVideo" id=subtitle]]
[[!template text="Right." start="00:11:53.667" video="mainVideo" id=subtitle]]
[[!template text="First, we have to do is enable CLEDE." start="00:11:55.400" video="mainVideo" id=subtitle]]
[[!template text="This is pretty easy:" start="00:11:58.350" video="mainVideo" id=subtitle]]
[[!template text="we call `clede-start`, right," start="00:11:59.533" video="mainVideo" id=subtitle]]
[[!template text="and now it's started." start="00:12:03.500" video="mainVideo" id=subtitle]]
[[!template text="CLEDE is not an asynchronous parser so" start="00:12:05.200" video="mainVideo" id=subtitle]]
[[!template text="Semantic (in this case, Bovine) is not." start="00:12:08.200" video="mainVideo" id=subtitle]]
[[!template text="If the file is large, it may take some time." start="00:12:11.000" video="mainVideo" id=subtitle]]
[[!template text="It shouldn't because we have" start="00:12:16.017" video="mainVideo" id=subtitle]]
[[!template text="powerful computers, but if your" start="00:12:16.117" video="mainVideo" id=subtitle]]
[[!template text="computer is not that powerful," start="00:12:19.217" video="mainVideo" id=subtitle]]
[[!template text="it may take a while." start="00:12:22.017" video="mainVideo" id=subtitle]]
[[!template text="To see the information that has been" start="00:12:23.033" video="mainVideo" id=subtitle]]
[[!template text="parsed, we're going to call `bovinate`." start="00:12:26.217" video="mainVideo" id=subtitle]]
[[!template text="Oops... oops..." start="00:12:31.267" video="mainVideo" id=subtitle]]
[[!template text="Oh! I have to-- sorry..." start="00:12:33.867" video="mainVideo" id=subtitle]]
[[!template text="Let's enable Semantic again." start="00:12:36.133" video="mainVideo" id=subtitle]]
[[!template text="Let's start... `bovinate`..." start="00:12:43.367" video="mainVideo" id=subtitle]]
[[!template text="OK, so..." start="00:12:45.317" video="mainVideo" id=subtitle]]
[[!template text="This is the information that" start="00:12:48.217" video="mainVideo" id=subtitle]]
[[!template text="currently CLEDE is taking from the buffer." start="00:12:50.017" video="mainVideo" id=subtitle]]
[[!template text="So we can see it's taking this, and" start="00:12:53.083" video="mainVideo" id=subtitle]]
[[!template text="it doesn't know what it is," start="00:12:55.617" video="mainVideo" id=subtitle]]
[[!template text="so this is the tag name..." start="00:12:58.550" video="mainVideo" id=subtitle]]
[[!template text="this is the type," start="00:13:02.267" video="mainVideo" id=subtitle]]
[[!template text="and these are some information" start="00:13:02.950" video="mainVideo" id=subtitle]]
[[!template text="and the location." start="00:13:03.833" video="mainVideo" id=subtitle]]
[[!template text="OK, so we know that this is a variable," start="00:13:05.850" video="mainVideo" id=subtitle]]
[[!template text="and it has the full value." start="00:13:08.250" video="mainVideo" id=subtitle]]
[[!template text="You know this is a package, right," start="00:13:10.250" video="mainVideo" id=subtitle]]
[[!template text="because it's defined as a package." start="00:13:13.333" video="mainVideo" id=subtitle]]
[[!template text="It doesn't understand what this is." start="00:13:15.550" video="mainVideo" id=subtitle]]
[[!template text="This node is a function" start="00:13:18.300" video="mainVideo" id=subtitle]]
[[!template text="because of the `fun`," start="00:13:19.067" video="mainVideo" id=subtitle]]
[[!template text="and some of this is code," start="00:13:19.917" video="mainVideo" id=subtitle]]
[[!template text="and it also understands some tests" start="00:13:23.233" video="mainVideo" id=subtitle]]
[[!template text="because it has `fiveam` integration." start="00:13:26.017" video="mainVideo" id=subtitle]]
[[!template text="If it detects that has some test here" start="00:13:27.767" video="mainVideo" id=subtitle]]
[[!template text="it will know that, indeed, it is test." start="00:13:31.000" video="mainVideo" id=subtitle]]
[[!template text="So let's try some, first, `imenu`." start="00:13:34.517" video="mainVideo" id=subtitle]]
[[!template text="So we can see here we have..." start="00:13:40.417" video="mainVideo" id=subtitle]]
[[!template text="I understand that this have" start="00:13:42.650" video="mainVideo" id=subtitle]]
[[!template text="some sort of `fiveam` switch" start="00:13:44.850" video="mainVideo" id=subtitle]]
[[!template text="and some tests defined." start="00:13:46.700" video="mainVideo" id=subtitle]]
[[!template text="It understands this package, and" start="00:13:49.450" video="mainVideo" id=subtitle]]
[[!template text="it'll give you some variables-- `defuns`," start="00:13:51.100" video="mainVideo" id=subtitle]]
[[!template text="and it also will give you some misc" start="00:13:52.883" video="mainVideo" id=subtitle]]
[[!template text="for things that doesn't know what it is." start="00:13:55.217" video="mainVideo" id=subtitle]]
[[!template text="And you can also" start="00:14:00.017" video="mainVideo" id=subtitle]]
[[!template text="navigate with this-- like this `imenu`." start="00:14:01.083" video="mainVideo" id=subtitle]]
[[!template text="So, um, let's go first with some Senator." start="00:14:06.000" video="mainVideo" id=subtitle]]
[[!template text="So with Senator, we can navigate," start="00:14:12.000" video="mainVideo" id=subtitle]]
[[!template text="go to the next stack, previous stack," start="00:14:14.967" video="mainVideo" id=subtitle]]
[[!template text="all this, um, top-level `s-expression`" start="00:14:16.300" video="mainVideo" id=subtitle]]
[[!template text="are basically a tag, even though" start="00:14:20.883" video="mainVideo" id=subtitle]]
[[!template text="it's code... you can navigate, right." start="00:14:22.567" video="mainVideo" id=subtitle]]
[[!template text="Um, copy/kill this or some other stuff." start="00:14:28.567" video="mainVideo" id=subtitle]]
[[!template text="Um, some interesting thing that we can" start="00:14:31.433" video="mainVideo" id=subtitle]]
[[!template text="do is let's launch SLY, right." start="00:14:34.117" video="mainVideo" id=subtitle]]
[[!template text="Um, let's load `fiveam`," start="00:14:38.817" video="mainVideo" id=subtitle]]
[[!template text="and let's send some tests." start="00:14:44.417" video="mainVideo" id=subtitle]]
[[!template text="We can say, OK, `clede-fiveam-send-current-test`," start="00:14:45.600" video="mainVideo" id=subtitle]]
[[!template text="and it will-- OK, have to compile" start="00:14:51.567" video="mainVideo" id=subtitle]]
[[!template text="this file first." start="00:14:53.133" video="mainVideo" id=subtitle]]
[[!template text="OK, you don't like this..." start="00:14:54.850" video="mainVideo" id=subtitle]]
[[!template text="you compile the tests." start="00:14:56.083" video="mainVideo" id=subtitle]]
[[!template text="OK... um... well..." start="00:14:58.467" video="mainVideo" id=subtitle]]
[[!template text="I don't have-- yeah, I don't have" start="00:15:03.767" video="mainVideo" id=subtitle]]
[[!template text="the switch here so let's..." start="00:15:05.117" video="mainVideo" id=subtitle]]
[[!template text="OK, yeah because I guess it's getting..." start="00:15:11.933" video="mainVideo" id=subtitle]]
[[!template text="sorry about this..." start="00:15:14.833" video="mainVideo" id=subtitle]]
[[!template text="Let's say we're going to send this test..." start="00:15:19.683" video="mainVideo" id=subtitle]]
[[!template text="It isn't working..." start="00:15:23.083" video="mainVideo" id=subtitle]]
[[!template text="OK, why are you not working..." start="00:15:28.767" video="mainVideo" id=subtitle]]
[[!template text="maybe because we have to go" start="00:15:37.067" video="mainVideo" id=subtitle]]
[[!template text="to the package `fiveam`." start="00:15:38.550" video="mainVideo" id=subtitle]]
[[!template text="Yes, sorry... um..." start="00:15:47.183" video="mainVideo" id=subtitle]]
[[!template text="Yeah, so we're gonna go here, and" start="00:15:49.233" video="mainVideo" id=subtitle]]
[[!template text="we can say `fiveam-send-tests`," start="00:15:51.650" video="mainVideo" id=subtitle]]
[[!template text="and there we have it." start="00:15:54.217" video="mainVideo" id=subtitle]]
[[!template text="It will send the test" start="00:15:55.350" video="mainVideo" id=subtitle]]
[[!template text="that we are currently in, right." start="00:15:56.300" video="mainVideo" id=subtitle]]
[[!template text="So that's the thing." start="00:16:00.317" video="mainVideo" id=subtitle]]
[[!template text="Another interesting thing that I said is" start="00:16:01.983" video="mainVideo" id=subtitle]]
[[!template text="`clede-highlight-minor-mode`." start="00:16:04.000" video="mainVideo" id=subtitle]]
[[!template text="Basically, work in `let`'s context" start="00:16:08.550" video="mainVideo" id=subtitle]]
[[!template text="to know where to highlight" start="00:16:11.667" video="mainVideo" id=subtitle]]
[[!template text="all the variables," start="00:16:13.550" video="mainVideo" id=subtitle]]
[[!template text="and we can disable." start="00:16:17.217" video="mainVideo" id=subtitle]]
[[!template text="What else do we have?" start="00:16:20.317" video="mainVideo" id=subtitle]]
[[!template text="So we have framework integration." start="00:16:21.933" video="mainVideo" id=subtitle]]
[[!template text="You can go `clede-` and" start="00:16:24.200" video="mainVideo" id=subtitle]]
[[!template text="see what more commands are." start="00:16:26.000" video="mainVideo" id=subtitle]]
[[!template text="`commands-run` are basically a way" start="00:16:27.817" video="mainVideo" id=subtitle]]
[[!template text="to define commands, you have a variable," start="00:16:29.867" video="mainVideo" id=subtitle]]
[[!template text="which is `clede-commands-list`." start="00:16:31.717" video="mainVideo" id=subtitle]]
[[!template text="Let's explain that you can get" start="00:16:35.417" video="mainVideo" id=subtitle]]
[[!template text="some system working" start="00:16:37.333" video="mainVideo" id=subtitle]]
[[!template text="or whatever command you want, right." start="00:16:39.917" video="mainVideo" id=subtitle]]
[[!template text="Also you have `asdf` basic integration." start="00:16:42.717" video="mainVideo" id=subtitle]]
[[!template text="You can go to a definition file" start="00:16:46.183" video="mainVideo" id=subtitle]]
[[!template text="of some of the systems are already loaded." start="00:16:48.167" video="mainVideo" id=subtitle]]
[[!template text="For example, let's go to here," start="00:16:51.150" video="mainVideo" id=subtitle]]
[[!template text="and we go to the definition file--" start="00:16:53.767" video="mainVideo" id=subtitle]]
[[!template text="there's the file, right?" start="00:16:55.650" video="mainVideo" id=subtitle]]
[[!template text="This is used because I'm sending" start="00:16:58.017" video="mainVideo" id=subtitle]]
[[!template text="commands for the REPL, so this" start="00:16:59.100" video="mainVideo" id=subtitle]]
[[!template text="functionality is not provided" start="00:17:00.900" video="mainVideo" id=subtitle]]
[[!template text="by CEDET or Semantic," start="00:17:04.217" video="mainVideo" id=subtitle]]
[[!template text="but I can also get some sort" start="00:17:09.267" video="mainVideo" id=subtitle]]
[[!template text="of information for `asd` file," start="00:17:11.733" video="mainVideo" id=subtitle]]
[[!template text="which is a work-in-progress," start="00:17:19.817" video="mainVideo" id=subtitle]]
[[!template text="but you can go to some component file" start="00:17:21.650" video="mainVideo" id=subtitle]]
[[!template text="when you have a big `asd` file" start="00:17:23.200" video="mainVideo" id=subtitle]]
[[!template text="with lots of components" start="00:17:24.250" video="mainVideo" id=subtitle]]
[[!template text="and some other interesting thing." start="00:17:25.300" video="mainVideo" id=subtitle]]
[[!template text="Like I said, that's a work-in-progress," start="00:17:27.883" video="mainVideo" id=subtitle]]
[[!template text="Yes, so this is most of the functionality." start="00:17:30.383" video="mainVideo" id=subtitle]]
[[!template text="The most interesting thing, I think," start="00:17:35.067" video="mainVideo" id=subtitle]]
[[!template text="is the base for the foundation." start="00:17:37.100" video="mainVideo" id=subtitle]]
[[!template text="So you can expand: let's go to source code," start="00:17:40.367" video="mainVideo" id=subtitle]]
[[!template text="for example, that `fiveam`." start="00:17:43.100" video="mainVideo" id=subtitle]]
[[!template text="So as we can see here, this is" start="00:17:48.433" video="mainVideo" id=subtitle]]
[[!template text="the `fiveam` integration, and to add it," start="00:17:50.000" video="mainVideo" id=subtitle]]
[[!template text="I just define some new functions," start="00:17:53.533" video="mainVideo" id=subtitle]]
[[!template text="and then you use this..." start="00:17:58.333" video="mainVideo" id=subtitle]]
[[!template text="set up a new form parser that we use" start="00:18:02.083" video="mainVideo" id=subtitle]]
[[!template text="to get some information" start="00:18:04.250" video="mainVideo" id=subtitle]]
[[!template text="about the `s-expression` top-level," start="00:18:06.500" video="mainVideo" id=subtitle]]
[[!template text="and we define the names," start="00:18:09.250" video="mainVideo" id=subtitle]]
[[!template text="we define information we want to take" start="00:18:10.533" video="mainVideo" id=subtitle]]
[[!template text="from the symbol and everything else." start="00:18:11.717" video="mainVideo" id=subtitle]]
[[!template text="Also some ?? types" start="00:18:13.800" video="mainVideo" id=subtitle]]
[[!template text="that would be going to be added" start="00:18:17.233" video="mainVideo" id=subtitle]]
[[!template text="to the `imenu` thing:" start="00:18:19.467" video="mainVideo" id=subtitle]]
[[!template text="for example, `imenu test switch and test`." start="00:18:21.167" video="mainVideo" id=subtitle]]
[[!template text="And then, these are, for example," start="00:18:24.133" video="mainVideo" id=subtitle]]
[[!template text="some function to send information" start="00:18:27.417" video="mainVideo" id=subtitle]]
[[!template text="to the SLY, SLIME, or inferior Lisp" start="00:18:29.433" video="mainVideo" id=subtitle]]
[[!template text="depending on the Lisp that you're using." start="00:18:33.583" video="mainVideo" id=subtitle]]
[[!template text="So I do not have more time." start="00:18:37.150" video="mainVideo" id=subtitle]]
[[!template text="Sorry about that." start="00:18:39.500" video="mainVideo" id=subtitle]]
[[!template text="Thank you very much." start="00:18:40.467" video="mainVideo" id=subtitle]]
[[!template text="My name is Fermin." start="00:18:45.017" video="mainVideo" id=subtitle]]
[[!template text="You can send me a mail in my mail," start="00:18:46.483" video="mainVideo" id=subtitle]]
[[!template text="and that's my webpage." start="00:18:49.833" video="mainVideo" id=subtitle]]
[[!template text="I hope you like it." start="00:18:51.333" video="mainVideo" id=subtitle]]