Re: [PATCH v5 02/11] ref-filter: make `color` use `ref_formatting_state`
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Jul 27, 2015, 12:47 UTC
- Message-ID
- <vpqa8uhaht3.fsf@anie.imag.fr>
- In-Reply-To
- <1437982035-6658-2-git-send-email-Karthik.188@gmail.com>
Karthik Nayak <karthik.188@gmail.com> writes:
> Make the `color` atom a pseudo atom and ensure that it uses > `ref_formatting_state`.
Actually, I think this is an incorrect change.
Previously, %(color:...) was taking effect immediately, and after this patch, it takes effect starting from the next atom.
Try this:
git for-each-ref --format '%(color:red)red %(color:reset)normal'
Before your patch, I get 'red' as red, and 'normal' as normal. After your patch, I get no color at all, since %(color:...) just stores information that is never used because I have no real atom.
Show 10 quoted lines
> --- a/ref-filter.h
> +++ b/ref-filter.h
> @@ -19,11 +19,13 @@
> struct atom_value {
> const char *s;
> unsigned long ul; /* used for sorting when not FIELD_STR */
> - unsigned int pseudo_atom : 1; /* atoms which aren't placeholders for ref attributes */
> + unsigned int pseudo_atom : 1, /* atoms which aren't placeholders for ref attributes */
> + color : 1;
> };As a consequence of the remark above, I think the name and comment of the field are misleading. There are 3 kinds of atoms:
* Placeholders for ref attributes
* Atoms that take action immediately, but that are not ref attributes like %(color)
* Atoms that only act as modifiers for the next atom. Perhaps they could be called "prefix atoms" or "modifier atoms".
-- Matthieu Moy http://www-verimag.imag.fr/~moy/