meta-p toggle event palette (use this to figure out what we changed)
meta-\ toggle treeview
meta-shift-\ focus current file in treeview
meta-; command panel
meta-: command panel (focus results list)
meta-m markdown preview
meta-j jump to symbol (outline view)
escape always closes a tool panel
meta-escape restore focus to active editor
For this to work, I needed to make the updating of anchors transactional. Now, all anchors are updated and *then* they emit their events. That way when the cursor moves based on the user typing, the tab stop they're in has a chance to expand before we handle the move event. This prevents spurious cancellation of the snippet when typing on a tab stop.
This replaces the old functionality of ensuring no files or directories have subscriptions in javascript. We allow this now, but we just don't allow leaked watches at the native layer.
Path watching resumes once the file is saved again. This commit allows files to be created for as-yet nonexistent paths. We won't call `$native.watchPath` until we have at least 1 subscription to the file in JS and the file exists on disk.
Also, we moved execution of the path watcher callbacks until after the callbacks data structure is updated in order to avoid confusing behavior in specs.
When scrolling with a trackpad, webkit repeatedly triggers multiple mousewheel events on the original event's target element to simulate the velocity effect we're accustomed to with touchscreen UIs. When scrolling quickly, this clashed with our strategy of removing off-screen lines, because the element was removed before the velocity were done firing.
The solution is to make the overlayer accept mouse events. It lays on top of all the lines, so it is never removed and therefore allows the mousewheel events to run to completion. But, this means we need to transfer mousedown events from the overlayer to the underlying lines.
This will prevent running a bunch of background tokenization when Atom is reloaded. We only perform tokenization to support content that is actually on screen.