Skip to content

feat: 登记遗留清尾——宽字符折行 + $EDITOR 引号解析 + ctrl+x ctrl+e 第二键位 - #464

Merged
liuqihonggit merged 1 commit into
mainfrom
w1
Oct 22, 2026
Merged

liuqihonggit merged 1 commit into
mainfrom
w1

Conversation

@liuqihonggit

Copy link
Copy Markdown
Owner

Summary

  • L 宽字符折行:PermissionTextWrap 从字符数计量升级为显示列宽计量(复用 RuneWidth.OfText 单一数据源——与 Screen/InputBuffer/MarkdownLayout 同源零新建;LineBuffer 同步累计免重复测宽;ChunkWord 逐 rune 切片+行首保底防死循环;ASCII 路径逐数值等价既有测试零修改)
  • M1 $EDITOR 引号解析:ParseEditorCommand 纯函数 Span 手写扫描(引号路径/残缺引号防御/参数原样透传)——"C:\Program Files\editor\e.exe" -w 不再拆坏
  • M2 ctrl+x ctrl+e 第二键位:基准 defaultBindings.ts:84 对齐;前缀态优先劫持(单独 ctrl+e 保持 End 编辑语义无冲突);ctrl 键到达即作废前缀
  • 主代理 debug+缺陷收尾:M2 自登记缺陷(ctrl+x→打字→ctrl+e 意外触发)红测试实证 + HandleKeyPress 入口非 ctrl 键清除前缀守卫

Test plan

  • NativeTui.Tests 1738 全绿(新增:宽字符折行 6 + 汉字折行期望恢复 + ctrl+x 序列 5)
  • NativeTui.Host.Tests 125(ParseEditorCommand 11 新)+ Host --selftest 真跑 EXIT=0

…策: L=PermissionTextWrap 字符数计量升级显示列宽计量(复用 RuneWidth.OfText 单一数据源——East Asian Width 区段表与 Screen/PromptInputBox/InputBuffer/MarkdownLayout 同源,零新建工具;LineBuffer 嵌套类 StringBuilder+显示宽同步累计免重复测宽;ChunkWord 逐 rune 累计切片+行首保底收 1 rune 防死循环+零宽 rune 跟随基字符同片;ASCII 每字符 1 列时全部判定与旧计量逐数值等价——既有测试零修改通过); M1=ParseEditorCommand 纯函数 Span 手写扫描(首引号读闭合为 exe/残缺引号到串尾整段当 exe/无引号读首空白/余段含引号原样透传 args); M2=ctrl+x 前缀键+ctrl+e 序列触发(前缀态优先劫持,单独 ctrl+e 保持 End() 编辑语义无冲突;HandleCtrlKey 入口捕获复位任何 ctrl 键作废前缀); 主代理 debug+缺陷收尾=M2 自登记缺陷(ctrl+x→普通打字→ctrl+e 意外触发)红测试实证+HandleKeyPress 入口补非 ctrl 键清除前缀守卫转绿
@liuqihonggit
liuqihonggit enabled auto-merge (squash) October 22, 2026 19:16
@liuqihonggit
liuqihonggit merged commit d4c7230 into main Oct 22, 2026
@liuqihonggit
liuqihonggit deleted the w1 branch October 22, 2026 19:47
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.

1 participant