Perché MacVim inizia in modo diverso ogni altra invocazione?


13

Ho notato quando mi sono seduto per fare un po 'di lavoro sul mio MacBook oggi che a un certo punto recentemente qualcosa era stato .gvimrcrovinato rispetto alle mie impostazioni: quando ho lanciato MacVim, tutto sembrava normale tranne che la mia finestra era molto piccola (circa le dimensioni predefinite ). Curioso, ho provato verbose set columns?che mi diceva "180, ultimo set da ~ / .gvimrc" anche se ovviamente la finestra non era larga 180 colonne. set columns=180ripristinata la finestra alla larghezza prevista.

Dopo il solito debug e bisection dei miei file RC, ho notato qualcosa di insolito. Non sono sicuro che ciò sia correlato alle dimensioni delle mie colonne non applicabili o meno, in entrambi i casi è curioso e non riesco a capirlo.

Se corro mvim -u NONE -c "set columns=100":, ottengo una finestra come questa: mvim 1

Se eseguo di nuovo esattamente lo stesso comando , ottengo questo: mvim 2

verbose set co?riporta rispettivamente 100 e 66, in entrambi i casi dicendo "ultima impostazione dall'argomento -c". Ripetendo il comando di avvio si alterna lo stato della finestra.

Ho provato a nuking .viminfotra le piste; non ha alcun effetto.

Sto usando MacVim snapshot 74 ora, anche se ero su una versione precedente quando questo ha iniziato a succedere e si è aggiornato per vedere se era solo una cosa di versioning. Sono il 10.10.3 ed è possibile che questo comportamento sia dovuto a un bug specifico di MacVim emerso a seguito dell'aggiornamento del sistema operativo (che è successo solo di recente). Tuttavia, se installo MacVim sul laptop di mia moglie (con la stessa versione del sistema operativo) il comportamento non si riproduce.

Sono in perdita. Cosa diavolo potrebbe causare questo comportamento?


EDIT: Dopo aver continuato il debug, ho notato che sembra riprodursi in questo modo solo se ho un monitor esterno collegato al laptop. Questo mi porta a credere che sia una specie di bug.

Risposte:


16

Dopo aver spelunking la base di codice MacVim per alcune ore, penso di poter capire perché questo accada.

All'avvio di MacVim, legge la posizione della finestra salvata in precedenza NSUserDefaultse tenta di ripristinare quella posizione. Nel momento in cui la finestra non è stata ancora mostrata, e la sua origine è un default (eventualmente selezionato dal SO) che è sempre nella schermata 'principale'. Se la posizione precedente della finestra era su un monitor diverso, la modifica della posizione della finestra attiverà un evento "ridimensionato" (è possibile che questo sia nuovo o un bug, in 10.10.3, poiché un evento "ridimensiona" corrispondente non è generato).

Questo farà sì che MacVim tenti di ridimensionare il back-end di Vim, ma è troppo presto nell'esecuzione del processo per lo stato che viene utilizzato per rendere effettivo il ridimensionamento. Pertanto, MacVim richiede a Vim di ridimensionarsi su quello che è effettivamente un valore predefinito, che provoca la riduzione della finestra la volta successiva che MacVim riceve una risposta al ridimensionamento dal back-end di Vim (MacVim ridimensiona pigramente le finestre).


EDIT: questa modifica risolve il bug , penso. Fa sì che i ridimensionamenti delle finestre non si propaghino nel back-end di Vim fino a quando non viene presentata la finestra.


1
Il collegamento è interrotto, il che è un peccato perché sembra interessante. (Inoltre: adoro il tuo uso della parola "spelunking"): D
Wildcard

@Wildcard Ho aggiornato il collegamento per indicare il PR che ho eventualmente effettuato al posto del commit nel mio ramo locale (che ho eliminato quando ho ottenuto l'accesso di commit al repository principale di MacVim).
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.