diff --git a/CHANGES.md b/CHANGES.md index 3bb58c9569..56cb4da5e0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,6 +16,7 @@ Core Changes: Language Improvements: +- (csharp) add support for `@identifier` style identifiers (#2414) [Josh Goebel][] - fix(elixir) Support function names with a slash (#2406) [Josh Goebel][] - fix(javascript) comma is allowed in a "value container" (#2403) [Josh Goebel][] - enh(apache) add `deny` and `allow` keywords [Josh Goebel][] diff --git a/src/languages/csharp.js b/src/languages/csharp.js index b7ad270edd..8294552c85 100644 --- a/src/languages/csharp.js +++ b/src/languages/csharp.js @@ -93,6 +93,12 @@ export default function(hljs) { keywords: "in out" }; var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?'; + var AT_IDENTIFIER = { + // prevents expressions like `@class` from incorrect flagging + // `class` as a keyword + begin: "@" + hljs.IDENT_RE, + relevance: 0 + }; return { name: 'C#', @@ -195,7 +201,8 @@ export default function(hljs) { hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE ] - } + }, + AT_IDENTIFIER ] }; } diff --git a/test/markup/csharp/identifiers.expect.txt b/test/markup/csharp/identifiers.expect.txt new file mode 100644 index 0000000000..566b865c4d --- /dev/null +++ b/test/markup/csharp/identifiers.expect.txt @@ -0,0 +1,3 @@ +var @class = new MyClass(); +doSomething(@var, @foo); +var a; diff --git a/test/markup/csharp/identifiers.txt b/test/markup/csharp/identifiers.txt new file mode 100644 index 0000000000..3e7040f291 --- /dev/null +++ b/test/markup/csharp/identifiers.txt @@ -0,0 +1,4 @@ +var @class = new MyClass(); +doSomething(@var, @foo); +var a; +