mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
..
This commit is contained in:
parent
6066f1e382
commit
87462a70d1
3 changed files with 11 additions and 19 deletions
|
|
@ -21,7 +21,6 @@ impl Manager {
|
||||||
|
|
||||||
let root = max_common_root(&old);
|
let root = max_common_root(&old);
|
||||||
let old: Vec<_> = old.into_iter().map(|p| p.strip_prefix(&root).unwrap().to_owned()).collect();
|
let old: Vec<_> = old.into_iter().map(|p| p.strip_prefix(&root).unwrap().to_owned()).collect();
|
||||||
let tab = self.tabs.cursor;
|
|
||||||
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let tmp = PREVIEW.tmpfile("bulk");
|
let tmp = PREVIEW.tmpfile("bulk");
|
||||||
|
|
@ -43,7 +42,7 @@ impl Manager {
|
||||||
AppProxy::stop().await;
|
AppProxy::stop().await;
|
||||||
|
|
||||||
let new: Vec<_> = fs::read_to_string(&tmp).await?.lines().map(PathBuf::from).collect();
|
let new: Vec<_> = fs::read_to_string(&tmp).await?.lines().map(PathBuf::from).collect();
|
||||||
Self::bulk_rename_do(cwd, root, old, new, tab).await
|
Self::bulk_rename_do(cwd, root, old, new).await
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -52,7 +51,6 @@ impl Manager {
|
||||||
root: PathBuf,
|
root: PathBuf,
|
||||||
old: Vec<PathBuf>,
|
old: Vec<PathBuf>,
|
||||||
new: Vec<PathBuf>,
|
new: Vec<PathBuf>,
|
||||||
tab: usize,
|
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
Term::clear(&mut stderr())?;
|
Term::clear(&mut stderr())?;
|
||||||
if old.len() != new.len() {
|
if old.len() != new.len() {
|
||||||
|
|
@ -98,7 +96,7 @@ impl Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !succeeded.is_empty() {
|
if !succeeded.is_empty() {
|
||||||
Pubsub::pub_from_bulk(tab, succeeded.iter().map(|(u, f)| (u, &f.url)).collect());
|
Pubsub::pub_from_bulk(succeeded.iter().map(|(u, f)| (u, &f.url)).collect());
|
||||||
FilesOp::Upserting(cwd, succeeded).emit();
|
FilesOp::Upserting(cwd, succeeded).emit();
|
||||||
}
|
}
|
||||||
drop(permit);
|
drop(permit);
|
||||||
|
|
|
||||||
|
|
@ -8,28 +8,27 @@ use super::Body;
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
pub struct BodyBulk<'a> {
|
pub struct BodyBulk<'a> {
|
||||||
pub tab: usize,
|
|
||||||
pub changes: HashMap<Cow<'a, Url>, Cow<'a, Url>>,
|
pub changes: HashMap<Cow<'a, Url>, Cow<'a, Url>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> BodyBulk<'a> {
|
impl<'a> BodyBulk<'a> {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn borrowed(tab: usize, changes: &HashMap<&'a Url, &'a Url>) -> Body<'a> {
|
pub fn borrowed(changes: &HashMap<&'a Url, &'a Url>) -> Body<'a> {
|
||||||
let iter = changes.iter().map(|(&from, &to)| (Cow::Borrowed(from), Cow::Borrowed(to)));
|
let iter = changes.iter().map(|(&from, &to)| (Cow::Borrowed(from), Cow::Borrowed(to)));
|
||||||
|
|
||||||
Self { tab, changes: iter.collect() }.into()
|
Self { changes: iter.collect() }.into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BodyBulk<'static> {
|
impl BodyBulk<'static> {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn owned(tab: usize, changes: &HashMap<&Url, &Url>) -> Body<'static> {
|
pub fn owned(changes: &HashMap<&Url, &Url>) -> Body<'static> {
|
||||||
let changes = changes
|
let changes = changes
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(&from, &to)| (Cow::Owned(from.clone()), Cow::Owned(to.clone())))
|
.map(|(&from, &to)| (Cow::Owned(from.clone()), Cow::Owned(to.clone())))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
Self { tab, changes }.into()
|
Self { changes }.into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -39,21 +38,16 @@ impl<'a> From<BodyBulk<'a>> for Body<'a> {
|
||||||
|
|
||||||
impl IntoLua<'_> for BodyBulk<'static> {
|
impl IntoLua<'_> for BodyBulk<'static> {
|
||||||
fn into_lua(self, lua: &Lua) -> mlua::Result<Value> {
|
fn into_lua(self, lua: &Lua) -> mlua::Result<Value> {
|
||||||
BodyBulkIter { tab: self.tab, inner: self.changes.into_iter() }.into_lua(lua)
|
BodyBulkIter { inner: self.changes.into_iter() }.into_lua(lua)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Iterator
|
// --- Iterator
|
||||||
pub struct BodyBulkIter {
|
pub struct BodyBulkIter {
|
||||||
pub tab: usize,
|
|
||||||
pub inner: hash_map::IntoIter<Cow<'static, Url>, Cow<'static, Url>>,
|
pub inner: hash_map::IntoIter<Cow<'static, Url>, Cow<'static, Url>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserData for BodyBulkIter {
|
impl UserData for BodyBulkIter {
|
||||||
fn add_fields<'lua, F: mlua::UserDataFields<'lua, Self>>(fields: &mut F) {
|
|
||||||
fields.add_field_method_get("tab", |_, me| Ok(me.tab));
|
|
||||||
}
|
|
||||||
|
|
||||||
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) {
|
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) {
|
||||||
methods.add_meta_method(MetaMethod::Len, |_, me, ()| Ok(me.inner.len()));
|
methods.add_meta_method(MetaMethod::Len, |_, me, ()| Ok(me.inner.len()));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -130,15 +130,15 @@ impl Pubsub {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn pub_from_bulk(tab: usize, changes: HashMap<&Url, &Url>) {
|
pub fn pub_from_bulk(changes: HashMap<&Url, &Url>) {
|
||||||
if LOCAL.read().contains_key("bulk") {
|
if LOCAL.read().contains_key("bulk") {
|
||||||
Self::pub_(BodyBulk::owned(tab, &changes));
|
Self::pub_(BodyBulk::owned(&changes));
|
||||||
}
|
}
|
||||||
if PEERS.read().values().any(|p| p.able("bulk")) {
|
if PEERS.read().values().any(|p| p.able("bulk")) {
|
||||||
Client::push(BodyBulk::borrowed(tab, &changes));
|
Client::push(BodyBulk::borrowed(&changes));
|
||||||
}
|
}
|
||||||
if BOOT.local_events.contains("bulk") {
|
if BOOT.local_events.contains("bulk") {
|
||||||
BodyBulk::borrowed(tab, &changes).with_receiver(*ID).flush();
|
BodyBulk::borrowed(&changes).with_receiver(*ID).flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue