我正在尝试向我的 Monaco Editor Web 组件添加错误注释。我有以下被调用的代码。但我找不到悬停消息的痕迹 - 我想我必须将鼠标放在代码的第 1 行上 - 在屏幕上或开发控制台 dom 查看器中更靠前?
我错过了什么?
// this is a function that lit-element 3.0 requires
firstUpdated() {
let mbDomNode = document.querySelector("#code-area");
let codeArea = mbDomNode ? (mbDomNode as HTMLElement) : undefined;
this.editor = monaco.editor.create(this.container.value!, {
value: this.getCode(),
language: this.getLang(),
theme: this.getTheme(),
automaticLayout: true,
minimap: {
enabled: false,
},
// lineNumbers: "off",
// ariaContainerElement essential for Elm virtual dom
ariaContainerElement: codeArea,
glyphMargin: true,
});
monaco.languages.register({ id: "mix" });
monaco.languages.setMonarchTokensProvider("mix", mixLang);
}
addError(err: { row: number; message: string }) {
// `!` is the non-null assertion operator.
this.editor!.deltaDecorations(
[],
[
{
range: new monaco.Range(err.row, 1, err.row, 30),
options: {
isWholeLine: true,
// class for line of code
// className: "error-decoration",
// class for space between code and line numbers
linesDecorationsClassName: "error-decoration",
// FIXME somehow???
hoverMessage: { value: err.message },
// class for space to left of line numbers
// glyphMarginClassName: "error-decoration",
// glyphMarginHoverMessage: { value: err.message },
},
},
]
);
}
类已正确添加,但当我悬停时没有消息
在官方网站上,我可以看到它有效 - https://microsoft.github.io/monaco-editor/playground.html#interacting-with-the-editor-line-and-inline-decorations
区别似乎在于官方网站上的 monaco 正在创建一个带有类 overflowingContentWidgets
的 div,其中有很多子节点。在我的实现中,这个 div 仍然是空的。但我不知道为什么? (事实是,我正在 Web 组件的 Shadow dom 中完成工作,而 MSFT 正在使用 iframe)
最佳答案
好吧,问题是我试图阻止所有语言支持的编译
import * as monaco from "monaco-editor";
// import * as monaco from "monaco-editor/esm/vs/editor/editor.api";
此更改中的某个地方也减少了编辑器功能
更新:当我迁移到 Monaco 0.37 时,问题又出现了 - 目前没有解决方案:-(
关于monaco-editor - Monaco Editor 悬停消息未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69616905/