I register a languages.registerCompletionItemProvider.
Part of the code.
let disposable = vscode.languages.registerCompletionItemProvider(
'language', new BuildCompletionItemProvider()
);
context.subscriptions.push(disposable);
export class BuildCompletionItemProvider implements vscode.CompletionItemProvider {
provideCompletionItems(
document: vscode.TextDocument, position: vscode.Position,
token: vscode.CancellationToken): vscode.CompletionItem[] {
let line = document.lineAt(position);
let lineText = line.text.substring(0, position.character);
console.log(`line: ${line.text}
pos: ${position.character}`);
return [];
}
}
I run the extension and slowly enter
aaa
aaaaa
in the mylanguage file.
debug console output:
line: a
pos: 1
line: aa
pos: 2
line: aaa
pos: 3
line: a
pos: 1
line: aaaaa
pos: 5
When entering aaaaa
in the second line, position will not change in real time.
I guess it is affected by vscode's abc
automatic completion.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…