* Add experimental default dark/light themes
* Update themes and name
* Add colorizer test results
* Update accent color
* Fix status bar no folder background issue
* Fix tree indent strokes
* Update lighter layer
* Fix breadcrumbs
* Update accent
* Update light lights and dark links
* Update colorizer test
Try to skip removing list elements from the dom when a list is being rapidly scrolled
When rapidly scrolling a list, we always and up removing an element from the dom. This element is then inserted back into the dom on the next update. It would be better if we simply skipped removing the element from the dom in this case
I've tried to fix this but there may be a better approach. This PR makes the following changes:
- Switch the order of remove and insert in `ListView.render`. Now we always call remove before calling insert. This lets the removed row be reused within the same `render` frame
- In the `rowCache`, introduce the concept of a transaction. This lets us defer actually removing nodes from the dom until the transaction is completed. In many cases (especially when scrolling rapidly), the row's dom node will actually be reused by `alloc` before this happens so we can skip the removal entirely
* ipc: use vql for uint types
On the plane I was reverse-engineering ipc.ts to implement it in Rust
and see if we could have a "service mode" for the CLI that we could
interact with like any other vscode process.
In doing so, I noticed that numbers in the protocol--which are used at
least twice in the message header and ID--were encoded as JSON. I was
curious what benefits we'd get from encoding them as variable-length
integers instead.
It makes the message shorter, as expected. Encode/decode time are very,
very slightly lower. I'm not sure it's worth the extra complexity, but
I have included it here for your consideration.
* fixup tests
This fixes an issue where users would add something like the following
to their ~/bashrc file:
trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
What this does is it echos a signal to the terminal to change the title
of the terminal. This ends up coming through in the result being parsed
which now includes 4 marks instead of 2. The change ensures { and } are
following and before the 2 expected marks.
If the match doesn't exist it will still fallback to {} as it did
before.
Fixes#147630