branch: elpa/rust-mode
commit e452995b8ccd388f4be13a11443cffe3cdcd0619
Author: Wilfred Hughes <[email protected]>
Commit: Wilfred Hughes <[email protected]>
rust--after-revert-hook should preserve point position.
Otherwise, rust-format-buffer always moves point to the end of the
buffer.
---
rust-mode-tests.el | 12 ++++++++++++
rust-mode.el | 7 ++++---
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index 1e60768..3c3ba03 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -2561,6 +2561,18 @@ Fontification needs to include this whole string or none
of it.
)
)
+(ert-deftest rust-test-revert-hook-preserves-point ()
+ (with-temp-buffer
+ ;; Insert some code, and put point in the middle.
+ (insert "fn foo() {}\n")
+ (insert "fn bar() {}\n")
+ (insert "fn baz() {}\n")
+ (goto-char (point-min))
+ (forward-line 1)
+ (let ((initial-point (point)))
+ (rust--after-revert-hook)
+ (should (equal initial-point (point))))))
+
;; If electric-pair-mode is available, load it and run the tests that use it.
If not,
;; no error--the tests will be skipped.
(require 'elec-pair nil t)
diff --git a/rust-mode.el b/rust-mode.el
index 6259b48..1fbc3e8 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -1365,9 +1365,10 @@ This is written mainly to be used as
`end-of-defun-function' for Rust."
;; to use `font-lock-ensure', which doesn't exist in Emacs 24 and earlier.
;; If it's not available, fall back to calling `font-lock-fontify-region'
;; on the whole buffer.
- (if (fboundp 'font-lock-ensure)
- (font-lock-ensure)
- (font-lock-fontify-region (point-min) (point-max))))
+ (save-excursion
+ (if (fboundp 'font-lock-ensure)
+ (font-lock-ensure)
+ (font-lock-fontify-region (point-min) (point-max)))))
(defun rust--before-save-hook ()
(when rust-format-on-save (rust-format-buffer)))