This is slower than the position cache in the best case, but faster
in the worst and average case. With this, you can search for a space
in find and replace, and still scroll the buffer.
In editor.coffee, there are 10,500 spaces. To highlight all of them,
the previous cache method took 7 seconds, this takes 2 when the cache
is empty, and about 10ms when the entire file is cached.
Character replace was most of it. Removing regex creation, array
creation and joins seems to reduce the GC pressure. Calling 500 times,
GC spent 100ms less time.
We know it's visible if it is on the dom and doesn't have
display == none set. This is an order of magnitude faster than the
default implementation which calls getComputedStyle()
We know it's visible if it is on the dom and doesn't have
display == none set. This is an order of magnitude faster than the
default implementation which calls getComputedStyle()
This is is faster and simpler than the old method. Running each function
20,000 times yielded these results:
Old: 3750ms
This method: 1523ms
By looking up each char's width in a dict: 29ms
Previously this was done afterwards in index.html and task.coffee
but should really be handled by the cache itself so any module
require a different version of coffee-script are not reregistering
a different require extension handler.
The window:open-path event regressed and was not being sent to Atom
which prevented windows from being opened with specific file(s) in
the editor.
Also this allows context menus to work even when the dev tools are open.
Previously this was set via a style tag which ate up a lot of spec
time and seemed to be functionally equivalent to just setting the
style directly on the element instead of finding and adding/removing
style tags.
Previously the title would not be updated when opening Atom with
serialized editors.
Also consolidate event listeners to rely on the
pane-container:active-pane-item-changed event to update the title.