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
12 lines
349 B
Plaintext
12 lines
349 B
Plaintext
interface slash-command {
|
|
/// A slash command for use in the Assistant.
|
|
record slash-command {
|
|
/// The name of the slash command.
|
|
name: string,
|
|
/// The description of the slash command.
|
|
description: string,
|
|
/// Whether this slash command requires an argument.
|
|
requires-argument: bool,
|
|
}
|
|
}
|