【发布时间】:2018-09-04 16:37:04
【问题描述】:
我正在试验 CompletionItemProvider,我有两个 CompletionItemProvider。一个在所有字母上触发,另一个在用户键入单引号字符 (') 时触发。
但我的目标是在双引号内,例如“here inside”,当用户点击 CTRL+SPACE 来激活 IntelliSense 时,他只能访问请参阅特定的完成提供程序,例如下面的内容。那可能吗 ?
// should only trigger inside quotes
public areaCompletionProvider = <monaco.languages.CompletionItemProvider>{
triggerCharacters: ['\''],
provideCompletionItems: (model, position, token) => {
let current = this.store[this.store.length - 1];
if (!current) {
return [];
}
let uniqueContextVariables: string[] = Array.from(new Set(current.contextVariables.map(ctxVariable => ctxVariable.area)));
let areaCompletions = uniqueContextVariables.map(area => <monaco.languages.CompletionItem>{
label: area,
kind: monaco.languages.CompletionItemKind.Field,
});
return areaCompletions;
}
};
【问题讨论】: