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

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

[nongnu] elpa/go-mode 042f08c 169/495: if go-coverage is called in a cov


From: ELPA Syncer
Subject: [nongnu] elpa/go-mode 042f08c 169/495: if go-coverage is called in a coverage buffer, update it by using stored variables
Date: Sat, 7 Aug 2021 09:05:06 -0400 (EDT)

branch: elpa/go-mode
commit 042f08c259e63997e01ec041c5d5b2e0c90a2f11
Author: Dominik Honnef <dominikh@fork-bomb.org>
Commit: Dominik Honnef <dominikh@fork-bomb.org>

    if go-coverage is called in a coverage buffer, update it by using stored 
variables
---
 go-mode.el | 46 ++++++++++++++++++++++++++++++++++------------
 1 file changed, 34 insertions(+), 12 deletions(-)

diff --git a/go-mode.el b/go-mode.el
index 2ca9f79..b5ebc6f 100644
--- a/go-mode.el
+++ b/go-mode.el
@@ -1009,18 +1009,37 @@ description at POINT."
 (defstruct go--covered
   start-line start-column end-line end-column covered count)
 
-(defun go-coverage (input)
+(defun go--coverage-file ()
+  "Return the coverage file to use, either by reading it from the
+current coverage buffer or by prompting for it."
+  (if (boundp 'go--coverage-current-file-name)
+      go--coverage-current-file-name
+    (read-file-name "Coverage file: " nil nil t)))
+
+(defun go--coverage-origin-buffer ()
+  "Return the buffer to base the coverage on."
+  (if (boundp 'go--coverage-origin-buffer)
+      go--coverage-origin-buffer
+    (current-buffer)))
+
+(defun go-coverage (&optional coverage-file)
   "Open a clone of the current buffer and overlay it with
-coverage information gathered via go test -coverprofile=INPUT."
-  (interactive "fCoverage file: ")
-  (let ((ranges '())
-        (file-name (file-name-nondirectory (buffer-file-name)))
-        (gocov-buffer-name (concat (buffer-name) "<gocov>"))
-        (max-count 0)
-        divisor)
+coverage information gathered via go test -coverprofile=COVERAGE-FILE.
 
+If COVERAGE-FILE is nil, it will either be infered from the
+current buffer if it's already a coverage buffer, or be prompted
+for."
+  (interactive)
+  (setq coverage-file (or coverage-file (go--coverage-file)))
+  (let* ((ranges '())
+         (cur-buffer (current-buffer))
+         (origin-buffer (go--coverage-origin-buffer))
+         (file-name (file-name-nondirectory (buffer-file-name origin-buffer)))
+         (gocov-buffer-name (concat (buffer-name origin-buffer) "<gocov>"))
+         (max-count 0)
+         divisor)
     (with-temp-buffer
-      (insert-file-contents input)
+      (insert-file-contents coverage-file)
       (go--goto-line 2) ;; Skip over mode
       (while (not (eobp))
         (let* ((parts (split-string (buffer-substring (point-at-bol) 
(point-at-eol)) ":"))
@@ -1052,7 +1071,10 @@ coverage information gathered via go test 
-coverprofile=INPUT."
 
     (with-current-buffer (or
                           (get-buffer gocov-buffer-name)
-                          (clone-indirect-buffer gocov-buffer-name nil))
+                          (make-indirect-buffer origin-buffer 
gocov-buffer-name t))
+      (set (make-local-variable 'go--coverage-origin-buffer) origin-buffer)
+      (set (make-local-variable 'go--coverage-current-file-name) coverage-file)
+
       (save-excursion
         (remove-overlays)
         (overlay-put
@@ -1082,8 +1104,8 @@ coverage information gathered via go test 
-coverprofile=INPUT."
 
             (overlay-put ov 'face face)
             (overlay-put ov 'help-echo (format "Count: %d" count)))))
-
-      (display-buffer (current-buffer) 'display-buffer-reuse-window))))
+      (if (not (eq cur-buffer (current-buffer)))
+          (display-buffer (current-buffer) 'display-buffer-reuse-window)))))
 
 (provide 'go-mode)
 



reply via email to

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