Remove slash-commands-example extension (#52835)

Follow-up to https://github.com/zed-industries/zed/pull/52757

Release Notes:

- N/A
This commit is contained in:
Finn Evers authored and GitHub committed 2026-03-31 18:27:38 +02:00
1 parent a0ef595454
commit a71c060bce
12 files changed
+30 -225

No files matched your search

@@ -1,16 +0,0 @@
[package]
name = "slash_commands_example"
version = "0.1.0"
edition.workspace = true
publish.workspace = true
license = "Apache-2.0"
[lints]
workspace = true
[lib]
path = "src/slash_commands_example.rs"
crate-type = ["cdylib"]
[dependencies]
zed_extension_api = "0.1.0"
@@ -1 +0,0 @@
../../LICENSE-APACHE
@@ -1,84 +0,0 @@
# Slash Commands Example Extension
This is an example extension showcasing how to write slash commands.
See: [Extensions: Slash Commands](https://zed.dev/docs/extensions/slash-commands) in the Zed Docs.
## Pre-requisites
[Install Rust Toolchain](https://www.rust-lang.org/tools/install):
```sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
## Setup
```sh
git clone https://github.com/zed-industries/zed.git
cp -RL zed/extensions/slash-commands-example .
cd slash-commands-example/
# Update Cargo.toml to make it standalone
cat > Cargo.toml << EOF
[package]
name = "slash_commands_example"
version = "0.1.0"
edition = "2021"
license = "Apache-2.0"
[lib]
path = "src/slash_commands_example.rs"
crate-type = ["cdylib"]
[dependencies]
zed_extension_api = "0.1.0"
EOF
curl -O https://raw.githubusercontent.com/rust-lang/rust/master/LICENSE-APACHE
echo "# Zed Slash Commands Example Extension" > README.md
echo "Cargo.lock" > .gitignore
echo "target/" >> .gitignore
echo "*.wasm" >> .gitignore
git init
git add .
git commit -m "Initial commit"
cd ..
mv slash-commands-example MY-SUPER-COOL-ZED-EXTENSION
zed $_
```
## Installation
1. Open the command palette (`cmd-shift-p` or `ctrl-shift-p`).
2. Launch `zed: install dev extension`
3. Select the extension folder created above
## Test
Open the assistant and type `/echo` and `/pick-one` at the beginning of a line.
## Customization
Open the `extensions.toml` file and set the `id`, `name`, `description`, `authors` and `repository` fields.
Rename `slash-commands-example.rs` you'll also have to update `Cargo.toml`
## Rebuild
Rebuild to see these changes reflected:
1. Open Zed Extensions (`cmd-shift-x` or `ctrl-shift-x`).
2. Click `Rebuild` next to your Dev Extension (formerly "Slash Command Example")
## Troubleshooting / Logs
- [zed.dev docs: Troubleshooting](https://zed.dev/docs/troubleshooting)
## Documentation
- [zed.dev docs: Extensions: Developing Extensions](https://zed.dev/docs/extensions/developing-extensions)
- [zed.dev docs: Extensions: Slash Commands](https://zed.dev/docs/extensions/slash-commands)
@@ -1,15 +0,0 @@
id = "slash-commands-example"
name = "Slash Commands Example"
description = "An example extension showcasing slash commands."
version = "0.1.0"
schema_version = 1
authors = ["Zed Industries <hi@zed.dev>"]
repository = "https://github.com/zed-industries/zed"
[slash_commands.echo]
description = "echoes the provided input"
requires_argument = true
[slash_commands.pick-one]
description = "pick one of three options"
requires_argument = true
@@ -1,90 +0,0 @@
use zed_extension_api::{
self as zed, SlashCommand, SlashCommandArgumentCompletion, SlashCommandOutput,
SlashCommandOutputSection, Worktree,
};
struct SlashCommandsExampleExtension;
impl zed::Extension for SlashCommandsExampleExtension {
fn new() -> Self {
SlashCommandsExampleExtension
}
fn complete_slash_command_argument(
&self,
command: SlashCommand,
_args: Vec<String>,
) -> Result<Vec<zed_extension_api::SlashCommandArgumentCompletion>, String> {
match command.name.as_str() {
"echo" => Ok(vec![]),
"pick-one" => Ok(vec![
SlashCommandArgumentCompletion {
label: "Option One".to_string(),
new_text: "option-1".to_string(),
run_command: true,
},
SlashCommandArgumentCompletion {
label: "Option Two".to_string(),
new_text: "option-2".to_string(),
run_command: true,
},
SlashCommandArgumentCompletion {
label: "Option Three".to_string(),
new_text: "option-3".to_string(),
run_command: true,
},
]),
command => Err(format!("unknown slash command: \"{command}\"")),
}
}
fn run_slash_command(
&self,
command: SlashCommand,
args: Vec<String>,
_worktree: Option<&Worktree>,
) -> Result<SlashCommandOutput, String> {
match command.name.as_str() {
"echo" => {
if args.is_empty() {
return Err("nothing to echo".to_string());
}
let text = args.join(" ");
Ok(SlashCommandOutput {
sections: vec![SlashCommandOutputSection {
range: (0..text.len()).into(),
label: "Echo".to_string(),
}],
text,
})
}
"pick-one" => {
let Some(selection) = args.first() else {
return Err("no option selected".to_string());
};
match selection.as_str() {
"option-1" | "option-2" | "option-3" => {}
invalid_option => {
return Err(format!("{invalid_option} is not a valid option"));
}
}
let text = format!("You chose {selection}.");
Ok(SlashCommandOutput {
sections: vec![SlashCommandOutputSection {
range: (0..text.len()).into(),
label: format!("Pick One: {selection}"),
}],
text,
})
}
command => Err(format!("unknown slash command: \"{command}\"")),
}
}
}
zed::register_extension!(SlashCommandsExampleExtension);