diff --git a/src/ai/OpenAICaller.ts b/src/ai/OpenAICaller.ts index b5df339..16e91d2 100644 --- a/src/ai/OpenAICaller.ts +++ b/src/ai/OpenAICaller.ts @@ -75,8 +75,6 @@ export class OpenAICaller implements APICaller { } ] }).then(response => { - console.log(response.choices[0].message.content!); - let feedback: AIFeedback = { request: request, problemFiles: JSON.parse(response.choices[0].message.content!).problemFiles diff --git a/src/extension.ts b/src/extension.ts index 047d52f..3c53520 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,15 +3,22 @@ import { initSettings } from "./settings"; import { InlineDiagnostic } from "./extension/InlineDiagnostic"; import { initTerminal, getTerminalOutput } from "./terminal"; import { OpenAICaller } from "./ai/OpenAICaller"; +import { ProblemFile } from "./types/ProblemFile"; export function activate(context: vscode.ExtensionContext) { initSettings(); initTerminal(); const askAI = vscode.commands.registerCommand("drDebug.askAI", async () => { - let response = (await new OpenAICaller().sendRequest({ terminalOutput: getTerminalOutput() })) - if (response !== undefined && response.text !== undefined) { - vscode.window.showInformationMessage(response.text, { modal: true }); + let response = await new OpenAICaller().sendRequest({ terminalOutput: getTerminalOutput() }); + if (response !== undefined && response.problemFiles && response.text !== undefined) { + const problemFile: ProblemFile = response.problemFiles[0] + const inline: InlineDiagnostic = new InlineDiagnostic(vscode.Uri.file(problemFile.fileName), + new vscode.Range( + new vscode.Position(problemFile.line! - 1, 0), + new vscode.Position(problemFile.line! - 1, 0)), + response.text); + inline.show(); } }); diff --git a/src/extension/InlineDiagnostic.ts b/src/extension/InlineDiagnostic.ts index f44dd16..8542a19 100644 --- a/src/extension/InlineDiagnostic.ts +++ b/src/extension/InlineDiagnostic.ts @@ -17,6 +17,8 @@ export class InlineDiagnostic implements Inline { } public async show(): Promise { + this.cleanMessage(); + // Create diagnostic const diagnostic = new vscode.Diagnostic(this.range, this.message, vscode.DiagnosticSeverity.Error); diagnostic.source = diagnosticName; @@ -36,4 +38,19 @@ export class InlineDiagnostic implements Inline { } } + private cleanMessage(): void { + let result = ""; + let lineLength = 0; + for(const word of this.message.split(" ")) { + if(lineLength + word.length <= 80) { + result += word + " "; + lineLength += word.length + 1; + } else { + result += "\n" + word + " "; + lineLength = word.length + 1; + } + } + this.message = result; + } + } \ No newline at end of file