Skip to content

Instantly share code, notes, and snippets.

@AgrYpn1a
Created April 9, 2024 08:09
Show Gist options
  • Save AgrYpn1a/95b098ebe1b97bbfc1eb3edbf06d5866 to your computer and use it in GitHub Desktop.
Save AgrYpn1a/95b098ebe1b97bbfc1eb3edbf06d5866 to your computer and use it in GitHub Desktop.
;; Eglot ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package project :demand t)
(use-package eglot
:after
(project projectile)
:config
;; Scala
(add-to-list 'eglot-server-programs '(scala-mode . ("metals-emacs")))
;; Typescript
(add-to-list 'eglot-server-programs
'((typescriptreact-mode) "typescript-language-server" "--stdio"))
;; Haskell
(add-hook 'haskell-mode-hook 'eglot-ensure)
(setq-default eglot-workspace-configuration
'((haskell
(plugin
(stan
(globalOn . :json-false)))))) ;; disable stan
(setq eglot-confirm-server-initiated-edits nil)
;; (advice-add 'eglot--apply-workspace-edit :after #'me/project-save)
;; (advice-add 'project-kill-buffers :before #'me/eglot-shutdown-project)
(put 'eglot-node 'flymake-overlay-control nil)
(put 'eglot-warning 'flymake-overlay-control nil)
(put 'eglot-error 'flymake-overlay-control nil)
:hook
(eglot-managed-mode . me/flymake-eslint-enable-maybe)
(typescript-ts-base-mode . eglot-ensure)
:custom
(eglot-autoshutdown t)
;; :preface
;; (defun me/eglot-shutdown-project ()
;; "Kill the LSP server for the current project if it exists."
;; (when-let ((server (eglot-current-server)))
;; (ignore-errors (eglot-shutdown server))))
)
(cl-defmethod project-root ((project (head eglot-project)))
(cdr project))
(defun my-project-try-tsconfig-json (dir)
(when-let* ((found (locate-dominating-file dir "tsconfig.json")))
(cons 'eglot-project found)))
(add-hook 'eglot-managed-mode-hook #'eldoc-box-hover-at-point-mode t)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment