dotfiles/emacs-lisp/lsp.org
main a5a651dbb9
Large rework and cleanup
Signed-off-by: main <magic_rb@redalder.org>
2022-07-31 11:03:59 +02:00

1.8 KiB

LSP

#

Python

Using the Microsoft language server as it's the best afaik. It's weird because it doesn't lookup the path to itself via PATH but has to be statically set.

  (use-package lsp-python-ms
    :straight t
    :hook (python-mode . (lambda ()
                           (require 'lsp-python-ms)
                           (envrc-mode)
                           (setq-local lsp-python-ms-executable (executable-find "python-language-server"))
                           (lsp)))
    :config
    (defvar-local lsp-python-ms-executable ""))

C/C++

This just requires hooking lsp onto c-mode and c++-mode.

  (with-eval-after-load 'lsp
    (add-hook c-mode-hook #'lsp)
    (add-hook c++-mode-hook #'lsp))

Haskell

Enable haskell-mode, and lsp-haskell

  (use-package haskell-mode
    :straight t
    :hook ((haskell-mode haskell-literate-mode) . interactive-haskell-mode)
    :config
    (setq lsp-haskell-plugin-ghcide-type-lenses-global-on nil
          lsp-haskell-plugin-import-lens-code-lens-on nil))
  (use-package lsp-haskell
    :straight t
    :after lsp-mode
    :hook ((haskell-mode haskell-literate-mode) . #'lsp))

Disable the haskell-stack-ghc flycheck checker, it's not used when lsp starts, but it does get loaded just before it. Loading and unloading it is slow and causes Emacs to freeze for a few seconds, so just disable it.

  (with-eval-after-load "flycheck"
    (add-to-list 'flycheck-disabled-checkers 'haskell-stack-ghc))