To test modifications, I am only using cargo run
to compile and start Zed in debug mode which is faster than building the release binaries.
Once, I am satisfied with a batch of changes, I install Zed into /Applications/Zed Dev.app
with this:
./script/bundle-mac-without-licenses -l -o -i && \
rm -f "$HOME/.cargo/bin/zed" && \
ln -s "/Applications/Zed Dev.app/Contents/MacOS/cli" "$HOME/.cargo/bin/zed"
git checkout main && git pull zed main && git push && git checkout dima && git merge main
https://github.com/zed-industries/zed/compare/main...Dima-369:zed:dima
- add
bundle-mac-without-licenses
which is faster than generating licenses, and skips thesentry-cli
at end - try to fix panic in
anchor_at_offset
when buffer has Umlaute, seems to work, no idea if my fix has other consequences - changed
fn do_copy(&self, strip_leading_indents: bool, cx: &mut Context<Self>) {
to only strip trailing newlines instead of leading indents - lower
MIN_NAVIGATION_HISTORY_ROW_DELTA
to 3, from 10, as a test which seems fine - allow AI edit predictions in Zed's
settings.json
andkeymap.json
- opening a workspace which has no tabs initially, will trigger
workspace::NewFile
for proper editor focus. Before, there seems to be a bug where the project panel does not have proper focus - implement new recent file functionality which tracks every opened buffer to quickly jump to file/open new workspace. Action is
workspace::OpenRecentFile
- added new setting:
diagnostics > merge_same_range
to merge diagnostics which have the same character range (I noticed this in Gleam's LSP: gleam-lang/gleam#4946) - go to next or previous diagnostic always first jumps to errors, and only if there are no errors, it jumps to warnings. Before, it was mixed
- moving up/down in outline panel does not wrap around anymore
- changed
agent::OpenActiveThreadAsMarkdown
to always open to end of buffer instead of start, and when there are more than 20k lines, open asPlain Text
because Markdown lags hard for me, seecrates/agent_ui/src/acp/thread_view.rs
(the second part is still untested) - add
vim_visual
context which can be set tonormal
,line
orblock
for more fine-grained keybindings
- the command palette sorting now sorts the same for
close work
andwork close
, and it does not search individual character matches like when you enterclo wo
, it does not showsearch: toggle whole word
because every individual character is contained - changed
command palette: toggle
to sort by recency instead of hit count
Markdown::ScrollPageLittleDown
andMarkdown::ScrollPageLittleUp
which scroll a quarter of a pageprojects::OpenRecentZoxide
which displays recent directories fromzoxide
CLI binary. It displays no footer and abbreviates paths to~
.highlighted_label.rs
was adjusted for its filtering. Herecmd+enter
is flipped, so by default, it always opens in a new windowworkspace::NewFileFromClipboard
which pastes in the clipboard contents and setsMarkdown
languageworkspace::CopyFilePaths
which opens a picker to copy the file path to clipboardsnippets::ReloadSnippets
because auto-reloading snippets is not working for meeditor::CreateNavHistoryEntry
editor::CopyAll
to copy entire buffer content to clipboardeditor::CountTokens
which counts the tokens in the current buffer usingo200k_base
via thetiktoken
crateeditor::MoveLinesSmooth
which can be used like this. Do not set a too highline_count
as it will keep scrolling even when key is released. It is not perfect, and sometimes, under high system load, it can happen that when you jump to top/bottom of file, it still scrolls a bit. Bind like this:
"v": [
"editor::MoveLinesSmooth",
{
"up": true,
"line_count": 9,
"delay_ms": 1
}
],
zed::DeeplTranslate
which translates the current selection or the current line. It needs theDEEPL_API_KEY
environment variable to be set. Bind like this:
"space c g": [
"zed::DeeplTranslate",
{
"source_lang": "EN",
"target_lang": "DE",
}
],
- use larger font size (
LabelSize::Default
) for the line/column and selection info in the bottom bar and usetext_accent
for it when a selection is active - lower excessive tab height
- lower status bar height, see
impl Render for StatusBar
- middle clicking a system tab will close it, just like regular tabs
- lower
toolbar.rs
height to make it as minimal as possible to save space, same inbreadcrumbs.rs
. This applies for terminals, as well - switch system tab background color from
title_bar_background
totab_bar_background
, so I can style active tabs far nicer because the default just uses a slightly different foreground color which is hard to spot - highlight the active search match with a different background color. It is not trivial to set the foreground color to a fixed color, so I stopped trying
- lower
DEFAULT_TOAST_DURATION
from 10 to 5 seconds - lower horizontal scroll bar height to half of vertical one (the default one is huge)
- hide horizontal scroll bar when soft wrap is enabled
- move search bar hit count
1/30
below the search text field, above the replace text field because it is hard too see at very right
Welcome to Zed, a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
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)
- Building Zed for macOS
- Building Zed for Linux
- Building Zed for Windows
- Running Collaboration Locally
See CONTRIBUTING.md for ways you can contribute to Zed.
Also... we're hiring! Check out our jobs page for open roles.
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.