]> Cypherpunks repositories - gostls13.git/commitdiff
Teach emacs M-x gofmt to save region/restrictions
authorKevin Ballard <kevin@sb.org>
Fri, 13 Nov 2009 02:40:42 +0000 (18:40 -0800)
committerAdam Langley <agl@golang.org>
Fri, 13 Nov 2009 02:40:42 +0000 (18:40 -0800)
R=agl, agl1
https://golang.org/cl/152078

misc/emacs/go-mode.el

index 47d790db41745fbd1f4e27733f4f933e3b2f12d2..42336a0fe7d958b564ccec0dbe5ad462fa561efc 100644 (file)
@@ -475,4 +475,15 @@ Useful for development work."
   "Pipe the current buffer through the external tool `gofmt`."
   
   (interactive)
-  (shell-command-on-region 1 (+ (buffer-size) 1) "gofmt" t t shell-command-default-error-buffer))
+  ;; for some reason save-excursion isn't working
+  ;; probably because shell-command-on-region deletes the contents of the
+  ;; region before filling in the new values
+  ;; so we will save the point/mark by hand
+  ;; similarly we can't use push-mark/pop-mark
+  (let ((old-mark (mark t)) (old-point (point)))
+    (save-restriction
+      (let (deactivate-mark)
+        (widen)
+        (shell-command-on-region (point-min) (point-max) "gofmt" t t shell-command-default-error-buffer)))
+    (goto-char (min old-point (point-max)))
+    (if old-mark (set-mark (min old-mark (point-max))))))