Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 到文件浏览视图,并增加编译图标按钮;
Expand All @@ -24,7 +30,7 @@ RT-Thread VSCode扩展是一款专为RT-Thread及RT-Thread Smart (版本>5.2.0)

### env安装说明

📢 如未安装,请点击<a href="https://github.com/RT-Thread/env" target="_blank">链接</a>了解如何进行安装。
📢 如未安装,可以使用RT-Thread设置功能进行安装,也可以在命令行下自行安装:

**💻 Windows用户** 请使用PowerShell运行如下的命令进行安装:

Expand Down
10 changes: 9 additions & 1 deletion src/project/cmd.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -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);
}
}
Expand Down
23 changes: 21 additions & 2 deletions src/webviews/project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Expand All @@ -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;
}