还有类似的问题 1、2、3,但其中描述的答案仅适用于 C#、JavaScript 和 TypeScript 等非自定义语言。
我还想保留添加的自定义建议
registerCompletionItemProvider
。
如何做到这一点?
Monaco-editor 默认情况下会根据之前在编辑器上输入的单词提供建议。为了仅获取自定义添加的建议,您可以通过 registerCompletionItemProvider 提供建议,它将覆盖 moncao-editor 提供的任何默认建议。
示例:
monaco.languages.registerCompletionItemProvider('myCustomLanguage', {
provideCompletionItems: function(model, position) {
const suggestions = [
{
label: 'console',
kind: monaco.languages.CompletionItemKind.Function,
documentation: 'Logs a message to the console.',
insertText: 'console.log()',
},
{
label: 'setTimeout',
kind: monaco.languages.CompletionItemKind.Function,
documentation: 'Executes a function after a specified time interval.',
insertText: 'setTimeout(() => {\n\n}, 1000)',
}
];
return { suggestions: suggestions };
}
});
如果您现在输入某些内容,它不会建议之前输入的任何内容。按 Ctrl+Space 时,您只会在编辑器上看到上述两个建议(“console”和“setTimeOut”)。
我也遇到了同样的问题,但经过一番搜索(尝试和失败)我终于明白了。
只需在编辑器创建功能内的“建议”配置中设置“showWords: false”即可:
var editor = monaco.editor.create(document.getElementById("editorContainer"), {
value: jsCode,
language: "typescript", //can use your custom language here
suggest: {
showWords: false
}
});