gum filter --height: 在每次窗口调整事件中,列视口都会逐渐缩小
□ 总结
当口袋过滤器'用固定的-高 ' 运行时,每个`tea ' 。 WindowsSize Msg ' 重新删除了标题,帮助查看,并且从取景口高地上粘贴,而从未重新计算出新的底座. 因此,调整终端窗口的大小使得列表取景口逐渐收缩到倒塌. 这是一个基于当前 " 主要 " 分支的静态分析结果;我没有执行程序。
□ 地点
- 文件: " filter/ filter.go "
- 功能:
模型'。 最新消息,case tea.WindowSizeMsg:'(关于`main'的约288-301行,2026年8月)
开始 杯子茶 来一杯 窗口SizeMsg : 如果m.hight == 0 == m.hight > msg. 请检查url=值 (帮助). 高度 { m.viewport.SetHeight(英语:Msg. 身高 -- -- 唇花.Height(m.textinput.View()) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? // 在高度计算中包含页眉. 如果毫发!= ""{ m.viewport.setHeight(m.viewport.Height() - 唇齿相接.Height(m.headerStyle.render(m.header))). {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? // 在总高度计算中包含帮助. 如果m.show帮助 { m.viewport.SetHeight(m.viewport). 互联网档案馆的存檔,存档日期2013-12-02. 高度( ) - lipgloss.Height( m. help View( )) ). {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? m.viewport.setHeight(m.viewport.Height() - m.padding [0] - m.padding [2]).
□ 问题
基座高度仅在"米高"后被重置. 用固定的 " -- -- -- -- -- -- -- -- -- -- -- -- -- -- " (即 " -- -- -- -- -- -- -- -- -- 终端高度 " ),这种情况是虚假的,因此重置永远不会发生。 然而,随后的三项调整(标题、帮助、`铺设[0]+铺设[2])无条件地对`WindowSizeMsg'进行。 由于`WindowSizeMsg'在起动时一次交付,每次终端调整时再次交付,所以减值被累计用于已经减少的数值,而不是从`N'重算。
同一处理器的二级不平衡:在自动高通模式("m.height = 0")中,文本输入的高度从取景口被减去,但在固定高通模式中却从未如此,因此所构成的取景("textinput + viewport + padding")甚至在再大小化之前就已超过所请求的"-高通".
□ 触发/复制
基于源分析( 未执行) :
1. 运行 " gum filter -- -- hight 12 " (无论有无 " -- header " ,默认的 " --show-help " 加上帮助视图),并插入足够的选项。
2. 终端窗口多次调整大小.
3. 每次调整大小事件都会从已经shrunk的取景口高度再减去头条/帮助/铺设.
□ 预期行为
这种布局应该是当前窗口大小和配置旗的纯粹功能:如果有一个固定的 " -- -- -- -- -- -- -- -- " ,无论发生多少个调整大小的事件,取景所都应占据 " -- -- -- -- " 的稳定部分。
□ 实际行为
在每个 “ WindowSizeMsg ” 上,视港高度降低“headerHeight + 帮助Height + 垂直Padding ” , 最终达到零/负值, 崩溃或错报列表 。
□ 影响
任何脚本使用"gum filter-hid"(有文件记载的旗帜)都会在用户调整其终端大小后视同地降解,这在平板窗口管理器和初始终端设置期间很常见. 重复调整大小使拾取器
. . . . . . .
内容来源: charmbracelet/gum