;;; GolangCubes --- The Golang cubes for FG42 -*- lexical-binding: t; -*- ;; ;; Copyright (c) 2010-2022 Sameer Rahmani & Contributors ;; ;; Author: Sameer Rahmani ;; URL: https://gitlab.com/FG42/FG42 ;; Version: 3.0.0 ;; ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;; ;;; Commentary: ;;; Code: (require 'fg42/flags) (defun fg42/go-path-from-env () "Gets gopath from OS env." (exec-path-from-shell-copy-env "GOPATH")) (defun fg42/go-path-binary (gopath) "Gets Go binaries path with respect to the given GOPATH." ;; TODO: Use `expand-file-name' here (concat gopath "/bin")) (defun fg42/initialize-golang () "Setup Emacs hooks and turn necessary modes on." (when-flag lsp (lsp-register-custom-settings '(("gopls.completeUnimported" t t) ("gopls.staticcheck" t t))) (add-hook 'before-save-hook (lambda () (when (eq major-mode 'go-mode) (lsp-format-buffer t) (lsp-organize-imports t))))) (when-flag company (setq-local company-backends '(company-capf company-dabbrev company-dabbrev-code))) (let ((go-path (or (plist-get fg42/golang-cube-params :go-path) (fg42/go-path-from-env)))) (add-to-list 'exec-path (fg42/go-path-binary go-path))) (local-set-key (kbd "M-.") #'godef-jump) (local-set-key (kbd "M-*") 'pop-tag-mark)) (provide 'cubes/golang/core) ;;; core.el ends here