monaco-editor - 如何根据之前的文本动态过滤 monaco-editor 建议?
问题描述
我有一个建议列表,我希望编辑器根据之前输入的单词过滤显示的建议,例如,如果我的建议列表是 ['car', 'dog', 'pet'],如果我输入“洗。” 我只希望“汽车”显示为建议,并且如果我输入“获取”。我想要“宠物”和“狗”作为建议。
如果有帮助,这是我的代码示例:
monaco.languages.registerCompletionItemProvider('typescript', {
triggerCharacters: ["."],
provideCompletionItems: () => ({ suggestions: createSuggestions(items) })
});
const createSuggestions = (list) => list.map(suggestion => ({
label: suggestion,
kind: monaco.languages.CompletionItemKind.Keyword,
insertText: suggestion
})
);
解决方案
当您在完成项中提供范围时,这会自动发生:
const offset = model.getOffsetAt(localPosition);
const promise = service.getCompletionsAtPosition(model.uri.toString(), offset);
void promise.then((completions: CompletionInfo | undefined) => {
if (completions) {
const info = model.getWordUntilPosition(localPosition);
const replaceRange: IRange = {
startLineNumber: position.lineNumber,
startColumn: info.startColumn,
endLineNumber: position.lineNumber,
endColumn: info.endColumn,
};
resolve({
incomplete: false,
suggestions: completions.entries.map((entry) => ({
label: entry.name,
kind: this.convertKind(entry.kind),
range: replaceRange,
insertText: entry.insertText || entry.name,
} as CompletionItem)),
});
} else {
resolve({ incomplete: false, suggestions: [] });
}
});
推荐阅读
- azure-active-directory - 如何授权 Azure B2C 用户读取 Blob 存储
- python - 如何获得 github-action Tkinter 版本 >= 8.6 [MACOS]?
- html - 如何增加 react-draft-wysig 中的默认行数?
- java - 没有得到正确的输入来检查重复
- javascript - 反应本机导航标题溢出
- node.js - Win10 上的 ioBroker
- python - 使用 np.arange() 在列表理解期间附加字符串
- android - 哪些情况可能导致移动应用程序无法通过蓝牙连接到另一台配对设备?
- ios - iOS15:Vision Framework VNCoreMLTransform 请求错误
- php - PHP:获取图像以链接到产品 ID(woocommerce)