dotfiles/emacs-lisp/lsp.org
Magic_RB 62f8547895
Haskell and Racket
Signed-off-by: Magic_RB <magic_rb@redalder.org>
2022-01-18 00:26:49 +01:00

1.7 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
    :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))