Monaco Editor调用defineTheme时哪个属性可修改标点符号前景色
问题原因
Monaco Editor的颜色配置分两层:
colors字段控制的是编辑器全局UI、无匹配语法token的普通文本颜色rules字段控制的是不同语法token的专属高亮颜色,优先级高于全局颜色配置
你当前继承了vs浅色主题的默认规则,该主题默认给分隔符/标点类token指定了黑色前景色,全局editor.foreground配置无法覆盖这部分已明确声明的token样式,才会出现普通文本是浅白色、标点全是黑色的问题。
修复方案
在rules数组中添加分隔符类token的颜色规则,覆盖默认继承的样式即可,修改后的完整配置如下:
monaco.editor.defineTheme('my-theme', { base: 'vs', inherit: true, rules: [ // 覆盖所有标点、分隔符的默认黑色样式 { token: 'delimiter', foreground: 'cccce5' }, { token: 'delimiter.bracket', foreground: 'cccce5' }, { token: 'delimiter.comma', foreground: 'cccce5' }, { token: 'delimiter.semicolon', foreground: 'cccce5' }, { token: 'delimiter.angle', foreground: 'cccce5' } ], colors: { foreground: '#cccce5', 'editor.foreground': '#cccce5', 'textSeparator.foreground': '#cccce5', 'editor.background': '#00004c', 'editorCursor.foreground': '#00000050', 'editor.lineHighlightBackground': '#00000050', 'editorLineNumber.foreground': '#008800', 'editor.selectionBackground': '#00000050', 'editor.inactiveSelectionBackground': '#00000050', 'editorWidget.background': '#00000050', 'editorWidget.foreground': '#cccce5', }, })
补充说明
rules内配置的foreground色值不需要带#前缀,直接写6位十六进制色值即可,带前缀会导致配置不生效。- 如果切换到其他编程语言后存在个别特殊标点未被上述规则覆盖,可以按F1调出命令面板,搜索执行
Developer: Inspect Tokens,点击对应标点就能查看它所属的token名,再往rules里补充对应规则即可。
内容的提问来源于stack exchange,提问作者Felipe Cornejo
相关产品推荐
相关产品推荐

