为什么MacVim在所有其他调用中都以不同的方式启动?


13

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

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

如果我运行:mvim -u NONE -c "set columns=100",我得到一个这样的窗口: mvim 1

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

verbose set co?分别报告100和66,在两种情况下都说“来自-c参数的最后一组”。重复启动命令会导致窗口状态改变。

我试过.viminfo两次跑步之间。它没有任何作用。

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

我很茫然。到底是什么导致了此行为?


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

Answers:


16

在对MacVim代码库进行了几个小时的阐述之后,我想我可以理解为什么会发生这种情况。

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

这将导致MacVim尝试调整Vim后端的大小,但是对于该状态而言,现在还为时过早,该状态用于影响正确地调整大小。因此,MacVim要求Vim自行将其大小调整为有效的默认值,这会使窗口在MacVim下次从Vim后端获得对调整大小的响应时缩小窗口(MacVim延迟调整窗口大小)。


编辑: 我认为,此更改可修复错误。导致窗口调整大小在呈现窗口之前不会向下传播到Vim后端。


1
链接已断开,这很可惜,因为它听起来很有趣。(也:我喜欢您使用“发现”。)–D
通配符

@Wildcard我更新了链接以指向最终创建的PR,而不是指向本地分支(当我获得对MacVim主存储库的提交访问权限时删除了该分支)中的提交。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.