Repository navigation
feat(core): 每缓冲区滚动边距 (#41) - #249
Merged
Merged
Conversation
FrameState now carries its own DECSTBM margins, so a 1049 switch no longer inherits the other buffer region; resize resets both.
Rows above the region now move down normally and rows below it no longer scroll the region, which the 175 byte margin source exposed as a lost row.
4 tasks
The translated margin fixture must land on the required screen and cursor, so a regression back to the ConPTY observed rows fails here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
内容
按 #41 的裁决分支(里程碑
docs/milestones/R2-local-terminal.md:66要求"自主 C++ 核心主/备用屏各自滚动区域")实现每缓冲区滚动边距:FrameState增加scroll_top/scroll_bottom,随active_state_copy/swap在缓冲切换时一起交换;Screen的同名字段随缓冲交换,region_top()/region_bottom()取代原先的全局访问器;resize()同时重置两个缓冲的边距(此前只重置当前缓冲);?1049h/l不再让备用屏继承主屏边距。测试
edit_csi_test新增:CSI 2;3r→ 备用屏仍为整屏(未继承);CSI 1;2r;2..3。本地:
edit csi contracts passed;experiments.core.test_recovery35 tests OK。背景
#41 的分析指出:产品核心此前是屏幕级单对边距,
activate_buffer只交换缓冲内容、没有边距继承策略;?1049与DECSTBM的交叉没有任何用例。本条补上该缺口的一层。边界
Refs #41 #27 #29