如何强制 Monaco 编辑器渲染我设置为专用模型的标记?

问题描述 投票:0回答:1

我正在使用普通 JavaScript 在浏览器中实例化 Monaco Editor (没有反应或其他包装)。

首先,我实例化编辑器并用一些占位符文本填充它。然后,我用实际文本和要在编辑器中呈现的诊断标记创建一个新的摩纳哥模型,并将编辑器切换到该模型。

编辑器显示模型的文本,但不显示我设置的标记。

// Monaco initialization.
const ed = monaco.editor.create(document.getElementById('container'), {
    value: 'Loading text...',
});

monaco.languages.register({
    id: 'my_lang',
});

// Then creating a dedicated model associated with registered language.
let model = monaco.editor.createModel(
    'some text',
    'my_lang',
    'inmemory://test_script'
);

// Adding some markers to the model.
monaco.editor.setModelMarkers(model, 'my_lang', [
    {
        startLineNumber: 1,
        startColumn: 1,
        endLineNumber: 1,
        endColumn: 2,
        severity: monaco.MarkerSeverity.Error,
        message: 'test error message',
    },
]);

// Switching the editor to this new second model.
ed.setModel(model);

// Monaco reports that the model contains described markers,
// but it does not render them in the editor.
console.log(
    monaco.editor.getModelMarkers({
        owner: 'my_lang',
        resource: 'inmemory://test_script',
    })
);

在浏览器中使用 Monaco

0.47.0
AMD 进行测试。

即使我在模型创建后(以及在设置标记之前)立即将编辑器切换到第二个模型,Monaco 也不会渲染标记。

monaco-editor
1个回答
0
投票

标记是特定于编辑器的,而不是特定于模型的。更改模型通常会删除标记和装饰器。切换模型后必须重新应用标记。

© www.soinside.com 2019 - 2024. All rights reserved.