This was complicated. I had to:
- make a couple of tests pending that I discovere were only
accidentally passing for a while. I'll fix those outside the merge
commit.
- copy over the implementation of links from the lines-and-links fork
The previous commit was super useful. The links are not actually being
lost when I exit pensieve. Instead, they're somehow not being set in
some code path that I haven't tracked down yet.
The important thing is, I've been missing things because I wasn't
running it from a terminal. prints (that the links are empty) were
disappearing that would have helped diagnose it. Lesson learned: always
send error prints to the log as well. At least there we have a hope of
spotting them.
Once we start emitting prints to the log, also include the function
name. On errors so far we've not bothered because the default LOVE error
handler shows the stack trace. However the logs don't record the stack,
and we might go looking at them long after the app crashes. The print
doesn't need function names, but the log does so we'll just
lowest-common-denominator both.