Compare commits
2 Commits
0450a222e2
...
77e0dbc048
Author | SHA1 | Date |
---|---|---|
Falko Victor Habel | 77e0dbc048 | |
Falko Victor Habel | 8ac3879ee0 |
|
@ -113,8 +113,13 @@ async function autocompleteCommand(textEditor: vscode.TextEditor, cancellationTo
|
|||
|
||||
// Create a decoration for each line of the response
|
||||
const previewRanges = lines.map((line: string, idx: number) => {
|
||||
const linePos = new vscode.Position(position.line + idx, 0);
|
||||
const range = new vscode.Range(linePos, linePos); // Set range at the start of each new line
|
||||
// Determine the start and end positions for each line
|
||||
const startPos = new vscode.Position(position.line + idx, 0);
|
||||
const endPos = new vscode.Position(position.line + idx, line.length);
|
||||
|
||||
// Create a range covering the whole line
|
||||
const range = new vscode.Range(startPos, endPos);
|
||||
|
||||
return {
|
||||
range,
|
||||
renderOptions: {
|
||||
|
@ -130,6 +135,8 @@ async function autocompleteCommand(textEditor: vscode.TextEditor, cancellationTo
|
|||
// Apply the decorations for multiline preview
|
||||
textEditor.setDecorations(previewDecorationType, previewRanges);
|
||||
|
||||
let completionInserted = false; // Flag to track insertion
|
||||
|
||||
const disposable = vscode.workspace.onDidChangeTextDocument(async (event) => {
|
||||
if (event.document.uri.toString() === document.uri.toString()) {
|
||||
const change = event.contentChanges[0];
|
||||
|
@ -149,14 +156,17 @@ async function autocompleteCommand(textEditor: vscode.TextEditor, cancellationTo
|
|||
}
|
||||
);
|
||||
|
||||
if (isCtrlOrCmdPressed) {
|
||||
if (isCtrlOrCmdPressed && !completionInserted) {
|
||||
// Ensure that we insert the completion text only once
|
||||
completionInserted = true;
|
||||
|
||||
// Remove the preview decoration before applying the final completion
|
||||
textEditor.setDecorations(previewDecorationType, []);
|
||||
|
||||
const edit = new vscode.WorkspaceEdit();
|
||||
const insertPosition = new vscode.Position(position.line, 0);
|
||||
|
||||
// Insert the completion only once
|
||||
// Avoid duplicating the completion text
|
||||
if (!document.getText().includes(completionText)) {
|
||||
edit.insert(document.uri, insertPosition, '\n' + completionText);
|
||||
await vscode.workspace.applyEdit(edit);
|
||||
|
@ -178,6 +188,8 @@ async function autocompleteCommand(textEditor: vscode.TextEditor, cancellationTo
|
|||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue