diff options
author | Ty Dunn <ty@tydunn.com> | 2023-07-05 23:20:06 -0700 |
---|---|---|
committer | Ty Dunn <ty@tydunn.com> | 2023-07-05 23:20:06 -0700 |
commit | 4fd50ba78b0199d3495f1cd7e08f595a751e6fe3 (patch) | |
tree | cb74b1ab31218ee1ba523cf924170969f2308bb0 /extension/src/lang-server/codeLens.ts | |
parent | d5a92ae77ab692c4f7d57e041a2927a41d8133bd (diff) | |
parent | d259979ef89f17957396fc7300e1ecf54214ae84 (diff) | |
download | sncontinue-4fd50ba78b0199d3495f1cd7e08f595a751e6fe3.tar.gz sncontinue-4fd50ba78b0199d3495f1cd7e08f595a751e6fe3.tar.bz2 sncontinue-4fd50ba78b0199d3495f1cd7e08f595a751e6fe3.zip |
Merge branch 'main' of github.com:continuedev/continue
Diffstat (limited to 'extension/src/lang-server/codeLens.ts')
-rw-r--r-- | extension/src/lang-server/codeLens.ts | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/extension/src/lang-server/codeLens.ts b/extension/src/lang-server/codeLens.ts index 3bd4f153..381a0084 100644 --- a/extension/src/lang-server/codeLens.ts +++ b/extension/src/lang-server/codeLens.ts @@ -1,6 +1,8 @@ import * as vscode from "vscode"; import { editorToSuggestions, editorSuggestionsLocked } from "../suggestions"; - +import * as path from "path"; +import * as os from "os"; +import { DIFF_DIRECTORY } from "../diffs"; class SuggestionsCodeLensProvider implements vscode.CodeLensProvider { public provideCodeLenses( document: vscode.TextDocument, @@ -60,15 +62,67 @@ class SuggestionsCodeLensProvider implements vscode.CodeLensProvider { } } +class DiffViewerCodeLensProvider implements vscode.CodeLensProvider { + public provideCodeLenses( + document: vscode.TextDocument, + token: vscode.CancellationToken + ): vscode.CodeLens[] | Thenable<vscode.CodeLens[]> { + if (path.dirname(document.uri.fsPath) === DIFF_DIRECTORY) { + const codeLenses: vscode.CodeLens[] = []; + const range = new vscode.Range(0, 0, 1, 0); + codeLenses.push( + new vscode.CodeLens(range, { + title: "Accept ✅", + command: "continue.acceptDiff", + arguments: [document.uri.fsPath], + }), + new vscode.CodeLens(range, { + title: "Reject ❌", + command: "continue.rejectDiff", + arguments: [document.uri.fsPath], + }) + ); + return codeLenses; + } else { + return []; + } + } + + onDidChangeCodeLenses?: vscode.Event<void> | undefined; + + constructor(emitter?: vscode.EventEmitter<void>) { + if (emitter) { + this.onDidChangeCodeLenses = emitter.event; + this.onDidChangeCodeLenses(() => { + if (vscode.window.activeTextEditor) { + this.provideCodeLenses( + vscode.window.activeTextEditor.document, + new vscode.CancellationTokenSource().token + ); + } + }); + } + } +} + +let diffsCodeLensDisposable: vscode.Disposable | undefined = undefined; let suggestionsCodeLensDisposable: vscode.Disposable | undefined = undefined; export function registerAllCodeLensProviders(context: vscode.ExtensionContext) { if (suggestionsCodeLensDisposable) { suggestionsCodeLensDisposable.dispose(); } + if (diffsCodeLensDisposable) { + diffsCodeLensDisposable.dispose(); + } suggestionsCodeLensDisposable = vscode.languages.registerCodeLensProvider( "*", new SuggestionsCodeLensProvider() ); + diffsCodeLensDisposable = vscode.languages.registerCodeLensProvider( + "*", + new DiffViewerCodeLensProvider() + ); context.subscriptions.push(suggestionsCodeLensDisposable); + context.subscriptions.push(diffsCodeLensDisposable); } |