我注意到当我今天坐下来在MacBook上做一些工作时,最近在某个时候,我的.gvimrc设置已经搞砸了:当我启动MacVim时,一切似乎都很正常,除了我的窗口很小(大约是默认值)尺寸)。很好奇,我尝试了verbose set columns?,它告诉我“ 180,是〜/ .gvimrc中的最后一个”,即使窗口显然不是180列宽。 set columns=180将窗口恢复到预期的宽度。

在对RC文件进行常规调试和对分后,我发现了一些异常。我不确定这是否与我未使用的列大小有关,无论是哪种方法都很好奇,我无法弄清楚。


如果再次运行完全相同的命令,则会得到以下信息:


mvim -u NONE -c "set columns=100"分别报告100和66两种情况都说“来自-c参数的最后一组”。重复启动命令会导致窗口状态改变。

我已经尝试过两次运行之间的verbose set co?。它没有任何作用。

我现在使用的是MacVim快照74,尽管我使用的是较早版本,但开始升级并查看它是否只是版本控制。我使用的是10.10.3,此行为可能是由于特定于MacVim的错误所致,而该错误已由于操作系统更新而浮出水面(仅在最近才发生)。但是,如果我在妻子的笔记本电脑上安装MacVim(运行相同的OS版本),该行为将无法重现。

我很茫然。



编辑:继续调试后,我注意到,如果将外接显示器连接到笔记本电脑,它似乎只能以这种方式重现。这使我相信这是某种错误。

#1 楼

在对MacVim代码库进行了几个小时的整理之后,我想我会明白为什么会发生这种情况。

当MacVim启动时,它会从NSUserDefaults中读取先前保存的窗口位置,并尝试恢复该位置。此时,该窗口实际上尚未显示,其来源是某些默认的(可能是选择的OS)默认值,该默认值始终位于“主”屏幕上。如果窗口的先前位置在其他监视器上,则更改窗口的位置将触发“调整大小”事件(很可能是10.10.3中的新内容或错误,因为没有相应的“调整大小”事件生成)。

这将导致MacVim尝试调整Vim后端的大小,但是对于该状态而言,过早执行该状态,以使该大小正确构建。因此,MacVim要求Vim自行将其大小调整为有效的默认值,这将导致窗口在MacVim下次从Vim后端获得对调整大小的响应时缩小窗口(MacVim延迟调整窗口大小)。 >
编辑:
我认为,此更改已修复了该错误。导致窗口调整大小在呈现窗口之前不会向下传播到Vim后端。

评论


链接已断开,这很可惜,因为它听起来很有趣。 (也:我喜欢您使用“拼写”这个词。):D

–通配符
16-3-19在8:42



@Wildcard我更新了链接以指向最终创建的PR,而不是指向本地分支中的提交(当我获得对MacVim主存储库的提交访问权限时,将其删除)。

–user72
16-3-19在14:55