By managing autorelease pools in objc code we avoid warnings on OS X 10.9 and it is also safer than calling objc runtime functions from C.
getfontname() would incorrectly return strings of the form "FONTNAME:SIZE", when it should be returning strings of the form "FONTNAME:hSIZE"--notice the "h" in the last form. To fix this, we change the internal representation of the font name and size to include the "h", and peel it off when actually setting the font.
As a Mac user I’m used to using Option-Delete to delete to the beginning of the previous word; MacVim sets up this behavior with its gvimrc. But I also like to use Control-W to delete to the beginning of the line. This change makes it possible for these two mappings to coexist without a problem.
<https://code.google.com/p/macvim/issues/detail?id=316> wasn't a bug. When you're constructing a URL, you *should* end up escaping URL-unsafe characters twice: once for the `file:` URL and once for the `mvim:` URL. Escaping it inside MacVim breaks legit URLs with escapes at the `mvim:` level.
The default renderer is too "loose" on OS X 10.8 whereas the CoreText renderer looks the same across all platforms. Furthermore, the CoreText renderer is many times faster. A downside to the CoreText renderer is that it does not support the text input protocols properly, so e.g. three-finger tapping to show dictionary results does not work. It also does not show marked text as it is being drawn if the "inline marked text" option is disabled.
The top-level autorelease pool only gets cleared out on application events, not including things like the FSEvent handler. If MacVim is in the background while ~/.vim changes, autoreleased objects will carry on building up until the users switches back to it, resulting in a high memory water mark and a lot of needless deallocs. See http://www.mikeash.com/pyblog/more-fun-with-autorelease.html