This had the side-effect of me discovering the showsyntaxerror method on
code.InteractiveInterpreter, which I have now overridden and passed through my
own routines, so these errors are now in the same colour as the other
exceptions. Hooray.
I've never used this feature but Thorsten Kampe reported problems with it.
Unfortunately the way I was parsing the file was line-by-line which was causing
bpython to blow up when it encountered a double line-break, which was pretty
stupid on my part. It now takes the whole file at once.
There's now a fake stdin object instantiated when the curses interface loads
which hooks in to the interface and calls a get_key method on it (some
refactoring done to make this work cleanly). I've only provided a readline()
method on this object (write, writelines and read are there too but no-ops) as
I can't think of any other use for reading from stdin in the interactive
interpreter.
No idea how I didn't notice this one sooner; I think it was just there
in my periphery and I got used to it and forgot it was actually there,
but now the rightmost column gets fully used. I also fixed another
couple of little bugs that don't come up very often.
As far as I know this should run fine on 2.4 without any problems.
Thanks a bunch to Seamus for making me have to write ugly code to make
bpython compatible with his computer from the 1800s.
A few people pointed out that help() can cause problems, specifically
when the help string is really big, so I've internalised it and injected
my own help() function into the interpreter which pages the output, but
it's pretty ghetto so I'm open to suggestions for improvement.
That said, it's pretty obvious that scrolling up and down (like less)
would be the main requested improvement so I should get to work on that
at some point.
Ben Ford pointed out that the escape key can cause things to go a little
awry, I've fixed that and added another fix for potential breakage that
hadn't come up before.
Pascal Bleser was kind enough to package bpython for OpenSUSE
and sent me a patch to have it working with distutils, which
is always nice, so thanks a lot for that, here's the new
dir structure.