From 05135ef875497b9699c393f9ab7ac99c4c523827 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Wed, 5 Feb 2020 17:55:38 +0000 Subject: 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` --- emacs/.emacs.d/wpc/wpc-golang.el | 23 +++++++++++++++++++++++ emacs/default.nix | 1 + 2 files changed, 24 insertions(+) (limited to 'emacs') diff --git a/emacs/.emacs.d/wpc/wpc-golang.el b/emacs/.emacs.d/wpc/wpc-golang.el index 41d6cb50ec84..94dd55be1004 100644 --- a/emacs/.emacs.d/wpc/wpc-golang.el +++ b/emacs/.emacs.d/wpc/wpc-golang.el @@ -6,10 +6,22 @@ ;;; 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 18d9f2cc61f3..24496bccc1e5 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 -- cgit 1.4.1