mirror of
https://github.com/SilasMarvin/lsp-ai.git
synced 2025-12-18 06:54:28 +01:00
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"])];
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user