Zed Improved. Aiming to improve upon Zed and make a truly delightful code editor.
https://zed.dev
![]() Closes #20858 This fix depends on the sanitization logic implemented in PR #20577. Since that branch may undergo further changes, this branch will be periodically rebased on it. Once #20577 is merged, the dependency will no longer apply. Release Notes: - Fix missing or duplicated files when copying multiple items in the project panel. - Fix marked files not being deselected after selecting a directory on primary click. - Fix "copy path" and "copy path relative" with multiple items selected in project panel. **Problem**: In this case, `dir1` is selected while `dir2`, `dir3`, and `dir1/file` are marked. Using the `marked_entries` function results in only `dir1`, which is incorrect. <img height="120" src="https://github.com/user-attachments/assets/d4d92cc5-c998-4948-9a58-25c4f54167f2" /> Currently, the `marked_entries` function is used in five actions, which all produce incorrect results: 1. Delete (via the disjoint function) 2. Copy 3. Cut 4. Copy Path 5. Copy Path Relative **Solution**: 1. `marked_entries` function should not use "When currently selected entry is not marked, it's treated as the only marked entry." logic. There is no grand scheme behind this logic as confirmed by piotr [here](https://github.com/zed-industries/zed/issues/17746#issuecomment-2464765963). 2. `copy` and `cut` actions should use the disjoint function to prevent obivous failures. 3. `copy path` and `copy path relative` should keep using *fixed* `marked_entries` as that is expected behavior for these actions. --- 1. Before/After: Partial Copy Select `dir1` and `c.txt` (in that order, reverse order works!), and copy it and paste in `dir2`. `c.txt` is not copied in `dir2`. <img height="170" src="https://github.com/user-attachments/assets/a09fcb40-f38f-46ef-b0b4-e44ec01dda18" /> <img height="170" src="https://github.com/user-attachments/assets/bb87dbe5-8e2e-4ca4-a565-42be5755ec8a" /> --- 2. Before/After: Duplicate Copy Select `a.txt`, `dir1` and `c.txt` (in that order), and copy it and paste in `dir2`. `a.txt` is duplicated in `dir2`. <img height="170" src="https://github.com/user-attachments/assets/6f999d22-3607-48d7-9ff6-2e27494002f8" /> <img height="170" src="https://github.com/user-attachments/assets/b4b6ff7d-0df7-45ea-83e4-50a0acb18457" /> --- 3. Before/After: Directory Selection Simply primary click on any file, now primary click on any dir. That previous file is still marked. <img height="170" src="https://github.com/user-attachments/assets/9f1948ce-7445-4377-9733-06490ed6a324" /> <img height="170" src="https://github.com/user-attachments/assets/e78203bc-96ba-424b-b588-c038992a9f0e" /> --- 4. Before/After: Copy Path and Copy Path Relative Upon `copy path` (ctrl + alt + c): Before: Only `/home/tims/test/dir2/a.txt` was copied. After: All three paths `/home/tims/test/dir2`, `/home/tims/test/c.txt` and `/home/tims/test/dir2/a.txt` are copied. This is also how VSCode also copies path when multiple are selected. <img height="170" src="https://github.com/user-attachments/assets/e20423ea-1682-4efd-b208-631e2edd3771" /> |
||
---|---|---|
.cargo | ||
.cloudflare | ||
.config | ||
.github | ||
.zed | ||
assets | ||
crates | ||
docs | ||
extensions | ||
legal | ||
nix | ||
script | ||
tooling/xtask | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
Cargo.lock | ||
Cargo.toml | ||
clippy.toml | ||
CODE_OF_CONDUCT.md | ||
compose.yml | ||
CONTRIBUTING.md | ||
Cross.toml | ||
debug.plist | ||
default.nix | ||
docker-compose.sql | ||
Dockerfile-collab | ||
Dockerfile-collab.dockerignore | ||
Dockerfile-cross | ||
Dockerfile-cross.dockerignore | ||
Dockerfile-distros | ||
Dockerfile-distros.dockerignore | ||
flake.lock | ||
flake.nix | ||
LICENSE-AGPL | ||
LICENSE-APACHE | ||
LICENSE-GPL | ||
livekit.yaml | ||
Procfile | ||
Procfile.postgrest | ||
README.md | ||
renovate.json | ||
rust-toolchain.toml | ||
shell.nix | ||
typos.toml |
Zed
Welcome to Zed, a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
Installation
On macOS and Linux you can download Zed directly or install Zed via your local package manager.
Other platforms are not yet available:
- Windows (tracking issue)
- Web (tracking issue)
Developing Zed
- Building Zed for macOS
- Building Zed for Linux
- Building Zed for Windows
- Running Collaboration Locally
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 specified
error for a crate you've created? If so, addpublish = false
under[package]
in your crate's Cargo.toml. - Is the error
failed to satisfy license requirements
for 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 theaccepted
array inscript/licenses/zed-licenses.toml
. - Is
cargo-about
unable 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.