summaryrefslogtreecommitdiffstats
path: root/2019/talks/27.md
blob: ad40523026777ff03940a79947bbfbdc2dfe928f (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
[[!meta title="How to record executable notes with eev - and how to play them back - Eduardo Ochs"]]
[[!meta copyright="Copyright © 2019 Eduardo Ochs"]]

[[!template  id=vid
src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-27-how-to-record-executable-notes-with-eev-and-how-to-play-them-back--hq--edrx.webm"
type="video/webm"]]

### Download

- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-27-how-to-record-executable-notes-with-eev-and-how-to-play-them-back--hq--edrx.webm) (1280x800) ([Thanks Eduardo!](http://angg.twu.net/emacsconf2019.html#better-quality))
- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-27-how-to-record-executable-notes-with-eev-and-how-to-play-them-back--edrx.webm) (960x540)
- [Eev @ EmacsConf 2019](http://angg.twu.net/emacsconf2019.html)
- [Eev homepage](http://angg.twu.net/#eev)

### Transcript

```org
Timestamps for some points of the video:
0:00 Title page
0:15 Prehistory 1: eev appeared by accident
1:08 Prehistory 2: my notes started to have lots of elisp hyperlinks
2:35 Prehistory 3: M-x eev
3:04 Prehistory 4: several other kinds of elisp kyperlinks
4:05 Prehistory 5: these elisp hyperlinks could be put in comments
5:34 Prehistory 6: variants of M-x eev
5:41 Prehistory 7: several megabytes of scripts and notes (here)
6:41 Prehistory 8: I was sure that everybody was using Emacs like that
7:52 Prehistory 9: "users should not be forced to see Lisp"
9:22 Eev as an ELPA package
10:51 Eev as an ELPA package (2)
11:20 M-j - and how beginners should use it
12:54 A demo
13:10 Demo: patching xpdf (e-script)
14:01 Demo: the `find-man' links
14:45 Demo: the `find-apt-get-source-links'
15:11 Demo: the eepitch block (in red star lines) (see this)
15:48 Demo: eepitch on non-red star lines
15:56 Demo: eepitch in action
16:47 Demo: the `find-fline's to the source directory
17:07 Demo: `code-c-d' (see this)
17:22 Demo: `find-xpdffile'
17:32 Demo: `find-xpdfsh'
17:44 Demo: `find-xpdfgrep'
18:32 Demo: the second `find-xpdfgrep'
18:46 Demo: the relevant occurrence / direct link to it
19:18 Links

A transcription of what I say in the final part (i.e., in the demo):
13:11 Let me show you an example of "executable notes and how to play them back".
13:18 I will only be able to explain how to _record_ these executable notes in the longer video.
13:25 Anyway: when I was recording this video I realized that xpdf was behaving in a very annoying way -
13:34 it was changing the page in moments that I didn't want it to...
13:39 and the problem was that when my finger was at the right side of the touchpad
13:45 and I moved it up or down this would be interpreted as a _mousewheel scroll_,
13:52 that would be interpreted as PageUp or PageDown,
13:57 and I wanted to disable that - I wanted to disable the support for mousewheel scroll in xpdf.
14:01 So I took a look at the man page for xpdf - here -
14:06 I didn't find a simple way to change that by changing a configuration file
14:11 but I found a section that described all the default mouse bindings - here -
14:18 I found a line that seemed to be relevant - this one -
14:21 I created a hyperlink that pointed directly to that line - this one -
14:30 and I also found an explanation for what this function does
14:35 and the explanation says that this function either scrolls up by some pixels
14:41 or it moves to the previous page - which means PageUp.
14:46 So the _quickest_ way to change xpdf - because I was in a hurry -
14:51 was by downloading and recompiling the Debian source with some changes.
14:56 I used this hyperlink here, that uses a template, to generate several links
15:01 and several shell commands for downloading and recompiling a debian source package.
15:08 I copied these lines to my notes with some small changes,
15:15 and this part - here - uses the alternative to M-x eev...
15:20 remember that I said that my old way of sending lines to the shell was by using M-x eev,
15:27 that was very clumsy: it needed several keystrokes, and it was difficult to install
15:34 because we would need to change an rcfile.
15:38 So, the new alternative to it uses just <f8>,
15:43 that behaves in one way in lines that start with a red star - like these ones -
15:49 and in another way in lines that do not start with a red star.
15:54 Let me change the font to a smaller one to show how it works.
16:00 If I type <f8> in these three lines - here -
16:03 this will set up a target buffer - here - running a shell,
16:08 and if I type <f8> in these lines - here - this will send these commands to the shell.
16:14 This command, in particular, it downloads - sorry, it _makes sure_ that I have
16:20 all the Debian packages that I need to be able to compile the source for xpdf,
16:27 and this command - here - downloads the source package for xpdf
16:34 and unpacks it. It takes a few seconds - here.
16:40 I do not want to execute this thing now - this thing would recompile the source.
16:49 So, this hyperlink - here - opens this temporary directory,
16:54 and it turns out that the source package was unpacked in this subdirectory - here -
17:04 so this hyperlink points to the subdirectory,
17:07 and this s-expression - here - defines several shorter hyperlinks with "find-xpdf" in their names
17:17 that operate in this subdirectory - here.
17:22 So, this hyperlink - here - opens that directory,
17:30 this one - here - runs these shell commands in that directory
17:37 to list all the files - remember that I haven't compiled anything yet,
17:41 so all these files belong to the source package,
17:46 and this one is much more interesting - it runs a grep in that directory.
17:51 Remember that I discovered that the name of the mouse event that was bound to
17:57 PageUp, or to the _bad_ PageUp in the bad PageDown,
18:02 was MousePress4 (and MousePress5)...
18:06 So this grep here searches for all the occurrences of MousePress4
18:12 in the source... and it shows that there are only two occurrences,
18:18 one of them in the source for the man page and the other one
18:22 in the rendered version of that source, which is not good...
18:27 Let me change to the bigger font again.
18:31 So I decided to search for the function that was associated to that mouse event -
18:39 this function here - and I found several occurrences of that string,
18:45 and it turned out that _this_ is a relevant occurrence,
18:49 so I created a direct link to that source file,
18:53 and I discovered that if I commented out these lines by hand
19:03 and recompiled everything and installed the new debian binary package
19:09 then I would get an xpdf that does not have the annoying behavior. But...
19:15 That's it. 
```