Skip to content

Commit 5ddb9b0

Browse files
committed
fix: 修正nodejs工程,package.json 无法被选中修改
1 parent 4fb6102 commit 5ddb9b0

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

src/fileSelector.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,43 @@
11
import * as vscode from 'vscode';
22

3-
const INCLUDED_EXTENSIONS = ['cpp', 'h', 'c', 'cxx', 'hpp', 'py', 'lua', 'ls', 'lh', 'ts', 'js'];
4-
const EXCLUDED_DIRECTORIES = ['node_modules', '.git', 'build', 'dist', 'out', 'vendor'];
3+
// 配置常量
4+
const ALLOWED_FILENAMES = ['package.json']; // 文件名白名单
5+
const INCLUDED_EXTENSIONS = ['cpp', 'h', 'c', 'cxx', 'hpp', 'py', 'lua', 'ls', 'lh', 'ts', 'js']; // 扩展名白名单
6+
const EXCLUDED_DIRECTORIES = ['node_modules', '.git', 'build', 'dist', 'out', 'vendor']; // 排除目录
57

68
/**
79
* 显示文件选择器,并返回用户选择的文件列表
810
* @returns 用户选择的文件路径数组
911
*/
1012
export async function selectFiles(): Promise<string[]> {
13+
// 检查是否打开了工作区
1114
const workspaceFolders = vscode.workspace.workspaceFolders;
1215
if (!workspaceFolders) {
1316
vscode.window.showErrorMessage('No workspace folder found.');
1417
return [];
1518
}
1619

17-
// 生成文件匹配模式和排除模式
18-
const filePattern = `**/*.{${INCLUDED_EXTENSIONS.join(',')}}`;
1920
const excludePattern = `{${EXCLUDED_DIRECTORIES.map(dir => `**/${dir}/**`).join(',')}}`;
2021

21-
// 获取当前目录下的所有源文件,并排除指定目录
22-
const files = await vscode.workspace.findFiles(filePattern, excludePattern);
23-
const filePaths = files.map(file => file.fsPath);
22+
// 1. 匹配白名单文件名
23+
const filenamePattern = `**/{${ALLOWED_FILENAMES.join(',')}}`;
24+
const filenameFiles = await vscode.workspace.findFiles(filenamePattern, excludePattern);
2425

25-
// 显示文件选择面板
26-
const selectedItems = await vscode.window.showQuickPick(filePaths, {
26+
// 2. 匹配扩展名文件,并排除指定目录
27+
const extensionPattern = `**/*.{${INCLUDED_EXTENSIONS.join(',')}}`;
28+
const extensionFiles = await vscode.workspace.findFiles(extensionPattern, excludePattern);
29+
30+
// 3. 合并结果并去重
31+
const allFiles = [...filenameFiles, ...extensionFiles];
32+
const uniqueFiles = Array.from(new Set(allFiles.map(file => file.fsPath)));
33+
34+
// 4. 显示文件选择面板
35+
const selectedItems = await vscode.window.showQuickPick(uniqueFiles, {
2736
placeHolder: 'Select files to include in the refactoring',
2837
canPickMany: true, // 允许多选
2938
});
3039

40+
// 返回用户选择的文件
3141
if (selectedItems) {
3242
vscode.window.showInformationMessage(`Selected ${selectedItems.length} files.`);
3343
return selectedItems;

0 commit comments

Comments
 (0)