摩纳哥编辑改变了IntelliSense行为

时间:2018-03-26 13:47:20

标签: typescript monaco-editor

我正在试验CompletionItemProvider,我有两个CompletionItemProvider' s。一个在所有字母上被触发,另一个在用户输入单引号字符时被触发(')。

但我的目标是在双引号内,例如'在这里面',当用户点击 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;
    }
};

1 个答案:

答案 0 :(得分:0)

我不确定是否有更好的解决方案,但我设法在字符串内(两个引号之间)更改了IntelliSense行为 CTRL + SPACE

我正在使用findMatches方法,并且在正则表达式的帮助下,我正在查看我是否在字符串中。如果是这种情况我会回来。

1029

我不确定我是否能做得更好。此外,它还无法处理超过更多行的字符串。对于任何建议我都很感激。