{ "name": "fmd-c-compiler", "publisher": "kevinngmanfong", "displayName": "FMD C Compiler", "description": "FMD/FT61FC6X 系列 MCU 编译器支持(C.exe 工具链)", "version": "0.2.15", "license": "MIT", "icon": "resources/icon.png", "engines": { "vscode": "^1.85.0" }, "categories": ["Other"], "activationEvents": [], "main": "./out/extension.js", "contributes": { "commands": [ { "command": "fmdCompiler.build", "title": "FMD: Build Project", "icon": "$(play)" }, { "command": "fmdCompiler.buildFile", "title": "FMD: Build Current File" }, { "command": "fmdCompiler.clean", "title": "FMD: Clean Project" }, { "command": "fmdCompiler.selectProject", "title": "FMD: Select Project (.prj)" }, { "command": "fmdCompiler.openOutput", "title": "FMD: Show Build Output" }, { "command": "fmdCompiler.setCompilerPath", "title": "FMD: Set Compiler Path" }, { "command": "fmdCompiler.detectCompilerPath", "title": "FMD: Detect Compiler Path" }, { "command": "fmdCompiler.selectChip", "title": "FMD: Select Target Chip" }, { "command": "fmdCompiler.syncChipFromProject", "title": "FMD: Use Chip From Project File" }, { "command": "fmdCompiler.configureProgrammer", "title": "FMD: Configure Programmer" }, { "command": "fmdCompiler.download", "title": "FMD: Download/Program MCU", "icon": "$(cloud-upload)" }, { "command": "fmdCompiler.buildAndDownload", "title": "FMD: Build and Download MCU" }, { "command": "fmdCompiler.openEeprom", "title": "FMD: Open EEPROM Editor" }, { "command": "fmdCompiler.readEeprom", "title": "FMD: Read EEPROM From MCU" }, { "command": "fmdCompiler.writeEeprom", "title": "FMD: Write EEPROM To MCU" }, { "command": "fmdCompiler.exportEepromHex", "title": "FMD: Export EEPROM HEX" }, { "command": "fmdCompiler.regenerateConfig", "title": "FMD: Regenerate VS Code Config", "icon": "$(gear)" } ], "keybindings": [ { "command": "fmdCompiler.build", "key": "f7", "when": "editorTextFocus && resourceExtname =~ /\\.[cChH]$/" } ], "menus": { "editor/title": [ { "command": "fmdCompiler.build", "when": "resourceExtname =~ /\\.[cChH]$/", "group": "navigation" }, { "command": "fmdCompiler.download", "when": "resourceExtname =~ /\\.[cChH]$/", "group": "navigation" }, { "command": "fmdCompiler.regenerateConfig", "when": "resourceExtname =~ /\\.[cChH]$/", "group": "navigation" } ], "editor/context": [ { "command": "fmdCompiler.build", "when": "resourceExtname =~ /\\.[cChH]$/", "group": "fmd@1" }, { "command": "fmdCompiler.buildFile", "when": "resourceExtname =~ /\\.[cC]$/", "group": "fmd@2" }, { "command": "fmdCompiler.clean", "when": "resourceExtname =~ /\\.[cChH]$/", "group": "fmd@3" }, { "command": "fmdCompiler.buildAndDownload", "when": "resourceExtname =~ /\\.[cChH]$/", "group": "fmd@4" }, { "command": "fmdCompiler.openEeprom", "when": "resourceExtname =~ /\\.[cChH]$/", "group": "fmd@5" }, { "command": "fmdCompiler.regenerateConfig", "when": "resourceExtname =~ /\\.[cChH]$/", "group": "fmd@6" } ], "explorer/context": [ { "command": "fmdCompiler.build", "when": "resourceExtname == '.prj' || resourceExtname =~ /\\.[cC]$/", "group": "fmd@1" }, { "command": "fmdCompiler.selectProject", "when": "resourceExtname == '.prj'", "group": "fmd@2" }, { "command": "fmdCompiler.download", "when": "resourceExtname == '.prj' || resourceExtname == '.hex' || resourceExtname == '.bin'", "group": "fmd@3" }, { "command": "fmdCompiler.buildAndDownload", "when": "resourceExtname == '.prj' || resourceExtname =~ /\\.[cC]$/", "group": "fmd@4" }, { "command": "fmdCompiler.openEeprom", "when": "resourceExtname == '.prj' || resourceExtname == '.hex'", "group": "fmd@5" }, { "command": "fmdCompiler.regenerateConfig", "when": "resourceExtname == '.prj' || resourceExtname =~ /\\.[cChH]$/", "group": "fmd@6" } ] }, "configuration": { "title": "FMD Compiler", "properties": { "fmdCompiler.compilerPath": { "type": "string", "default": "C:\\Program Files (x86)\\CCompiler\\Compiler\\data\\bin\\c.exe", "description": "编译器 c.exe 的路径" }, "fmdCompiler.compilerSearchPaths": { "type": "array", "default": [ "C:\\Program Files (x86)\\CCompiler\\Compiler\\data\\bin\\c.exe", "C:\\Program Files\\CCompiler\\Compiler\\data\\bin\\c.exe" ], "items": { "type": "string" }, "description": "自动检测编译器时检查的候选路径" }, "fmdCompiler.projectFile": { "type": "string", "default": "", "description": "当前工程 .prj 文件路径(留空则自动搜索)" }, "fmdCompiler.chip": { "type": "string", "default": "FT61FC6X", "description": "目标芯片型号" }, "fmdCompiler.outputDir": { "type": "string", "default": "build", "description": "输出目录。默认 build 会输出到工程目录下的 build 文件夹;留空则与工程同目录;也可填写绝对路径。" }, "fmdCompiler.extraArgs": { "type": "string", "default": "", "description": "额外的编译器参数" }, "fmdCompiler.autoSaveBeforeBuild": { "type": "boolean", "default": true, "description": "编译前自动保存所有文件" }, "fmdCompiler.showOutputOnBuild": { "type": "boolean", "default": true, "description": "编译时自动显示输出面板" }, "fmdCompiler.programmerPath": { "type": "string", "default": "", "description": "外部烧录/下载工具路径" }, "fmdCompiler.programmerArgs": { "type": "array", "default": [], "items": { "type": "string" }, "description": "烧录工具参数,支持 ${chip}、${hexFile}、${binFile}、${downloadFile} 等变量" }, "fmdCompiler.programmerCwd": { "type": "string", "default": "${projectDir}", "description": "烧录工具工作目录" }, "fmdCompiler.programmerUseShell": { "type": "boolean", "default": false, "description": "是否通过 shell 执行烧录工具" }, "fmdCompiler.programmerSuccessExitCodes": { "type": "array", "default": [0], "items": { "type": "number" }, "description": "认为烧录成功的退出码" }, "fmdCompiler.downloadFileType": { "type": "string", "enum": ["hex", "bin"], "default": "hex", "description": "下载程序时使用的文件类型" }, "fmdCompiler.autoBuildBeforeDownload": { "type": "boolean", "default": false, "description": "下载前是否自动编译" }, "fmdCompiler.showOutputOnDownload": { "type": "boolean", "default": true, "description": "下载时自动显示输出面板" }, "fmdCompiler.eepromBaseAddress": { "type": "string", "default": "0x2100", "description": "EEPROM 在 HEX 文件中的基地址" }, "fmdCompiler.eepromStart": { "type": "string", "default": "0x00", "description": "EEPROM 逻辑起始地址" }, "fmdCompiler.eepromSize": { "type": "number", "default": 112, "description": "EEPROM 字节数" }, "fmdCompiler.eepromFill": { "type": "string", "default": "0xFF", "description": "新建 EEPROM 镜像的默认填充值" }, "fmdCompiler.eepromImageFile": { "type": "string", "default": "", "description": "EEPROM 镜像文件路径(留空自动使用工程名 .eep.hex)" }, "fmdCompiler.eepromReadArgs": { "type": "array", "default": [], "items": { "type": "string" }, "description": "外部工具读取 EEPROM 的参数,支持 ${eepromFile} 等变量" }, "fmdCompiler.eepromWriteArgs": { "type": "array", "default": [], "items": { "type": "string" }, "description": "外部工具写入 EEPROM 的参数,支持 ${eepromFile} 等变量" } } }, "languages": [ { "id": "c", "extensions": [".C", ".c"], "aliases": ["C", "c"] } ], "problemMatchers": [ { "name": "fmd-gcc", "owner": "fmd", "fileLocation": ["absolute"], "pattern": [ { "regexp": "^(.+\\.(?:[cChH]|C|H)):(\\d+):\\s+(error|warning|note):\\s+(.+)$", "file": 1, "line": 2, "severity": 3, "message": 4 } ] }, { "name": "fmd-linker", "owner": "fmd", "fileLocation": ["absolute"], "pattern": [ { "regexp": "^.*?:\\s+(Error|Warning)\\s+\\[(\\w+)\\]\\s+(.+)$", "severity": 1, "code": 2, "message": 3 } ] } ], "taskDefinitions": [ { "type": "fmd-build", "properties": { "projectFile": { "type": "string", "description": ".prj 文件路径" } } } ] }, "scripts": { "vscode:prepublish": "npm run compile", "compile": "tsc -p ./", "watch": "tsc -watch -p ./" }, "devDependencies": { "@types/vscode": "^1.85.0", "@types/node": "^20.0.0", "typescript": "^5.3.0" } }