Commit 4d203ff38e2b

Vincent Demeester <vincent@sbr.pm>
2019-12-23 19:36:54
go: update go-mode to use lsp-mode 🔥
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent c4723a2
lisp/setup-company.el
@@ -42,11 +42,16 @@
   (add-to-list 'company-backends 'company-emoji))
 
 (use-package lsp-mode
-  :config (require 'lsp-clients)
-  ;; (with-eval-after-load "flycheck"
-  ;;   (require 'lsp-flycheck)
-  ;;   (add-to-list 'flycheck-checkers 'lsp))
-  )
+  :ensure t
+  :commands (lsp lsp-deferred)
+  :hook (go-mode . lsp-deferred))
+
+;;Set up before-save hooks to format buffer and add/delete imports.
+;;Make sure you don't have other gofmt/goimports hooks enabled.
+(defun lsp-go-install-save-hooks ()
+  (add-hook 'before-save-hook #'lsp-format-buffer t t)
+  (add-hook 'before-save-hook #'lsp-organize-imports t t))
+(add-hook 'go-mode-hook #'lsp-go-install-save-hooks)
 
 (with-eval-after-load "company"
   (use-package company-lsp
@@ -69,7 +74,7 @@
   :config
   (define-key lsp-ui-mode-map [remap xref-find-definitions] #'lsp-ui-peek-find-definitions)
   (define-key lsp-ui-mode-map [remap xref-find-references] #'lsp-ui-peek-find-references)
-  (setq lsp-ui-sideline-enable nil
+  (setq lsp-ui-sideline-enable t
         lsp-ui-doc-enable nil
         lsp-ui-flycheck-enable t
         lsp-ui-imenu-enable t
lisp/setup-editing.el
@@ -85,12 +85,12 @@
   :bind (:map yas-keymap
               ("C-i" . yas-next-field-or-maybe-expand))
   :mode ("/\\.emacs\\.d/etc/yasnippet/snippets/" . snippet-mode)
+  :hook (go-mode . yas-minor-mode)
   :config
-  (yas-load-directory (emacs-path "etc/yasnippet/snippets"))
+  (yas-load-directory (concat user-emacs-directory "etc/yasnippet/snippets"))
   (yas-global-mode 1)
   :init
-  (add-hook 'term-mode-hook (lambda ()
-                              (yas-minor-mode -1))))
+  (add-hook 'term-mode-hook (lambda () (yas-minor-mode -1))))
 
 (use-package hs-minor-mode
   :hook ((prog-mode . hs-minor-mode)))
lisp/setup-go.el
@@ -6,24 +6,6 @@
 (use-package go-mode
   :mode "\\.go$"
   :interpreter "go"
-  :bind (:map go-mode-map
-	      ("C-," . 'hydra-go/body))
-  :init
-  (defhydra hydra-go (:hint nil :color teal)
-    "
-         ^Command^      ^Imports^       ^Doc^
-         ^-------^      ^-------^       ^---^
-      _r_: run      _ig_: goto       _d_: doc at point
-    [_g_]: guru     _ia_: add
-    ^  ^            _ir_: remove
-    "
-    ("g" 'hydra-go-guru/body :color blue)
-    ("r" go-run-main)
-    ("d" godoc-at-point)
-    ("ig" go-goto-imports )
-    ("ia" go-import-add)
-    ("ir" go-remove-unused-imports)
-    ("q" nil "quit" :color blue))
   :config
   (use-package company-go
     :config