Monaco 编辑器中自定义语言的语法验证
Syntax validation of a custom language in Monaco editor
我正在尝试将自定义语言集成到 monaco 编辑器中,我通过 https://microsoft.github.io/monaco-editor/monarch.html 了解语法突出显示。
但是我找不到任何关于如何通过语法验证添加 error/warning 验证的文档。在 Ace 编辑器中,我们通过编写一个 worker 并在其中执行验证功能来做到这一点。对此表示感谢 links/help。
我最近成功完成了这项工作,我刚刚使用 monaco-css as boiler-plate and the only thing that i have to do now is write a parser for my language and other features that I want in in it. and here is my code。
在项目根目录的 lang_services 文件夹中添加您的解析器和其他语言服务。
我认为这会有所帮助。
这是一个简洁且易于自定义的示例,它将在第 1 行的第 2-5 位置显示错误,如下所示:
游乐场代码的顶部(而不是底部)
monaco.editor.onDidCreateModel(function(model) {
function validate() {
var textToValidate = model.getValue();
// return a list of markers indicating errors to display
// replace the below with your actual validation code which will build
// the proper list of markers
var markers = [{
severity: monaco.MarkerSeverity.Error,
startLineNumber: 1,
startColumn: 2,
endLineNumber: 1,
endColumn: 5,
message: 'hi there'
}];
// change mySpecialLanguage to whatever your language id is
monaco.editor.setModelMarkers(model, 'mySpecialLanguage', markers);
}
var handle = null;
model.onDidChangeContent(() => {
// debounce
clearTimeout(handle);
handle = setTimeout(() => validate(), 500);
});
validate();
});
// -- below this is the original canned example code:
// Register a new language
请注意,为简单起见,此示例忽略了 onDidCreateModel
和 onDidChangeContent
这两个 return IDisposable
您可能需要跟踪和处理的对象的考虑。
我正在尝试将自定义语言集成到 monaco 编辑器中,我通过 https://microsoft.github.io/monaco-editor/monarch.html 了解语法突出显示。
但是我找不到任何关于如何通过语法验证添加 error/warning 验证的文档。在 Ace 编辑器中,我们通过编写一个 worker 并在其中执行验证功能来做到这一点。对此表示感谢 links/help。
我最近成功完成了这项工作,我刚刚使用 monaco-css as boiler-plate and the only thing that i have to do now is write a parser for my language and other features that I want in in it. and here is my code。
在项目根目录的 lang_services 文件夹中添加您的解析器和其他语言服务。
我认为这会有所帮助。
这是一个简洁且易于自定义的示例,它将在第 1 行的第 2-5 位置显示错误,如下所示:
monaco.editor.onDidCreateModel(function(model) {
function validate() {
var textToValidate = model.getValue();
// return a list of markers indicating errors to display
// replace the below with your actual validation code which will build
// the proper list of markers
var markers = [{
severity: monaco.MarkerSeverity.Error,
startLineNumber: 1,
startColumn: 2,
endLineNumber: 1,
endColumn: 5,
message: 'hi there'
}];
// change mySpecialLanguage to whatever your language id is
monaco.editor.setModelMarkers(model, 'mySpecialLanguage', markers);
}
var handle = null;
model.onDidChangeContent(() => {
// debounce
clearTimeout(handle);
handle = setTimeout(() => validate(), 500);
});
validate();
});
// -- below this is the original canned example code:
// Register a new language
请注意,为简单起见,此示例忽略了 onDidCreateModel
和 onDidChangeContent
这两个 return IDisposable
您可能需要跟踪和处理的对象的考虑。