23a97f5b61
[[PR Description]] Adds documentation to ColorScaleSteps: ```rust /// Returns the specified step in the [`ColorScale`]. #[inline] pub fn step(&self, step: ColorScaleStep) -> Hsla { // Steps are one-based, so we need convert to the zero-based vec index. self.0[step.0 - 1] } /// `Step 1` - Used for main application backgrounds. /// /// This step provides a neutral base for any overlaying components, ideal for applications' main backdrop or empty spaces such as canvas areas. /// #[inline] pub fn step_1(&self) -> Hsla { self.step(ColorScaleStep::ONE) } /// `Step 2` - Used for both main application backgrounds and subtle component backgrounds. /// /// Like `Step 1`, this step allows variations in background styles, from striped tables, sidebar backgrounds, to card backgrounds. #[inline] pub fn step_2(&self) -> Hsla { self.step(ColorScaleStep::TWO) } /// `Step 3` - Used for UI component backgrounds in their normal states. /// /// This step maintains accessibility by guaranteeing a contrast ratio of 4.5:1 with steps 11 and 12 for text. It could also suit hover states for transparent components. #[inline] pub fn step_3(&self) -> Hsla { self.step(ColorScaleStep::THREE) } /// `Step 4` - Used for UI component backgrounds in their hover states. /// /// Also suited for pressed or selected states of components with a transparent background. #[inline] pub fn step_4(&self) -> Hsla { self.step(ColorScaleStep::FOUR) } /// `Step 5` - Used for UI component backgrounds in their pressed or selected states. #[inline] pub fn step_5(&self) -> Hsla { self.step(ColorScaleStep::FIVE) } /// `Step 6` - Used for subtle borders on non-interactive components. /// /// Its usage spans from sidebars' borders, headers' dividers, cards' outlines, to alerts' edges and separators. #[inline] pub fn step_6(&self) -> Hsla { self.step(ColorScaleStep::SIX) } /// `Step 7` - Used for subtle borders on interactive components. /// /// This step subtly delineates the boundary of elements users interact with. #[inline] pub fn step_7(&self) -> Hsla { self.step(ColorScaleStep::SEVEN) } /// `Step 8` - Used for stronger borders on interactive components and focus rings. /// /// It strengthens the visibility and accessibility of active elements and their focus states. #[inline] pub fn step_8(&self) -> Hsla { self.step(ColorScaleStep::EIGHT) } /// `Step 9` - Used for solid backgrounds. /// /// `Step 9` is the most saturated step, having the least mix of white or black. /// /// Due to its high chroma, `Step 9` is versatile and particularly useful for semantic colors such as /// error, warning, and success indicators. #[inline] pub fn step_9(&self) -> Hsla { self.step(ColorScaleStep::NINE) } /// `Step 10` - Used for hovered or active solid backgrounds, particularly when `Step 9` is their normal state. #[inline] pub fn step_10(&self) -> Hsla { self.step(ColorScaleStep::TEN) } /// `Step 11` - Used for text and icons requiring low contrast or less emphasis. #[inline] pub fn step_11(&self) -> Hsla { self.step(ColorScaleStep::ELEVEN) } /// `Step 12` - Used for text and icons requiring high contrast or prominence. #[inline] pub fn step_12(&self) -> Hsla { self.step(ColorScaleStep::TWELVE) } ``` Release Notes: - N/A |
||
---|---|---|
.cargo | ||
.config | ||
.github | ||
.vscode | ||
.zed | ||
assets | ||
crates | ||
docs | ||
plugins | ||
script | ||
styles | ||
.dockerignore | ||
.gitignore | ||
.gitmodules | ||
Cargo.lock | ||
Cargo.toml | ||
Dockerfile | ||
Procfile | ||
README.md | ||
rust-toolchain.toml | ||
test.rs |
Zed
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, node and rustup-init (rustup, rust, cargo, etc.)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install node rustup-init rustup-init # follow the installation steps
-
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, thePostgREST
API server, and theforeman
process supervisor:brew install livekit brew install postgrest brew install foreman
-
Ensure the Zed.dev website is checked out in a sibling directory and install its 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
- You need to install Xcode and then run:
xcode-select --switch /Applications/Xcode.app/Contents/Developer
- (see https://github.com/gfx-rs/gfx/issues/2309)
- You need to install Xcode and then run:
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-local
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, 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.
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
.