feat: implement delete files

pull/12902/head
Nikita Revenco 2025-02-17 23:46:04 +00:00
parent f59c5966f6
commit 469115e5ee
1 changed files with 27 additions and 11 deletions

View File

@ -379,21 +379,21 @@ pub fn file_explorer(root: PathBuf, editor: &Editor) -> Result<FileExplorer, std
|cx, (path, _is_dir): &(PathBuf, bool)|, |cx, (path, _is_dir): &(PathBuf, bool)|,
// create // create
alt!('c') => { alt!('c') => {
create_file_operation_prompt("create:", cx, path, |_path, create| { create_file_operation_prompt("create:", cx, path, |_, to_create_str| {
let path = helix_stdx::path::expand_tilde(PathBuf::from(create)); let to_create = helix_stdx::path::expand_tilde(PathBuf::from(to_create_str));
if path.exists() { if to_create.exists() {
return Err(format!("Path {create} already exists.")) return Err(format!("Path {to_create_str} already exists"))
}; };
if create.ends_with(std::path::MAIN_SEPARATOR) { if to_create_str.ends_with(std::path::MAIN_SEPARATOR) {
fs::create_dir_all(path).map_err(|err| format!("Unable to create directory {create}: {err}"))?; fs::create_dir_all(to_create).map_err(|err| format!("Unable to create directory {to_create_str}: {err}"))?;
Ok(format!("Created directory: {create}")) Ok(format!("Created directory: {to_create_str}"))
} else { } else {
fs::File::create(path).map_err(|err| format!("Unable to create file {create}: {err}"))?; fs::File::create(to_create).map_err(|err| format!("Unable to create file {to_create_str}: {err}"))?;
Ok(format!("Created file: {create}")) Ok(format!("Created file: {to_create_str}"))
} }
}) })
}, },
@ -406,9 +406,25 @@ pub fn file_explorer(root: PathBuf, editor: &Editor) -> Result<FileExplorer, std
}, },
// delete // delete
alt!('d') => { alt!('d') => {
create_file_operation_prompt("delete? (y/n):", cx, path, |path, input| { create_file_operation_prompt("delete? (y/n):", cx, path, |_, to_delete_str| {
Ok("".into()) let to_delete = helix_stdx::path::expand_tilde(PathBuf::from(to_delete_str));
if matches!(to_delete_str, "y" | "n") {
if to_delete.exists() {
return Err(format!("Path {to_delete_str} does not exist"))
};
if to_delete_str.ends_with(std::path::MAIN_SEPARATOR) {
fs::remove_dir_all(to_delete).map_err(|err| format!("Unable to delete directory {to_delete_str}: {err}"))?;
Ok(format!("Deleted directory: {to_delete_str}"))
} else {
fs::remove_file(to_delete).map_err(|err| format!("Unable to delete file {to_delete_str}: {err}"))?;
Ok(format!("Deleted file: {to_delete_str}"))
}
} else {
Ok(format!("Did not delete: {to_delete_str}"))
}
}) })
}, },
// copy // copy