monaco-editor 删除自定义语言的默认自动完成建议

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

还有类似的问题 123,但其中描述的答案仅适用于 C#、JavaScript 和 TypeScript 等非自定义语言。

我想要实现的是摆脱基于之前输入的单词的建议。

我还想保留添加的自定义建议

registerCompletionItemProvider

如何做到这一点?

javascript autocomplete monaco-editor
2个回答
2
投票

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”)。


0
投票

我也遇到了同样的问题,但经过一番搜索(尝试和失败)我终于明白了。

只需在编辑器创建功能内的“建议”配置中设置“showWords: false”即可:

var editor = monaco.editor.create(document.getElementById("editorContainer"), {
  value: jsCode,
  language: "typescript", //can use your custom language here
  suggest: {
    showWords: false
  }
});

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