;;; 15-lsp.el --- Setup LSP -*- no-byte-compile: t; lexical-binding: t; -*- ;;; Description: ;; Despite the name, this file not only sets up LSP integration, but ;; also native emacs modes for various programming lanuguages, such as ;; Prolog, that do not use LSP. ;;; Code: ;; Eglot is the built-in LSP client. (use-package eglot :ensure nil :defer t :commands (eglot eglot-rename eglot-ensure eglot-rename eglot-format-buffer) :custom (eglot-report-progress nil) ; Prevent minibuffer spam :config (add-to-list 'eglot-server-programs '((rust-mode) . ("rust-analyzer"))) ;; Optimizations (fset #'jsonrpc--log-event #'ignore) (setq jsonrpc-event-hook nil)) ;; This package provides syntax highlighting and some utilities for ;; working with rust code. (use-package rust-mode :ensure t :defer t :commands (rust-mode)) (add-hook 'rust-mode-hook #'eglot-ensure) ;; This package provides integration with Prolog (SWI). (use-package sweeprolog :straight (sweeprolog :type git :host nil :repo "https://git.sr.ht/~eshel/sweep" :branch "main" :files ("*.el" "sweep.pl" "sweep.texi")) ; Custom recipe because ; the normal one did not ; build properly. :ensure t :defer t :commands (sweeprolog-mode sweeprolog-top-level) :init (setq sweeprolog-swipl-path "swipl")) ;; This package provides integration with Prolog (scryer) Note that editing ;; prolog is supported through built-in prolog-mode, this only allows actually ;; consulting prolog from within emacs. (use-package ediprolog :ensure t :defer t :commands (prolog-mode) :init (setq ediprolog-program "systemd-run") (setq ediprolog-program-switches '("--user" "--scope" "-p" "MemoryMax=2G" "-p" "MemoryHigh=1.9G" "scryer-prolog"))) (with-eval-after-load "prolog" (bind-key "C-c C-e" #'ediprolog-dwim prolog-mode-map)) (add-to-list 'auto-mode-alist '("\\.plt?\\'" . prolog-mode)) ;; Nix language (use-package nix-mode :ensure t :defer t :commands (nix-mode)) ;; Common Lisp (use-package sly :ensure t :defer t :commands (sly) :init (setq inferior-lisp-program "sbcl")) ;; Markdown (use-package markdown-mode :ensure t :defer t) ;;; 15-lsp.el end here