摩纳哥编辑器中的自定义背景颜色?

bch*_*rny 6 javascript monaco-editor

查看 Monaco 示例和类型,看起来可以通过defineThemeAPI配置主题。我正在尝试将 VSCode 主题应用于 Monaco 实例,并且正在努力解决如何设置背景颜色(对于整个编辑器,而不仅仅是令牌)。

规则被定义为具有以下形状的对象数组:

IThemeRule {
    token: string;
    foreground?: string;
    background?: string;
    fontStyle?: string;
}
Run Code Online (Sandbox Code Playgroud)

token设置编辑器背景应该是什么?

更一般地说,有没有一种好方法可以将此主题应用于 Monaco 实例,而无需从 VSCode 源代码中删除主题解析逻辑?在快速尝试删除逻辑之后,似乎一个简单的自定义解析器(即解析 JSON 主题定义 -> IThemeRules 的平面列表)是更好的方法。

Kir*_*ill 11

你可以这样定义你的主题

const theme = {
  base: 'vs', 
  inherit: true,
  rules: [
    { token: 'custom-info', foreground: 'a3a7a9', background: 'ffffff' },
    { token: 'custom-error', foreground: 'ee4444' },
    { token: 'custom-notice', foreground: '1055af' },
    { token: 'custom-date', foreground: '20aa20' },
  ]
}
Run Code Online (Sandbox Code Playgroud)

然后像这样应用它

monaco.editor.defineTheme('myTheme', theme)

var editor = monaco.editor.create(document.getElementById('container'), {
    value: getCode(),
    language: 'myCustomLanguage',
    theme: 'myTheme'
});
Run Code Online (Sandbox Code Playgroud)

  • OP 特别要求设置编辑器背景,而不是每个标记的背景颜色。另外令牌背景颜色似乎有一个错误,目前无法以这种方式设置。Zanecat 有正确答案。 (2认同)

Zan*_*cat 6

您可以定义自己的主题并更改editor.background颜色选项

monaco.editor.defineTheme('my-dark', {
        ...,
        colors: {
          "editor.background": '#394555'
        }
      });
Run Code Online (Sandbox Code Playgroud)