From e3270cc826cc1d0a64c93b3d317263949ea06902 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Mon, 13 Jan 2020 09:29:34 -0800 Subject: emacs/prog: switch to lsp-mode Previously I was using the package `eglot` to provide LSP functionality. However, the package uses flymake for it, while my setup in general uses flycheck. Since lsp-mode supports both, I'm switching to ls-mode. I'm moving the code for company to the 'prog' module, so that all things related to general programming is in one location. Since I'm switching to lsp-mode mode primarily for go, I can also delete a bunch of extra functionality that is now provided by lsp-mode. --- emacs.d/custom/fcuny-company.el | 11 --------- emacs.d/custom/fcuny-go.el | 54 +---------------------------------------- emacs.d/custom/fcuny-prog.el | 40 ++++++++++++++++++++++++++---- emacs.d/init.el | 1 - 4 files changed, 36 insertions(+), 70 deletions(-) delete mode 100644 emacs.d/custom/fcuny-company.el diff --git a/emacs.d/custom/fcuny-company.el b/emacs.d/custom/fcuny-company.el deleted file mode 100644 index fab7c99..0000000 --- a/emacs.d/custom/fcuny-company.el +++ /dev/null @@ -1,11 +0,0 @@ -(use-package company - :ensure t - :diminish company-mode - - :custom - (company-minimum-prefix-length 2) - (company-tooltip-align-annotations t) - (company-tooltip-limit 12) - (company-idle-delay 1)) - -(provide 'fcuny-company) diff --git a/emacs.d/custom/fcuny-go.el b/emacs.d/custom/fcuny-go.el index ffbc1d5..4484b6e 100644 --- a/emacs.d/custom/fcuny-go.el +++ b/emacs.d/custom/fcuny-go.el @@ -20,62 +20,10 @@ :config (when (memq window-system '(mac ns)) - (exec-path-from-shell-copy-env "GOPATH")) - - (defhydra hydra-go-menu (:hint nil) - " -^find ^ ^goto ^ ^test^ -^-----------^ ^--------^ ^----^ -_r_: referrers _d_: definition _T_: test current test -_i_: implements _a_: arguments _F_: test current file -_D_: describe _f_: function _P_: test current package -^ ^ _R_: return -" - ("r" go-guru-referrers) - ("i" go-guru-implements) - ("D" go-guru-describe) - ("d" go-guru-definition) - ("a" go-goto-arguments) - ("f" go-goto-function) - ("R" go-goto-return-values) - ("T" go-test-current-test) - ("F" go-test-current-file) - ("P" go-test-current-project) - ("q" nil "quit" :color blue)) - - (define-key go-mode-map (kbd "C-c g") 'hydra-go-menu/body)) - -(use-package go-guru - :ensure t - :after go-mode - :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)) - -(use-package go-eldoc - :ensure t - :after go-mode - :config - (add-hook 'go-mode-hook 'go-eldoc-setup)) - -(use-package godoctor - :ensure t - :after go-mode) + (exec-path-from-shell-copy-env "GOPATH"))) (use-package gotest :ensure t :after go-mode) -(use-package company-go - :ensure t - :after (company) - :hook (go-mode . (lambda () - (setq-local company-backends - (append (list 'company-go) company-backends))))) - (provide 'fcuny-go) diff --git a/emacs.d/custom/fcuny-prog.el b/emacs.d/custom/fcuny-prog.el index ab7cc05..92dd9c7 100644 --- a/emacs.d/custom/fcuny-prog.el +++ b/emacs.d/custom/fcuny-prog.el @@ -1,9 +1,39 @@ -(use-package eglot +(require 'fcuny-vars) + +(use-package company + :ensure t + :diminish company-mode + + :custom + (company-minimum-prefix-length 2) + (company-tooltip-align-annotations t) + (company-tooltip-limit 12) + (company-idle-delay 1)) + +(use-package lsp-mode + :ensure t + :commands (lsp lsp-deferred) + :hook (go-mode . lsp-deferred) + :custom + (lsp-session-file (expand-file-name "lsp-session-v1" fcuny/path-emacs-var)) + (lsp-enable-snippet nil) + (lsp-prefer-flymake nil)) + +(use-package lsp-ui + :ensure t + :commands lsp-ui-mode + :custom + (lsp-ui-doc-enable t) + (lsp-ui-peek-enable t) + (lsp-ui-sideline-enable t) + (lsp-ui-imenu-enable t) + (lsp-ui-flycheck-enable t)) + +(use-package company-lsp :ensure t + :after company + :commands company-lsp :config - (define-key eglot-mode-map (kbd "C-c ; g .") 'xref-find-definitions) - (define-key eglot-mode-map (kbd "C-c ; g ,") 'pop-tag-mark) - (add-to-list 'eglot-server-programs '(go-mode . ("gopls"))) - (add-hook 'go-mode-hook 'eglot-ensure)) + (push 'company-lsp company-backends)) (provide 'fcuny-prog) diff --git a/emacs.d/init.el b/emacs.d/init.el index 19d895c..0fa1b86 100644 --- a/emacs.d/init.el +++ b/emacs.d/init.el @@ -43,7 +43,6 @@ (require 'fcuny-puppet) (require 'fcuny-yaml) -(require 'fcuny-company) (require 'fcuny-go) (require 'fcuny-lisp) (require 'fcuny-make) -- cgit 1.4.1