(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) ;; format on save (before-save . eglot-format)) :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)