Skip to content

[0121] 修复绘图区域数学模式中光标左移导致的死循环#3356

Merged
da-liii merged 2 commits into
mainfrom
da/0121/math_left_crash
May 14, 2026
Merged

[0121] 修复绘图区域数学模式中光标左移导致的死循环#3356
da-liii merged 2 commits into
mainfrom
da/0121/math_left_crash

Conversation

@da-liii
Copy link
Copy Markdown
Contributor

@da-liii da-liii commented May 14, 2026

问题描述

在绘图区域(graphics)的数学模式(math-at)中,按左方向键移动光标时,软件会卡死。

根因分析

[23_21] Ban jump in text/math at of graphics area 提交中引入的 lambda:

(lambda (t2) (equal? t (tree-ref t2 :up)))

math-at 内部结构扁平时光标路径只有 3 层,innermost-pattern 检查到的 t2 就是 math-at 本身,其 tree-ref :upgraphics,不等于 math-at,导致 innermost-pattern 永远返回假。同时 go-left 一直在改变光标位置,使得 go-to-next-inside-sub 的循环永远无法退出,形成死循环。

修复方案

将 lambda 改为向上遍历祖先链:

(lambda (t2) (tree-search-upwards t2 (lambda (u) (equal? u t))))

这样在扁平结构和嵌套结构下都能正确匹配。

修改的文件

  • TeXmacs/progs/graphics/graphics-kbd.scm
  • devel/0121.md

@da-liii da-liii merged commit d3817c3 into main May 14, 2026
@da-liii da-liii deleted the da/0121/math_left_crash branch May 14, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants