mirror of
git://git.sv.gnu.org/nano.git
synced 2024-12-28 13:19:48 +03:00
544351f3be
In many places a carriage return is not valid whitespace and should thus not be colored as such. In some of these places a vertical tab or form feed is maybe valid whitespace, but it would be ugly or even wrong to color them because they are not part of the subsequent comment or keyword. This fixes https://savannah.gnu.org/bugs/?60456.
48 lines
2.0 KiB
Plaintext
48 lines
2.0 KiB
Plaintext
## Syntax highlighting for C and C++ files.
|
|
|
|
syntax c "\.([ch](pp|xx)?|C|cc|c\+\+|cu|H|hh|ii?)$"
|
|
header "-\*-.*\<C(\+\+)?((;|[[:blank:]]).*)?-\*-"
|
|
magic "^(C|C\+\+) (source|program)"
|
|
comment "//"
|
|
|
|
# Constants.
|
|
color brightred "\<[A-Z_][0-9A-Z_]*\>"
|
|
# Labels.
|
|
color brightmagenta "^[[:blank:]]*[A-Z_a-z][0-9A-Z_a-z]*:[[:blank:]]*$"
|
|
color normal ":[[:blank:]]*$"
|
|
|
|
# Types and related keywords.
|
|
color green "\<(auto|bool|char|const|double|enum|extern|float|inline|int|long|restrict|short|signed|sizeof|static|struct|typedef|union|unsigned|void)\>"
|
|
color green "\<([[:lower:]][[:lower:]_]*|(u_?)?int(8|16|32|64))_t\>"
|
|
color green "\<(_(Alignas|Alignof|Atomic|Bool|Complex|Generic|Imaginary|Noreturn|Static_assert|Thread_local))\>"
|
|
color green "\<(class|explicit|friend|mutable|namespace|override|private|protected|public|register|template|this|typename|using|virtual|volatile)\>"
|
|
|
|
# Flow control.
|
|
color brightyellow "\<(if|else|for|while|do|switch|case|default)\>"
|
|
color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
|
|
color magenta "\<(break|continue|goto|return)\>"
|
|
|
|
# Single-quoted stuff (characters, backslash escapes, hex and octal byte codes).
|
|
color brightmagenta "'([^'\]|\\(["'\abfnrtv]|x[0-9A-Fa-f]{1,2}|[0-3]?[0-7]{1,2}))'"
|
|
|
|
# GCC builtins.
|
|
color cyan "__attribute__[[:blank:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
|
|
|
|
# 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:]]*include[[:blank:]]*<[^>]+>"
|
|
|
|
# Preprocessor directives.
|
|
color brightcyan start="^[[:blank:]]*#[[:blank:]]*(if(n?def)?|elif|warning|error|pragma)\>" end="(\`|[^\\])$"
|
|
color brightcyan "^[[:blank:]]*#[[:blank:]]*((define|else|endif|include(_next)?|line|undef)\>|$)"
|
|
|
|
# Comments.
|
|
color brightblue "//.*"
|
|
color brightblue start="/\*" end="\*/"
|
|
|
|
# Reminders.
|
|
color brightwhite,yellow "\<(FIXME|TODO|XXX)\>"
|
|
|
|
# Trailing whitespace.
|
|
color ,green "[[:space:]]+$"
|