mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-21 01:07:46 +00:00
[ide-mode] Add openDiff tool to IDE MCP server (#4519)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This commit is contained in:
@@ -6,12 +6,15 @@
|
||||
|
||||
import * as vscode from 'vscode';
|
||||
import { IDEServer } from './ide-server.js';
|
||||
import { DiffContentProvider, DiffManager } from './diff-manager.js';
|
||||
import { createLogger } from './utils/logger.js';
|
||||
|
||||
const IDE_WORKSPACE_PATH_ENV_VAR = 'GEMINI_CLI_IDE_WORKSPACE_PATH';
|
||||
export const DIFF_SCHEME = 'gemini-diff';
|
||||
|
||||
let ideServer: IDEServer;
|
||||
let logger: vscode.OutputChannel;
|
||||
|
||||
let log: (message: string) => void = () => {};
|
||||
|
||||
function updateWorkspacePath(context: vscode.ExtensionContext) {
|
||||
@@ -37,7 +40,40 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
|
||||
updateWorkspacePath(context);
|
||||
|
||||
ideServer = new IDEServer(log);
|
||||
const diffContentProvider = new DiffContentProvider();
|
||||
const diffManager = new DiffManager(logger, diffContentProvider);
|
||||
|
||||
context.subscriptions.push(
|
||||
vscode.workspace.onDidCloseTextDocument((doc) => {
|
||||
if (doc.uri.scheme === DIFF_SCHEME) {
|
||||
diffManager.cancelDiff(doc.uri);
|
||||
}
|
||||
}),
|
||||
vscode.workspace.registerTextDocumentContentProvider(
|
||||
DIFF_SCHEME,
|
||||
diffContentProvider,
|
||||
),
|
||||
vscode.commands.registerCommand(
|
||||
'gemini.diff.accept',
|
||||
(uri?: vscode.Uri) => {
|
||||
const docUri = uri ?? vscode.window.activeTextEditor?.document.uri;
|
||||
if (docUri && docUri.scheme === DIFF_SCHEME) {
|
||||
diffManager.acceptDiff(docUri);
|
||||
}
|
||||
},
|
||||
),
|
||||
vscode.commands.registerCommand(
|
||||
'gemini.diff.cancel',
|
||||
(uri?: vscode.Uri) => {
|
||||
const docUri = uri ?? vscode.window.activeTextEditor?.document.uri;
|
||||
if (docUri && docUri.scheme === DIFF_SCHEME) {
|
||||
diffManager.cancelDiff(docUri);
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
ideServer = new IDEServer(log, diffManager);
|
||||
try {
|
||||
await ideServer.start(context);
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user