mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-06 08:18:39 +00:00
feat: add "Roo Code: Open in This Tab" command
- Add new command openInThisTab to package.json - Implement openClineInThisTab function that opens in current tab - Add command to types and localization - Closes #5457
This commit is contained in:
parent
962df868bd
commit
2fef294c22
4 changed files with 73 additions and 0 deletions
|
|
@ -39,6 +39,7 @@ export const commandIds = [
|
|||
"settingsButtonClicked",
|
||||
|
||||
"openInNewTab",
|
||||
"openInThisTab",
|
||||
|
||||
"showHumanRelayDialog",
|
||||
"registerHumanRelayCallback",
|
||||
|
|
|
|||
|
|
@ -129,6 +129,7 @@ const getCommandsMap = ({ context, outputChannel, provider }: RegisterCommandOpt
|
|||
return openClineInNewTab({ context, outputChannel })
|
||||
},
|
||||
openInNewTab: () => openClineInNewTab({ context, outputChannel }),
|
||||
openInThisTab: () => openClineInThisTab({ context, outputChannel }),
|
||||
settingsButtonClicked: () => {
|
||||
const visibleProvider = getVisibleProviderOrLog(outputChannel)
|
||||
|
||||
|
|
@ -298,3 +299,68 @@ export const openClineInNewTab = async ({ context, outputChannel }: Omit<Registe
|
|||
|
||||
return tabProvider
|
||||
}
|
||||
|
||||
export const openClineInThisTab = async ({ context, outputChannel }: Omit<RegisterCommandOptions, "provider">) => {
|
||||
const contextProxy = await ContextProxy.getInstance(context)
|
||||
const codeIndexManager = CodeIndexManager.getInstance(context)
|
||||
|
||||
// Get the existing MDM service instance to ensure consistent policy enforcement
|
||||
let mdmService: MdmService | undefined
|
||||
try {
|
||||
mdmService = MdmService.getInstance()
|
||||
} catch (error) {
|
||||
// MDM service not initialized, which is fine - extension can work without it
|
||||
mdmService = undefined
|
||||
}
|
||||
|
||||
const tabProvider = new ClineProvider(context, outputChannel, "editor", contextProxy, mdmService)
|
||||
|
||||
// Get the active text editor's view column, or use the first column if no editor is active
|
||||
const activeColumn = vscode.window.activeTextEditor?.viewColumn || vscode.ViewColumn.One
|
||||
|
||||
// Create the webview panel in the current tab/column
|
||||
const newPanel = vscode.window.createWebviewPanel(
|
||||
ClineProvider.tabPanelId,
|
||||
"Roo Code",
|
||||
{ viewColumn: activeColumn, preserveFocus: false },
|
||||
{
|
||||
enableScripts: true,
|
||||
retainContextWhenHidden: true,
|
||||
localResourceRoots: [context.extensionUri],
|
||||
},
|
||||
)
|
||||
|
||||
// Save as tab type panel
|
||||
setPanel(newPanel, "tab")
|
||||
|
||||
// Set the icon
|
||||
newPanel.iconPath = {
|
||||
light: vscode.Uri.joinPath(context.extensionUri, "assets", "icons", "panel_light.png"),
|
||||
dark: vscode.Uri.joinPath(context.extensionUri, "assets", "icons", "panel_dark.png"),
|
||||
}
|
||||
|
||||
await tabProvider.resolveWebviewView(newPanel)
|
||||
|
||||
// Add listener for visibility changes to notify webview
|
||||
newPanel.onDidChangeViewState(
|
||||
(e) => {
|
||||
const panel = e.webviewPanel
|
||||
if (panel.visible) {
|
||||
panel.webview.postMessage({ type: "action", action: "didBecomeVisible" })
|
||||
}
|
||||
},
|
||||
null,
|
||||
context.subscriptions,
|
||||
)
|
||||
|
||||
// Handle panel closing events
|
||||
newPanel.onDidDispose(
|
||||
() => {
|
||||
setPanel(undefined, "tab")
|
||||
},
|
||||
null,
|
||||
context.subscriptions,
|
||||
)
|
||||
|
||||
return tabProvider
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,6 +115,11 @@
|
|||
"title": "%command.openInNewTab.title%",
|
||||
"category": "%configuration.title%"
|
||||
},
|
||||
{
|
||||
"command": "roo-cline.openInThisTab",
|
||||
"title": "%command.openInThisTab.title%",
|
||||
"category": "%configuration.title%"
|
||||
},
|
||||
{
|
||||
"command": "roo-cline.explainCode",
|
||||
"title": "%command.explainCode.title%",
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
"command.settings.title": "Settings",
|
||||
"command.documentation.title": "Documentation",
|
||||
"command.openInNewTab.title": "Open In New Tab",
|
||||
"command.openInThisTab.title": "Open In This Tab",
|
||||
"command.explainCode.title": "Explain Code",
|
||||
"command.fixCode.title": "Fix Code",
|
||||
"command.improveCode.title": "Improve Code",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue