Skip to content

Commit 02a8eb9

Browse files
committed
feat: integrate code actions into extension activation
1 parent 273bfc4 commit 02a8eb9

File tree

2 files changed

+57
-7
lines changed

2 files changed

+57
-7
lines changed

src/extension.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import * as vscode from "vscode"
55
import { ClineProvider } from "./core/webview/ClineProvider"
66
import { createClineAPI } from "./exports"
77
import "./utils/path" // necessary to have access to String.prototype.toPosix
8+
import { CodeActionProvider } from "./core/CodeActionProvider"
9+
import { explainCodePrompt, fixCodePrompt, improveCodePrompt } from "./core/prompts/code-actions"
810
import { DIFF_VIEW_URI_SCHEME } from "./integrations/editor/DiffViewProvider"
911

1012
/*
@@ -158,6 +160,51 @@ export function activate(context: vscode.ExtensionContext) {
158160
}
159161
context.subscriptions.push(vscode.window.registerUriHandler({ handleUri }))
160162

163+
// Register code actions provider
164+
context.subscriptions.push(
165+
vscode.languages.registerCodeActionsProvider(
166+
{ pattern: "**/*" },
167+
new CodeActionProvider(),
168+
{
169+
providedCodeActionKinds: CodeActionProvider.providedCodeActionKinds
170+
}
171+
)
172+
);
173+
174+
// Register code action commands
175+
context.subscriptions.push(
176+
vscode.commands.registerCommand("roo-cline.explainCode", async (filePath: string, selectedText: string) => {
177+
const visibleProvider = ClineProvider.getVisibleInstance()
178+
if (!visibleProvider) {
179+
return
180+
}
181+
const prompt = explainCodePrompt(filePath, selectedText)
182+
await visibleProvider.initClineWithTask(prompt)
183+
})
184+
);
185+
186+
context.subscriptions.push(
187+
vscode.commands.registerCommand("roo-cline.fixCode", async (filePath: string, selectedText: string, diagnostics?: any[]) => {
188+
const visibleProvider = ClineProvider.getVisibleInstance()
189+
if (!visibleProvider) {
190+
return
191+
}
192+
const prompt = fixCodePrompt(filePath, selectedText, diagnostics)
193+
await visibleProvider.initClineWithTask(prompt)
194+
})
195+
);
196+
197+
context.subscriptions.push(
198+
vscode.commands.registerCommand("roo-cline.improveCode", async (filePath: string, selectedText: string) => {
199+
const visibleProvider = ClineProvider.getVisibleInstance()
200+
if (!visibleProvider) {
201+
return
202+
}
203+
const prompt = improveCodePrompt(filePath, selectedText)
204+
await visibleProvider.initClineWithTask(prompt)
205+
})
206+
);
207+
161208
return createClineAPI(outputChannel, sidebarProvider)
162209
}
163210

src/test/extension.test.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,16 @@ suite("Roo Cline Extension Test Suite", () => {
117117

118118
// Test core commands are registered
119119
const expectedCommands = [
120-
"roo-cline.plusButtonClicked",
121-
"roo-cline.mcpButtonClicked",
122-
"roo-cline.historyButtonClicked",
123-
"roo-cline.popoutButtonClicked",
124-
"roo-cline.settingsButtonClicked",
125-
"roo-cline.openInNewTab",
126-
]
120+
'roo-cline.plusButtonClicked',
121+
'roo-cline.mcpButtonClicked',
122+
'roo-cline.historyButtonClicked',
123+
'roo-cline.popoutButtonClicked',
124+
'roo-cline.settingsButtonClicked',
125+
'roo-cline.openInNewTab',
126+
'roo-cline.explainCode',
127+
'roo-cline.fixCode',
128+
'roo-cline.improveCode'
129+
];
127130

128131
for (const cmd of expectedCommands) {
129132
assert.strictEqual(commands.includes(cmd), true, `Command ${cmd} should be registered`)

0 commit comments

Comments
 (0)