我尝试在摩纳哥编辑器中实现类似于文本的html(或xml)的intellisense类功能。我知道两种方法。第一个:
monaco.languages.registerCompletionItemProvider('myLanguage', {
provideCompletionItems: () => {
return { suggestions: monacoSuggestionsXml };
}
其中monacoSuggestionsXml是像这样的结构数组
[{
label: 'simpleText',
kind: monaco.languages.CompletionItemKind.Text,
insertText: 'simpleText'
}, {
label: 'testing',
kind: monaco.languages.CompletionItemKind.Keyword,
insertText: 'testing(${1:condition})',
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
}, {
label: 'ifelse',
kind: monaco.languages.CompletionItemKind.Snippet,
insertText: ['if (${1:condition}) {','\t$0','} else {','\t','}'].join(\n'),
}]
缺点是,仅当您开始键入或在行首按Ctrl + Space时,此选项才有效。否则为“没有建议”。
另一种方法涉及以下内容:
monaco.languages.typescript.javascriptDefaults.setCompilerOptions(
{
allowNonTsExtensions: true
});
monaco.languages.xml.javascriptDefaults.addExtraLib(myLib, 'myLib');
问题是上述方法适用于javascript语法,但我想选择“ xml”(像下面这样)(我希望使用“ html”):
var mEditor = monaco.editor.create(document.getElementById(editorId), {
language: 'xml',
});
mEditor.setModel(null);
var model = monaco.editor.createModel('', 'xml', fileName);
mEditor.setModel(model);