monaco-editor
monaco-editor copied to clipboard
CompletionItemProvider invocation based on trigger characters failed in some cases
Reproducible in vscode.dev or in VS Code Desktop?
- [X] Not reproducible in vscode.dev or VS Code Desktop
Reproducible in the monaco editor playground?
- [ ] Not reproducible in the monaco editor playground
Monaco Editor Playground Code
monaco.editor.create(document.getElementById('container'), {
value: "div{\n\n}",
language: 'css'
});
function createDependencyProposals(range) {
return [
{
label: '--my-var',
kind: monaco.languages.CompletionItemKind.Function,
documentation: "The Lodash library exported as Node.js modules.",
insertText: 'var(--my-var)',
range: range
},
{
label: '--my-var2',
kind: monaco.languages.CompletionItemKind.Function,
documentation: "Fast, unopinionated, minimalist web framework",
insertText: 'var(--my-var2)',
range: range
}
];
}
monaco.languages.registerCompletionItemProvider('css', {
provideCompletionItems: function(model, position) {
const line = model.getValueInRange({startLineNumber: position.lineNumber, startColumn: 1, endLineNumber: position.lineNumber, endColumn: position.column})
console.log('model, position', line);
var match = line.match(/[a-zA-Z][a-zA-Z-0-9]*\:(.*)/);
if (!match) {
return { suggestions: [] };
}
var word = model.getWordUntilPosition(position);
var range = {
startLineNumber: position.lineNumber,
endLineNumber: position.lineNumber,
startColumn: word.startColumn,
endColumn: word.endColumn
};
return {
suggestions: createDependencyProposals(range)
};
}
});
Reproduction Steps
Actual (Problematic) Behavior
CompletionItemProvider not working in some cases. Example: I have define completionItemProvide for auto completion. And also have provide triggerCharacters. But it works with space after colon(:). But not working without space. Please, Refer the above video. Is there any workaround?
Expected Behavior
No response
Additional Context
No response
Monaco will do prefix matching by default so. Since your the text where your cursor is currently has a prefix of color:- which fails a prefix match with --my-var, all of your suggestions are filtered out.