Remember Filter Through Command output choice in user defaults
Make OakPasteboard’s name property public
Only allow a single history window per clipboard type
Remove crash report info gathering from buffer type

This was affecting performance when performing actions that go through the entire buffer. Also, none of the functions are involved in any crash reports.
Change behavior and implementation of to_s overload for scopes

For a scope context with identical left/right scopes we now return the scope without “decoration” and when the left/right scopes differ, we return them separated by the unit separator character.

The change is motivated by the need to use the result of to_s as a cache key where speed is important.
Introduce a cache for value_for_setting

Currently no cache invalidation is done.
Minor scope_t implementation improvements

We let std::string do comparisons and we shortcut the equivalence test for scope_t when the node pointers are identical.
Use a std::string instead of scope_t as cache key

Since we do a lot of lookups the faster operator< of std::string improves performance slightly.
Perform cache invalidation for value_for_setting cache
Update debug output
Ensure a capture begin/end rule does not leak its scope

Previously if a capture contained a begin/end rule with an unsatisfied end match then its scope would be applied beyond the end of the capture.