Files
emacs-dotfiles/.config.d/15-lsp.el

91 lines
2.2 KiB
EmacsLisp

;;; 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