A vector was being instantiated when the callsite only required an iterable. Another part of the code was performing multiple `contains()` lookups on a vector, and now it does it on a hashed set. This change has required some extra modifications across the codebase, but the affected sites are minimal and have been adjusted without major issues. The changes include some `Hash` derived implementations, which were proposed in the original `lsp-types` in [[1]], and maybe could be merged into Zed's fork. I went ahead and used a newtype with a custom `Hash` implementation that simply called on the structure's public members' implementations of `Hash`. The next change includes the removal of a check of the request capabilities after having already checked the same thing in the call to `to_lsp_params_or_response()` right before. The result of the `match` expression should already have returned a `Task::ready()` if the above mentioned function failed in performing the check that was later repeated and now removed. Finally, in the `edits_from_lsp()` method, stable sorting was being performed when only unstable sorting would suffice. The method can only sort with respect to the key data, and not the satellite data, as the latter are the literal strings of the edit. It matters not which one of a sequence of overlapping edits (with same ranges that thus resolve the edits for equivalence) should come before the other. [1]: https://github.com/gluon-lang/lsp-types/pull/295/changes#diff-b1a35a68f14e696205874893c07fd24fdb88882b47c23cc0e0c80a30c7d53759R540 - [ ] Tests or screenshots needed? - [ ] Code Reviewed - [ ] Manual QA Release Notes: - Removed a vector allocation where the callsite only required an iterable. - Improved multiple lookup operations when deserializing LSP edit operations. - Removed a double-check of capabilities after requesting and thus determining LSP capabilities. - Replaced stable sorting with unstable sorting of edits returned by the LSP.
Zed
Welcome to Zed, a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
Installation
On macOS, Linux, and Windows you can download Zed directly or install Zed via your local package manager (macOS/Linux/Windows).
Other platforms are not yet available:
- Web (tracking issue)
Developing Zed
Contributing
See CONTRIBUTING.md for ways you can contribute to Zed.
Also... we're hiring! Check out our jobs page for open roles.
Licensing
License information for third party dependencies must be correctly provided for CI to pass.
We use cargo-about to automatically comply with open source licenses. If CI is failing, check the following:
- Is it showing a
no license specifiederror for a crate you've created? If so, addpublish = falseunder[package]in your crate's Cargo.toml. - Is the error
failed to satisfy license requirementsfor a dependency? If so, first determine what license the project has and whether this system is sufficient to comply with this license's requirements. If you're unsure, ask a lawyer. Once you've verified that this system is acceptable add the license's SPDX identifier to theacceptedarray inscript/licenses/zed-licenses.toml. - Is
cargo-aboutunable to find the license for a dependency? If so, add a clarification field at the end ofscript/licenses/zed-licenses.toml, as specified in the cargo-about book.
Sponsorship
Zed is developed by Zed Industries, Inc., a for-profit company.
If you’d like to financially support the project, you can do so via GitHub Sponsors. Sponsorships go directly to Zed Industries and are used as general company revenue. There are no perks or entitlements associated with sponsorship.