Я написал основную подсветку синтаксиса c для кода VS, но у меня проблемы с комментариями (которые в основном Java комментарии). Подсветка помечает / * и * /, но не помечает остальную часть комментария ...
Основываясь на документации, я понял, что правильный способ определения правил комментариев был:
"comments" : {
"patterns": [
{
"begin": "//",
"end": "$",
"name": "comment.line.double-slash.astra"
},
{
"begin": "/\\*",
"end" : "\\*/",
"name": "comment.block.astra"
}
]
},
Может кто-нибудь объяснить, что я делаю неправильно ...
Полный код подсветки синтаксиса приведен ниже:
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "ASTRA",
"patterns": [
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#comments"
}
],
"repository": {
"keywords": {
"patterns": [{
"name": "keyword.control.astra",
"match": "\\b(if|while|foreach|forall|else|done|message|at_index|list_count)\\b"
},
{
"name" : "keyword.control.astra",
"match" : "\\+|-|\\*|/|%|!|@|\\$"
},
{
"name" : "keyword.other.astra",
"match" : "\\b(package|agent|extends|import|module|rule|goal|types|formula|inference|body|initial|try|recover|send)\\b"
},
{
"name" : "entity.name.type.astra",
"match" : "\\b(string|list|int|long|float|double|boolean|funct)\\b"
},
{
"name" : "constant.language.astra",
"match" : "\\b(true|false)\\b"
}
]},
"strings": {
"name": "string.quoted.double.astra",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.astra",
"begin": "\\",
"end" : "$"
}
]
},
"comments" : {
"patterns": [
{
"begin": "//",
"end": "$",
"name": "comment.line.double-slash.astra"
},
{
"begin": "/\\*",
"end" : "\\*/",
"name": "comment.block.astra"
}
]
},
"supports": {
"patterns": [
{
"match": "(?:^|\\s)[@]\\w+\\b",
"name": "constant.numeric.astra"
},
{
"match": "\\b[a-z]\\w*\\b",
"name": "support.type.astra"
}
]
}
},
"scopeName": "source.astra"
}