From ddc887f6e43965737a391e2e55e725aa465d1203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Priner?= <51519088+priner@users.noreply.github.com> Date: Wed, 8 Jul 2020 06:17:48 +0200 Subject: [PATCH] Highlight multicharacter escape sequences in C and C++ string literals (#1761) --- runtime/syntax/c.yaml | 9 +++------ runtime/syntax/cpp.yaml | 12 +++++------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/runtime/syntax/c.yaml b/runtime/syntax/c.yaml index bdcbef5e..15310ee8 100644 --- a/runtime/syntax/c.yaml +++ b/runtime/syntax/c.yaml @@ -12,9 +12,6 @@ rules: - statement: "\\b(for|if|while|do|else|case|default|switch)\\b" - statement: "\\b(goto|continue|break|return)\\b" - preproc: "^[[:space:]]*#[[:space:]]*(define|pragma|include|(un|ifn?)def|endif|el(if|se)|if|warning|error)" - - constant: "'([^'\\\\]|(\\\\[\"'abfnrtv\\\\]))'" - - constant: "'\\\\(([0-3]?[0-7]{1,2}))'" - - constant: "'\\\\x[0-9A-Fa-f]{1,2}'" # GCC builtins - statement: "__attribute__[[:space:]]*\\(\\([^)]*\\)\\)" - statement: "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__" @@ -29,15 +26,15 @@ rules: end: "\"" skip: "\\\\." rules: - - constant.specialChar: "\\\\." + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" - constant.string: start: "'" end: "'" skip: "\\\\." rules: - - preproc: "..+" - - constant.specialChar: "\\\\." + - error: "..+" + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" - comment: start: "//" diff --git a/runtime/syntax/cpp.yaml b/runtime/syntax/cpp.yaml index d1ffaeb6..a2fb42cc 100644 --- a/runtime/syntax/cpp.yaml +++ b/runtime/syntax/cpp.yaml @@ -4,8 +4,7 @@ detect: filename: "(\\.c(c|pp|xx)$|\\.h(h|pp|xx)$|\\.ii?$|\\.(def)$)" rules: - - - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" + - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" - type: "\\b(auto|float|double|bool|char|int|short|long|sizeof|enum|void|static|const|constexpr|struct|union|typedef|extern|(un)?signed|inline)\\b" - type: "\\b((s?size)|((u_?)?int(8|16|32|64|ptr)))_t\\b" - statement: "\\b(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\\b" @@ -13,13 +12,12 @@ rules: - statement: "\\b(try|throw|catch|operator|new|delete)\\b" - statement: "\\b(goto|continue|break|return)\\b" - preproc: "^[[:space:]]*#[[:space:]]*(define|pragma|include|(un|ifn?)def|endif|el(if|se)|if|warning|error)" - - constant: "('([^'\\\\]|(\\\\[\"'abfnrtv\\\\]))'|'\\\\(([0-3]?[0-7]{1,2}))'|'\\\\x[0-9A-Fa-f]{1,2}')" # GCC builtins - statement: "(__attribute__[[:space:]]*\\(\\([^)]*\\)\\)|__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__)" # Operator Color - - symbol.operator: "([.:;,+*|=!\\%]|<|>|/|-|&)" + - symbol.operator: "([.:;,+*|=!\\%]|<|>|/|-|&)" # Parenthetical Color - symbol.brackets: "[(){}]|\\[|\\]" @@ -31,15 +29,15 @@ rules: end: "\"" skip: "\\\\." rules: - - constant.specialChar: "\\\\." + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" - constant.string: start: "'" end: "'" skip: "\\\\." rules: - - preproc: "..+" - - constant.specialChar: "\\\\." + - error: "..+" + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" - comment: start: "//"