Skip to content

fix(tui): 上下键在折行/历史项内应移动光标而非误翻历史#192

Open
lordquest wants to merge 1 commit into
itmisx:mainfrom
lordquest:fix/up-key-wrapped-line
Open

fix(tui): 上下键在折行/历史项内应移动光标而非误翻历史#192
lordquest wants to merge 1 commit into
itmisx:mainfrom
lordquest:fix/up-key-wrapped-line

Conversation

@lordquest

@lordquest lordquest commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

问题

上下方向键在两种场景下会"误触发历史翻阅",导致无法在长内容里用键盘移动光标:

  1. ↑ 键折行内上移:输入框输入多行时(假如3行), 光标在第二行, 上下方向键应该让光标上移到第一行/下移到第三行, 而不应该触发翻阅上条/下条历史

修复

与 ↑ / ↓ 对称处理光标位置:

  • :仅在光标真处于"最顶端"(逻辑行 Line()==0 虚拟行偏移
    LineInfo().RowOffset==0)时才翻阅历史,折行内交给 textarea 上移光标。
  • :仅在光标已在当前历史项"底部"(最后逻辑行 + 最后虚拟行)时才翻下一条,
    否则下移光标,与 ↑ 行为一致。

原有行为保持不变:输入框真顶端按 ↑ 仍翻阅历史,历史项最末行按 ↓ 仍翻下一条。

验证

新增 4 个回归测试(tui/up_wrap_test.go + tui/down_history_nav_test.go):

  • TestUpArrowOnWrappedLineBug — 长行 wrap 内 ↑ 不误翻历史
  • TestUpArrowAtTrueTopNavigatesHistory — 真顶端 ↑ 仍翻历史
  • TestDownArrowInsideMultilineHistoryMovesCursor — 历史项中间行 ↓ 下移光标
  • TestDownArrowAtHistoryBottomNavigates — 历史项底部 ↓ 仍翻下一条

go test ./tui/ 全部通过。

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