Revert "Clean up vscode plugin"

This reverts commit 41289af4b4.
This commit is contained in:
SilasMarvin
2024-06-02 11:52:11 -07:00
parent 41289af4b4
commit e43774e1bd
2 changed files with 27 additions and 2 deletions

View File

@@ -40,6 +40,13 @@
"type": "object",
"default": {},
"description": "JSON configuration for LSP-AI generation"
},
"lsp-ai.inlineCompletionConfiguration": {
"type": "object",
"default": {
"maxCompletionsPerSecond": 1
},
"description": "JSON configuration for LSP-AI generation"
}
}
}

View File

@@ -180,6 +180,8 @@ export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.commands.registerTextEditorCommand(generateCommand, generateCommandHandler));
// Register as an inline completion provider
let lastInlineCompletion = Date.now();
let inlineCompletionRequestCounter = 0;
vscode.languages.registerInlineCompletionItemProvider({ pattern: '**' },
{
provideInlineCompletionItems: async (document: vscode.TextDocument, position: vscode.Position) => {
@@ -191,8 +193,24 @@ export function activate(context: vscode.ExtensionContext) {
model: generationConfiguration.model,
parameters: generationConfiguration.parameters
};
const result = await client.sendRequest("textDocument/generation", params);
return [new vscode.InlineCompletionItem(result["generatedText"])];
inlineCompletionRequestCounter += 1;
let localInlineCompletionRequestCounter = inlineCompletionRequestCounter;
if ((Date.now() - lastInlineCompletion) / 1000 < 1 / inlineCompletionConfiguration["maxCompletionsPerSecond"]) {
await new Promise(r => setTimeout(r, ((1 / inlineCompletionConfiguration["maxCompletionsPerSecond"]) - ((Date.now() - lastInlineCompletion) / 1000 )) * 1000));
if (inlineCompletionRequestCounter == localInlineCompletionRequestCounter) {
lastInlineCompletion = Date.now();
const result = await client.sendRequest("textDocument/generation", params);
return [new vscode.InlineCompletionItem(result["generatedText"])];
} else {
return [];
}
} else {
lastInlineCompletion = Date.now();
const result = await client.sendRequest("textDocument/generation", params);
return [new vscode.InlineCompletionItem(result["generatedText"])];
}
}
}
);