cmd/guru: add menu to Emacs

Change-Id: Ife18d22f8f9b81a0e898a2b5da202feb1df23852
Reviewed-on: https://go-review.googlesource.com/24832
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/cmd/guru/go-guru.el b/cmd/guru/go-guru.el
index fc289cc..88caf67 100644
--- a/cmd/guru/go-guru.el
+++ b/cmd/guru/go-guru.el
@@ -22,6 +22,7 @@
 ;;; Code:
 
 (require 'compile)
+(require 'easymenu)
 (require 'go-mode)
 (require 'json)
 (require 'simple)
@@ -94,6 +95,25 @@
 
 (define-key go-mode-map (kbd "C-c C-o") #'go-guru-map)
 
+(easy-menu-define go-guru-mode-menu go-mode-map
+  "Menu for Go Guru."
+  '("Guru"
+    ["Jump to Definition"    go-guru-definition t]
+    ["Show Referrers"        go-guru-referrers t]
+    ["Show Free Names"       go-guru-freevars t]
+    ["Describe Expression"   go-guru-describe t]
+    ["Show Implements"       go-guru-implements t]
+    "---"
+    ["Show Callers"          go-guru-callers t]
+    ["Show Callees"          go-guru-callees t]
+    ["Show Callstack"        go-guru-callstack t]
+    "---"
+    ["Show Points-To"        go-guru-pointsto t]
+    ["Show Which Errors"     go-guru-whicherrs t]
+    ["Show Channel Peers"    go-guru-peers t]
+    "---"
+    ["Set pointer analysis scope..." go-guru-set-scope t]))
+
 ;;;###autoload
 (defun go-guru-set-scope ()
   "Set the scope for the Go guru, prompting the user to edit the previous scope.