mirror of
https://github.com/voideditor/void
synced 2026-05-24 09:58:23 +00:00
+
This commit is contained in:
parent
40aa319d18
commit
f8f48fb98b
3 changed files with 23 additions and 24 deletions
8
extensions/void/src/Diff.ts
Normal file
8
extensions/void/src/Diff.ts
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
class Diff {
|
||||
|
||||
constructor(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ const greenDecoration = vscode.window.createTextEditorDecorationType({
|
|||
|
||||
|
||||
// responsible for displaying diffs and showing accept/reject buttons
|
||||
export class DisplayChangesProvider implements vscode.CodeLensProvider {
|
||||
export class DisplayChangesProvider {
|
||||
|
||||
private _diffAreasOfDocument: { [docUriStr: string]: DiffArea[] } = {}
|
||||
private _diffsOfDocument: { [docUriStr: string]: Diff[] } = {}
|
||||
|
|
@ -21,22 +21,23 @@ export class DisplayChangesProvider implements vscode.CodeLensProvider {
|
|||
private _diffidPool = 0
|
||||
private _weAreEditing: boolean = false
|
||||
|
||||
// used internally by vscode
|
||||
private _onDidChangeCodeLenses: vscode.EventEmitter<void> = new vscode.EventEmitter<void>(); // signals a UI refresh on .fire() events
|
||||
public readonly onDidChangeCodeLenses: vscode.Event<void> = this._onDidChangeCodeLenses.event;
|
||||
|
||||
// used internally by vscode
|
||||
public provideCodeLenses(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult<vscode.CodeLens[]> {
|
||||
const docUriStr = document.uri.toString()
|
||||
return this._diffsOfDocument[docUriStr]?.flatMap(diff => diff.lenses) ?? []
|
||||
}
|
||||
private _onDidChangeDiffsEvent: vscode.EventEmitter<void> = new vscode.EventEmitter<void>(); // signals a UI refresh on .fire() events
|
||||
|
||||
// declared by us, registered with vscode.languages.registerCodeLensProvider()
|
||||
constructor() {
|
||||
|
||||
console.log('Creating DisplayChangesProvider')
|
||||
|
||||
// this acts as a useEffect. Every time text changes, clear the diffs in this editor
|
||||
// update diffs whenever the event fires
|
||||
this._onDidChangeDiffsEvent.event(() => {
|
||||
const editor = vscode.window.activeTextEditor
|
||||
if (!editor) return
|
||||
|
||||
let document = editor.document
|
||||
const docUriStr = document.uri.toString()
|
||||
return this._diffsOfDocument[docUriStr]?.flatMap(diff => diff.lenses) ?? []
|
||||
})
|
||||
|
||||
// this acts as a useEffect. Every time text changes, run this
|
||||
vscode.workspace.onDidChangeTextDocument((e) => {
|
||||
|
||||
const editor = vscode.window.activeTextEditor
|
||||
|
|
@ -181,7 +182,7 @@ export class DisplayChangesProvider implements vscode.CodeLensProvider {
|
|||
// this._diffsOfDocument[docUriStr].map(diff => diff.deletedCode)
|
||||
|
||||
// update code lenses
|
||||
this._onDidChangeCodeLenses.fire()
|
||||
this._onDidChangeDiffsEvent.fire()
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,15 +46,6 @@ export function activate(context: vscode.ExtensionContext) {
|
|||
const editor = vscode.window.activeTextEditor
|
||||
if (!editor) return
|
||||
|
||||
|
||||
// const inset = vscode.window.createWebviewTextEditorInset(editor, 10, 10, {})
|
||||
// inset.webview.html = `
|
||||
// <html>
|
||||
// <body style="pointer-events:none;">Hello World!</body>
|
||||
// </html>
|
||||
// `;
|
||||
|
||||
|
||||
// show the sidebar
|
||||
vscode.commands.executeCommand('workbench.view.extension.voidViewContainer');
|
||||
// vscode.commands.executeCommand('vscode.moveViewToPanel', CustomViewProvider.viewId); // move to aux bar
|
||||
|
|
@ -94,9 +85,8 @@ export function activate(context: vscode.ExtensionContext) {
|
|||
})
|
||||
);
|
||||
|
||||
// 3. Show an approve/reject codelens above each change
|
||||
// 3. Show an approve/reject
|
||||
const displayChangesProvider = new DisplayChangesProvider();
|
||||
context.subscriptions.push(vscode.languages.registerCodeLensProvider('*', displayChangesProvider));
|
||||
|
||||
// 4. Add approve/reject commands
|
||||
context.subscriptions.push(vscode.commands.registerCommand('void.acceptDiff', async (params) => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue