branch: elpa/go-mode
commit f18b4eb04ebbcf29f14a18b5fe7dd5c308b19608
Author: Alan Donovan <[email protected]>
Commit: Dominik Honnef <[email protected]>
cmd/guru: support streaming plain and -json output
Visible changes:
- "referrers" queries now emit a stream of results,
so they start appearing quickly even in large queries.
We no longer report the total number of matches.
- packageReferrers now also uses AfterTypeCheck hook and streaming.
- XML support has been dropped.
- The -format flag has been replaced by -json.
JSON protocol changes:
- The enclosing Result struct has been removed.
- Likewise the 'mode' field (since the caller knows it already)
- "freevars" and "referrers" now emit a stream of objects
In the case of referrers, the first object has a different from the rest.
- The "referrers" results include the text of the matching line
(parity with -json=false)
Implementation details:
- the concurrency-safe q.Output function can be called
many times, each with a queryResult to print.
- fset is no longer saved in Query (cleaner)
- queryResult methods renamed PrintPlain, JSON
Change-Id: I41a4e3f57f266fcf043ece4045bca82c6f6a356f
Reviewed-on: https://go-review.googlesource.com/21397
Reviewed-by: Michael Matloob <[email protected]>
---
guru_import/cmd/guru/go-guru.el | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/guru_import/cmd/guru/go-guru.el b/guru_import/cmd/guru/go-guru.el
index a097d2d..b79fe82 100644
--- a/guru_import/cmd/guru/go-guru.el
+++ b/guru_import/cmd/guru/go-guru.el
@@ -301,11 +301,9 @@ function containing the current point."
(defun go-guru-definition ()
"Jump to the definition of the selected identifier."
(interactive)
- ;; TODO(adonovan): use -format=sexpr when available to avoid a
- ;; dependency and to simplify parsing.
- (let* ((res (with-current-buffer (go-guru--exec "definition" nil
'("-format=json"))
+ (let* ((res (with-current-buffer (go-guru--exec "definition" nil '("-json"))
(goto-char (point-min))
- (cdr (car (json-read)))))
+ (json-read)))
(desc (cdr (assoc 'desc res))))
(push-mark)
(ring-insert find-tag-marker-ring (point-marker))
@@ -360,11 +358,10 @@ expression (of type 'error') may refer."
(defun go-guru-what ()
"Run a 'what' query and return the parsed JSON response as an
-associative list."
- (let ((res (with-current-buffer (go-guru--exec "what" nil '("-format=json")
t)
- (goto-char (point-min))
- (cdr (car (json-read))))))
- res))
+association list."
+ (with-current-buffer (go-guru--exec "what" nil '("-json") t)
+ (goto-char (point-min))
+ (json-read)))
(defun go-guru--hl-symbols (posn face id)
"Highlight the symbols at the positions POSN by creating