Files
dot-emacs/lisp/init-go.el

49 lines
1.3 KiB
EmacsLisp

;; *** Go Lang
(use-package go-mode
:mode "\\.go\\'"
:mode "\\.mod\\'"
:config
(setq gofmt-args '("-s"))
(setq tab-width 4)
;; by default this runs godef-jump, but I like consult-imenu much more
(unbind-key "C-c C-j" go-mode-map)
:init
;; disabled, I'm now trying lsp-mode, see below:
;; (add-hook 'before-save-hook 'gofmt-before-save)
;; :hook (go-mode lsp-deferred)
(when (fboundp 'lsp-deferred)
(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-deferred)
(add-hook 'go-mode-hook #'lsp-go-install-save-hooks))
:bind (:map go-mode-map
("C-c j" . #'lsp-find-definition)
("C-c b" . #'xref-pop-marker-stack)))
(use-package kage-mode
:ensure nil ;; installed in site-lisp
:defer nil
:mode "\\.kg\\'"
:commands kage-gofmt-before-save
:init
(defun tvd-kage-install-hooks()
(remove-hook 'before-save-hook #'lsp-format-buffer t)
(remove-hook 'before-save-hook #'lsp-organize-imports t)
(add-hook 'before-save-hook #'kage-gofmt-before-save t t))
:config
(add-hook 'kage-mode-hook #'tvd-kage-install-hooks)
(setq lsp-warn-no-matched-clients nil))
(provide 'init-go)
;;; init-go.el ends here