Кратко — причиной чаще всего бывает одно из двух:
- либо язык (Pylance / Python language server) перестал присылать semantic‑токены (в этом случае VS Code «не знает», что подсвечивать иначе, чем ключевые слова),
- либо тема (Visual Studio Dark) после обновления перестала предоставлять/совместима с нужной схемой semantic token colors, и semantic‑токены есть, но для них нет цветов → элементы отображаются белым.
Что сделать (диагностика + аккуратные решения)
1) Быстрая инспекция: какие токены приходят
- Откройте командную палитру и выполните "Developer: Inspect Editor Tokens and Scopes".
- Кликните по имени переменной/функции. В панели вы увидите TextMate scope и (если есть) Semantic Token.
- Если semantic token отсутствует — проблема на стороне языкового сервера (Pylance).
- Если semantic token есть, но цвет отсутствует/белый — проблема с темой/цветами.
2) Если semantic токенов нет
- В Output откройте лог "Pylance" (или "Python") — есть ли ошибки?
- Выполните команду "Python: Restart Language Server".
- Отключите и снова включите расширение Pylance, перезапустите VS Code (Reload Window).
- Если сервер падает/ошибки — обновите/переустановите Pylance или посмотрите issue у Pylance (attach логи при обращении в багтрекер).
3) Если токены есть, но цвета не применяются (скорее всего ваш случай)
- Параметр editor.semanticHighlighting.enabled у вас уже пробовали; поставьте принудительно именно для Python в settings.json (это не костыль, это корректный per‑language override):
"editor.semanticHighlighting.enabled": true,
"[python]": {
"editor.semanticHighlighting.enabled": true
}
(Если вы хотите временно вернуть старое поведение — установите false для [python] и VS Code вернётся к TextMate‑цветам темы.)
- Самый аккуратный и универсальный способ пока тема/VS Code не исправят проблему — задать семантические цвета через settings (будет работать с любым языком/темой и не правит файлы темы). Пример минимальной конфигурации — вставьте в settings.json:
"editor.semanticTokenColorCustomizations": {
"enabled": true,
"rules": {
"variable": "#9CDCFE",
"parameter": "#9CDCFE",
"function": "#DCDCAA",
"method": "#DCDCAA",
"class": "#4EC9B0",
"namespace": "#4EC9B0"
}
}
Это позволяет аккуратно задать цвета семантическим типам (без редактирования темы). Вы уже «жёстко прописывали цвета», но этот способ — именно рекомендованный механизм VS Code для переопределения semantic token цветов.
4) Если хотите исследовать тему:
- Откройте в Developer Tools консоль (Developer: Toggle Developer Tools) — возможно там есть ошибки о семантических токенах или проблемах с темой.
- Если проблема именно в встроенной теме Visual Studio Dark — можно открыть issue в репозитории VS Code (приложить вывод из Inspect Editor Tokens и лог Pylance, версию VS Code, список расширений). Пока баг не исправят, ставить per‑language false (возврат к TextMate) или использовать semanticTokenColorCustomizations — самые практичные варианты.
Резюме
- Диагностируйте с помощью "Developer: Inspect Editor Tokens and Scopes".
- Если сервер не присылает семантические токены — перезапустите/переустановите Pylance и смотрите логи.
- Если токены есть, но тема их не красит — либо отключите semantic highlighting для Python (чтобы вернуться к TextMate), либо аккуратно задайте цвета через editor.semanticTokenColorCustomizations (рекомендуемый workaround).
Если нужен, могу помочь собрать нужные логи/настройки или подсказать конкретные правила цвета под вашу Visual Studio Dark.