Don’t use font name / size as key values in style cache

Font name and font size was being used in the cache key as a way to avoid having to do cache invalidation. This comes at a price of a 3X slow down. Instead clear the cache when font size/name changes. Excessive font name/size switching should be deterred IMO, why not with slowdowns? so no real downside. This does not affect themes setting font name/size, as they are handled by another mechanism.
Adhere to naming convention

Given constraint-based layouts, we’re more likely to create views in code, and as helper functions are often involved, it makes sense to name them so that we can quickly get a list of all helpers (via search), either for copy/paste or for evaluating wether or not it makes sense to move all helpers to a single library.

Since helpers are declared with static storage, they do not pollute the global namespace.
Accept scope_t instead of context_t

Since styles are applied to the actual content, we only have a single scope, not a left/right scope.
Move font name/size to theme_t

Since styles_for_scope effectively ignore the font parameters (and instead return styles based on the font parameters used when the cache entry was created) it is a better design to have theme_t own the font. This way, changing it can do the proper cache invalidation.

A minor downside is that we can now change the font of the theme without also changing the layout’s font, which wouldn’t cause proper layout invalidation — since layout_t owns theme_t though, users of a layout should always change font via layout_t (which will then change it in the theme).

Also, themes cannot be shared between views that wish to use different font settings.
Add scope bar to file chooser
Improve layout and styling of Go to File window.

- Remove focus ring from search field as there is no second target.
- Set top and bottom border widths for the textured window.
- Remove miniaturize and zoom buttons for lack of utility.
- Match name of window to menu command.
- Various color and spacing tweaks.
Use ns::create_event_string
Fix unreliable tab switching keys

This was broken by 645f8d91e14cfc9b9b45aab3701378949e142e65.

The issue is that if the user press a key not in our managed menu, then the menu delegate will no longer be asked to update the menu for keys not in this (cached) menu.

Example: If there are items for ⌘1-3 in the menu and the user press ⌥⌘N a few times (to create more tabs), then the delegate is asked to update the menu on the first press, but as ⌥⌘N is not in the menu, successive events will not cause the menu to be updated. If the user then press ⌘5 (to go to the 5’th tab), nothing will happen, because our menu only holds 3 items, and the delegate is not asked to update the menu.
Don’t open documents with a path via UUID

The UUID is a unique reference to a document that trumps the path. However, as we don’t actually keep the documents in the file chooser, we end up with UUIDs from documents that does not exist, and should a new document be created for the same path, it will get another UUID.
Improve scroll when selecting units

When selecting a unit (Edit → Select submenu or e.g. Find Next) then we only scroll if we can make the entire selection visible.

Closes #692.
Files with no extension open as plain text

This is instead of asking the user.
Render table view as having focus
Change some default settings

- File browser placed on right.
- HTML output placed in new window.
- Theme set to Twilight.
Only underline matched characters

We now drawn the full string with same color and font.

Path shown in status bar is not marked up at all.
Make file chooser a floating panel

Also disable our “render as active” code for the table view when the window is not key.
Provide singleton API for FileChooser

You can still create multiple instances, but would generally not want to.
Checkin release notes
commit
commit
stuff