about summary refs log tree commit diff
path: root/emacs
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-02-05T17·55+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-02-05T17·58+0000
commit05135ef875497b9699c393f9ab7ac99c4c523827 (patch)
treec8a8372419bd9661527a87b5905a3bfe4a52c086 /emacs
parent7c2933f3c3812215b6587bdda8c01268c6450d16 (diff)
Further configure Go tooling
- Prefer goimports to gofmt. goimports calls gofmt; it also adds and removes
  dependencies.
- Assert the presence of goimports, godoc, godef
- KBD godef to M-.
- Support the M-x compile command for calling `go build -v`
Diffstat (limited to 'emacs')
-rw-r--r--emacs/.emacs.d/wpc/wpc-golang.el23
-rw-r--r--emacs/default.nix1
2 files changed, 24 insertions, 0 deletions
diff --git a/emacs/.emacs.d/wpc/wpc-golang.el b/emacs/.emacs.d/wpc/wpc-golang.el
index 41d6cb50ec..94dd55be10 100644
--- a/emacs/.emacs.d/wpc/wpc-golang.el
+++ b/emacs/.emacs.d/wpc/wpc-golang.el
@@ -7,9 +7,21 @@
 ;;; Code:
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+
+(prelude/assert (prelude/executable-exists? "goimports"))
+(prelude/assert (prelude/executable-exists? "godoc"))
+(prelude/assert (prelude/executable-exists? "godef"))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Configuration
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
+;; TODO: Support jumping to go source code for fmt.Println, etc.
+
 ;; I'm unsure if this belongs in wpc-golang.el because it's a generic setting,
 ;; but because go is the first languages I've encountered that enforces tab
 ;; usage (I think) I'm configuring it.
@@ -17,6 +29,17 @@
 
 (use-package go-mode
   :config
+  (setq gofmt-command "goimports")
+  ;; TODO: Consider configuring `xref-find-definitions' to use `godef-jump'
+  ;; instead of shadowing the KBD here.
+  (general-define-key
+   :states '(normal)
+   :keymaps '(go-mode-map)
+   "M-." #'godef-jump)
+  ;; Support calling M-x `compile'.
+  (add-hook 'go-mode-hook (lambda ()
+                            (set (make-local-variable 'compile-command)
+                                 "go build -v")))
   (add-hook-before-save 'go-mode-hook #'gofmt-before-save))
 
 (provide 'wpc-golang)
diff --git a/emacs/default.nix b/emacs/default.nix
index 18d9f2cc61..24496bccc1 100644
--- a/emacs/default.nix
+++ b/emacs/default.nix
@@ -56,6 +56,7 @@ let
       py-yapf
       reason-mode
       elixir-mode
+      go-mode
       company
       markdown-mode
       refine