qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 08/50] qapi: mcgen() shouldn't indent # lines


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v3 08/50] qapi: mcgen() shouldn't indent # lines
Date: Wed, 06 Dec 2017 18:41:42 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)

Marc-André Lureau <address@hidden> writes:

> Skip preprocessor lines when adding indentation, since that would
> likely result in invalid code.
>
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
>  scripts/qapi.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/qapi.py b/scripts/qapi.py
> index f2b5a7e131..2a8e60e975 100644
> --- a/scripts/qapi.py
> +++ b/scripts/qapi.py
> @@ -1862,7 +1862,7 @@ def cgen(code, **kwds):
>      if indent_level:
>          indent = genindent(indent_level)
>          # re.subn() lacks flags support before Python 2.7, use re.compile()
> -        raw = re.subn(re.compile(r'^.', re.MULTILINE),
> +        raw = re.subn(re.compile(r'^[^#\n].', re.MULTILINE),
>                        indent + r'\g<0>', raw)
>          raw = raw[0]
>      return re.sub(re.escape(eatspace) + r' *', '', raw)

Old: we want to indent all non-empty lines.  Such a line starts with a
character other than newline, matched by '.'.  Replace that character by
indent + the character.

New regexp: we want to indent all non-empty lines not starting with '#'.
Such a line starts with a character other than newline and '#', matched
by '[^#\n]'.  But there's a '.' afterwards, and therefore we don't match
*any* lines consisting of just one character:

    >>> cgen('a\n')
    'a\n'

I think you should drop the '.'.

Alternatively, use a negative lookahead assertion:

        raw = re.subn(re.compile(r'^(?!(#|$))', re.MULTILINE),
                      indent, raw)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]