This was caused by performing regexp matching on a temporary string object and later accessing captures from the match (when the string object was out of scope).
Rather than extend the scope of the string object I rewrote the code to use Cocoa’s NSRegularExpression class so we avoid using C++ (and thus temporary objects).
The current version of mate is 2.10 which gets stored as 2.1 (when using a double), so TextMate would think the installed version was too old (though after updating it, a string would be stored, so it would only happen once).
This allowed framework headers to test whether they were build as part of the framework itself, or part of building something that depends on the framework.
Ideally though we should not need two different paths for those two cases, and we no longer have.
This seems more appropriate and given the small size and that the former is stack allocated, there is likely no real benefit in writing directly to the std::string that we return.
The button frame has been extended to the top/bottom of the tab bar and on Yosemite there are 3 pixels of padding to the right of the image (which are thus part of the button and hence clickable).
This will convert the event string to the proper glyphs and lookup function key glyphs in the font and set the proper glyph info attributes (if found).
We can get to the next/previous node via the parent pointer, although it has worse time complexity, it’s not something we use in loops, so the extra bookkeeping is not worth it.
For example with the following command we get an encoding dialog that allows us to cancel opening of the document:
echo Æblegrød|iconv -f utf-8 -t mac|mate -w
If you already have bundles “installed” with a titlecased Info.plist then you need to delete ~/Library/Caches/com.macromates.TextMate/BundlesIndex.binary since the cache would not contain the titlecased version (and is not updated unless something is changed on disk).
We now show two lines per item: the name of the item and the location on second line.
For settings we show the (literal) value of the item next to its name (ideally user could click the item to toggle between literal and effective value).
Selecting settings items (from properties files) will go to the proper line in the properties file.