From e73f738351ebe24d24a5dbde75cfbbee82ef6e44 Mon Sep 17 00:00:00 2001 From: github0null Date: Wed, 29 Apr 2026 01:29:06 +0800 Subject: [PATCH 1/4] fix one-click debug for multi-project workspace --- src/extension.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index abc1629..d7da7ac 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -32,7 +32,7 @@ import * as yaml from 'yaml'; import { GlobalEvent } from './GlobalEvents'; import { OperationExplorer } from './OperationExplorer'; -import { ProjectExplorer } from './EIDEProjectExplorer'; +import { ProjectExplorer, ProjTreeItem } from './EIDEProjectExplorer'; import { ResManager } from './ResManager'; import { LogAnalyzer } from './LogAnalyzer'; import { ResInstaller } from './ResInstaller'; @@ -124,12 +124,12 @@ export async function activate(context: vscode.ExtensionContext) { GlobalEvent.log_show(); }); })); - subscriptions.push(vscode.commands.registerCommand('eide.debug.start', () => { - startDebugging() + subscriptions.push(vscode.commands.registerCommand('eide.debug.start', (item) => { + startDebugging(item) .catch(err => GlobalEvent.emit('error', err)); })); - subscriptions.push(vscode.commands.registerCommand('eide.debug.start.attach', () => { - startDebugging(true) + subscriptions.push(vscode.commands.registerCommand('eide.debug.start.attach', (item) => { + startDebugging(item, true) .catch(err => GlobalEvent.emit('error', err)); })); @@ -2461,9 +2461,11 @@ class ExternalDebugConfigProvider implements vscode.DebugConfigurationProvider { } } -async function startDebugging(attach?: boolean) { +async function startDebugging(viewItem?: ProjTreeItem, attach?: boolean) { - const prj = projectExplorer.getActiveProject(); + const prj = viewItem + ? projectExplorer.getProjectByTreeItem(viewItem) + : projectExplorer.getActiveProject(); if (!prj) { GlobalEvent.show_msgbox('Warning', `No actived project to debug.`); return; From 389dd7f5690bf7b68a2882a6de5da465cd223b00 Mon Sep 17 00:00:00 2001 From: github0null Date: Wed, 29 Apr 2026 01:47:39 +0800 Subject: [PATCH 2/4] by default use '-flto=4' for lto option --- res/data/models/any.gcc.model.json | 2 +- res/data/models/arm.gcc.model.json | 2 +- res/data/models/arm.llvm.model.json | 2 +- res/data/models/riscv.gcc.model.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/data/models/any.gcc.model.json b/res/data/models/any.gcc.model.json index eb9ef5f..c2483d0 100644 --- a/res/data/models/any.gcc.model.json +++ b/res/data/models/any.gcc.model.json @@ -46,7 +46,7 @@ "optimization-lto": { "type": "selectable", "command": { - "true": "-flto=auto", + "true": "-flto=4", "false": "" }, "group": [ diff --git a/res/data/models/arm.gcc.model.json b/res/data/models/arm.gcc.model.json index 650d899..571bc6c 100644 --- a/res/data/models/arm.gcc.model.json +++ b/res/data/models/arm.gcc.model.json @@ -269,7 +269,7 @@ "optimization-lto": { "type": "selectable", "command": { - "true": "-flto=auto", + "true": "-flto=4", "false": "" }, "group": [ diff --git a/res/data/models/arm.llvm.model.json b/res/data/models/arm.llvm.model.json index dd49e09..93b9b6b 100644 --- a/res/data/models/arm.llvm.model.json +++ b/res/data/models/arm.llvm.model.json @@ -229,7 +229,7 @@ "optimization-lto": { "type": "selectable", "command": { - "true": "-flto=auto", + "true": "-flto=4", "false": "" }, "group": [ diff --git a/res/data/models/riscv.gcc.model.json b/res/data/models/riscv.gcc.model.json index aad93e7..48b997e 100644 --- a/res/data/models/riscv.gcc.model.json +++ b/res/data/models/riscv.gcc.model.json @@ -62,7 +62,7 @@ "optimization-lto": { "type": "selectable", "command": { - "true": "-flto=auto", + "true": "-flto=4", "false": "" }, "group": [ From 71bf48c704401c61222b434cac52c3fe2b8cba9d Mon Sep 17 00:00:00 2001 From: github0null Date: Wed, 29 Apr 2026 02:08:10 +0800 Subject: [PATCH 3/4] fix cmsis config parser (float number, '#define' macro) --- src/CmsisConfigParser.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CmsisConfigParser.ts b/src/CmsisConfigParser.ts index 0756561..5a1346f 100644 --- a/src/CmsisConfigParser.ts +++ b/src/CmsisConfigParser.ts @@ -254,7 +254,7 @@ export function parse(lines: string[]): CmsisConfiguration | undefined { } // 解析宏定义或者赋值语句 - const macroMatcher = /^\s*#define\s+(?\w+)\s*(?.+)?/; + const macroMatcher = /^\s*#\s*define\s+(?\w+)\s*(?.+)?/; let match = macroMatcher.exec(cur_line); if (!match || match.groups == undefined) { if (cur_line.trim().startsWith('//') || @@ -429,7 +429,7 @@ interface NumberValueInfo { fmtStr?: string; } -const numberMatcher = /\b(0x[0-9a-f]+|[\d\.]+)\b/i; +const numberMatcher = /(0x[0-9a-f]+|[+-]?[\d\.]+f?)\b/i; function parseNumber(str: string): NumberValueInfo { const m = numberMatcher.exec(str); if (m && m.length > 1) { From f52a9109a9a00665ce1a9972e628142abc2524c8 Mon Sep 17 00:00:00 2001 From: github0null Date: Wed, 29 Apr 2026 02:17:44 +0800 Subject: [PATCH 4/4] v3.26.8 revision --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1bf733..d6c9abe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,15 @@ All notable version changes will be recorded in this file. *** +### [v3.26.8] revision + +**Fix**: + - `Compatibility Of Compiler Options`: Use `-flto=4` instead of `-flto=auto` when LTO options is enabled. + - `One-click Debug`: Not as expected in multi-project workspace. + - `Cmsis Config View`: Fix cmsis config parser bug (float number, `#define` macro). + +*** + ### [v3.26.7] revision **Improve**: diff --git a/package.json b/package.json index e08f210..06619ba 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "homepage": "https://em-ide.com", "license": "MIT", "description": "A mcu development environment for 8051/AVR/STM8/Cortex-M/MIPS/RISC-V", - "version": "3.26.7", + "version": "3.26.8", "preview": false, "engines": { "vscode": "^1.67.0"