Don't prompt to save unchanged files
This commit is contained in:
parent
ece4875973
commit
3573896fe0
3 changed files with 13 additions and 8 deletions
|
@ -430,5 +430,9 @@ mod test {
|
||||||
cx.workspace(|workspace, cx| assert_eq!(workspace.items(cx).count(), 2));
|
cx.workspace(|workspace, cx| assert_eq!(workspace.items(cx).count(), 2));
|
||||||
cx.simulate_keystrokes([":", "q", "enter"]);
|
cx.simulate_keystrokes([":", "q", "enter"]);
|
||||||
cx.workspace(|workspace, cx| assert_eq!(workspace.items(cx).count(), 1));
|
cx.workspace(|workspace, cx| assert_eq!(workspace.items(cx).count(), 1));
|
||||||
|
cx.simulate_keystrokes([":", "n", "e", "w", "enter"]);
|
||||||
|
cx.workspace(|workspace, cx| assert_eq!(workspace.items(cx).count(), 2));
|
||||||
|
cx.simulate_keystrokes([":", "q", "a", "enter"]);
|
||||||
|
cx.workspace(|workspace, cx| assert_eq!(workspace.items(cx).count(), 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -893,9 +893,13 @@ impl Pane {
|
||||||
) -> Task<Result<()>> {
|
) -> Task<Result<()>> {
|
||||||
// Find the items to close.
|
// Find the items to close.
|
||||||
let mut items_to_close = Vec::new();
|
let mut items_to_close = Vec::new();
|
||||||
|
let mut dirty_items = Vec::new();
|
||||||
for item in &self.items {
|
for item in &self.items {
|
||||||
if should_close(item.id()) {
|
if should_close(item.id()) {
|
||||||
items_to_close.push(item.boxed_clone());
|
items_to_close.push(item.boxed_clone());
|
||||||
|
if item.is_dirty(cx) {
|
||||||
|
dirty_items.push(item.boxed_clone());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -907,13 +911,10 @@ impl Pane {
|
||||||
|
|
||||||
let workspace = self.workspace.clone();
|
let workspace = self.workspace.clone();
|
||||||
cx.spawn(|pane, mut cx| async move {
|
cx.spawn(|pane, mut cx| async move {
|
||||||
if save_intent == SaveIntent::Close && items_to_close.len() > 1 {
|
if save_intent == SaveIntent::Close && dirty_items.len() > 1 {
|
||||||
let mut answer = pane.update(&mut cx, |_, cx| {
|
let mut answer = pane.update(&mut cx, |_, cx| {
|
||||||
let prompt = Self::file_names_for_prompt(
|
let prompt =
|
||||||
&mut items_to_close.iter(),
|
Self::file_names_for_prompt(&mut dirty_items.iter(), dirty_items.len(), cx);
|
||||||
items_to_close.len(),
|
|
||||||
cx,
|
|
||||||
);
|
|
||||||
cx.prompt(
|
cx.prompt(
|
||||||
PromptLevel::Warning,
|
PromptLevel::Warning,
|
||||||
&prompt,
|
&prompt,
|
||||||
|
@ -921,7 +922,7 @@ impl Pane {
|
||||||
)
|
)
|
||||||
})?;
|
})?;
|
||||||
match answer.next().await {
|
match answer.next().await {
|
||||||
Some(0) => save_intent = SaveIntent::Save,
|
Some(0) => save_intent = SaveIntent::SaveAll,
|
||||||
Some(1) => save_intent = SaveIntent::Skip,
|
Some(1) => save_intent = SaveIntent::Skip,
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1419,7 +1419,7 @@ impl Workspace {
|
||||||
)
|
)
|
||||||
})?;
|
})?;
|
||||||
match answer.next().await {
|
match answer.next().await {
|
||||||
Some(0) => save_intent = SaveIntent::Save,
|
Some(0) => save_intent = SaveIntent::SaveAll,
|
||||||
Some(1) => save_intent = SaveIntent::Skip,
|
Some(1) => save_intent = SaveIntent::Skip,
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue