nano-devel
[Top][All Lists]
Advanced

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

Re: [Nano-devel] [PATCH] syntax: c: change the highlighting of preproces


From: Liu Hao
Subject: Re: [Nano-devel] [PATCH] syntax: c: change the highlighting of preprocessor directives
Date: Wed, 13 Dec 2017 13:48:39 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0

On 2017/12/10 22:38, Benno Schulenberg wrote:
> From: Liu Hao <address@hidden>
> 
> Some directives are colored in their entirety, while for a few others
> only the keyword itself is colored.
> 
> Signed-off-by: Liu Hao <address@hidden>
> ---
>  syntax/c.nanorc | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/syntax/c.nanorc b/syntax/c.nanorc
> index 78041ffa..95774c37 100644
> --- a/syntax/c.nanorc
> +++ b/syntax/c.nanorc
> @@ -15,7 +15,6 @@ color green 
> "\<(class|namespace|template|public|protected|private|typename|this|
>  color brightyellow "\<(for|if|while|do|else|case|default|switch)\>"
>  color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
>  color magenta "\<(goto|continue|break|return)\>"
> -color brightcyan 
> "^[[:space:]]*#[[:space:]]*(define|include(_next)?|(un|ifn?)def|endif|el(if|se)|if|warning|error|pragma)"
>  color brightmagenta "'([^'\]|(\\["'abfnrtv\\]))'" "'\\(([0-3]?[0-7]{1,2}))'" 
> "'\\x[0-9A-Fa-f]{1,2}'"
>  
>  # GCC builtins.
> @@ -23,11 +22,15 @@ color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" 
> "__(aligned|asm|builtin|hidd
>  
>  # Strings.  In general you will want your strings and comments to come last,
>  # because highlighting rules are applied in the order they are read in.
> -color brightyellow ""([^"]|\\")*"" "<[^[:blank:]=]*>"
> +color brightyellow ""([^"]|\\")*"" 
> "#[[:space:]]*include[[:space:]]+<[^[:blank:]=]*>"
>  # Multiline strings.  This regex is VERY resource intensive,
>  # and sometimes colours things that shouldn't be coloured.
>  ###color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
>  
> +# Preprocessor directives.
> +color brightcyan 
> start="^[[:space:]]*#[[:space:]]*(if(n?def)?|elif|warning|error|pragma)\>" 
> end="[^\\]$"

There is an issue here:

With this patch, both of the following lines are colored:

```
#warning
blah blah
```

This is not the case if a space is appended to the first line.
Apparently `\>` matches the zero-length span between the word `warning`
and the LF following it immediately, but the LF of the first line is
skipped somehow when searching for termination of the PP directive,
resulting in the LF of the second line being the eventual terminator.

> +color brightcyan 
> "^[[:space:]]*#[[:space:]]*(define|else|endif|include(_next)?)\>"
> +
>  # Comments.
>  color brightblue "//.*"
>  color brightblue start="/\*" end="\*/"
> 


-- 
Best regards,
LH_Mouse




reply via email to

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