From e2b759590ff405dc86f2b8c39ff1dfa4848dae71 Mon Sep 17 00:00:00 2001 From: Animesh Sahu Date: Sun, 7 Feb 2021 07:49:38 +0530 Subject: [PATCH] Adds recognition of char literals (Fixes #36) (#37) --- dist/Kotlin.JSON-tmLanguage | 20 ++++++++++++++++++++ dist/Kotlin.YAML-tmLanguage | 1 + dist/Kotlin.tmLanguage | 31 +++++++++++++++++++++++++++++++ src/literals.YAML-tmLanguage | 13 +++++++++++++ test/literals.test.kt | 12 +++++++++++- 5 files changed, 76 insertions(+), 1 deletion(-) diff --git a/dist/Kotlin.JSON-tmLanguage b/dist/Kotlin.JSON-tmLanguage index c6d5416..8baa0c8 100644 --- a/dist/Kotlin.JSON-tmLanguage +++ b/dist/Kotlin.JSON-tmLanguage @@ -749,6 +749,26 @@ "include": "#string-content" } ] + }, + { + "begin": "'", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.kotlin" + } + }, + "end": "'", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.kotlin" + } + }, + "name": "string.quoted.single.kotlin", + "patterns": [ + { + "include": "#string-content" + } + ] } ], "repository": { diff --git a/dist/Kotlin.YAML-tmLanguage b/dist/Kotlin.YAML-tmLanguage index 4824e24..0911ee2 100644 --- a/dist/Kotlin.YAML-tmLanguage +++ b/dist/Kotlin.YAML-tmLanguage @@ -298,6 +298,7 @@ repository: patterns: - {begin: '"""', beginCaptures: {'0': {name: punctuation.definition.string.begin.kotlin}}, end: '"""(?!")', endCaptures: {'0': {name: punctuation.definition.string.end.kotlin}}, name: string.quoted.triple.kotlin, patterns: [{include: '#string-content'}]} - {begin: '(?!'')"(?!'')', beginCaptures: {'0': {name: punctuation.definition.string.begin.kotlin}}, end: '"', endCaptures: {'0': {name: punctuation.definition.string.end.kotlin}}, name: string.quoted.double.kotlin, patterns: [{include: '#string-content'}]} + - {begin: '''', beginCaptures: {'0': {name: punctuation.definition.string.begin.kotlin}}, end: '''', endCaptures: {'0': {name: punctuation.definition.string.end.kotlin}}, name: string.quoted.single.kotlin, patterns: [{include: '#string-content'}]} repository: string-content: {patterns: [{match: '\\[0\\tnr"'']', name: constant.character.escape.kotlin}, {match: '\\(x[\da-fA-F]{2}|u[\da-fA-F]{4}|.)', name: constant.character.escape.unicode.kotlin}, {begin: '\$(\{)', beginCaptures: {'1': {name: punctuation.section.block.begin.kotlin}}, end: '\}', endCaptures: {'0': {name: punctuation.section.block.end.kotlin}}, name: entity.string.template.element.kotlin}, {match: '\$[a-zA-Z_]\w*', name: entity.string.template.element.kotlin}]} 'null': diff --git a/dist/Kotlin.tmLanguage b/dist/Kotlin.tmLanguage index 459fbad..979b66a 100644 --- a/dist/Kotlin.tmLanguage +++ b/dist/Kotlin.tmLanguage @@ -1133,6 +1133,37 @@ + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.kotlin + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.kotlin + + + name + string.quoted.single.kotlin + patterns + + + include + #string-content + + + repository diff --git a/src/literals.YAML-tmLanguage b/src/literals.YAML-tmLanguage index a4d8566..54ef5f7 100644 --- a/src/literals.YAML-tmLanguage +++ b/src/literals.YAML-tmLanguage @@ -57,6 +57,19 @@ repository: patterns: - include: '#string-content' + - + begin: '''' + beginCaptures: + '0': + name: punctuation.definition.string.begin.kotlin + end: '''' + endCaptures: + '0': + name: punctuation.definition.string.end.kotlin + name: string.quoted.single.kotlin + patterns: + - + include: '#string-content' repository: string-content: patterns: diff --git a/test/literals.test.kt b/test/literals.test.kt index c9f3e6f..e16344b 100644 --- a/test/literals.test.kt +++ b/test/literals.test.kt @@ -172,9 +172,19 @@ foo('"') //^^^ source.kotlin // ^ source.kotlin meta.group.kotlin punctuation.section.group.begin.kotlin -// ^^^ source.kotlin meta.group.kotlin +// ^ source.kotlin meta.group.kotlin string.quoted.single.kotlin punctuation.definition.string.begin.kotlin +// ^ source.kotlin meta.group.kotlin string.quoted.single.kotlin +// ^ source.kotlin meta.group.kotlin string.quoted.single.kotlin punctuation.definition.string.end.kotlin // ^ source.kotlin meta.group.kotlin punctuation.section.group.end.kotlin + foo('\'') +//^^^ source.kotlin +// ^ source.kotlin meta.group.kotlin punctuation.section.group.begin.kotlin +// ^ source.kotlin meta.group.kotlin string.quoted.single.kotlin punctuation.definition.string.begin.kotlin +// ^^ source.kotlin meta.group.kotlin string.quoted.single.kotlin constant.character.escape.kotlin +// ^ source.kotlin meta.group.kotlin string.quoted.single.kotlin punctuation.definition.string.end.kotlin +// ^ source.kotlin meta.group.kotlin punctuation.section.group.end.kotlin + foo(""""."""") //^^^ source.kotlin // ^ source.kotlin meta.group.kotlin punctuation.section.group.begin.kotlin