nano-devel
[Top][All Lists]
Advanced

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

[Nano-devel] [PATCH V2] syntax: c: change the highlighting of preprocess


From: Benno Schulenberg
Subject: [Nano-devel] [PATCH V2] syntax: c: change the highlighting of preprocessor directives
Date: Tue, 2 Apr 2019 14:46:15 +0200

From: Liu Hao <address@hidden>

V2: The start-of-buffer anchor \` was included into one of the regexes, to
    prevent color spilling mistakenly onto a subsequent line.

[Sixteen months ago we left things hanging there, because I was unsure of the
portability of \`. [1]  But since then we have retired fixbounds() and no one
has complained (yet), and from looking at the output of 'objdump -t src/nano |
grep rpl_' on the various BSDs, they all appear to use the regex module from
gnulib anyway, so \< and \> and \` will be available, so we can use these.]

[1] http://lists.gnu.org/archive/html/nano-devel/2017-12/msg00084.html


Some of these directives are now colored in their entirety, while for
a few others it's still just the keyword itself that is colored.

Signed-off-by: Liu Hao <address@hidden>
Signed-off-by: Benno Schulenberg <address@hidden>
---
 syntax/c.nanorc | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/syntax/c.nanorc b/syntax/c.nanorc
index 85d8608f..bc1361e0 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="(\`|[^\\])$"
+color brightcyan 
"^[[:space:]]*#[[:space:]]*(define|else|endif|include(_next)?|undef)\>"
+
 # Comments.
 color brightblue "//.*"
 color brightblue start="/\*" end="\*/"
-- 
2.20.1




reply via email to

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