- Path to application is shown in the menu item’s tool tip.
- When menu is shown for multiple file types with different default applications, we show the default applications first.
- Use the potentially localized bundle name rather than file system display name.
- Use bundle identifier to group applications rather than display name: Grouping is done to decide if version number should be shown for the item.
Previously we would try full path, relative path, and just the name. This was done to determine wether or not the display string should include full path details or be limited to the name. The problem is that an excluding glob may require the full path, and would thus not exclude items that did match when using just the item’s name.
Previously it was only available when doing folder searches, since the items are for folder search behavior and results.
However, with “Find All” in document, we get a similar result list from which we may want to copy matches.
For example the following glob will match C++/Objective-C++ source/header files, except those in the ‘vendor’ directory: *.{cc,mm,h}~vendor/**
It is possible to do multiple exclusions, e.g.: src/**~*.log~*.db
It is also possible to start with the exclude operator to negate the pattern (identical to the ! operator).
The exclude operator is not supported inside brace expansion, e.g.: {*.o,*~.nib} will treat it as a literal tilde. Furthermore, placing the tilde last will also treat it as a literal tilde, e.g.: *.txt~
In the exclude pattern, single/double asterisk (*/**) will match hidden files.
We override undo/redo for the file browser so that ⌘Z / ⇧⌘Z will only undo/redo file browser actions when it’s in the responder chain: b9fafd1495
This had the unfortunate side-effect of eclipsing the undo support of descendent views of the file browser, like the field editor used for renaming items.
I mainly dislike the trailing zeroes because CGFloat used to be a float but 1.0 is a double (1.0f would be a float). So better to under-specify and let the compiler figure out the proper type.
We now have four meta-names: outdated, installed, defaults, and mandatories. These can be used to list or update/install the respective group of bundles.
Ideally we would also return ‘false’ when failing to update an existing source, but not failing when we have a cache is better than failing when there is nothing new to download.
This is only when caret is at a word, when not on a word, we do not respond to the cancelOperation: method. This way, pressing escape in a window where another responder implements cancel:/cancelOperation: (e.g. commit window) the key will be handled by the other responder (and presumably close the window).