Как оказалось, в VS Code вы можете легко найти нужную область.
Откройте поиск команд с помощью ctrl / cmd + shift + p и найдите Developer: Inspect TM scopes
. Затем вы можете щелкнуть слева от любого символа / слова, для которого вы хотите найти область.
Чтобы ответить на мой собственный вопрос:
- До сих пор не существует явной области действия для
const
, let
, var
или самого ключевого слова function
(storage.type.function
включает зарезервированное слово и стрелку). Однако для стрелки функции существует явная область действия: storage.type.function.arrow
. Это позволяет нам включить всю область действия storage
, а затем явно исключить стрелку.
keyword.operator.expression
- это область действия, необходимая только для операторов, представленных в словах.
- Определенные области действия для
eval
и package
пока недоступны. Вы можете нацелиться на eval
с помощью support.function
и package
с помощью variable.other.readwrite
, но эти области охватывают широкий диапазон и будут включать множество других результатов.
С учетом вышесказанного правила, необходимые для выделения курсивом всех зарезервированных ключевых слов JavaScript в коде VS, перечислены ниже (также включены комментарии и jsx
/ html
атрибуты):
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": [
// all comment types
"comment",
// true, false, null
"constant.language",
// import, from, export, default, return, if, for, break, continue, try, catch, finally,
// throw, default, yield, await
"keyword.control",
// in, void, delete, instanceof
"keyword.operator.expression",
// debugger
"keyword.other",
// new
"keyword.operator.new",
// super, this, arguments
"variable.language",
// attributes in html, jsx, etc.
"entity.other.attribute-name",
// static, extends, async, private, public, implements
// constructor, const, let, var, enum, class, function, interface
// no explicit scopes for constructor, const, let, var
// also no explicit scope for function without the arrow
// therefore we enable all storage and explictly exclude the arrow in another scope
"storage",
// // no explicit scope for the eval keyword yet
// // can be targeted with the scope below, but scope is too broad
// "support.function",
// // no explicit scope for the package keyword yet
// // can be targeted with the scope below, but scope is too broad
// "variable.other.readwrite",
],
"settings": {
"fontStyle": "italic"
}
},
{
"scope": [
// function keyword does not have an explicit scope without the arrow
// therefore we explictly exclude the function arrow from being italicized
"storage.type.function.arrow",
],
"settings": {
"fontStyle": ""
}
}
]
}