branch: elpa/rust-mode
commit ee262ccdee16e0e78c7e16f81630c154d0b8f39b
Merge: 256db76 9154e0e
Author: Felix S Klock II <[email protected]>
Commit: GitHub <[email protected]>
Merge pull request #266 from brotzeit/format-on-save
throw error in after-save-hook instead of before-save-hook
---
rust-mode.el | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/rust-mode.el b/rust-mode.el
index 8385a7e..c2102c9 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -1555,7 +1555,8 @@ This is written mainly to be used as
`end-of-defun-function' for Rust."
(setq-local parse-sexp-lookup-properties t)
(setq-local electric-pair-inhibit-predicate
'rust-electric-pair-inhibit-predicate-wrap)
- (add-hook 'before-save-hook 'rust--before-save-hook nil t)
+ (add-hook 'before-save-hook 'rust-before-save-hook nil t)
+ (add-hook 'after-save-hook 'rust-after-save-hook nil t)
(setq-local rust-buffer-project nil)
@@ -1571,9 +1572,17 @@ This is written mainly to be used as
`end-of-defun-function' for Rust."
(require 'rust-mode)
(rust-mode))
-(defun rust--before-save-hook ()
- (when rust-format-on-save (rust-format-buffer)))
-
+(defun rust-before-save-hook ()
+ (when rust-format-on-save
+ (condition-case nil
+ (rust-format-buffer)
+ (error nil))))
+
+(defun rust-after-save-hook ()
+ (when rust-format-on-save
+ (unless (executable-find rust-rustfmt-bin)
+ (error "Could not locate executable \"%s\"" rust-rustfmt-bin))))
+
(defvar rustc-compilation-regexps
(let ((file "\\([^\n]+\\)")
(start-line "\\([0-9]+\\)")