Fix more bugs in files (#16241)
Fixes: - [x] an issue where directories would only match by prefix, causing both a directory and a file to be matched if in the same directory - [x] An issue where you could not continue a file completion when selecting a directory, as `tab` on a file would always run the command. This effectively disabled directory sub queries. - [x] Inconsistent rendering of files and directories in the slash command Release Notes: - N/A --------- Co-authored-by: max <max@zed.dev>
This commit is contained in:
parent
a3a6ebcf31
commit
455850505f
13 changed files with 415 additions and 47 deletions
|
@ -15,6 +15,35 @@ pub fn init(cx: &mut AppContext) {
|
|||
SlashCommandRegistry::default_global(cx);
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum AfterCompletion {
|
||||
/// Run the command
|
||||
Run,
|
||||
/// Continue composing the current argument, doesn't add a space
|
||||
Compose,
|
||||
/// Continue the command composition, adds a space
|
||||
Continue,
|
||||
}
|
||||
|
||||
impl From<bool> for AfterCompletion {
|
||||
fn from(value: bool) -> Self {
|
||||
if value {
|
||||
AfterCompletion::Run
|
||||
} else {
|
||||
AfterCompletion::Continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl AfterCompletion {
|
||||
pub fn run(&self) -> bool {
|
||||
match self {
|
||||
AfterCompletion::Run => true,
|
||||
AfterCompletion::Compose | AfterCompletion::Continue => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ArgumentCompletion {
|
||||
/// The label to display for this completion.
|
||||
|
@ -22,7 +51,7 @@ pub struct ArgumentCompletion {
|
|||
/// The new text that should be inserted into the command when this completion is accepted.
|
||||
pub new_text: String,
|
||||
/// Whether the command should be run when accepting this completion.
|
||||
pub run_command: bool,
|
||||
pub after_completion: AfterCompletion,
|
||||
/// Whether to replace the all arguments, or whether to treat this as an independent argument.
|
||||
pub replace_previous_arguments: bool,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue