diff --git a/src/lib.rs b/src/lib.rs
index 0a222428fe1..942fdb06994 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -280,8 +280,11 @@ fn format_ast(krate: &ast::Crate,
               config: &Config)
               -> FileMap {
     let mut file_map = FileMap::new();
+    // We always skip children for the "Plain" write mode, since there is
+    // nothing to distinguish the nested module contents.
+    let skip_children = config.skip_children || config.write_mode == config::WriteMode::Plain;
     for (path, module) in modules::list_files(krate, parse_session.codemap()) {
-        if config.skip_children && path.as_path() != main_file {
+        if skip_children && path.as_path() != main_file {
             continue;
         }
         let path = path.to_str().unwrap();