monaco-editor icon indicating copy to clipboard operation
monaco-editor copied to clipboard

CompletionItemProvider invocation based on trigger characters failed in some cases

Open Mani-108 opened this issue 3 years ago • 1 comments

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?

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

Monaco Editor Playground.webm

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

Mani-108 avatar Aug 04 '22 17:08 Mani-108

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.

rcjsuen avatar Aug 04 '22 17:08 rcjsuen