WEBVTT
Kind: captions
Language: en-GB

00:00:00.000 --> 00:00:03.000
Hello! The name of this talk is "How to

00:00:03.000 --> 00:00:05.000
record executable notes with eev and

00:00:05.000 --> 00:00:08.000
how to play them back", and I'm Eduardo

00:00:08.000 --> 00:00:11.000
Ochs, this person here, the author of eev,

00:00:11.000 --> 00:00:13.000
and this is Selana Ochs, my main

00:00:13.000 --> 00:00:17.000
contributor at the moment. Let me start

00:00:17.000 --> 00:00:19.000
by explaining the prehistory of eev. Eev

00:00:19.000 --> 00:00:23.000
appeared by accident. I was fascinated

00:00:23.000 --> 00:00:25.000
by programming, and from what I knew

00:00:25.000 --> 00:00:28.000
UNIX seemed to be the right thing... and

00:00:28.000 --> 00:00:30.000
in 1995 I bought a computer that could run

00:00:30.000 --> 00:00:33.000
GNU Linux and a Linux CD. I was studying

00:00:33.000 --> 00:00:35.000
mathematics at the University - not

00:00:35.000 --> 00:00:39.000
Computer Science - and I was able to learn

00:00:39.000 --> 00:00:41.000
at the University a tiny bit of UNIX and

00:00:41.000 --> 00:00:46.000
Lisp, but my social skills were very bad.

00:00:46.000 --> 00:00:48.000
I couldn't socialized properly with

00:00:48.000 --> 00:00:51.000
the people there who really knew Unix,

00:00:51.000 --> 00:00:53.000
and they kept saying to me that

00:00:53.000 --> 00:00:56.000
"everybody uses vi", but my memory was

00:00:56.000 --> 00:00:58.000
very bad - as bad as my social skills -

00:00:58.000 --> 00:01:00.000
and I typed slowly, and with lots of

00:01:00.000 --> 00:01:03.000
mistakes... so at one point I decided to

00:01:03.000 --> 00:01:05.000
give up learning vi, and I tried Emacs...

00:01:05.000 --> 00:01:07.000
and I found it MIND-BLOWING.

00:01:07.000 --> 00:01:11.000
I was taking notes about everything

00:01:11.000 --> 00:01:14.000
that I was learning, and my notes

00:01:14.000 --> 00:01:17.000
started to have lots of elisp hyperlinks

00:01:17.000 --> 00:01:21.000
like these... When we execute this it

00:01:21.000 --> 00:01:23.000
opens a certain directory with lots of

00:01:23.000 --> 00:01:25.000
interesting files in it, and when we

00:01:25.000 --> 00:01:28.000
execute this it opens a specific

00:01:28.000 --> 00:01:32.000
file in that directory. I was

00:01:32.000 --> 00:01:34.000
using hundreds of hyperlinks like these

00:01:34.000 --> 00:01:37.000
to take notes of everything that I

00:01:37.000 --> 00:01:40.000
found interesting... it was easy to follow

00:01:40.000 --> 00:01:43.000
these expressions as hyperlinks: in the

00:01:43.000 --> 00:01:45.000
beginning I used the standard

00:01:45.000 --> 00:01:48.000
function `find-file', and then I created

00:01:48.000 --> 00:01:50.000
a variant of it called `find-fline, that

00:01:50.000 --> 00:01:52.000
accepted extra arguments... in the

00:01:52.000 --> 00:01:54.000
beginning it only supported a line

00:01:54.000 --> 00:01:57.000
number, like this, that would open this

00:01:57.000 --> 00:02:02.000
file and go to the line 423, and then

00:02:02.000 --> 00:02:04.000
I made it accept also strings to

00:02:04.000 --> 00:02:07.000
search for... so this variant here would

00:02:07.000 --> 00:02:10.000
open this file and search for the first

00:02:10.000 --> 00:02:12.000
occurrence of this string here...

00:02:12.000 --> 00:02:14.000
and I also invented shorter hyperlinks,

00:02:14.000 --> 00:02:19.000
like these three here, in which

00:02:19.000 --> 00:02:22.000
I do not need to specify the directory -

00:02:22.000 --> 00:02:26.000
like this - because this directory is

00:02:26.000 --> 00:02:31.000
somehow embedded in this code here... so

00:02:31.000 --> 00:02:34.000
"e" means the directory with the elisp

00:02:34.000 --> 00:02:38.000
files in Emacs. And I also wrote a very

00:02:38.000 --> 00:02:41.000
primitive way to send the current

00:02:41.000 --> 00:02:44.000
region to a shell: when I typed `M-x eev' -

00:02:44.000 --> 00:02:48.000
which meant: "emacs-execute-verbosely" -

00:02:48.000 --> 00:02:51.000
this command wrote the region into a

00:02:51.000 --> 00:02:53.000
certain temporary file, and if I went to

00:02:53.000 --> 00:02:55.000
a shell and I typed `ee'

00:02:55.000 --> 00:02:57.000
it would run the commands in this

00:02:57.000 --> 00:03:00.000
temporary file, and it would executed them.

00:03:00.000 --> 00:03:02.000
These are some technical details that I

00:03:02.000 --> 00:03:06.000
do not want to discuss now... and in a few

00:03:06.000 --> 00:03:08.000
months using that I had created several

00:03:08.000 --> 00:03:11.000
other kinds of elisp hyperlinks, all

00:03:11.000 --> 00:03:13.000
of them also supporting these extra

00:03:13.000 --> 00:03:17.000
arguments that indicated usually strings

00:03:17.000 --> 00:03:19.000
to search for, but sometimes

00:03:19.000 --> 00:03:21.000
I could use that to point a certain line

00:03:21.000 --> 00:03:25.000
number. I called these extra arguments

00:03:25.000 --> 00:03:28.000
"pos-spec-lists", and here are

00:03:28.000 --> 00:03:31.000
some examples. These hyperlinks here

00:03:31.000 --> 00:03:35.000
would open the manpage of GNU Awk

00:03:35.000 --> 00:03:39.000
and go to specific sections in it...

00:03:39.000 --> 00:03:44.000
and these hyperlinks open the info

00:03:44.000 --> 00:03:48.000
manual of Make and go to certain nodes

00:03:48.000 --> 00:03:51.000
in this manual... and in some cases it also

00:03:51.000 --> 00:03:56.000
looks for these strings in these nodes.

00:03:56.000 --> 00:03:59.000
And these hyperlinks here

00:03:59.000 --> 00:04:02.000
they run certain commands in the shell

00:04:02.000 --> 00:04:09.000
and then display its output. And the

00:04:09.000 --> 00:04:11.000
elisp hyperlinks that I was using

00:04:11.000 --> 00:04:14.000
could be always be put in comments in

00:04:14.000 --> 00:04:17.000
scripting languages... they were

00:04:17.000 --> 00:04:19.000
always the sexp at the end of the line.

00:04:19.000 --> 00:04:21.000
Let me show you an example here.

00:04:21.000 --> 00:04:24.000
This thing here is a small Tcl script...

00:04:24.000 --> 00:04:26.000
this line is a comment,

00:04:26.000 --> 00:04:30.000
and this S-expression here is

00:04:30.000 --> 00:04:33.000
treated by Tcl as a comment, but in Emacs

00:04:33.000 --> 00:04:36.000
we can put the cursor here, say, and then

00:04:36.000 --> 00:04:38.000
we type `C-e' to go to the end of the

00:04:38.000 --> 00:04:40.000
line and then `C-x C-e' to execute this...

00:04:40.000 --> 00:04:43.000
and if we execute this we

00:04:43.000 --> 00:04:47.000
visit the file that is mentioned in the

00:04:47.000 --> 00:04:51.000
line below. I was doing that so much -

00:04:51.000 --> 00:04:53.000
going to the end of the line and then

00:04:53.000 --> 00:04:56.000
executing the expression before point -

00:04:56.000 --> 00:04:59.000
that I defined a key that would do that.

00:04:59.000 --> 00:05:02.000
So I defined that `M-e' would work

00:05:02.000 --> 00:05:04.000
like `C-e' to go to the end of the line,

00:05:04.000 --> 00:05:07.000
and then `C-x C-e'... and my name for it

00:05:07.000 --> 00:05:11.000
it was `eval-sexp-eol' - "end of line"

00:05:11.000 --> 00:05:14.000
here. So `C-x C-e', that is a standard

00:05:14.000 --> 00:05:17.000
key sequence, means `eval-last-sexp',

00:05:17.000 --> 00:05:24.000
and I named `M-e' `eval-sexp-eol'.

00:05:24.000 --> 00:05:26.000
And at the time all the languages and

00:05:26.000 --> 00:05:31.000
interpreters that I was using supported

00:05:31.000 --> 00:05:34.000
elisp hyperlinks in comments, like this...

00:05:34.000 --> 00:05:37.000
and I also created variants of `M-x eev'

00:05:37.000 --> 00:05:40.000
that could send the region to other

00:05:40.000 --> 00:05:43.000
interpreters, and in a few years using

00:05:43.000 --> 00:05:45.000
that I had several megabytes of notes

00:05:45.000 --> 00:05:50.000
and scripts... not only had scripts with

00:05:50.000 --> 00:05:53.000
elisp hyperlinks and comments, but

00:05:53.000 --> 00:05:56.000
also I had tons of "executable notes" -

00:05:56.000 --> 00:05:59.000
I called them "e-scripts" - that were

00:05:59.000 --> 00:06:02.000
totally free-form... some parts of them

00:06:02.000 --> 00:06:04.000
were blocks of elisp hyperlinks, some

00:06:04.000 --> 00:06:06.000
other parts were were blocks of code to

00:06:06.000 --> 00:06:08.000
be sent to shells and to other

00:06:08.000 --> 00:06:11.000
interpreters, and some other parts were

00:06:11.000 --> 00:06:13.000
just comments, in English, or Portuguese,

00:06:13.000 --> 00:06:17.000
or whatever... and in 1997 I started

00:06:17.000 --> 00:06:20.000
to have dial-up internet at home,

00:06:20.000 --> 00:06:22.000
and in 1999 I created a home page, and I

00:06:22.000 --> 00:06:25.000
uploaded all these scripts and notes to it,

00:06:25.000 --> 00:06:28.000
to my home page, because it was

00:06:28.000 --> 00:06:30.000
good karma and it was a way to to become

00:06:30.000 --> 00:06:33.000
a person who deserves

00:06:33.000 --> 00:06:36.000
hints and help instead of

00:06:36.000 --> 00:06:38.000
just being the idiot that I was

00:06:38.000 --> 00:06:40.000
considered in my university because

00:06:40.000 --> 00:06:42.000
I couldn't learn vi.

00:06:42.000 --> 00:06:45.000
And at that point I was absolutely sure

00:06:45.000 --> 00:06:47.000
that everybody was using Emacs like

00:06:47.000 --> 00:06:52.000
that - that Emacs was made to be used with

00:06:52.000 --> 00:06:58.000
elisp hyperlinks... and at one

00:06:58.000 --> 00:07:00.000
point I sent an e-mail to one of the Emacs

00:07:00.000 --> 00:07:03.000
mailing lists, and in the e-mail I used some

00:07:03.000 --> 00:07:05.000
of the things that I used at home...

00:07:05.000 --> 00:07:07.000
some elisp hyperlinks, and some other

00:07:07.000 --> 00:07:10.000
tricks, and I explained how to use

00:07:10.000 --> 00:07:12.000
everything there, and I apologized for

00:07:12.000 --> 00:07:15.000
the ugly names... I said: I don't know what

00:07:15.000 --> 00:07:17.000
are the standard functions that do that, so

00:07:17.000 --> 00:07:20.000
I wrote my own ones... and I apologized for

00:07:20.000 --> 00:07:24.000
choosing bad names for them. And Richard

00:07:24.000 --> 00:07:27.000
Stallman himself answered, and his answer

00:07:27.000 --> 00:07:30.000
was sort of: this looks interesting,

00:07:30.000 --> 00:07:33.000
and as far as I know no one else is

00:07:33.000 --> 00:07:35.000
using Emacs like this. Someone should

00:07:35.000 --> 00:07:37.000
clean up the code and document it so

00:07:37.000 --> 00:07:39.000
that we can include it in Emacs. Can you

00:07:39.000 --> 00:07:43.000
do that? And, well this was amazing, it

00:07:43.000 --> 00:07:45.000
was unbelievable, I was a no one in

00:07:45.000 --> 00:07:48.000
the university, I was just an idiot, and

00:07:48.000 --> 00:07:51.000
suddenly God spoke to me, and gave me a

00:07:51.000 --> 00:07:56.000
mission. So I started to work to

00:07:56.000 --> 00:07:58.000
make eev into an official package...

00:07:58.000 --> 00:08:01.000
I submitted some code, and Stallman

00:08:01.000 --> 00:08:03.000
answered very briefly... he had some

00:08:03.000 --> 00:08:05.000
objections that I didn't

00:08:05.000 --> 00:08:07.000
understand very well, they didn't make

00:08:07.000 --> 00:08:12.000
much sense to me... and in the year 2000

00:08:12.000 --> 00:08:14.000
I discovered that he was going to give a

00:08:14.000 --> 00:08:16.000
talk in a city close to where I live. I

00:08:16.000 --> 00:08:18.000
live in Rio de Janeiro, Brazil and he

00:08:18.000 --> 00:08:20.000
was going to give a talk in Campinas,

00:08:20.000 --> 00:08:23.000
that is just 500 kilometers away from

00:08:23.000 --> 00:08:26.000
Rio de Janeiro... I went there, I

00:08:26.000 --> 00:08:28.000
attended the talk, and I chatted with

00:08:28.000 --> 00:08:31.000
Stallman after the talk. I mentioned

00:08:31.000 --> 00:08:34.000
things about eev, and he remembered that

00:08:34.000 --> 00:08:36.000
the discussion and the code, and he said

00:08:36.000 --> 00:08:39.000
that "users should not be forced to see

00:08:39.000 --> 00:08:42.000
Lisp". And then I was INCREDIBLY OFFENDED.

00:08:42.000 --> 00:08:47.000
That was totally absurd. And Stallman

00:08:47.000 --> 00:08:49.000
was so scared, so startled by my reaction,

00:08:49.000 --> 00:08:53.000
that he walked away... and the thing is that

00:08:53.000 --> 00:08:55.000
for me the ability to write one-liners in

00:08:55.000 --> 00:08:57.000
Emacs Lisp was THE thing that

00:08:57.000 --> 00:09:00.000
completely dissolved the barrier between

00:09:00.000 --> 00:09:02.000
users and programmers... it was a kind of a

00:09:02.000 --> 00:09:05.000
Philosopher's Stone that could turn

00:09:05.000 --> 00:09:07.000
users into programmers almost

00:09:07.000 --> 00:09:10.000
magically, it was a catalyst, and it was

00:09:10.000 --> 00:09:13.000
the distilled essence of Free Software.

00:09:13.000 --> 00:09:17.000
So it was absurd to say this, it was sick

00:09:17.000 --> 00:09:20.000
to say that "users should not be forced

00:09:20.000 --> 00:09:24.000
to see Lisp". Ok, so let me fast-forward

00:09:24.000 --> 00:09:28.000
many years... in the year 2000 I had

00:09:28.000 --> 00:09:30.000
"users should not be forced to see Lisp",

00:09:30.000 --> 00:09:34.000
and also `M-x eev', that was one of

00:09:34.000 --> 00:09:39.000
my ways of saving executable notes...

00:09:39.000 --> 00:09:43.000
it was difficult to set up because users

00:09:43.000 --> 00:09:45.000
that wanted to use it had to change

00:09:45.000 --> 00:09:50.000
their rcfiles a bit... so very few people

00:09:50.000 --> 00:09:53.000
were trying eev, and installing it and

00:09:53.000 --> 00:09:57.000
using it... so let me fast-forward many

00:09:57.000 --> 00:10:01.000
years to 2019. `M-x eev' is now obsolete,

00:10:01.000 --> 00:10:04.000
now I used something called

00:10:04.000 --> 00:10:07.000
`eepitch' instead... the setup is now

00:10:07.000 --> 00:10:09.000
totally trivial, eev comes with lots of

00:10:09.000 --> 00:10:11.000
sandboxed tutorials with names like

00:10:11.000 --> 00:10:16.000
`find-something-intro', and I've been using

00:10:16.000 --> 00:10:18.000
eev to teach Emacs and Free Software

00:10:18.000 --> 00:10:20.000
principles to people who don't know

00:10:20.000 --> 00:10:22.000
anything about programming or *NIX, that

00:10:22.000 --> 00:10:25.000
are just kind of fascinated by the

00:10:25.000 --> 00:10:27.000
idea of programming, but they know very

00:10:27.000 --> 00:10:30.000
little... and now people can learn eev by

00:10:30.000 --> 00:10:33.000
memorizing just three keys, or just two

00:10:33.000 --> 00:10:36.000
because this third one is secondary...

00:10:36.000 --> 00:10:39.000
`M-e' is for "execute", and `M-j' is for

00:10:39.000 --> 00:10:43.000
"jump"... `M-k' runs a kind of "kill

00:10:43.000 --> 00:10:46.000
this buffer", and sometimes can be used to go

00:10:46.000 --> 00:10:49.000
back from a hyperlink...

00:10:49.000 --> 00:10:54.000
And in April 10 eev finally became an ELPA

00:10:54.000 --> 00:10:56.000
package - It finally became official

00:10:56.000 --> 00:10:58.000
in some way...

00:10:58.000 --> 00:11:00.000
and this new eev has lots of tutorials

00:11:00.000 --> 00:11:02.000
with names like this:

00:11:02.000 --> 00:11:04.000
`find-something-intro'

00:11:04.000 --> 00:11:07.000
and when you install it with the

00:11:07.000 --> 00:11:10.000
"beginner setup" and you start Emacs

00:11:10.000 --> 00:11:15.000
in a certain way this starts Emacs

00:11:15.000 --> 00:11:18.000
turning eev-mode on and it opens the

00:11:18.000 --> 00:11:23.000
main tutorial, and if we type just `M-j'

00:11:23.000 --> 00:11:26.000
without a numeric prefix you get

00:11:26.000 --> 00:11:28.000
a page whose header is this... so it opens

00:11:28.000 --> 00:11:30.000
a page with this header, and some

00:11:30.000 --> 00:11:33.000
mysterious things below it...

00:11:33.000 --> 00:11:35.000
this part of the header explains how to

00:11:35.000 --> 00:11:40.000
run `M-j' with some of the main numeric

00:11:40.000 --> 00:11:47.000
prefixes... so `M-5 M-j' goes to the

00:11:47.000 --> 00:11:51.000
main tutorial, `M-2 M-j' goes to a kind of

00:11:51.000 --> 00:11:54.000
a tutorial that is mainly an index of the

00:11:54.000 --> 00:11:58.000
main keys of both eev and Emacs...

00:11:58.000 --> 00:12:02.000
and we also have these three hyperlinks

00:12:02.000 --> 00:12:05.000
here... this first one goes to the section

00:12:05.000 --> 00:12:12.000
of the main tutorial that explains `M-j',

00:12:12.000 --> 00:12:15.000
and this one goes to the section about

00:12:15.000 --> 00:12:19.000
the eev keys in the tutorial about keys,

00:12:19.000 --> 00:12:22.000
and this one goes the the first section

00:12:22.000 --> 00:12:25.000
about Emacs keys in this tutorial that

00:12:25.000 --> 00:12:30.000
works like an index of keys. And if

00:12:30.000 --> 00:12:34.000
people follow this they can follow

00:12:34.000 --> 00:12:38.000
hyperlinks that go to the pages

00:12:38.000 --> 00:12:41.000
in the Emacs manuals... and they

00:12:41.000 --> 00:12:43.000
usually learn very quickly how to

00:12:43.000 --> 00:12:45.000
navigate these manuals, and how to go

00:12:45.000 --> 00:12:48.000
back to the tutorials, and how to switch

00:12:48.000 --> 00:12:51.000
between tutorials, other files, the

00:12:51.000 --> 00:12:54.000
manuals, and so on...

00:12:54.000 --> 00:12:57.000
Ok, let me show a demo.

00:12:57.000 --> 00:13:02.000
I mentioned that `M-x eev' is now

00:13:02.000 --> 00:13:04.000
obsolete, it has been replaced by

00:13:04.000 --> 00:13:06.000
something that we run by just typing

00:13:06.000 --> 00:13:08.000
f8, that always operates on the current

00:13:08.000 --> 00:13:10.000
line and moves down.

00:13:10.000 --> 00:13:13.000
Let me show an example of executable

00:13:13.000 --> 00:13:16.000
notes and how to play them back.

00:13:16.000 --> 00:13:19.000
I will only be able to explain how to

00:13:19.000 --> 00:13:22.000
record these executable notes in

00:13:22.000 --> 00:13:25.000
the other video - in the longer video.

00:13:25.000 --> 00:13:29.000
Anyway, when I was recording this video I

00:13:29.000 --> 00:13:32.000
realized that xpdf was behaving in a

00:13:32.000 --> 00:13:34.000
very annoying way... it was

00:13:34.000 --> 00:13:37.000
changing the page in moments that I

00:13:37.000 --> 00:13:40.000
didn't want it to, and the problem was

00:13:40.000 --> 00:13:42.000
that when my finger was at the right

00:13:42.000 --> 00:13:44.000
side of the touchpad and I

00:13:44.000 --> 00:13:47.000
moved it up or down this would be

00:13:47.000 --> 00:13:50.000
interpreted as a "mousewheel scroll",

00:13:50.000 --> 00:13:53.000
that would be interpreted

00:13:53.000 --> 00:13:56.000
as PgUp or PgDn... and I wanted to

00:13:56.000 --> 00:13:58.000
disable that. I wanted to disable the

00:13:58.000 --> 00:14:01.000
support for mousewheel scroll in xpdf.

00:14:01.000 --> 00:14:04.000
So I took a look at the man page for xpdf,

00:14:04.000 --> 00:14:08.000
here... I didn't find a simple way to

00:14:08.000 --> 00:14:10.000
change that by changing a configuration

00:14:10.000 --> 00:14:14.000
file, but I found a section that described

00:14:14.000 --> 00:14:18.000
all the default mouse bindings, here...

00:14:18.000 --> 00:14:20.000
I found the line that seemed to be relevant,

00:14:20.000 --> 00:14:24.000
this one... I created a hyperlink that

00:14:24.000 --> 00:14:27.000
pointed directly to that line -

00:14:27.000 --> 00:14:30.000
this one - and I also found an

00:14:30.000 --> 00:14:33.000
explanation for what this function does.

00:14:33.000 --> 00:14:37.000
And the explanation says that this function

00:14:37.000 --> 00:14:41.000
either scrolls up by some pixels or it

00:14:41.000 --> 00:14:43.000
moves to the previous page, which means

00:14:43.000 --> 00:14:48.000
PgUp. So the quickest way to change xpdf -

00:14:48.000 --> 00:14:51.000
because I was in a hurry - was by

00:14:51.000 --> 00:14:53.000
downloading and recompiling the Debian

00:14:53.000 --> 00:14:55.000
source with some changes.

00:14:55.000 --> 00:14:58.000
I used this hyperlink here, that uses a

00:14:58.000 --> 00:15:01.000
template to generate several links and

00:15:01.000 --> 00:15:04.000
several shell commands for downloading

00:15:04.000 --> 00:15:07.000
and recompiling a debian source package...

00:15:07.000 --> 00:15:13.000
I copied these lines to my notes with

00:15:13.000 --> 00:15:16.000
some small changes... and this part here

00:15:16.000 --> 00:15:20.000
uses the alternative to `M-x eev'.

00:15:20.000 --> 00:15:22.000
Remember that I said that my old way of

00:15:22.000 --> 00:15:26.000
sending lines to the shell was by using

00:15:26.000 --> 00:15:29.000
`M-x eev', that was very clumsy...

00:15:29.000 --> 00:15:32.000
it needed several keystrokes, and

00:15:32.000 --> 00:15:34.000
it was difficult to install because

00:15:34.000 --> 00:15:38.000
we would need to change an rcfile. So

00:15:38.000 --> 00:15:42.000
the new alternative to it uses just f8,

00:15:42.000 --> 00:15:45.000
that behaves in one way in lines that

00:15:45.000 --> 00:15:48.000
start with a red star, like these ones...

00:15:48.000 --> 00:15:52.000
and in another way in lines that do not

00:15:52.000 --> 00:15:55.000
start with a red star. Let me change

00:15:55.000 --> 00:15:58.000
the font to a smaller one to show how it

00:15:58.000 --> 00:16:01.000
works. If I type f8 in these three

00:16:01.000 --> 00:16:03.000
lines here

00:16:03.000 --> 00:16:06.000
this will set up a target buffer here

00:16:06.000 --> 00:16:10.000
running a shell, and if I type f8 in

00:16:10.000 --> 00:16:12.000
these lines here this will send these

00:16:12.000 --> 00:16:16.000
commands to a shell. This command in

00:16:16.000 --> 00:16:20.000
particular it downloads... sorry, it makes

00:16:20.000 --> 00:16:22.000
sure that I have all the Debian packages

00:16:22.000 --> 00:16:25.000
that I need to be able to compile the

00:16:25.000 --> 00:16:28.000
source for xpdf, and this command here

00:16:28.000 --> 00:16:32.000
downloads the source package

00:16:32.000 --> 00:16:37.000
for xpdf, and unpacks it. It takes

00:16:37.000 --> 00:16:41.000
a few seconds... here. I do not want

00:16:41.000 --> 00:16:43.000
to execute this thing now... this thing

00:16:43.000 --> 00:16:50.000
would recompile the source. So... this

00:16:50.000 --> 00:16:53.000
hyperlink here opens this temporary

00:16:53.000 --> 00:16:56.000
directory, and it turns out that the

00:16:56.000 --> 00:16:59.000
source the source package was

00:16:59.000 --> 00:17:02.000
unpacked in this subdirectory here...

00:17:02.000 --> 00:17:05.000
so this hyperlink points to that

00:17:05.000 --> 00:17:09.000
subdirectory, and this S-expression here

00:17:09.000 --> 00:17:13.000
defines several shorter hyperlinks with

00:17:13.000 --> 00:17:17.000
`find-xpdf' in their names, that operate

00:17:17.000 --> 00:17:23.000
in this subdirectory here. So this

00:17:23.000 --> 00:17:30.000
hyperlink here opens the directory,

00:17:30.000 --> 00:17:34.000
this one here runs this shell

00:17:34.000 --> 00:17:38.000
command in the directory to list all

00:17:38.000 --> 00:17:40.000
the files... remember that I haven't

00:17:40.000 --> 00:17:42.000
compiled anything yet, so all these files

00:17:42.000 --> 00:17:44.000
belong to the source package...

00:17:44.000 --> 00:17:46.000
and this one is much more interesting:

00:17:46.000 --> 00:17:49.000
it runs a grep in that directory.

00:17:49.000 --> 00:17:51.000
Remember that I

00:17:51.000 --> 00:17:54.000
discovered that the name of the mouse

00:17:54.000 --> 00:17:59.000
event that was bound to PgUp or...

00:17:59.000 --> 00:18:02.000
to the _bad_ PgUp or to the bad PgDn was

00:18:02.000 --> 00:18:05.000
mousePress4 - and mousePress5...

00:18:05.000 --> 00:18:10.000
so this grep here searches for all the

00:18:10.000 --> 00:18:13.000
occurrences of mousePress4 in the

00:18:13.000 --> 00:18:16.000
source, and it shows that there are only

00:18:16.000 --> 00:18:19.000
two occurrences: one of them in the

00:18:19.000 --> 00:18:21.000
source for the manpage, and the other

00:18:21.000 --> 00:18:23.000
one in the rendered version of

00:18:23.000 --> 00:18:26.000
that source, which is not good...

00:18:26.000 --> 00:18:31.000
let me change to a bigger font again. So I

00:18:31.000 --> 00:18:34.000
decided to search for the function that

00:18:34.000 --> 00:18:40.000
was associated to that mouse event - this

00:18:40.000 --> 00:18:43.000
function here - and I found several

00:18:43.000 --> 00:18:46.000
occurrences of that string, and it turned

00:18:46.000 --> 00:18:48.000
out that this is the relevant occurrence...

00:18:48.000 --> 00:18:52.000
so I created a direct link to that

00:18:52.000 --> 00:18:56.000
source file, and I discovered that if I

00:18:56.000 --> 00:19:02.000
commented out these lines by hand and

00:19:02.000 --> 00:19:06.000
recompiled everything, and installed the

00:19:06.000 --> 00:19:09.000
new debian binary package... then I would

00:19:09.000 --> 00:19:12.000
get an xpdf that does not have the

00:19:12.000 --> 00:19:21.000
annoying behavior. But... that's it. =)

