emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/rust-mode a364b24 445/486: Make *rustfmt* buffer readonly.


From: ELPA Syncer
Subject: [nongnu] elpa/rust-mode a364b24 445/486: Make *rustfmt* buffer readonly.
Date: Sat, 7 Aug 2021 09:26:11 -0400 (EDT)

branch: elpa/rust-mode
commit a364b24af412659cc1074f533752356d1858b893
Author: Nathan Moreau <nathan.moreau@m4x.org>
Commit: Nathan Moreau <nathan.moreau@m4x.org>

    Make *rustfmt* buffer readonly.
---
 rust-mode.el | 77 +++++++++++++++++++++++++++++++-----------------------------
 1 file changed, 40 insertions(+), 37 deletions(-)

diff --git a/rust-mode.el b/rust-mode.el
index 9d17cc0..631e51c 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -1445,48 +1445,51 @@ This is written mainly to be used as 
`end-of-defun-function' for Rust."
 (defun rust--format-call (buf)
   "Format BUF using rustfmt."
   (with-current-buffer (get-buffer-create rust-rustfmt-buffername)
-    (erase-buffer)
-    (insert-buffer-substring buf)
-    (let* ((tmpf (make-temp-file "rustfmt"))
-           (ret (apply 'call-process-region
-                       (point-min)
-                       (point-max)
-                       rust-rustfmt-bin
-                       t
-                       `(t ,tmpf)
-                       nil
-                       rust-rustfmt-switches)))
-      (unwind-protect
-          (cond
-           ((zerop ret)
-            (if (not (string= (buffer-string)
-                              (with-current-buffer buf (buffer-string))))
-                (copy-to-buffer buf (point-min) (point-max)))
-            (kill-buffer))
-           ((= ret 3)
-            (if (not (string= (buffer-string)
-                              (with-current-buffer buf (buffer-string))))
-                (copy-to-buffer buf (point-min) (point-max)))
-            (erase-buffer)
-            (insert-file-contents tmpf)
-            (rust--format-fix-rustfmt-buffer (buffer-name buf))
-            (error "Rustfmt could not format some lines, see *rustfmt* buffer 
for details"))
-           (t
-            (erase-buffer)
-            (insert-file-contents tmpf)
-            (rust--format-fix-rustfmt-buffer (buffer-name buf))
-            (error "Rustfmt failed, see *rustfmt* buffer for details"))))
-      (delete-file tmpf))))
+    (view-mode +1)
+    (let ((inhibit-read-only t))
+      (erase-buffer)
+      (insert-buffer-substring buf)
+      (let* ((tmpf (make-temp-file "rustfmt"))
+             (ret (apply 'call-process-region
+                         (point-min)
+                         (point-max)
+                         rust-rustfmt-bin
+                         t
+                         `(t ,tmpf)
+                         nil
+                         rust-rustfmt-switches)))
+        (unwind-protect
+            (cond
+             ((zerop ret)
+              (if (not (string= (buffer-string)
+                                (with-current-buffer buf (buffer-string))))
+                  (copy-to-buffer buf (point-min) (point-max)))
+              (kill-buffer))
+             ((= ret 3)
+              (if (not (string= (buffer-string)
+                                (with-current-buffer buf (buffer-string))))
+                  (copy-to-buffer buf (point-min) (point-max)))
+              (erase-buffer)
+              (insert-file-contents tmpf)
+              (rust--format-fix-rustfmt-buffer (buffer-name buf))
+              (error "Rustfmt could not format some lines, see *rustfmt* 
buffer for details"))
+             (t
+              (erase-buffer)
+              (insert-file-contents tmpf)
+              (rust--format-fix-rustfmt-buffer (buffer-name buf))
+              (error "Rustfmt failed, see *rustfmt* buffer for details"))))
+        (delete-file tmpf)))))
 
 ;; Since we run rustfmt through stdin we get <stdin> markers in the
 ;; output. This replaces them with the buffer name instead.
 (defun rust--format-fix-rustfmt-buffer (buffer-name)
   (with-current-buffer (get-buffer rust-rustfmt-buffername)
-    (goto-char (point-min))
-    (while (re-search-forward "--> <stdin>:" nil t)
-      (replace-match (format "--> %s:" buffer-name)))
-    (while (re-search-forward "--> stdin:" nil t)
-      (replace-match (format "--> %s:" buffer-name)))))
+    (let ((inhibit-read-only t))
+      (goto-char (point-min))
+      (while (re-search-forward "--> <stdin>:" nil t)
+        (replace-match (format "--> %s:" buffer-name)))
+      (while (re-search-forward "--> stdin:" nil t)
+        (replace-match (format "--> %s:" buffer-name))))))
 
 ;; If rust-mode has been configured to navigate to source of the error
 ;; or display it, do so -- and return true. Otherwise return nil to



reply via email to

[Prev in Thread] Current Thread [Next in Thread]