blob: 1ee07ef1ca2f3107e6632468b8bd747b49e16ad6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
;;; init-eglot.el --- configure lsp integration
;;; Commentary:
;;; Code:
(defun mpolden/format-before-save ()
"Format buffer using `eglot-format' unless explicitly inhibited in current mode."
(unless (member major-mode (bound-and-true-p mpolden/inhibit-format-before-save))
(eglot-format)))
(use-package eglot
:ensure t
:init
;; eglot passes tab-width as tab size to the lsp server, but most language
;; servers treat this as an indentation width
;; https://github.com/joaotavora/eglot/issues/157
;;
;; set a default value that fits most languages
(setq-default tab-width 4)
:hook
;; load eglot automatically for these modes
((go-mode . eglot-ensure)
(java-mode . eglot-ensure)
(python-mode . eglot-ensure)
(rust-mode . eglot-ensure)
(before-save . mpolden/format-before-save))
:bind (:map eglot-mode-map
;; C-c r renames identifier
("C-c r" . eglot-rename)
;; C-c f formats buffer
("C-c f" . eglot-format)
;; C-c o organizes imports
("C-c o" . eglot-code-action-organize-imports))
:config
;; disable symbol highlighting and documentation on hover
(setq eglot-ignored-server-capabilites '(:documentHighlightProvider
:hoverProvider)))
(provide 'init-eglot)
;;; init-eglot.el ends here
|