[PATCH] formatter: make grep command use formatter

Matt Mackall mpm at selenic.com
Tue Mar 8 19:19:08 EST 2016

On Tue, 2016-03-08 at 18:34 -0500, timeless wrote:
> So... I love the idea. Problems:
> 1. this breaks color.

I'd consider this blocking.

> 2. reviewing the generictemplating plan [1]

But I wouldn't consider this blocking.

> +    tmpl = ["{label('grep.filename', filename)}", "{label('grep.rev', rev)}"]
> +    if opts.get('line_number'):
> +        tmpl.append("{label('grep.linenumber', linenum)}")

You're making this too complicated.

The formatter is designed to replace plain old ui.write() from a programmer's
perspective, to keep code simple. If you're doing significant rewriting to go
from the ui.write() model to the formatter, something is very wrong.

So don't build a template, just make some linear calls:

  fm.write("user", "user: %s", user, label="foo.user")
  fm.condwrite(showrev, "rev", " rev: %d", rev, label="foo.rev")

When no -T is provided, this falls through to the aforementioned plain ui.write(), and thus ends up much faster than the templater.

Mathematics is the supreme nostalgia of our time.

More information about the Mercurial-devel mailing list