zed

NameLast commit messageLast commit date
.cargoUse xtask for theme generation3 years ago
.configtests: Test 'db' package sequentially (#2654)3 years ago
.githubAdd `docker system prune` command3 years ago
.vscodeHit the local server when debugging5 years ago
.zedEnsure json uses a tab size of 43 years ago
assetsvim: Add ZZ and ZQ3 years ago
cratesImprove database and RPC API for moving and linking channels, improve test legibility3 years ago
docschore: add theme types docs3 years ago
pluginsUse the same serde version across the entire workspace3 years ago
scriptUpdate test name in randomized-test-minimize script3 years ago
stylesMake toolbar horizontal padding more consistent3 years ago
.dockerignoreRemoved old experiments settings and staff mode flag, added new StaffMode global that is set based on the webserver's staff bit3 years ago
.gitignoreMerge branch 'main' into sergey/z-2308-create-a-proof-of-concept-of-exporting-a-type-from-rust-and3 years ago
.gitmodulesWIP: start on live_kit_server4 years ago
Cargo.lockvim . to replay (#2936)3 years ago
Cargo.tomlAdd feature flags handling to the client, rewrite staff mode to a trait extension style3 years ago
DockerfileUpgrade to rust 1.723 years ago
ProcfileAdd livekit to the Procfile, update the README4 years ago
README.mdUpdate getting started3 years ago
rust-toolchain.tomlUpgrade to rust 1.723 years ago
test.rsIntroduce Refinement trait and derive macro3 years ago
README.md

Zed

CI

Welcome to Zed, a lightning-fast, collaborative code editor that makes your dreams come true.

Development tips

Dependencies

  • Install Xcode from https://apps.apple.com/us/app/xcode/id497799835?mt=12, and accept the license:

    sudo xcodebuild -license
    
  • Install homebrew, rust and node

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    brew install rust
    brew install node
    
  • Ensure rust executables are in your $PATH

    echo $HOME/.cargo/bin | sudo tee /etc/paths.d/10-rust
    
  • Install postgres and configure the database

    brew install postgresql@15
    brew services start postgresql@15
    psql -c "CREATE ROLE postgres SUPERUSER LOGIN" postgres
    psql -U postgres -c "CREATE DATABASE zed"
    
  • Install the LiveKit server and the foreman process supervisor:

    brew install livekit
    brew install foreman
    
  • Ensure the Zed.dev website is checked out in a sibling directory and install it's dependencies:

    cd ..
    git clone https://github.com/zed-industries/zed.dev
    cd zed.dev && npm install
    npm install -g vercel
    
  • Return to Zed project directory and Initialize submodules

    cd zed
    git submodule update --init --recursive
    
  • Set up a local zed database and seed it with some initial users:

    Create a personal GitHub token to run script/bootstrap once successfully: the token needs to have an access to private repositories for the script to work (repo OAuth scope). Then delete that token.

    GITHUB_TOKEN=<$token> script/bootstrap
    
  • Now try running zed with collaboration disabled:

    cargo run
    

Common errors

  • xcrun: error: unable to find utility "metal", not a developer tool or in PATH

Testing against locally-running servers

Start the web and collab servers:

foreman start

If you want to run Zed pointed at the local servers, you can run:

script/zed-with-local-servers
# or...
script/zed-with-local-servers --release

Dump element JSON

If you trigger cmd-alt-i, Zed will copy a JSON representation of the current window contents to the clipboard. You can paste this in a tool like DJSON to navigate the state of on-screen elements in a structured way.

Licensing

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, add publish = 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 the accepted array in script/licenses/zed-licenses.toml.
  • Is cargo-about unable to find the license for a dependency? If so, add a clarification field at the end of script/licenses/zed-licenses.toml, as specified in the cargo-about book.

Wasm Plugins

Zed has a Wasm-based plugin runtime which it currently uses to embed plugins. To compile Zed, you'll need to have the wasm32-wasi toolchain installed on your system. To install this toolchain, run:

rustup target add wasm32-wasi

Plugins can be found in the plugins folder in the root. For more information about how plugins work, check the Plugin Guide in crates/plugin_runtime/README.md.