From 1f02cbea8b489ed7676110431aa36ad5abc47d9b Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Wed, 28 Oct 2015 09:55:25 +0100 Subject: [PATCH] Fix bug#21766 and add test * lisp/simple.el (delete-trailing-whitespace): Save match data when calling `skip-syntax-backward'. * test/automated/simple-test.el (simple-delete-trailing-whitespace): New test. --- lisp/simple.el | 3 ++- test/automated/simple-test.el | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/lisp/simple.el b/lisp/simple.el index 338a0600829..f6c580ffcd6 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -609,7 +609,8 @@ buffer if the variable `delete-trailing-lines' is non-nil." (start (or start (point-min)))) (goto-char start) (while (re-search-forward "\\s-$" end-marker t) - (skip-syntax-backward "-" (line-beginning-position)) + (save-match-data + (skip-syntax-backward "-" (line-beginning-position))) ;; Don't delete formfeeds, even if they are considered whitespace. (if (looking-at-p ".*\f") (goto-char (match-end 0))) diff --git a/test/automated/simple-test.el b/test/automated/simple-test.el index 8da575d5d97..5bfb74615a4 100644 --- a/test/automated/simple-test.el +++ b/test/automated/simple-test.el @@ -180,5 +180,27 @@ (should (= x 2))) (remove-hook 'post-self-insert-hook inc)))) + +;;; `delete-trailing-whitespace' +(ert-deftest simple-delete-trailing-whitespace () + "Test bug#21766: delete-whitespace sometimes deletes non-whitespace." + (defvar python-indent-guess-indent-offset) ; to avoid a warning + (let ((python (featurep 'python)) + (python-indent-guess-indent-offset nil) + (delete-trailing-lines t)) + (unwind-protect + (with-temp-buffer + (python-mode) + (insert (concat "query = \"\"\"WITH filtered AS \n" + "WHERE \n" + "\"\"\".format(fv_)\n" + "\n" + "\n")) + (delete-trailing-whitespace) + (should (equal (count-lines (point-min) (point-max)) 3))) + ;; Let's clean up if running interactive + (unless (or noninteractive python) + (unload-feature 'python))))) + (provide 'simple-test) ;;; simple-test.el ends here -- 2.39.2