Martin Buchholz writes:
This is really a wonderful experiment, and one that would make me
want
to use proportional fonts for code.
Thanks!
To become more than an experiment, it has to be *reliable*.
I'm all too aware of that.... that's why I'm not submitting any
patches at this time, until I have a version of this that is more than
just an interesting hack. (That said, I'm using the patched version
for may day-to-day work, so that I can gain some experience with it).
And that is going to be tough.
Agreed! Of course you could introduce the new variable `align-spaces'
and leave it set by default to `nil' and everything would work just as
it is now; then you could change little things one at a time - make
calendar-mode set align-spaces=1, make package-ui set it to 2, etc.
It could be something people could customize, but not enabled by
default...
You have to be able to get this right:
main ()
{
double d;
int i;
char c;
}
This is hard because of the one space between the "double" and "d".
Just for fun I tried my heuristic approach on your code snippet.
Here's what it looks like with align-spaces=0 (default)
With align-spaces set to 1, then every single space character forces
vertical alignment, so the d, i, and c *do* line up:
It looks weird, however, because of the extra whitespace around the
= sign on the top line. (There is a single space around the =, but
because align-spaces=1, even single spaces get padded to columns)
With align-spaces set to 2 (my preferred setting for most purposes)
you get this:
The top line looks fine now.
The 'i' and 'c' line up but the 'd' is a little off.
Not too bad, but not perfect!
Of course if I could just convince the whole world to write this instead:
main ()
{
double d;
int i;
char c;
}
(note the extra space before "d"), then we could set align-spaces=2
and all be happy.
How can I tell, without looking ahead to the next line, that that "d"
is subject to columnar alignment? I'm hoping somebody comes up with an
absolutely brilliant suggestion here... in the meanwhile I'll keep on
tinkering.