英文:
How can I make the colour for a function definition to differ from that of a function call in VS Code?
问题
如何使函数定义/声明的颜色与函数调用的颜色不同?
例如,在JavaScript中:
function foo() { foo(); }
// 将第一个 "foo" 变为红色,下一个变为绿色。
英文:
How can I make the colour for a function definition/declaration to differ from that of a function call?
For example, in JavaScript
function foo() { foo(); }
// make the first "foo" red and the next one green.
答案1
得分: 1
使用命令面板中的Developer: Inspect Editor Tokens and Scopes
命令。
有了语义高亮,查看定义中是否有特定修饰符或调用。使用VS Code内置的JavaScript扩展,定义具有declaration
修饰符,因此可以像这样操作:
"editor.semanticTokenColorCustomizations": {
"[颜色主题名称]": { // 可选将其包装在颜色主题块中,以仅应用于一个颜色主题
"rules": {
"function.declaration:javascript": {
"foreground": "#FF0000", // TODO
},
"function:javascript": {
"foreground": "#00FF00", // TODO
},
},
},
},
您可以在此处找到有关语义高亮的文档:https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide。
对于令牌自定义,只需查看可用的令牌自定义。有时,有些东西可能不允许您以不同的方式自定义它们。例如(我认为)如果定义和调用都具有共同的“top-priority”作用域。我尝试为JavaScript制定一些工作,但我认为遇到了这个问题。这是我的尝试,只是为了给出可能的外观:
"editor.tokenColorCustomizations": {
// 可选择将此项包装在颜色主题块中,以仅适用于一个主题
"textMateRules": [
{
"scope": "meta.definition.function.js",
"settings": {
"foreground": "#FF0000", // TODO
},
},
{
"scope": "meta.function-call.js",
"settings": {
"foreground": "#00FF00", // TODO
},
},
],
},
英文:
Use the Developer: Inspect Editor Tokens and Scopes
command in the command palette.
With semantic highlighting, look to see if either definitions have a specific modifier, or calls. With VS Code's builtin JavaScript extension, definitions have the declaration
modifier, so one can do this like so:
"editor.semanticTokenColorCustomizations": {
"[name of colour theme]": { // optionally wrap in colour theme block to apply customizations to only one colour theme
"rules": {
"function.declaration:javascript": {
"foreground": "#FF0000", // TODO
},
"function:javascript": {
"foreground": "#00FF00", // TODO
},
},
},
},
You can find docs on semantic highlighting here: https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide.
With token customizations, just see what token customizations are available. Sometimes things just might not allow you to customize them differently. Ex. (I think) if both definitions and calls have a common "top-priority" scope. I tried to get something working for JavaScript but I think it ran into that issue. Here's my attempt for that just to give an idea of what it might look like:
"editor.tokenColorCustomizations": {
// optionally enclose this with a colour theme block to only apply to one theme
"textMateRules": [
{
"scope": "meta.definition.function.js",
"settings": {
"foreground": "#FF0000", // TODO
},
},
{
"scope": "meta.function-call.js",
"settings": {
"foreground": "#00FF00", // TODO
},
},
],
},
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论