dotfiles/.emacs.d/lsp.org
2023-10-11 14:08:44 -07:00

2.5 KiB

Language Servers

This will include any language server packages and configuration.

HTML

(use-package web-mode
  :defer t
  :mode "\\.html\\'"
  :hook (web-mode . lsp-deferred))

JavaScript/Typescript

(use-package typescript-mode
  :defer t
  :mode ("\\.ts\\'" "\\.js\\'")
  :hook (typescript-mode . lsp-deferred))

Install the typescript-language-server through npm.

  npm install -g typescript-language-server

Python

(use-package python-mode
  :defer t
  :mode ("\\.py\\'")
  :hook (python-mode . lsp-deferred))

Install the python-lsp-server though pip.

  pip install python-lsp-server

C/C++

(use-package ccls
  :defer t
  :hook ((c-mode cc-mode c++-mode objc-mode cuda-mode) .
         (lambda () (require 'ccls) (lsp)))
  :config
  (setq ccls-executable "/usr/bin/ccls"))

Install ccls with homebrew using the following command.

  sudo apt install ccls

Golang

(use-package go-mode
  :defer t
  :hook (go-mode . lsp-deferred))

Rust

(use-package rustic
  :defer t
  :hook (rust-mode . lsp-deferred))

C#

(use-package csharp-mode
  :defer t
  :hook (csharp-mode . lsp-deferred))

JSON

(use-package json-mode
  :defer t
  :hook (json-mode . lsp-deferred))

Yaml

(use-package yaml-mode
  :defer t
  :hook (yaml-mode . lsp-deferred))

Yara

To install the corresponding LSP, you need to install yls. Using the command pip install -U yls-yara. Keep in mind that yls is dependent on an up to date version of yara-python.

(use-package yara-mode
  :defer t
  :hook (yara-mode . lsp-deferred)
  :config
  (with-eval-after-load 'lsp-mode
    (add-to-list 'lsp-language-id-configuration
                 '(yara-mode . "yara"))

    (lsp-register-client
     (make-lsp-client :new-connection (lsp-stdio-connection "yls")
                      :activation-fn (lsp-activate-on "yara")
                      :server-id 'yls))))

R

(use-package ess
  :defer t
  :hook (R-mode . lsp-deferred))

Haskell

(use-package haskell-mode
  :defer t
  :hook (haskell-mode . lsp-deferred))