A backslash should not be allowed inside a quoted string unless it is used to escape another character. This fixes https://savannah.gnu.org/bugs/?61389. Bug existed since each of these syntaxes was introduced. (Awk and Fortran do not know include files with names between angled brackets, so those regexes are dropped in the bargain.)
40 lines
1.5 KiB
Plaintext
40 lines
1.5 KiB
Plaintext
## Syntax highlighting for C/C++/Obj-C files.
|
|
|
|
syntax m "\.m$"
|
|
magic "Objective-C source"
|
|
comment "//"
|
|
|
|
# Stuffs,
|
|
color brightwhite "\<[A-Z_][0-9A-Z_]+\>"
|
|
color green "\<(float|double|BOOL|bool|char|int|short|long|id|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline)\>"
|
|
color green "\<[[:alpha:]_][[:alnum:]_]*_t\>"
|
|
color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
|
|
color brightgreen "\<(for|if|while|do|else|case|default|switch)\>"
|
|
color brightgreen "\<(try|throw|catch|operator|new|delete)\>"
|
|
color brightgreen "\<(goto|continue|break|return)\>"
|
|
color brightgreen "@(encode|end|implementation|interface)|selector)\>"
|
|
|
|
# GCC builtins.
|
|
color cyan "__attribute__[[:blank:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
|
|
|
|
# Selector/method.
|
|
color brightmagenta "(^|[[:blank:]])\[.*[[:blank:]].*\]"
|
|
color white ":[[:alnum:]]*"
|
|
color magenta "[[:alnum:]]*:"
|
|
color white "\[[^][:blank:]]*\]"
|
|
|
|
# Strings.
|
|
color brightblack "'([^'\]|(\\["'abfnrtv\]))'" "'\\(([0-3]?[0-7]{1,2}))'" "'\\x[0-9A-Fa-f]{1,2}'"
|
|
color brightblack "<[^= ]*>|"(\\.|[^"\])*""
|
|
color brightblue "@"(\\.|[^"\])*""
|
|
|
|
# Preprocessor commands.
|
|
color brightblue "^[[:blank:]]*#[[:blank:]]*(define|include|import|(un|ifn?)def|endif|el(if|se)|if|warning|error)"
|
|
|
|
# Comments.
|
|
color yellow "//.*"
|
|
color yellow start="/\*" end="\*/"
|
|
|
|
# Trailing whitespace.
|
|
color ,green "[[:space:]]+$"
|