WEBVTT 00:00.000 --> 00:06.159 Hi, my name is Eduard Oxt, I'm the author of an MX package called EEV, and the name 00:06.160 --> 00:11.439 of this presentation is Bidirectional Links in EEV. 00:11.440 --> 00:16.279 Let me present things in a weird order, starting by the new feature and then I'm going to 00:16.280 --> 00:20.799 explain the whole context. 00:20.800 --> 00:25.839 One of the main features that we are going to see here is this function here, MetaX Cla, 00:25.840 --> 00:29.279 and Cla is a mnemonic for Q-link to anchor. 00:29.280 --> 00:33.159 Let me explain, let me demonstrate how it works. 00:33.160 --> 00:40.239 This thing here with the green angle brackets is an anchor, this thing between the green 00:40.240 --> 00:48.279 angle brackets is a tag of an anchor, and if I type MetaX Cla here, it highlights this 00:48.280 --> 00:53.719 tag for a second and it says copied to the Q-link blah blah blah, and this thing here 00:53.720 --> 00:55.079 is a link. 00:55.080 --> 01:02.759 I can insert the link here, I can insert the link in my notes, and if I execute this link, 01:02.760 --> 01:08.319 this link here, it goes to this anchor in this file. 01:08.320 --> 01:16.119 If you have a recent version of EEV installed, then trying this feature should be very easy. 01:16.120 --> 01:21.679 You just need to open this file here in which everything is defined, and then go to this 01:21.680 --> 01:27.479 section at the beginning of the file, and then run the three blocks of tests that are 01:27.480 --> 01:29.299 there. 01:29.300 --> 01:34.439 This block corresponds roughly to what we have just done. 01:34.440 --> 01:43.519 This other block is slightly different because it shows some variants of Cla. 01:43.520 --> 01:47.959 One is with F instead of an A here. 01:47.960 --> 01:49.559 Let me show how it works. 01:49.560 --> 02:00.519 If we type MetaX eKlf or just MetaX klf, we get a link to this file that does not point 02:00.520 --> 02:08.399 to an anchor, and if we type MetaX klt, we get another kind of link that is linked to 02:08.400 --> 02:11.719 an anchor in the same file. 02:11.720 --> 02:21.199 The third block is more interesting because it lets people create links to files that 02:21.200 --> 02:26.439 are elsewhere and that do not have anchors pointing to them. 02:26.440 --> 02:28.799 Let me execute this. 02:28.800 --> 02:36.319 This will run this extra here and display the target at the window at the right. 02:36.320 --> 02:41.679 This is one of the source files of MX. 02:41.680 --> 02:45.519 Let's imagine that I want to create a link to this string here. 02:45.520 --> 02:53.399 Then I can type MetaX klfs, and this will create a link to a file in a string in that 02:53.400 --> 02:54.399 file. 02:54.400 --> 03:00.959 If I type enter here, it says copy to the kil ring, and this is a link to this file 03:00.960 --> 03:11.479 here and to the first occurrence of this string in this file. 03:11.480 --> 03:14.399 Notice this work inside. 03:14.400 --> 03:19.239 When I was trying to write the documentation of this, I tried to write a summary of how 03:19.240 --> 03:25.359 the algorithm works, and I failed, and I tried again, and I failed again several times, and 03:25.360 --> 03:33.419 then I gave up and I decided to write an intro, a tutorial, this one, that explains everything 03:33.420 --> 03:40.959 but lots of details and lots of sections with try it that have examples that you can run 03:40.960 --> 03:48.719 to understand things, to examine how some functions work, how the data structures work, 03:48.720 --> 03:51.599 and so on. 03:51.600 --> 03:57.399 The problem is that sometimes we have several hyperlinks that point to the same file. 03:57.400 --> 03:59.359 Let me give an example. 03:59.360 --> 04:08.399 In the configuration in which I am now, in this file here, the old way of generating 04:08.400 --> 04:14.519 hyperlinks to this file with find here links, which generate a temporary buffer like this, 04:14.520 --> 04:20.239 and then I would have to choose which one of these hyperlinks I find best, which one 04:20.240 --> 04:24.359 I prefer, and then copy it to my notes. 04:24.360 --> 04:31.079 So instead of choosing a hyperlink, this thing here shows all the options. 04:31.080 --> 04:38.639 And in the new way, in MetaX and Friends, there's an algorithm that chooses the best 04:38.640 --> 04:40.879 short hyperlink by itself. 04:40.880 --> 04:44.159 And this algorithm is a bit hard to explain. 04:44.160 --> 04:46.639 Let me demonstrate it here. 04:46.640 --> 04:56.359 Again, we have all these options here of hyperlinks to this file, and if I type MetaX klf, it 04:56.360 --> 04:58.839 chooses one of them. 04:58.840 --> 05:02.599 And of course, I can copy it to my notes, it's going to work, it's going to point to 05:02.600 --> 05:04.799 here and so on. 05:04.800 --> 05:11.199 Well, the title of this presentation was Bidirectional Links with EEV. 05:11.200 --> 05:17.559 Let me show what I mean by bidirectional hyperlinks and how we can use this thing to create bidirectional 05:17.560 --> 05:20.519 hyperlinks very quickly. 05:20.520 --> 05:22.259 I will have to use a smaller font. 05:22.260 --> 05:24.999 Let me open these two files here. 05:25.000 --> 05:31.999 This one at the left is a program in Haskell, and this one is a file with my notes on Haskell. 05:32.000 --> 05:41.559 How do I create a link to this file in Haskell to put it in this file here? 05:41.560 --> 05:49.719 I can put the cursor here in any position after this anchor here and type MetaX klf. 05:49.720 --> 05:56.359 It copies this link here to the kill ring, and then I can go here and either insert it 05:56.360 --> 06:08.039 with Ctrl Y, yank, or insert it with MetaX klf that adds a comment prefix here. 06:08.040 --> 06:16.559 So this is a way to create a link from here to there in which every comment has to be 06:16.560 --> 06:19.359 given explicitly. 06:19.360 --> 06:23.719 But I also implemented a way to create the two links at the same time. 06:23.720 --> 06:24.719 I don't use it much. 06:24.720 --> 06:27.399 It is mostly for demos because it is impressive. 06:27.400 --> 06:29.919 I wanted to show that in this presentation. 06:29.920 --> 06:33.079 Anyway, let me show it here. 06:33.080 --> 06:41.339 Note that in this file here the point is here, in this file the point is here. 06:41.340 --> 06:47.599 My trick is going to create a link to this anchor and put it in this file, and it is 06:47.600 --> 06:51.479 going to create a link to this anchor and put it in this file. 06:51.480 --> 06:58.599 So here it goes, MetaX klhu, ta-da! 06:58.600 --> 07:03.159 It highlighted the two anchors for a second and then it created these things here and 07:03.160 --> 07:11.479 inserted them with the right comment prefixes. 07:11.480 --> 07:15.519 And that's it. 07:15.520 --> 07:17.319 So that's it. 07:17.320 --> 07:26.039 If you found these things interesting, just install a recent version of VEV and run the 07:26.040 --> 07:32.159 tutorial either with this thing here, MetaX client client intro, or by running this exp, 07:32.160 --> 07:39.599 or open this file here in the iv directory and follow the tutorials. 07:39.600 --> 07:46.919 And most things there are well documented, but the thing that I don't use much and that 07:46.920 --> 07:52.559 is mostly for demos, which is the thing that creates bidirectional hyperlinks, is not yet 07:52.560 --> 07:55.119 well documented, but the rest is. 07:55.120 --> 07:56.119 So that's it. 07:56.120 --> 08:17.400 Have fun.