From d71fe94d51840a3a43b51b983d903fc1a14d7193 Mon Sep 17 00:00:00 2001 From: "Sunrin SHIMURA (keen)" <3han5chou7@gmail.com> Date: Tue, 6 Jun 2017 17:35:30 +0900 Subject: restore points when an error occurs too --- rust-mode.el | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/rust-mode.el b/rust-mode.el index 1a9d77d..cdf4edb 100644 --- a/rust-mode.el +++ b/rust-mode.el @@ -1326,19 +1326,20 @@ This is written mainly to be used as `end-of-defun-function' for Rust." (rust--format-get-loc buffer start) (rust--format-get-loc buffer point)) window-loc))))) - (rust--format-call (current-buffer)) - (dolist (loc buffer-loc) - (let* ((buffer (pop loc)) - (pos (rust--format-get-pos buffer (pop loc)))) - (with-current-buffer buffer - (goto-char pos)))) - (dolist (loc window-loc) - (let* ((window (pop loc)) - (buffer (window-buffer window)) - (start (rust--format-get-pos buffer (pop loc))) - (pos (rust--format-get-pos buffer (pop loc)))) - (set-window-start window start) - (set-window-point window pos)))) + (unwind-protect + (rust--format-call (current-buffer)) + (dolist (loc buffer-loc) + (let* ((buffer (pop loc)) + (pos (rust--format-get-pos buffer (pop loc)))) + (with-current-buffer buffer + (goto-char pos)))) + (dolist (loc window-loc) + (let* ((window (pop loc)) + (buffer (window-buffer window)) + (start (rust--format-get-pos buffer (pop loc))) + (pos (rust--format-get-pos buffer (pop loc)))) + (set-window-start window start) + (set-window-point window pos))))) (message "Formatted buffer with rustfmt.")) -- cgit v1.2.3