diff --git a/README.md b/README.md index 24d6176..5449f62 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,12 @@ RT-Thread VSCode扩展是一款专为RT-Thread及RT-Thread Smart (版本>5.2.0) ### 版本说明 +**v0.4.12** +- 加入RT-Thread ELF文件符号分析的功能; +- 调整界面,web页面颜色样式可以跟随vscode的浅色/深色自动进行切换; +- RT-Thread设置界面可以在UI上按照env脚本环境; +- web页面有统一的RT-Thread logo banner; + **v0.4.11** - 添加Vue3、Element Plus的前端页面功能; - 更改RT-Thread Groups 到文件浏览视图,并增加编译图标按钮; @@ -24,7 +30,7 @@ RT-Thread VSCode扩展是一款专为RT-Thread及RT-Thread Smart (版本>5.2.0) ### env安装说明 -📢 如未安装,请点击链接了解如何进行安装。 +📢 如未安装,可以使用RT-Thread设置功能进行安装,也可以在命令行下自行安装: **💻 Windows用户** 请使用PowerShell运行如下的命令进行安装: diff --git a/src/project/cmd.ts b/src/project/cmd.ts index fef71c0..5dbdba3 100644 --- a/src/project/cmd.ts +++ b/src/project/cmd.ts @@ -1,6 +1,7 @@ import * as os from 'os'; import * as fs from 'fs'; import * as vscode from 'vscode'; +import * as path from 'path'; import { getWorkspaceFolder } from '../api'; import { executeCommand } from '../terminal'; @@ -55,7 +56,14 @@ export function setCurrentProject(arg: any) { // update workspace.json file let workspaceJson = readWorkspaceJson(); if (workspaceJson) { - workspaceJson.currentProject = arg.fn; + const workspaceFolder = getWorkspaceFolder(); + let relativeProject = arg.fn; + if (workspaceFolder && typeof arg.fn === 'string' && arg.fn.length > 0) { + if (path.isAbsolute(arg.fn)) { + relativeProject = path.relative(workspaceFolder, arg.fn); + } + } + workspaceJson.currentProject = relativeProject; writeWorkspaceJson(workspaceJson); } } diff --git a/src/webviews/project.ts b/src/webviews/project.ts index ea8877c..22375f8 100644 --- a/src/webviews/project.ts +++ b/src/webviews/project.ts @@ -192,7 +192,13 @@ export function writeWorkspaceJson(data: any) { export function setCurrentProjectInWorkspace(project: string) { let workspaceJson = readWorkspaceJson(); if (workspaceJson) { - workspaceJson.currentProject = project; + const workspaceFolder = getWorkspaceFolder(); + let relativeProject = project; + if (workspaceFolder && path.isAbsolute(project)) { + relativeProject = path.relative(workspaceFolder, project); + } + + workspaceJson.currentProject = relativeProject; writeWorkspaceJson(workspaceJson); } } @@ -201,7 +207,20 @@ export function setCurrentProjectInWorkspace(project: string) { export function getCurrentProjectInWorkspace() { let workspaceJson = readWorkspaceJson(); if (workspaceJson) { - return workspaceJson.currentProject; + const project = workspaceJson.currentProject; + if (!project) { + return null; + } + + // Backward compatible: if absolute, return it; if relative, resolve to absolute + if (path.isAbsolute(project)) { + return project; + } + + const workspaceFolder = getWorkspaceFolder(); + if (workspaceFolder) { + return path.resolve(workspaceFolder, project); + } } return null; }