Commit 3acfb77d43c0

Vincent Demeester <vincent@sbr.pm>
2018-03-21 12:16:56
Add vde-company and vde-go…
Initial support for go in my emacs configuration and using company as autocomplete framework. Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent c52de3e
lisp/vde-company.el
@@ -0,0 +1,41 @@
+(use-package company
+  :ensure t
+  :commands global-company-mode
+  :init
+  (add-hook 'after-init-hook #'global-company-mode)
+  (setq
+   company-idle-delay 0.2
+   company-selection-wrap-around t
+   company-minimum-prefix-length 2
+   company-require-match nil
+   company-dabbrev-ignore-case nil
+   company-dabbrev-downcase nil
+   company-show-numbers t)
+  :config
+  (bind-keys :map company-active-map
+    ("C-d" . company-show-doc-buffer)
+    ("C-l" . company-show-location)
+    ("C-n" . company-select-next)
+    ("C-p" . company-select-previous)
+    ("C-t" . company-select-next)
+    ("C-s" . company-select-previous)
+    ("TAB" . company-complete))
+  
+  (setq company-backends
+        '((company-css
+           company-clang
+           company-capf
+           company-semantic
+           company-xcode
+           company-cmake
+           company-files
+           company-gtags
+           company-etags
+           company-keywords))))
+
+(provide 'vde-company)
+
+;; Local Variables:
+;; coding: utf-8
+;; indent-tabs-mode: nil
+;; End:
lisp/vde-go.el
@@ -1,4 +1,66 @@
+(use-package go-mode
+  :ensure t
+  :mode "\\.go$"
+  :interpreter "go"
+  :pin melpa
+  :config
+  
+  (setq gofmt-command "goimports")
+  (if (not (executable-find "goimports"))
+      (warn "go-mode: couldn't find goimports; no code formatting/fixed imports on save")
+    (add-hook 'go-mode-hook (add-hook 'before-save-hook #'gofmt-before-save nil t))))
 
+(use-package go-guru
+  :ensure t
+  :pin melpa
+  :commands (go-guru-describe go-guru-freevars go-guru-implements go-guru-peers
+             go-guru-referrers go-guru-definition go-guru-pointsto
+             go-guru-callstack go-guru-whicherrs go-guru-callers go-guru-callees
+             go-guru-expand-region)
+  :config
+  (unless (executable-find "guru")
+    (warn "go-mode: couldn't find guru, refactoring commands won't work"))
+  (add-hook 'go-mode-hook #'go-guru-hl-identifier-mode)
+  (defhydra hydra-go-guru (:color pink :columns 2 :hint nil)
+    "
+^NAME^             ^TYPE^            ^CALL^           ^ALIAS^
+_._: definition    _d_: describe     _lr_: callers     _p_: pointsto
+_r_: referrers     _i_: implement    _le_: callees     _c_: peers
+_f_: freevars      ^ ^               _s_: callstack    _e_: whicherrs"
+    ("." go-guru-definition)
+    ("r" go-guru-referrers)
+    ("f" go-guru-freevars)
+    ("d" go-guru-describe)
+    ("i" go-guru-implements)
+    ("lr" go-guru-callers)
+    ("le" go-guru-callees)
+    ("s" go-guru-callstack)
+    ("p" go-guru-pointsto)
+    ("c" go-guru-peers)
+    ("e" go-guru-whicherrs)
+    ("S" go-guru-set-scope "scope" :color blue)))
+
+(use-package go-eldoc
+  :ensure t
+  :pin melpa
+  :config
+  (add-hook 'go-mode-hook 'go-eldoc-setup))
+
+(use-package company-go
+  :ensure t
+  :pin melpa
+  :config
+  (setq company-go-show-annotation t)
+    (add-hook 'go-mode-hook
+              (lambda ()
+                (set (make-local-variable 'company-backends) '(company-go))
+                (company-mode))))
+
+(use-package gorepl-mode
+  :ensure t
+  :commands (gorepl-run
+	     gorepl-mode)
+  :init (add-hook 'go-mode-hook #'gorepl-mode))
 
 (provide 'vde-go)
 
init.el
@@ -134,6 +134,7 @@ packages.")
 (use-package vde-editing)
 (use-package vde-windows)
 (use-package vde-buffers)
+(use-package vde-company)
 ;; Programming languages
 (use-package vde-go)