[see further below for v1.45 changes]
You are not limited to a theme's supplied semantic token highlighting. You can choose the color and fontstyle yourself for supported language-semantic tokens by doing this:
It's also possible to define semantic theming rules in the user
settings:
"editor.tokenColorCustomizationsExperimental": {
"property.readonly": {
"foreground": "#35166d"
},
"*.defaultLibrary": {
"fontStyle": "underline"
}
}
from https://github.com/microsoft/vscode/wiki/Semantic-Highlighting-Overview#as-a-theme-author-do-i-need-to-change-my-theme-to-make-it-work-with-semantic-highlighting
And see especially https://github.com/microsoft/vscode/wiki/Semantic-Highlighting-Overview#how-can-i-find-out-what-semantic-tokens-are-available-and-how-they-are-themed for how to discover the semantic tokens. For example:

If there is no semantic token type
listed, that language service does not yet support them. But undoubtedly, when they do you will want to modify some of their color and fontstyle choices.
vscode 1.45 will rename editor.tokenColorCustomizationsExperimental
to editor.semanticTokenColorCustomizations
See https://github.com/microsoft/vscode/issues/96267
This syntax works for me in the Insiders' Build April, 2020:
"editor.semanticTokenColorCustomizations": {
"enabled": true,
"rules": {
"enumMember": "#ff0000"
},
"[Default Dark+]": {
"enabled": true,
"rules": {
"variable.readonly": "#ff00ff"
},
}
},
From https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_45.md#semantic-token-styling-in-the-user-settings:
Semantic coloring is available for TypeScript and JavaScript, with
support for Java, C++ in the works. It is enabled by default for
built-in themes and being adopted by theme extensions.
The editor.semanticTokenColorCustomizations
allows users to overrule
the theme settings and to customize the theming.
Example that adds semantic styling to all themes: ```
"editor.semanticTokenColorCustomizations": {
"enabled": true,
"rules": {
"property.readonly": {
"foreground": "#35166d"
},
"*.defaultLibrary": {
"bold": true
}
}
}
The setting above colors all constants with #35166d
and all
occurrences of symbols from a default library (e.g. Math
,
setTimeout
) bold.
Example that adds semantic styling to the Dark+ themes: ```
"editor.semanticTokenColorCustomizations": {
"[Default Dark+]": {
"enabled": true,
"rules": {
"parameter": { "underline": true },
"*.declaration": { "bold": true }
}
}
}
The setting above underlines all parameters in the Dark + theme and
makes all symbol declarations bold.
Theming for semantic tokens is explained in more details in the
[Semantic Highlighting
Guide](/api/language-extensions/semantic-highlight-guide#theming).
Oddly, in my testing even with the enabled: true
in the above "editor.semanticTokenColorCustomizations"
you still need this setting enabled:
"editor.semanticHighlighting.enabled": true
but that is the default.