1
Fork 0

Slightly more aggressive about inserting whitespace. Getting frustrated with comments.

This commit is contained in:
Graydon Hoare 2011-06-01 10:54:11 -07:00
parent 649a7bf38a
commit ae16639dfa
2 changed files with 25 additions and 9 deletions

View file

@ -442,6 +442,16 @@ obj printer(io::writer out,
}
}
fn top() -> print_stack_elt {
auto n = vec::len(print_stack);
let print_stack_elt top =
rec(offset=0, pbreak=broken(inconsistent));;
if (n != 0u) {
top = print_stack.(n - 1u);
}
ret top;
}
fn print(token x, int L) {
log #fmt("print %s %d (remaining line space=%d)",
tok_str(x), L, space);
@ -471,12 +481,7 @@ obj printer(io::writer out,
case (BREAK(?b)) {
auto n = vec::len(print_stack);
let print_stack_elt top =
rec(offset=0, pbreak=broken(inconsistent));;
if (n != 0u) {
top = print_stack.(n - 1u);
}
auto top = self.top();
alt (top.pbreak) {
case (fits) {
@ -552,6 +557,9 @@ fn word(printer p, str wrd) {
fn huge_word(printer p, str wrd) {
p.pretty_print(STRING(wrd, 0xffff));
}
fn zero_word(printer p, str wrd) {
p.pretty_print(STRING(wrd, 0));
}
fn spaces(printer p, uint n) { break_offset(p, n, 0); }
fn zerobreak(printer p) { spaces(p, 0u); }
fn space(printer p) { spaces(p, 1u); }

View file

@ -18,6 +18,7 @@ import pp::cbox;
import pp::ibox;
import pp::word;
import pp::huge_word;
import pp::zero_word;
import pp::space;
import pp::zerobreak;
import pp::hardbreak;
@ -1191,14 +1192,21 @@ fn print_comment(&ps s, lexer::cmnt cmnt) {
word(s.s, cmnt.lines.(0));
zerobreak(s.s);
}
case (_) {
case (lexer::isolated) {
hardbreak(s.s);
for (str line in cmnt.lines) {
zero_word(s.s, line);
hardbreak(s.s);
}
}
case (lexer::trailing) {
if (vec::len(cmnt.lines) == 1u) {
word(s.s, cmnt.lines.(0));
zero_word(s.s, cmnt.lines.(0));
hardbreak(s.s);
} else {
ibox(s.s, 0u);
for (str line in cmnt.lines) {
word(s.s, line);
zero_word(s.s, line);
hardbreak(s.s);
}
end(s.s);