display tokens as they arrive
This commit is contained in:
parent
b75dce72cd
commit
12f3c82d3e
@ -1,3 +1,4 @@
|
||||
import { mkdirSync } from 'fs';
|
||||
import * as vscode from 'vscode';
|
||||
|
||||
// common data structures and functions
|
||||
@ -56,3 +57,20 @@ export async function showPendingStatusBar(
|
||||
);
|
||||
// we already resolve the operation elsewhere
|
||||
}
|
||||
|
||||
let st_msg: vscode.StatusBarItem | undefined;
|
||||
|
||||
export function updateStatusBarMessage(text: string) {
|
||||
if (!st_msg) {
|
||||
st_msg = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, -100);
|
||||
}
|
||||
|
||||
const run_color = new vscode.ThemeColor('statusBarItem.warningBackground');
|
||||
if (text.length > 0) {
|
||||
st_msg.backgroundColor = run_color;
|
||||
st_msg.text = '$(megaphone) ' + text.trim();
|
||||
st_msg.show();
|
||||
} else {
|
||||
st_msg.hide();
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ import {
|
||||
ResponseData,
|
||||
showMessageWithTimeout,
|
||||
showPendingStatusBar,
|
||||
updateStatusBarMessage,
|
||||
} from './common';
|
||||
|
||||
// clean up the document
|
||||
@ -53,6 +54,8 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
config.update('completionEnabled', false);
|
||||
});
|
||||
|
||||
updateStatusBarMessage('');
|
||||
|
||||
// Register a new provider of inline completions, this does not decide how it is invoked
|
||||
// only what the completion should be
|
||||
// https://github.com/microsoft/vscode-extension-samples/blob/main/inline-completions/src/extension.ts
|
||||
|
@ -4,6 +4,7 @@ import {
|
||||
ResponseData,
|
||||
showMessageWithTimeout,
|
||||
showPendingStatusBar,
|
||||
updateStatusBarMessage,
|
||||
} from './common';
|
||||
import { config } from 'process';
|
||||
|
||||
@ -193,6 +194,7 @@ export async function openAIMakeRequest(
|
||||
// FIXME: why the choices may be multiple?
|
||||
// TODO: display the multiple choices
|
||||
//console.log(data.choices[0].text);
|
||||
updateStatusBarMessage(data.choices[0].text);
|
||||
ret.content += data.choices[0].text;
|
||||
ret.tokens += data.usage?.completion_tokens || 0;
|
||||
}
|
||||
@ -200,6 +202,8 @@ export async function openAIMakeRequest(
|
||||
// stop the timer
|
||||
const timer_end = performance.now();
|
||||
ret.time = (timer_end - timer_start) / 1000.0;
|
||||
// clear the status bar item
|
||||
updateStatusBarMessage('');
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
const err = e as TypeError;
|
||||
|
Loading…
Reference in New Issue
Block a user