macvim-dev / macvim

Vim - the text editor - for macOS
https://macvim.org
Vim License
7.51k stars 683 forks source link

Don't throw Objective C exception when quitting MacVim #1371

Closed ychin closed 1 year ago

ychin commented 1 year ago

Currently when quitting MacVim, MMVimController will throw an exception in sendMessage:. This is because MMAppController's handler for quitting simply closes the connection, terminates the Vim processes and quit; it doesn't individually shut down each Vim controller cleanly. This is actually ok because we are quitting the app anyway, and it's not terrible to just let the OS clean up (applicationWillTerminate also has a 5 second executation timer set by macOS), but we do need to make sure Vim controllers won't be trying to handle the now invalid connections.

Currently the exceptions will be caught by an exception handler, but it's still not great, and could be confused with a bug, especially if logging is enabled.

Add a way to set isInitialized to NO when shutting down, so that the controllers will be blocked from trying to send connections.