@@ -915,15 +915,7 @@ mod cmd {
915915 fn quit(editor: &mut Editor, args: &[&str], event: PromptEvent) {
916916 // last view and we have unsaved changes
917917 if editor.tree.views().count() == 1 {
918− let modified = _modified_left(editor);
919−
920− if !modified.is_empty() {
921− let err = format!(
922− "{} unsaved buffer(s) remaining: {:?}",
923− modified.len(),
924− modified
925− );
926− editor.set_error(err);
918+ if _buffers_remaining(editor) {
927919 return;
928920 }
929921 }
@@ -1025,8 +1017,10 @@ mod cmd {
10251017 force_quit(editor, &[], event);
10261018 }
10271019
1028− fn _modified_left(editor: &mut Editor) -> Vec<&str> {
1029− editor
1020+ /// Returns `true` if there are modified buffers remaining and sets editor error,
1021+ /// otherwise returns `false`
1022+ fn _buffers_remaining(editor: &mut Editor) -> bool {
1023+ let modified: Vec<_> = editor
10301024 .documents()
10311025 .filter(|doc| doc.is_modified())
10321026 .map(|doc| {
@@ -1034,7 +1028,18 @@ mod cmd {
10341028 .and_then(|path| path.to_str())
10351029 .unwrap_or("[scratch]")
10361030 })
1037− .collect()
1031+ .collect();
1032+ if !modified.is_empty() {
1033+ let err = format!(
1034+ "{} unsaved buffer(s) remaining: {:?}",
1035+ modified.len(),
1036+ modified
1037+ );
1038+ editor.set_error(err);
1039+ true
1040+ } else {
1041+ false
1042+ }
10381043 }
10391044
10401045 fn _write_all(editor: &mut Editor, args: &[&str], event: PromptEvent, quit: bool, force: bool) {
@@ -1052,16 +1057,7 @@ mod cmd {
10521057
10531058 if quit {
10541059 if !force {
1055− // check if there are some unsaved buffers
1056− let modified = _modified_left(editor);
1057−
1058− if !modified.is_empty() {
1059− let err = format!(
1060− "{} unsaved buffer(s) remaining: {:?}",
1061− modified.len(),
1062− modified
1063− );
1064− editor.set_error(err);
1060+ if _buffers_remaining(editor) {
10651061 return;
10661062 }
10671063 }
@@ -1088,15 +1084,7 @@ mod cmd {
10881084
10891085 fn _quit_all(editor: &mut Editor, args: &[&str], event: PromptEvent, force: bool) {
10901086 if !force {
1091− // check if there are some unsaved buffers
1092− let modified = _modified_left(editor);
1093− if !modified.is_empty() {
1094− let err = format!(
1095− "{} unsaved buffer(s) remaining: {:?}",
1096− modified.len(),
1097− modified
1098− );
1099− editor.set_error(err);
1087+ if _buffers_remaining(editor) {
11001088 return;
11011089 }
11021090 }