feat:实现对文件的创建和删除

- 还涵盖了对已存在的文件进行覆盖
- 对不存在的文件创建
- 还可以创建目录
- 可以一次创建多个文件
This commit is contained in:
Roe-xin
2025-12-12 09:10:34 +08:00
parent 95342ecbec
commit 8af5976501
4 changed files with 436 additions and 5 deletions

View File

@ -1,4 +1,72 @@
import * as vscode from "vscode";
import { getWebviewContent } from "./webviewContent";
import {
handleUserMessage,
insertCodeToEditor,
handleReadFile,
handleCreateFile,
} from "../utils/messageHandler";
/**
* 创建并显示IC 侧边栏视图
*/
export function showICHelperPanel(content: vscode.ExtensionContext) {
// 创建WebView面板
const panel = vscode.window.createWebviewPanel(
"icCoder", // 面板ID
"IC Coder", // 面板标题
vscode.ViewColumn.Beside, // 显示在旁边
{
enableScripts: true,
retainContextWhenHidden: true,
localResourceRoots: [vscode.Uri.joinPath(content.extensionUri, "media")],
}
);
// 设置标签页图标
panel.iconPath = vscode.Uri.joinPath(
content.extensionUri,
"media",
"图案(方底).png"
);
// 获取页面内图标URI
const iconUri = panel.webview.asWebviewUri(
vscode.Uri.joinPath(content.extensionUri, "media", "图案(方底).png")
);
// 设置HTML内容
panel.webview.html = getWebviewContent(iconUri.toString());
// 处理消息
panel.webview.onDidReceiveMessage(
(message) => {
switch (message.command) {
case "sendMessage":
handleUserMessage(panel, message.text);
break;
case "readFile":
handleReadFile(panel, message.filePath);
break;
case "insertCode":
insertCodeToEditor(message.code);
break;
case "createFile":
handleCreateFile(
panel,
message.filePath,
message.content,
message.overwrite
);
break;
case "showInfo":
vscode.window.showInformationMessage(message.text);
break;
}
},
undefined,
content.subscriptions
);
}
/**
* 侧边栏视图提供者