This PR adds initial support for defining slash commands for the
Assistant from extensions.
Slash commands are defined in an extension's `extension.toml`:
```toml
[slash_commands.gleam-project]
description = "Returns information about the current Gleam project."
requires_argument = false
```
and then executed via the `run_slash_command` method on the `Extension`
trait:
```rs
impl Extension for GleamExtension {
// ...
fn run_slash_command(
&self,
command: SlashCommand,
_argument: Option<String>,
worktree: &zed::Worktree,
) -> Result<Option<String>, String> {
match command.name.as_str() {
"gleam-project" => Ok(Some("Yayyy".to_string())),
command => Err(format!("unknown slash command: \"{command}\"")),
}
}
}
```
Release Notes:
- N/A
61 lines
1.4 KiB
TOML
61 lines
1.4 KiB
TOML
[package]
|
|
name = "extension"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
publish = false
|
|
license = "GPL-3.0-or-later"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[lib]
|
|
path = "src/extension_store.rs"
|
|
doctest = false
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
assistant_slash_command.workspace = true
|
|
async-compression.workspace = true
|
|
async-tar.workspace = true
|
|
async-trait.workspace = true
|
|
cap-std.workspace = true
|
|
client.workspace = true
|
|
collections.workspace = true
|
|
fs.workspace = true
|
|
futures.workspace = true
|
|
gpui.workspace = true
|
|
http.workspace = true
|
|
isahc.workspace = true
|
|
language.workspace = true
|
|
log.workspace = true
|
|
lsp.workspace = true
|
|
node_runtime.workspace = true
|
|
project.workspace = true
|
|
release_channel.workspace = true
|
|
schemars.workspace = true
|
|
semantic_version.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
settings.workspace = true
|
|
theme.workspace = true
|
|
toml.workspace = true
|
|
url.workspace = true
|
|
util.workspace = true
|
|
wasm-encoder.workspace = true
|
|
wasmtime.workspace = true
|
|
wasmtime-wasi.workspace = true
|
|
wasmparser.workspace = true
|
|
wit-component.workspace = true
|
|
task.workspace = true
|
|
serde_json_lenient.workspace = true
|
|
|
|
[dev-dependencies]
|
|
ctor.workspace = true
|
|
env_logger.workspace = true
|
|
parking_lot.workspace = true
|
|
|
|
fs = { workspace = true, features = ["test-support"] }
|
|
gpui = { workspace = true, features = ["test-support"] }
|
|
language = { workspace = true, features = ["test-support"] }
|
|
project = { workspace = true, features = ["test-support"] }
|