Por que o MacVim está iniciando de forma diferente em todas as outras chamadas?

13

Notei quando me sentei para fazer algum trabalho no meu MacBook hoje que, em algum momento recentemente, algo havia estragado em relação às minhas .gvimrcconfigurações: quando iniciei o MacVim, tudo parecia normal, exceto que minha janela era muito pequena (aproximadamente o tamanho padrão ) Curioso, tentei o verbose set columns?que me dizia "180, último conjunto de ~ / .gvimrc", embora a janela obviamente não tivesse 180 colunas de largura. set columns=180restaurou a janela para a largura esperada.

Após a habitual depuração e bissecção dos meus arquivos RC, notei algo incomum. Não tenho certeza se isso está relacionado ao tamanho da minha coluna não se aplicar ou não, de qualquer forma é curioso e não consigo descobrir.

Se eu executar mvim -u NONE -c "set columns=100":, recebo uma janela como esta: mvim 1

Se eu executar exatamente o mesmo comando novamente, recebo o seguinte: mvim 2

verbose set co?relata 100 e 66, respectivamente, nos dois casos dizendo "último conjunto do argumento -c". Repetir o comando de inicialização faz com que o estado da janela se alterne.

Eu tentei nuking .viminfoentre corridas; não tem efeito.

Estou usando o instantâneo 74 do MacVim agora, embora eu estivesse em uma versão anterior quando isso começou a acontecer e atualizei para ver se era apenas uma versão. Estou na 10.10.3, e é possível que esse comportamento seja devido a um bug específico do MacVim que surgiu como resultado da atualização do sistema operacional (o que aconteceu recentemente). No entanto, se eu instalar o MacVim no laptop da minha esposa (executando a mesma versão do sistema operacional), o comportamento não será reproduzido.

Estou perdida. O que diabos poderia estar causando esse comportamento?


Edição: Após a depuração contínua, notei que parece reproduzir apenas dessa maneira se eu tiver um monitor externo conectado ao laptop. Isso me leva a acreditar que é algum tipo de bug.


fonte

Respostas:

16

Depois de escrever a base de código do MacVim por algumas horas, acho que posso ver por que isso acontece.

Quando o MacVim inicia, ele lê a posição da janela salva anteriormente NSUserDefaultse tenta restaurar essa posição. No momento, a janela ainda não foi exibida e sua origem é um padrão (possivelmente selecionado do SO) que está sempre na tela 'principal'. Se a posição anterior da janela estava em um monitor diferente, a alteração da posição da janela acionará um evento "redimensionado" (é possível que seja novo, ou um bug, na 10.10.3, pois um evento correspondente "redimensionará" não é gerado).

Isso fará com que o MacVim tente redimensionar o back-end do Vim, mas é muito cedo na execução do processo para o estado que é usado para efetuar esse redimensionamento para ser construído corretamente. Portanto, o MacVim solicita que o Vim se redimensione para o valor efetivamente padrão, o que faz com que a janela encolha na próxima vez que o MacVim obtiver uma resposta ao redimensionamento do back-end do Vim (o MacVim redimensiona as janelas preguiçosamente).


EDIT: Esta alteração corrige o erro , eu acho. Faz com que o redimensionamento da janela não se propague para o back-end do Vim até que a janela seja apresentada.


fonte
1
O link está quebrado, o que é uma pena, porque parece interessante. (Também: adoro o uso da palavra "spelunking".): D
Curinga
@Wildcard Atualizei o link para apontar para o PR que fiz, em vez da confirmação em minha filial local (que excluí quando obtive acesso de confirmação ao repositório principal do MacVim).