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 mainhttps://github.com/zed-industries/zed/compare/main...Dima-369:zed:dima
- add
bundle-mac-without-licenseswhich is faster than generating licenses, and skips thesentry-cliat end - try to fix panic in
anchor_at_offsetwhen 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_DELTAto 3, from 10, as a test which seems fine - allow AI edit predictions in Zed's
settings.jsonandkeymap.json - opening a workspace which has no tabs initially, will trigger
workspace::NewFilefor 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_rangeto 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::OpenActiveThreadAsMarkdownto always open to end of buffer instead of start, and when there are more than 20k lines, open asPlain Textbecause Markdown lags hard for me, seecrates/agent_ui/src/acp/thread_view.rs(the second part is still untested) - add
vim_visualcontext which can be set tonormal,lineorblockfor more fine-grained keybindings
- the command palette sorting now sorts the same for
close workandwork close, and it does not search individual character matches like when you enterclo wo, it does not showsearch: toggle whole wordbecause every individual character is contained - changed
command palette: toggleto sort by recency instead of hit count
Markdown::ScrollPageLittleDownandMarkdown::ScrollPageLittleUpwhich scroll a quarter of a pageprojects::OpenRecentZoxidewhich displays recent directories fromzoxideCLI binary. It displays no footer and abbreviates paths to~.highlighted_label.rswas adjusted for its filtering. Herecmd+enteris flipped, so by default, it always opens in a new windowworkspace::NewFileFromClipboardwhich pastes in the clipboard contents and setsMarkdownlanguageworkspace::CopyFilePathswhich opens a picker to copy the file path to clipboardsnippets::ReloadSnippetsbecause auto-reloading snippets is not working for meeditor::CreateNavHistoryEntryeditor::CopyAllto copy entire buffer content to clipboardeditor::CountTokenswhich counts the tokens in the current buffer usingo200k_basevia thetiktokencrateeditor::MoveLinesSmoothwhich can be used like this. Do not set a too highline_countas 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::DeeplTranslatewhich translates the current selection or the current line. It needs theDEEPL_API_KEYenvironment 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_accentfor 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.rsheight 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_backgroundtotab_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_DURATIONfrom 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/30below 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 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.