diff --git a/src/plugins/coreplugin/externaltool.cpp b/src/plugins/coreplugin/externaltool.cpp
index a5638788c10420f542edae3614f816d57d8e0a8a..4ea68bc67afd331790c6da1be2cfb67566eb23e4 100644
--- a/src/plugins/coreplugin/externaltool.cpp
+++ b/src/plugins/coreplugin/externaltool.cpp
@@ -337,9 +337,14 @@ void ExternalToolRunner::run()
     }
     if (m_tool->outputHandling() == ExternalTool::ReloadDocument
                || m_tool->errorHandling() == ExternalTool::ReloadDocument) {
-        // TODO ask modified file to save
         if (IEditor *editor = EditorManager::instance()->currentEditor()) {
             m_expectedFileName = editor->file()->fileName();
+            bool cancelled = false;
+            FileManager::instance()->saveModifiedFiles(QList<IFile *>() << editor->file(), &cancelled);
+            if (cancelled) {
+                deleteLater();
+                return;
+            }
             FileManager::instance()->expectFileChange(m_expectedFileName);
         }
     }