diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-07-24 01:00:42 -0700 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-07-24 01:00:42 -0700 |
commit | 2e376b7e61f68a48ccb2a5be7ab6ab55ab30c670 (patch) | |
tree | 6c1077859938fadce3a6f17f267127a66fd11df4 /extension/src/lang-server/codeActions.ts | |
parent | 59c549a468abd40207f8dc46eacdc0e02bbe21ad (diff) | |
parent | 82b03aeb0882cb884c398104b7934d63c6ceed00 (diff) | |
download | sncontinue-2e376b7e61f68a48ccb2a5be7ab6ab55ab30c670.tar.gz sncontinue-2e376b7e61f68a48ccb2a5be7ab6ab55ab30c670.tar.bz2 sncontinue-2e376b7e61f68a48ccb2a5be7ab6ab55ab30c670.zip |
Merge branch 'main' into show-react-immediately
Diffstat (limited to 'extension/src/lang-server/codeActions.ts')
-rw-r--r-- | extension/src/lang-server/codeActions.ts | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/extension/src/lang-server/codeActions.ts b/extension/src/lang-server/codeActions.ts new file mode 100644 index 00000000..892c69be --- /dev/null +++ b/extension/src/lang-server/codeActions.ts @@ -0,0 +1,58 @@ +import * as vscode from "vscode"; + +class ContinueQuickFixProvider implements vscode.CodeActionProvider { + public static readonly providedCodeActionKinds = [ + vscode.CodeActionKind.QuickFix, + ]; + + provideCodeActions( + document: vscode.TextDocument, + range: vscode.Range | vscode.Selection, + context: vscode.CodeActionContext, + token: vscode.CancellationToken + ): vscode.ProviderResult<(vscode.Command | vscode.CodeAction)[]> { + if (context.diagnostics.length === 0) { + return []; + } + + const createQuickFix = (edit: boolean) => { + const diagnostic = context.diagnostics[0]; + const quickFix = new vscode.CodeAction( + edit ? "Fix with Continue" : "Ask Continue", + vscode.CodeActionKind.QuickFix + ); + quickFix.isPreferred = false; + const surroundingRange = new vscode.Range( + Math.max(0, range.start.line - 3), + 0, + Math.min(document.lineCount, range.end.line + 3), + 0 + ); + quickFix.command = { + command: "continue.quickFix", + title: "Continue Quick Fix", + arguments: [ + diagnostic.message, + document.getText(surroundingRange), + edit, + ], + }; + return quickFix; + }; + return [ + // createQuickFix(true), + createQuickFix(false), + ]; + } +} + +export default function registerQuickFixProvider() { + // In your extension's activate function: + vscode.languages.registerCodeActionsProvider( + { language: "*" }, + new ContinueQuickFixProvider(), + { + providedCodeActionKinds: ContinueQuickFixProvider.providedCodeActionKinds, + } + ); +} |