1. Клонировать репозиторий https://tvoygit.ru/budden/vscode-langua ... entbuilder - пока релизов нет. Если вам повезёт, то что-нибудь заработает.
2. В директории склонированного репозитория - другая директория. Скопировать эту директорию в %USERPROFILE%\.vscode\extensions
3. Файл settings.json (Ctrl-Shift-P / Параметры: Открыть параметры (JSON)
и вставляем в объект самого верхнего уровня новое поле:
Код: Выделить всё
"editor.tokenColorCustomizations": {
"textMateRules": [
{ "scope": "keyword.blackboxcomponentbuilder",
"settings": { "foreground": "#909090" }
},
{ "scope": "storage.support.type.blackboxcomponentbuilder",
"settings": { "foreground": "#909090" }
},
{ "scope": "constant.language.blackboxcomponentbuilder",
"settings": { "foreground": "#909090" }
},
{ "scope": "keyword.control.blackboxcomponentbuilder",
"settings": { "foreground": "#FF9000" }
}
]
}
5. Файлы .Mod понимаются автоматически. Для раскраски файлов .ярм, нужно
увидеть в строке состояния "Простой текст", нажать там и выбрать BlackBoxComponentBuilder .
====================================================================
Как собирать для отладки?
Код: Выделить всё
1. git clone https://github.com/budden/vscode-language-blackboxcomponentbuilder
2. Заходим в корень репозитория
3. npm install
4. npm run vscode:prepublish (или npm run compile)
5. Заходим в студию и открываем (Су-K Cу-О) корень репозитория.
6. В settings.json студии нужно вписать то, что вписано!)
7. F5. Открывается доп. окно.
8. В доп окне раскраска должна работать.
Это пока сохраняю, но скоро сотру.
Файл c:\Users\<ИмяПользователя>\.vscode\extensions\alefragnani.pascal-6.4.0\syntaxes\pascal.tmLanguage
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>kp</string>
<string>cp</string>
<string>mod</string>
</array>
<key>keyEquivalent</key>
<string>^~P</string>
<key>name</key>
<string>Pascal</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(ABSTRACT|ARRAY|BEGIN|BY|CASE|CLOSE|CONST|DIV|ELSE|ELSIF|EMPTY|END|EXIT|EXTENSIBLE|IF|IMPORT|IN|IS|LIMITED|LOOP|MOD|MODULE|NIL|OF|OR|OUT|POINTER|PROCEDURE|RECORD|THEN|TO|TYPE|UNTIL|VAR|WITH)\b</string>
<key>name</key>
<string>keyword.pascal</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.prototype.pascal</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function.prototype.pascal</string>
</dict>
</dict>
<key>match</key>
<string>\b(?i:(function|procedure|constructor|destructor))\b\s+(\w+(\.\w+)?)(\(.*?\))?;\s*(?=(?i:attribute|forward|external))</string>
<key>name</key>
<string>meta.function.prototype.pascal</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.pascal</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function.pascal</string>
</dict>
</dict>
<key>match</key>
<string>\b(?i:(function|procedure|constructor|destructor|property|read|write))\b\s+(\w+(\.\w+)?)</string>
<key>name</key>
<string>meta.function.pascal</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(self|result))\b</string>
<key>name</key>
<string>token.variable</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(and|or))\b</string>
<key>name</key>
<string>keyword.operator.pascal</string>
</dict>
<dict>
<key>match</key>
<string>\b(WHILE|REPEAT|RETURN|DO|FOR)\b</string>
<key>name</key>
<string>keyword.control.pascal</string>
</dict>
<dict>
<key>begin</key>
<string>\{\$</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>string.regexp</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>name</key>
<string>string.regexp</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(ansichar|ansistring|boolean|byte|cardinal|char|chajj|comp|currency|double|dword|extended|file|integer|int64|longint|longword|nativeint|nativeuint|olevariant|pansichar|pchar|pwidechar|pointer|real|shortint|shortstring|single|smallint|string|uint64|variant|widechar|widestring|word|wordbool))\b</string>
<key>name</key>
<string>storage.support.type.pascal</string>
</dict>
<dict>
<key>match</key>
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b</string>
<key>name</key>
<string>constant.numeric.pascal</string>
</dict>
<dict>
<key>match</key>
<string>\$[0-9a-fA-F]{1,16}\b</string>
<key>name</key>
<string>constant.numeric.pascal</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(true|false|nil))\b</string>
<key>name</key>
<string>constant.language.pascal</string>
</dict>
<dict>
<key>include</key>
<string>#multilinecomment</string>
</dict>
<dict>
<key>applyEndPatternLast</key>
<integer>1</integer>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.pascal</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.pascal</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.pascal</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>''</string>
<key>name</key>
<string>constant.character.escape.apostrophe.pascal</string>
</dict>
</array>
</dict>
<dict>
<key>applyEndPatternLast</key>
<integer>1</integer>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.pascal</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.pascal</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.pascal</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>""</string>
<key>name</key>
<string>constant.character.escape.apostrophe.pascal</string>
</dict>
</array>
</dict>
</array>
<key>repository</key>
<dict>
<key>multilinecomment</key>
<dict>
<key>begin</key>
<string>\(\*</string>
<key>contentName</key>
<string>comment</string>
<key>end</key>
<string>\*\)</string>
<key>name</key>
<string>comment</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#multilinecomment</string>
<key>name</key>
<string>comment</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.pascal</string>
<key>uuid</key>
<string>F42FA544-6B1C-11D9-9517-000D93589AF6</string>
</dict>
</plist>
и вставляем в объект самого верхнего уровня новое поле:
Код: Выделить всё
"editor.tokenColorCustomizations": {
"textMateRules": [
{ "scope": "keyword.pascal",
"settings": { "foreground": "#909090" }
},
{ "scope": "storage.support.type.pascal",
"settings": { "foreground": "#909090" }
},
{ "scope": "constant.language.pascal",
"settings": { "foreground": "#909090" }
},
{ "scope": "keyword.control.pascal",
"settings": { "foreground": "#FF9000" }
}
]
}