Remove compatibility check (10.5)
Assign ⌃⌘↩ to View → Enter / Exit Full Screen

Closes issue #860.
Reject bad folding meta data

Fixes issue #866.
Rework find dialog (part one)

This is work in progress but I don’t think any functionality is missing compared to previous commit, although some functionality might be less polished, e.g. the action buttons don’t properly enable/disable and the height of the results list gets lost when hiding it.

Some of the stuff that has changed / improved:

 * The find/replace text fields adjust their height to encompass the content (closes #94). Presently though the initial height of the ontrols is one line regardless of content (but they should adjust on first edit).
 * You can use Save All (⌥⌘S) to save affected files after Replace All (closes #558).
 * The key equivalents / actions available in the Find dialog is now easier to find via the action pop-up, which also has enables accessibility.
 * Using Next (⌘G) or Previous (⇧⌘G) with search results will move selection up/down.
 * Using Find All with ‘in’ set to ‘Selection’ will find and select all matches in the current document, which fixes #425, though it might be more desirable to show the results in the find dialog (like Find All does for a document or folder).
ARC: Update Find framework
Introduce Replace [and Find] in find protocol

Previously there was a single replace action and the options would indicate if it was a “replace all”, this mimics the “find” (which can be a “find all”) but since single match replacement is somewhat different than a “replace all”, as the former may need to know the captures from a previous find action, it makes sense to factor out these things as different actions.
Simplify implementation of OakTextViewFindServer
Implement Replace [and Find] bound to ⌥⌘G

Currently this is implemented in OakTextView which means that it doesn’t work for macros. Some refactoring is in order so that the implementation can be shared (lack of sharing has to do with how OakTextView reports status to Find dialog or via tool tips, and macros want none of that).

There is also no check to see if the current state of the editor is the result of a find operation, i.e. you can invoke “replace” regardless of wether or not “find” was the last action.

Finally, doing a multi-file search and using “find next” at the end of one document, which brings you to the first match of next document (part of the results), will not update “captures” from a potential regular expression search, meaning that if you then do “replace”, and your replacement string is a format string that references the match (via $1-n) then it will not be correctly expanded.

Closes #104.
Checkin release notes
Adjust scroll past end height logic

This will work properly with very long lines and soft wrap

Fixes #869.
Remove Edit → Find → Full Words menu item

This option isn’t implemented so better not confuse users by having it in the menu.
Fix potential deadlock when opening find window

The Find object is assigned to a variable with (guarded) static storage, so the initializer of the Find object will run with a lock on the guarded variable, which turns out to be shared with all other guarded variables.

When setting up the window controller, from the Find object’s initializer, we create a “recent folders” menu which hold icons with SCM badges.

When creating these SCM icons, blocks are scheduled (asynchronously) to “fetch status”. These asynchronous blocks will need to lock the same mutex as we currently have locked (because we haven’t yet left the initializer).

The issue is that we also schedule synchronous blocks on the same queue, and that’s why we get a deadlock, because those can’t run before the asynchronous blocks have finished, yet those are waiting on the global lock that our main thread has currently obtained.

Fixes #874.
Checkin release notes
Remove outdated comment
Remove lesser used icons to save space in download
Ensure test assertions are only evaluated once
Add options to generated test executable

The current options are:

 -b/--benchmark   Run benchmarks instead of tests.
 -m/--measure     Measure time of each test. This disables concurrency.
 -r/--repeat <n>  Number of times to repeat each test/benchmark.
 -v/--verbose     Be verbose.
 -h/--help        Show this help.
 -V/--version     Show version number.
Use constructor function instead of class
Update buffer tests

Mainly improving function names including appropriate prefix for benchmark functions so that they are picked up by the new test system.
The ⌘1-n keys wouldn’t always work in find dialog