Add workspace-hack (#27277)

This adds a "workspace-hack" crate, see
[mozilla's](https://hg.mozilla.org/mozilla-central/file/3a265fdc9f33e5946f0ca0a04af73acd7e6d1a39/build/workspace-hack/Cargo.toml#l7)
for a concise explanation of why this is useful. For us in practice this
means that if I were to run all the tests (`cargo nextest r
--workspace`) and then `cargo r`, all the deps from the previous cargo
command will be reused. Before this PR it would rebuild many deps due to
resolving different sets of features for them. For me this frequently
caused long rebuilds when things "should" already be cached.

To avoid manually maintaining our workspace-hack crate, we will use
[cargo hakari](https://docs.rs/cargo-hakari) to update the build files
when there's a necessary change. I've added a step to CI that checks
whether the workspace-hack crate is up to date, and instructs you to
re-run `script/update-workspace-hack` when it fails.

Finally, to make sure that people can still depend on crates in our
workspace without pulling in all the workspace deps, we use a `[patch]`
section following [hakari's
instructions](https://docs.rs/cargo-hakari/0.9.36/cargo_hakari/patch_directive/index.html)

One possible followup task would be making guppy use our
`rust-toolchain.toml` instead of having to duplicate that list in its
config, I opened an issue for that upstream: guppy-rs/guppy#481.

TODO:
- [x] Fix the extension test failure
- [x] Ensure the dev dependencies aren't being unified by Hakari into
the main dependencies
- [x] Ensure that the remote-server binary continues to not depend on
LibSSL

Release Notes:

- N/A

---------

Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
This commit is contained in:
Julia Ryan 2025-04-02 13:26:34 -07:00 committed by GitHub
parent 07a77792c5
commit 01ec6e0f77
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
185 changed files with 2091 additions and 693 deletions

40
.config/hakari.toml Normal file
View file

@ -0,0 +1,40 @@
# This file contains settings for `cargo hakari`.
# See https://docs.rs/cargo-hakari/latest/cargo_hakari/config for a full list of options.
hakari-package = "workspace-hack"
resolver = "2"
dep-format-version = "4"
workspace-hack-line-style = "workspace-dotted"
# this should be the same list as "targets" in ../rust-toolchain.toml
platforms = [
"x86_64-apple-darwin",
"aarch64-apple-darwin",
"x86_64-unknown-linux-gnu",
"aarch64-unknown-linux-gnu",
"x86_64-pc-windows-msvc",
"x86_64-unknown-linux-musl", # remote server
]
[traversal-excludes]
workspace-members = [
"remote_server",
]
[final-excludes]
workspace-members = [
"zed_extension_api",
# exclude all extensions
"zed_emmet",
"zed_glsl",
"zed_html",
"perplexity",
"zed_proto",
"zed_ruff",
"slash_commands_example",
"zed_snippets",
"zed_test_extension",
"zed_toml",
]

View file

@ -110,6 +110,37 @@ jobs:
input: "crates/proto/proto/" input: "crates/proto/proto/"
against: "https://github.com/${GITHUB_REPOSITORY}.git#branch=${BUF_BASE_BRANCH},subdir=crates/proto/proto/" against: "https://github.com/${GITHUB_REPOSITORY}.git#branch=${BUF_BASE_BRANCH},subdir=crates/proto/proto/"
workspace_hack:
timeout-minutes: 60
name: Check workspace-hack crate
needs: [job_spec]
if: github.repository_owner == 'zed-industries'
runs-on:
- buildjet-8vcpu-ubuntu-2204
steps:
- name: Checkout repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Add Rust to the PATH
run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Install cargo-hakari
uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386 # v2
with:
command: install
args: cargo-hakari@0.9.35
- name: Check workspace-hack Cargo.toml is up-to-date
run: |
cargo hakari generate --diff || {
echo "To fix, run script/update-workspace-hack";
false
}
- name: Check all crates depend on workspace-hack
run: |
cargo hakari manage-deps --dry-run || {
echo "To fix, run script/update-workspace-hack"
false
}
style: style:
timeout-minutes: 60 timeout-minutes: 60
name: Check formatting and spelling name: Check formatting and spelling
@ -432,6 +463,7 @@ jobs:
- job_spec - job_spec
- style - style
- migration_checks - migration_checks
- workspace_hack
- linux_tests - linux_tests
- build_remote_server - build_remote_server
- macos_tests - macos_tests

1813
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -192,6 +192,7 @@ members = [
# Tooling # Tooling
# #
"tooling/workspace-hack",
"tooling/xtask", "tooling/xtask",
] ]
default-members = ["crates/zed"] default-members = ["crates/zed"]
@ -590,6 +591,7 @@ wasmtime = { version = "29", default-features = false, features = [
wasmtime-wasi = "29" wasmtime-wasi = "29"
which = "6.0.0" which = "6.0.0"
wit-component = "0.221" wit-component = "0.221"
workspace-hack = "0.1.0"
zed_llm_client = "0.4" zed_llm_client = "0.4"
zstd = "0.11" zstd = "0.11"
metal = "0.29" metal = "0.29"
@ -660,6 +662,9 @@ real-async-tls = { git = "https://github.com/zed-industries/async-tls", rev = "1
notify = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" } notify = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" }
notify-types = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" } notify-types = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" }
# Makes the workspace hack crate refer to the local one, but only when you're building locally
workspace-hack = { path = "tooling/workspace-hack" }
[profile.dev] [profile.dev]
split-debuginfo = "unpacked" split-debuginfo = "unpacked"
codegen-units = 16 codegen-units = 16
@ -771,4 +776,4 @@ let_underscore_future = "allow"
too_many_arguments = "allow" too_many_arguments = "allow"
[workspace.metadata.cargo-machete] [workspace.metadata.cargo-machete]
ignored = ["bindgen", "cbindgen", "prost_build", "serde", "component", "linkme"] ignored = ["bindgen", "cbindgen", "prost_build", "serde", "component", "linkme", "workspace-hack"]

View file

@ -25,6 +25,7 @@ smallvec.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -86,6 +86,7 @@ uuid.workspace = true
vim_mode_setting.workspace = true vim_mode_setting.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
buffer_diff = { workspace = true, features = ["test-support"] } buffer_diff = { workspace = true, features = ["test-support"] }

View file

@ -26,3 +26,4 @@ serde_json.workspace = true
strum.workspace = true strum.workspace = true
thiserror.workspace = true thiserror.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true

View file

@ -19,3 +19,4 @@ smol.workspace = true
tempfile.workspace = true tempfile.workspace = true
util.workspace = true util.workspace = true
which.workspace = true which.workspace = true
workspace-hack.workspace = true

View file

@ -15,3 +15,4 @@ workspace = true
anyhow.workspace = true anyhow.workspace = true
gpui.workspace = true gpui.workspace = true
rust-embed.workspace = true rust-embed.workspace = true
workspace-hack.workspace = true

View file

@ -69,6 +69,7 @@ ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
ctor.workspace = true ctor.workspace = true

View file

@ -54,6 +54,7 @@ ui.workspace = true
util.workspace = true util.workspace = true
uuid.workspace = true uuid.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
language_model = { workspace = true, features = ["test-support"] } language_model = { workspace = true, features = ["test-support"] }

View file

@ -43,3 +43,4 @@ serde_json_lenient.workspace = true
settings.workspace = true settings.workspace = true
smol.workspace = true smol.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true

View file

@ -26,6 +26,7 @@ deepseek = { workspace = true, features = ["schemars"] }
schemars.workspace = true schemars.workspace = true
serde.workspace = true serde.workspace = true
settings.workspace = true settings.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
fs.workspace = true fs.workspace = true

View file

@ -26,6 +26,7 @@ serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
ui.workspace = true ui.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
gpui = { workspace = true, features = ["test-support"] } gpui = { workspace = true, features = ["test-support"] }

View file

@ -42,6 +42,7 @@ ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
worktree.workspace = true worktree.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
env_logger.workspace = true env_logger.workspace = true

View file

@ -28,6 +28,7 @@ serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
text.workspace = true text.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
buffer_diff = { workspace = true, features = ["test-support"] } buffer_diff = { workspace = true, features = ["test-support"] }

View file

@ -39,6 +39,7 @@ util.workspace = true
workspace.workspace = true workspace.workspace = true
worktree.workspace = true worktree.workspace = true
open = { workspace = true } open = { workspace = true }
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
collections = { workspace = true, features = ["test-support"] } collections = { workspace = true, features = ["test-support"] }

View file

@ -20,3 +20,4 @@ gpui.workspace = true
parking_lot.workspace = true parking_lot.workspace = true
rodio = { version = "0.20.0", default-features = false, features = ["wav"] } rodio = { version = "0.20.0", default-features = false, features = ["wav"] }
util.workspace = true util.workspace = true
workspace-hack.workspace = true

View file

@ -29,3 +29,4 @@ smol.workspace = true
tempfile.workspace = true tempfile.workspace = true
which.workspace = true which.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true

View file

@ -25,3 +25,4 @@ serde_json.workspace = true
smol.workspace = true smol.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true

View file

@ -20,3 +20,4 @@ aws-smithy-types.workspace = true
futures.workspace = true futures.workspace = true
http_client.workspace = true http_client.workspace = true
tokio = { workspace = true, features = ["rt", "rt-multi-thread"] } tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
workspace-hack.workspace = true

View file

@ -26,3 +26,4 @@ serde_json.workspace = true
strum.workspace = true strum.workspace = true
thiserror.workspace = true thiserror.workspace = true
tokio = { workspace = true, features = ["rt", "rt-multi-thread"] } tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
workspace-hack.workspace = true

View file

@ -20,6 +20,7 @@ theme.workspace = true
ui.workspace = true ui.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -27,6 +27,7 @@ rope.workspace = true
sum_tree.workspace = true sum_tree.workspace = true
text.workspace = true text.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
ctor.workspace = true ctor.workspace = true

View file

@ -42,6 +42,7 @@ telemetry.workspace = true
util.workspace = true util.workspace = true
gpui_tokio.workspace = true gpui_tokio.workspace = true
livekit_client.workspace = true livekit_client.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
client = { workspace = true, features = ["test-support"] } client = { workspace = true, features = ["test-support"] }

View file

@ -32,6 +32,7 @@ sum_tree.workspace = true
text.workspace = true text.workspace = true
time.workspace = true time.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
collections = { workspace = true, features = ["test-support"] } collections = { workspace = true, features = ["test-support"] }

View file

@ -31,6 +31,7 @@ release_channel.workspace = true
serde.workspace = true serde.workspace = true
util.workspace = true util.workspace = true
tempfile.workspace = true tempfile.workspace = true
workspace-hack.workspace = true
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies] [target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
exec.workspace = true exec.workspace = true

View file

@ -51,6 +51,7 @@ url.workspace = true
util.workspace = true util.workspace = true
worktree.workspace = true worktree.workspace = true
telemetry.workspace = true telemetry.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
clock = { workspace = true, features = ["test-support"] } clock = { workspace = true, features = ["test-support"] }

View file

@ -19,3 +19,4 @@ test-support = ["dep:parking_lot"]
parking_lot = { workspace = true, optional = true } parking_lot = { workspace = true, optional = true }
serde.workspace = true serde.workspace = true
smallvec.workspace = true smallvec.workspace = true
workspace-hack.workspace = true

View file

@ -76,6 +76,7 @@ tracing = "0.1.40"
tracing-subscriber = { version = "0.3.18", features = ["env-filter", "json", "registry", "tracing-log"] } # workaround for https://github.com/tokio-rs/tracing/issues/2927 tracing-subscriber = { version = "0.3.18", features = ["env-filter", "json", "registry", "tracing-log"] } # workaround for https://github.com/tokio-rs/tracing/issues/2927
util.workspace = true util.workspace = true
uuid.workspace = true uuid.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
assistant = { workspace = true, features = ["test-support"] } assistant = { workspace = true, features = ["test-support"] }

View file

@ -64,6 +64,7 @@ title_bar.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
call = { workspace = true, features = ["test-support"] } call = { workspace = true, features = ["test-support"] }

View file

@ -18,3 +18,4 @@ test-support = []
[dependencies] [dependencies]
indexmap.workspace = true indexmap.workspace = true
rustc-hash.workspace = true rustc-hash.workspace = true
workspace-hack.workspace = true

View file

@ -31,6 +31,7 @@ util.workspace = true
telemetry.workspace = true telemetry.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
ctor.workspace = true ctor.workspace = true

View file

@ -16,3 +16,4 @@ doctest = false
collections.workspace = true collections.workspace = true
derive_more.workspace = true derive_more.workspace = true
gpui.workspace = true gpui.workspace = true
workspace-hack.workspace = true

View file

@ -17,6 +17,7 @@ gpui.workspace = true
linkme.workspace = true linkme.workspace = true
parking_lot.workspace = true parking_lot.workspace = true
theme.workspace = true theme.workspace = true
workspace-hack.workspace = true
[features] [features]
default = [] default = []

View file

@ -24,3 +24,4 @@ ui.workspace = true
workspace.workspace = true workspace.workspace = true
notifications.workspace = true notifications.workspace = true
collections.workspace = true collections.workspace = true
workspace-hack.workspace = true

View file

@ -33,3 +33,4 @@ settings.workspace = true
smol.workspace = true smol.workspace = true
url = { workspace = true, features = ["serde"] } url = { workspace = true, features = ["serde"] }
util.workspace = true util.workspace = true
workspace-hack.workspace = true

View file

@ -19,3 +19,4 @@ schemars.workspace = true
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
settings.workspace = true settings.workspace = true
workspace-hack.workspace = true

View file

@ -52,6 +52,7 @@ task.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
async-std = { version = "1.12.0", features = ["unstable"] } async-std = { version = "1.12.0", features = ["unstable"] }

View file

@ -19,3 +19,4 @@ paths.workspace = true
release_channel.workspace = true release_channel.workspace = true
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
workspace-hack.workspace = true

View file

@ -48,6 +48,7 @@ smallvec.workspace = true
smol.workspace = true smol.workspace = true
task.workspace = true task.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
async-pipe.workspace = true async-pipe.workspace = true

View file

@ -32,6 +32,7 @@ serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
task.workspace = true task.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
dap = { workspace = true, features = ["test-support"] } dap = { workspace = true, features = ["test-support"] }

View file

@ -26,6 +26,7 @@ smol.workspace = true
sqlez.workspace = true sqlez.workspace = true
sqlez_macros.workspace = true sqlez_macros.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
gpui = { workspace = true, features = ["test-support"] } gpui = { workspace = true, features = ["test-support"] }

View file

@ -24,3 +24,4 @@ settings.workspace = true
smol.workspace = true smol.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true

View file

@ -50,6 +50,7 @@ theme.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
dap = { workspace = true, features = ["test-support"] } dap = { workspace = true, features = ["test-support"] }

View file

@ -22,3 +22,4 @@ http_client.workspace = true
schemars = { workspace = true, optional = true } schemars = { workspace = true, optional = true }
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
workspace-hack.workspace = true

View file

@ -30,6 +30,7 @@ theme.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
client = { workspace = true, features = ["test-support"] } client = { workspace = true, features = ["test-support"] }

View file

@ -14,6 +14,7 @@ serde_json.workspace = true
settings.workspace = true settings.workspace = true
regex.workspace = true regex.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[lints] [lints]
workspace = true workspace = true

View file

@ -87,6 +87,7 @@ util.workspace = true
uuid.workspace = true uuid.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
ctor.workspace = true ctor.workspace = true

View file

@ -37,3 +37,4 @@ serde_json.workspace = true
settings.workspace = true settings.workspace = true
smol.workspace = true smol.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true

View file

@ -483,8 +483,8 @@ async fn run_eval_project(
for (ix, result) in results.iter().enumerate() { for (ix, result) in results.iter().enumerate() {
if result.path.as_ref() == Path::new(&expected_result.file) { if result.path.as_ref() == Path::new(&expected_result.file) {
file_matched = true; file_matched = true;
let start_matched = result.row_range.contains(&expected_result.lines.start()); let start_matched = result.row_range.contains(expected_result.lines.start());
let end_matched = result.row_range.contains(&expected_result.lines.end()); let end_matched = result.row_range.contains(expected_result.lines.end());
if start_matched || end_matched { if start_matched || end_matched {
range_overlapped = true; range_overlapped = true;

View file

@ -34,3 +34,4 @@ util.workspace = true
wasm-encoder.workspace = true wasm-encoder.workspace = true
wasmparser.workspace = true wasmparser.workspace = true
wit-component.workspace = true wit-component.workspace = true
workspace-hack.workspace = true

View file

@ -30,3 +30,4 @@ tokio = { workspace = true, features = ["full"] }
toml.workspace = true toml.workspace = true
tree-sitter.workspace = true tree-sitter.workspace = true
wasmtime.workspace = true wasmtime.workspace = true
workspace-hack.workspace = true

View file

@ -51,6 +51,7 @@ util.workspace = true
wasmparser.workspace = true wasmparser.workspace = true
wasmtime-wasi.workspace = true wasmtime-wasi.workspace = true
wasmtime.workspace = true wasmtime.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
ctor.workspace = true ctor.workspace = true

View file

@ -38,6 +38,7 @@ util.workspace = true
vim_mode_setting.workspace = true vim_mode_setting.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -15,3 +15,4 @@ path = "src/feature_flags.rs"
futures.workspace = true futures.workspace = true
gpui.workspace = true gpui.workspace = true
smol.workspace = true smol.workspace = true
workspace-hack.workspace = true

View file

@ -27,6 +27,7 @@ urlencoding.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -32,6 +32,7 @@ theme.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
ctor.workspace = true ctor.workspace = true

View file

@ -18,3 +18,4 @@ serde.workspace = true
settings.workspace = true settings.workspace = true
theme.workspace = true theme.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true

View file

@ -33,6 +33,7 @@ tempfile.workspace = true
text.workspace = true text.workspace = true
time.workspace = true time.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[target.'cfg(target_os = "macos")'.dependencies] [target.'cfg(target_os = "macos")'.dependencies]
fsevent.workspace = true fsevent.workspace = true

View file

@ -15,6 +15,7 @@ doctest = false
[dependencies] [dependencies]
bitflags.workspace = true bitflags.workspace = true
parking_lot.workspace = true parking_lot.workspace = true
workspace-hack.workspace = true
[target.'cfg(target_os = "macos")'.dependencies] [target.'cfg(target_os = "macos")'.dependencies]
core-foundation.workspace = true core-foundation.workspace = true

View file

@ -16,3 +16,4 @@ doctest = false
gpui.workspace = true gpui.workspace = true
util.workspace = true util.workspace = true
log.workspace = true log.workspace = true
workspace-hack.workspace = true

View file

@ -38,6 +38,7 @@ url.workspace = true
util.workspace = true util.workspace = true
uuid.workspace = true uuid.workspace = true
futures.workspace = true futures.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
pretty_assertions.workspace = true pretty_assertions.workspace = true

View file

@ -25,6 +25,7 @@ serde_json.workspace = true
settings.workspace = true settings.workspace = true
url.workspace = true url.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
indoc.workspace = true indoc.workspace = true

View file

@ -59,6 +59,7 @@ ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
windows.workspace = true windows.workspace = true

View file

@ -26,6 +26,7 @@ theme.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -22,3 +22,4 @@ schemars = { workspace = true, optional = true }
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
strum.workspace = true strum.workspace = true
workspace-hack.workspace = true

View file

@ -118,6 +118,7 @@ util.workspace = true
uuid.workspace = true uuid.workspace = true
waker-fn = "1.2.0" waker-fn = "1.2.0"
lyon = "1.0" lyon = "1.0"
workspace-hack.workspace = true
[target.'cfg(target_os = "macos")'.dependencies] [target.'cfg(target_os = "macos")'.dependencies]
block = "0.1" block = "0.1"

View file

@ -17,6 +17,7 @@ doctest = true
proc-macro2.workspace = true proc-macro2.workspace = true
quote.workspace = true quote.workspace = true
syn.workspace = true syn.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
gpui.workspace = true gpui.workspace = true

View file

@ -16,3 +16,4 @@ doctest = false
util.workspace = true util.workspace = true
gpui.workspace = true gpui.workspace = true
tokio = { workspace = true, features = ["rt", "rt-multi-thread"] } tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
workspace-hack.workspace = true

View file

@ -20,6 +20,7 @@ anyhow.workspace = true
html5ever.workspace = true html5ever.workspace = true
markup5ever_rcdom.workspace = true markup5ever_rcdom.workspace = true
regex.workspace = true regex.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
indoc.workspace = true indoc.workspace = true

View file

@ -25,3 +25,4 @@ log.workspace = true
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
url.workspace = true url.workspace = true
workspace-hack.workspace = true

View file

@ -18,3 +18,4 @@ doctest = true
[dependencies] [dependencies]
rustls.workspace = true rustls.workspace = true
rustls-platform-verifier.workspace = true rustls-platform-verifier.workspace = true
workspace-hack.workspace = true

View file

@ -14,3 +14,4 @@ path = "src/icons.rs"
[dependencies] [dependencies]
serde.workspace = true serde.workspace = true
strum.workspace = true strum.workspace = true
workspace-hack.workspace = true

View file

@ -29,6 +29,7 @@ theme.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -31,6 +31,7 @@ paths.workspace = true
serde.workspace = true serde.workspace = true
strum.workspace = true strum.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
indoc.workspace = true indoc.workspace = true

View file

@ -15,3 +15,4 @@ path = "src/inline_completion.rs"
gpui.workspace = true gpui.workspace = true
language.workspace = true language.workspace = true
project.workspace = true project.workspace = true
workspace-hack.workspace = true

View file

@ -32,6 +32,7 @@ ui.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
zeta.workspace = true zeta.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
copilot = { workspace = true, features = ["test-support"] } copilot = { workspace = true, features = ["test-support"] }

View file

@ -19,3 +19,4 @@ anyhow.workspace = true
gpui.workspace = true gpui.workspace = true
smol.workspace = true smol.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true

View file

@ -23,6 +23,7 @@ serde.workspace = true
settings.workspace = true settings.workspace = true
shellexpand.workspace = true shellexpand.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -63,6 +63,7 @@ tree-sitter-typescript = { workspace = true, optional = true }
tree-sitter.workspace = true tree-sitter.workspace = true
unicase = "2.6" unicase = "2.6"
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
collections = { workspace = true, features = ["test-support"] } collections = { workspace = true, features = ["test-support"] }

View file

@ -24,3 +24,4 @@ lsp.workspace = true
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true

View file

@ -39,6 +39,7 @@ strum.workspace = true
telemetry_events.workspace = true telemetry_events.workspace = true
thiserror.workspace = true thiserror.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
gpui = { workspace = true, features = ["test-support"] } gpui = { workspace = true, features = ["test-support"] }

View file

@ -21,3 +21,4 @@ proto.workspace = true
ui.workspace = true ui.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true

View file

@ -51,6 +51,7 @@ tiktoken-rs.workspace = true
tokio = { workspace = true, features = ["rt", "rt-multi-thread"] } tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -26,6 +26,7 @@ settings.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -30,6 +30,7 @@ tree-sitter.workspace = true
ui.workspace = true ui.workspace = true
workspace.workspace = true workspace.workspace = true
zed_actions.workspace = true zed_actions.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
client = { workspace = true, features = ["test-support"] } client = { workspace = true, features = ["test-support"] }

View file

@ -83,6 +83,7 @@ tree-sitter-rust = { workspace = true, optional = true }
tree-sitter-typescript = { workspace = true, optional = true } tree-sitter-typescript = { workspace = true, optional = true }
tree-sitter-yaml = { workspace = true, optional = true } tree-sitter-yaml = { workspace = true, optional = true }
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
pretty_assertions.workspace = true pretty_assertions.workspace = true

View file

@ -22,6 +22,7 @@ prost.workspace = true
prost-types.workspace = true prost-types.workspace = true
reqwest.workspace = true reqwest.workspace = true
serde.workspace = true serde.workspace = true
workspace-hack.workspace = true
[build-dependencies] [build-dependencies]
prost-build.workspace = true prost-build.workspace = true

View file

@ -37,6 +37,7 @@ postage.workspace = true
smallvec.workspace = true smallvec.workspace = true
tokio-tungstenite.workspace = true tokio-tungstenite.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[target.'cfg(not(all(target_os = "windows", target_env = "gnu")))'.dependencies] [target.'cfg(not(all(target_os = "windows", target_env = "gnu")))'.dependencies]
libwebrtc = { rev = "80bb8f4c9112789f7c24cc98d8423010977806a6", git = "https://github.com/zed-industries/livekit-rust-sdks" } libwebrtc = { rev = "80bb8f4c9112789f7c24cc98d8423010977806a6", git = "https://github.com/zed-industries/livekit-rust-sdks" }

View file

@ -22,3 +22,4 @@ http_client.workspace = true
schemars = { workspace = true, optional = true } schemars = { workspace = true, optional = true }
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
workspace-hack.workspace = true

View file

@ -31,6 +31,7 @@ schemars.workspace = true
smol.workspace = true smol.workspace = true
util.workspace = true util.workspace = true
release_channel.workspace = true release_channel.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
async-pipe.workspace = true async-pipe.workspace = true

View file

@ -28,6 +28,7 @@ pulldown-cmark.workspace = true
theme.workspace = true theme.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
assets.workspace = true assets.workspace = true

View file

@ -30,6 +30,7 @@ theme.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
workspace.workspace = true workspace.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }

View file

@ -14,6 +14,7 @@ doctest = false
[dependencies] [dependencies]
anyhow.workspace = true anyhow.workspace = true
workspace-hack.workspace = true
[target.'cfg(target_os = "macos")'.dependencies] [target.'cfg(target_os = "macos")'.dependencies]
core-foundation.workspace = true core-foundation.workspace = true

View file

@ -14,4 +14,4 @@ doctest = false
[dependencies] [dependencies]
gpui.workspace = true gpui.workspace = true
serde.workspace = true workspace-hack.workspace = true

View file

@ -20,6 +20,7 @@ log.workspace = true
streaming-iterator.workspace = true streaming-iterator.workspace = true
tree-sitter-json.workspace = true tree-sitter-json.workspace = true
tree-sitter.workspace = true tree-sitter.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
pretty_assertions.workspace = true pretty_assertions.workspace = true

View file

@ -23,3 +23,4 @@ schemars = { workspace = true, optional = true }
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
strum.workspace = true strum.workspace = true
workspace-hack.workspace = true

View file

@ -45,6 +45,7 @@ text.workspace = true
theme.workspace = true theme.workspace = true
tree-sitter.workspace = true tree-sitter.workspace = true
util.workspace = true util.workspace = true
workspace-hack.workspace = true
[dev-dependencies] [dev-dependencies]
buffer_diff = { workspace = true, features = ["test-support"] } buffer_diff = { workspace = true, features = ["test-support"] }

View file

@ -204,12 +204,12 @@ fn test_excerpt_boundaries_and_clipping(cx: &mut App) {
.collect::<Vec<_>>(), .collect::<Vec<_>>(),
[Some(3)] [Some(3)]
); );
assert_eq!( assert!(
snapshot snapshot
.row_infos(MultiBufferRow(5)) .row_infos(MultiBufferRow(5))
.map(|info| info.buffer_row) .map(|info| info.buffer_row)
.collect::<Vec<_>>(), .collect::<Vec<_>>()
[] .is_empty()
); );
assert_eq!( assert_eq!(
@ -870,12 +870,12 @@ fn test_empty_multibuffer(cx: &mut App) {
.collect::<Vec<_>>(), .collect::<Vec<_>>(),
&[Some(0)] &[Some(0)]
); );
assert_eq!( assert!(
snapshot snapshot
.row_infos(MultiBufferRow(1)) .row_infos(MultiBufferRow(1))
.map(|info| info.buffer_row) .map(|info| info.buffer_row)
.collect::<Vec<_>>(), .collect::<Vec<_>>()
&[] .is_empty(),
); );
} }

Some files were not shown because too many files have changed in this diff Show more