summaryrefslogtreecommitdiffstats
path: root/2021/captions/clede.md
blob: b98e0820a980919d27c9d9224dd8e3dd85c5db92 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
<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="&quot ;real support&quot ; 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 &quot ;add to path&quot ; 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]]