@@ -915,15 +915,7 @@ mod cmd {
915 fn quit(editor: &mut Editor, args: &[&str], event: PromptEvent) {
915 fn quit(editor: &mut Editor, args: &[&str], event: PromptEvent) {
916 // last view and we have unsaved changes
916 // last view and we have unsaved changes
917 if editor.tree.views().count() == 1 {
917 if editor.tree.views().count() == 1 {
918− let modified = _modified_left(editor);
918+ if _buffers_remaining(editor) {
920− if !modified.is_empty() {
922− "{} unsaved buffer(s) remaining: {:?}",
926− editor.set_error(err);
@@ -1025,8 +1017,10 @@ mod cmd {
1025 force_quit(editor, &[], event);
1017 force_quit(editor, &[], event);
1020+ /// Returns `true` if there are modified buffers remaining and sets editor error,
1021+ /// otherwise returns `false`
1028− fn _modified_left(editor: &mut Editor) -> Vec<&str> {
1022+ fn _buffers_remaining(editor: &mut Editor) -> bool {
1029− editor
1023+ let modified: Vec<_> = editor
1030 .documents()
1024 .documents()
1031 .filter(|doc| doc.is_modified())
1025 .filter(|doc| doc.is_modified())
1032 .map(|doc| {
1026 .map(|doc| {
@@ -1034,7 +1028,18 @@ mod cmd {
1034 .and_then(|path| path.to_str())
1028 .and_then(|path| path.to_str())
1035 .unwrap_or("[scratch]")
1029 .unwrap_or("[scratch]")
1037− .collect()
1031+ .collect();
1032+ if !modified.is_empty() {
1034+ "{} unsaved buffer(s) remaining: {:?}",
1038+ editor.set_error(err);
1040 fn _write_all(editor: &mut Editor, args: &[&str], event: PromptEvent, quit: bool, force: bool) {
1045 fn _write_all(editor: &mut Editor, args: &[&str], event: PromptEvent, quit: bool, force: bool) {
@@ -1052,16 +1057,7 @@ mod cmd {
1053 if quit {
1058 if quit {
1054 if !force {
1059 if !force {
1055− // check if there are some unsaved buffers
1060+ if _buffers_remaining(editor) {
1056− let modified = _modified_left(editor);
1058− if !modified.is_empty() {
1060− "{} unsaved buffer(s) remaining: {:?}",
1064− editor.set_error(err);
@@ -1088,15 +1084,7 @@ mod cmd {
1089 fn _quit_all(editor: &mut Editor, args: &[&str], event: PromptEvent, force: bool) {
1085 fn _quit_all(editor: &mut Editor, args: &[&str], event: PromptEvent, force: bool) {
1090 if !force {
1086 if !force {
1091− // check if there are some unsaved buffers
1087+ if _buffers_remaining(editor) {
1092− let modified = _modified_left(editor);
1093− if !modified.is_empty() {
1095− "{} unsaved buffer(s) remaining: {:?}",
1099− editor.set_error(err);