func NewPrinter(options ...func(*Printer)) *Printer {
	p := &Printer{
		bufWriter:   bufio.NewWriter(nil),
		lenPrinter:  new(Printer),
		tabsPrinter: new(Printer),
	}
	for _, opt := range options {
		opt(p)
	}
	return p
}
NewPrinter allocates a new Printer and applies any number of options.
package syntax
import (
	"bufio"
	"io"
	"strings"
	"unicode"
)
func Indent(spaces uint) func(*Printer) {
	return func(p *Printer) { p.indentSpaces = spaces }
}
func BinaryNextLine(p *Printer) { p.binNextLine = true }
func SwitchCaseIndent(p *Printer) { p.swtCaseIndent = true }
func SpaceRedirects(p *Printer) { p.spaceRedirects = true }
func KeepPadding(p *Printer) {
	p.keepPadding = true
	p.cols.Writer = p.bufWriter.(*bufio.Writer)
	p.bufWriter = &p.cols
}
func Minify(p *Printer) { p.minify = true }