From 63c6989d70ed1f94fc6a2a074fe703730e0a00a8 Mon Sep 17 00:00:00 2001 From: Manuel Klimek Date: Tue, 25 Oct 2016 11:31:22 +0000 Subject: [PATCH] include-fixer: Don't overwrite buffer changes Raise a signal if the buffer has been modified before replacing it, to avoid overwriting users' changes. Patch by Philipp Stephani. llvm-svn: 285060 --- clang-tools-extra/include-fixer/tool/clang-include-fixer.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/include-fixer/tool/clang-include-fixer.el b/clang-tools-extra/include-fixer/tool/clang-include-fixer.el index ab7a59c..194f4b1 100644 --- a/clang-tools-extra/include-fixer/tool/clang-include-fixer.el +++ b/clang-tools-extra/include-fixer/tool/clang-include-fixer.el @@ -244,7 +244,13 @@ clang-include-fixer to insert the selected header." (clang-include-fixer--select-header context) ;; Call clang-include-fixer again to insert the selected header. (clang-include-fixer--start - #'clang-include-fixer--replace-buffer + (let ((old-tick (buffer-chars-modified-tick))) + (lambda (stdout) + (when (/= old-tick (buffer-chars-modified-tick)) + ;; Replacing the buffer now would undo the user’s changes. + (user-error (concat "The buffer has been changed " + "before the header could be inserted"))) + (clang-include-fixer--replace-buffer stdout))) (format "-insert-header=%s" (clang-include-fixer--encode-json context))))))) nil) -- 2.7.4