By default a command with snippet output will have the snippet indented to the current indent level.
This can be disabled in the bundle item’s property list but there might be situations where we want to disable it dynamically.
For an example see http://lists.macromates.com/textmate/2016-August/039845.html
While the previous changes were motivated by the tests, this one affects TextMate in that we run a local event loop if we want to wait for commands to finish, but as we previously used the main dispatch queue to send back command results, it meant that we could not wait for command completion from a block running in the main queue.
Currently the code works around this by using performSelector:withObject:afterDelay: when there is a chance of being in a local event loop, which is no longer required.
Some targets were including headers from frameworks not specified in their link dependencies. For a clean build this could cause an issue because the header was not available at the time of building the target.
The updated link dependencies are also based on what a target’s tests require. Ideally tests would have separate link dependencies, but as we don’t want to maintain this manually, this will have to wait until the build system automatically handles link dependencies.
Currently the commit command uses constants from the CommitWindow framework but should actually not be linked with it. However, the optimizer will strip dead code, so it should not result in much if any difference in the resulting binary and does solve a build dependency issue.
We do not use it and starting with the 10.8 SDK, dispatch types are Objective-C objects when building as Objective-C(++), which is a problem for a header that is included from both C(++) and Objective-C(++).
For example the bundle item “Execute Line / Selection” will (without a selection) show as “Execute Line” in the menu, and now also if the command causes the error sheet to appear or the user press ⌃C / ⌘. to prematurely kill it.
No file descriptors (other than input/output) should be inherited by our child process. We set FD_CLOEXEC ourself, but system frameworks might not always set it, or there might be a race condition (e.g. with socket(), pipe(), mkstemp(), etc.).
This can be set to ‘onDocumentChange’ to indicate that the command should be re-run when the document changes, though the code hasn’t yet been written to handle this.
Before this commit it wasn’t possible to SIGINT / SIGTERM commands launched from TextMate since TextMate itself has a custom handler for these signals (so they are set to be ignored) — this included pressing ⌃C in the HTML output window (for commands using the TextMate.Executor API).