Skip to content

Commit 1a2e363

Browse files
[0608] 修复可折叠 Python 块无法选择 Conda 环境的问题 (#3368)
1 parent 274524d commit 1a2e363

2 files changed

Lines changed: 51 additions & 3 deletions

File tree

TeXmacs/progs/dynamic/fold-menu.scm

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,14 @@
6969

7070
(tm-menu (supported-executable-menu)
7171
(for (name (session-list))
72-
(with menu-name (session-name name)
73-
((eval menu-name)
74-
(make-script-input* name "default")))))
72+
(let* ((menu-name (session-name name))
73+
(l (connection-variants name)))
74+
(assuming (== l (list "default"))
75+
((eval menu-name) (make-script-input* name "default")))
76+
(assuming (!= l (list "default"))
77+
(-> (eval menu-name)
78+
(for (variant l)
79+
((eval `(verbatim ,variant)) (make-script-input* name variant))))))))
7580

7681
(menu-bind insert-fold-menu
7782
(-> "Folded"

devel/0608.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# [0608] 修复可折叠 Python 块无法选择 Conda 环境的问题
2+
3+
## 1 相关文档
4+
- [dddd.md](dddd.md) - 任务文档模板
5+
6+
## 2 任务相关的代码文件
7+
- `TeXmacs/progs/dynamic/fold-menu.scm`
8+
9+
## 3 如何测试
10+
11+
### 3.1 确定性测试(单元测试)
12+
```
13+
# Scheme 单元测试不适用,需要手动验证菜单行为
14+
```
15+
16+
### 3.2 非确定性测试(文档验证)
17+
1. 启动 Mogan STEM
18+
2. 打开 Insert > Fold > Executable 菜单
19+
3. 确认 Python 项现在显示子菜单箭头(当有多个 conda 环境时)
20+
4. 悬停/点击 Python 项,应能看到 conda 环境列表(如 conda_base、conda_test 等)
21+
5. 选择某个 conda 环境后,应能正确插入对应环境的 script-input 块
22+
23+
## 4 如何提交
24+
25+
提交前执行以下最少步骤:
26+
27+
```bash
28+
# 检查修改的文件
29+
git diff TeXmacs/progs/dynamic/fold-menu.scm
30+
```
31+
32+
## 5 What
33+
修复 Insert > Fold > Executable > Python 菜单无法选择 Conda 环境的问题。
34+
35+
1. 修改 `supported-executable-menu`,使其与 `supported-programs-menu``supported-sessions-menu` 保持一致,检查 `connection-variants` 并在有多个变体时显示子菜单。
36+
37+
## 6 Why
38+
在 Mogan STEM 中,Python 插件支持通过 Conda 管理多个 Python 环境(如 conda_base、conda_test 等)。这些环境在 Insert > Session 菜单和 Programs 菜单中都能正确显示为子菜单,但在 Insert > Fold > Executable 菜单中,Python 项直接使用了默认环境,没有提供 Conda 环境选择,导致用户无法在该位置切换 Python 环境。
39+
40+
## 7 How
41+
`supported-executable-menu` 原先的实现直接对每个 session 调用 `(make-script-input* name "default")`,没有检查是否有其他变体。Python 插件通过 `:launch` 注册了多个 Conda 环境变体,这些变体存储在 `connection-variants` 中。
42+
43+
修复方案:参考 `supported-programs-menu` 的实现,使用 `connection-variants` 获取变体列表。当只有一个 "default" 变体时,保持原有行为直接创建菜单项;当有多个变体时,使用 `->` 创建带箭头的子菜单,让用户可以选择具体的 Conda 环境。

0 commit comments

Comments
 (0)