;;; -*- lexical-binding: t; -*- (setq tab-stop-list (number-sequence 4 200 4)) (use-package eglot :elpaca nil :config (setq eglot-events-buffer-size 0)) (add-hook 'prog-mode-hook 'subword-mode) ;; Only used to get better eglot snippets. (use-package yasnippet :config (add-to-list 'yas-snippet-dirs (expand-file-name "yasnippets" user-emacs-directory)) (yas-global-mode)) (use-package tempel ;; Require trigger prefix before template name when completing. ;; :custom ;; (tempel-trigger-prefix "<") :bind (("M-+" . tempel-complete) ;; Alternative tempel-expand ("M-*" . tempel-insert)) :init ;; Setup completion at point (defun tempel-setup-capf () ;; Add the Tempel Capf to `completion-at-point-functions'. ;; `tempel-expand' only triggers on exact matches. Alternatively use ;; `tempel-complete' if you want to see all matches, but then you ;; should also configure `tempel-trigger-prefix', such that Tempel ;; does not trigger too often when you don't expect it. NOTE: We add ;; `tempel-expand' *before* the main programming mode Capf, such ;; that it will be tried first. (setq-local completion-at-point-functions (cons #'tempel-expand completion-at-point-functions))) (add-hook 'conf-mode-hook 'tempel-setup-capf) (add-hook 'prog-mode-hook 'tempel-setup-capf) (add-hook 'text-mode-hook 'tempel-setup-capf) ;; Optionally make the Tempel templates available to Abbrev, ;; either locally or globally. `expand-abbrev' is bound to C-x '. ;; (add-hook 'prog-mode-hook #'tempel-abbrev-mode) ;; (global-tempel-abbrev-mode) ) (use-package rustic :after eglot :bind (("C-c C-r C-s" . rustic-popup) ("C-c C-r C-n" . kj/rustic-nextest-all)) :config (defun kj/rustic-nextest-all () (interactive) (setq rustic-cargo-nextest-exec-command "nextest run --run-ignored all") (rustic-cargo-run-nextest)) (setq ;; eglot seems to be the best option right now. rustic-lsp-client 'eglot rustic-format-on-save nil ;; Prevent automatic syntax checking, which was causing lags and stutters. ;; eglot-send-changes-idle-time (* 60 60) ) :hook (rustic-mode . eglot-ensure) ;; Disable the annoying doc popups in the minibuffer. ;; (add-hook 'eglot-managed-mode-hook (lambda () (eldoc-mode -1))) ) (use-package markdown-mode :ensure t :mode ("README\\.md\\'" . gfm-mode) :init (setq markdown-command "multimarkdown")) (use-package nix-mode :mode "\\.nix\\'") (use-package ledger-mode :mode "\\.journal") (use-package unobtrusive-magit-theme) (use-package editorconfig :ensure t :config (editorconfig-mode 1) ;; Don't run on remote directories. (advice-add 'editorconfig-apply :before-until 'kj/default-directory-remote-p)) (use-package clojure-mode) ;; Devicetree mode for keyboard configs. (use-package dts-mode :mode "\\.keymap\\'") (use-package yaml-mode :mode "\\.\(yml|yaml\)\\'") ;; (use-package ansi-color ;; :hook (compilation-filter . ansi-color-compilation-filter)) (use-package diff-hl :config (add-hook 'magit-pre-refresh-hook 'diff-hl-magit-pre-refresh) (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh) (global-diff-hl-mode)) (use-package graphviz-dot-mode :ensure t) (use-package haskell-mode) (use-package tidal :config (setq tidal-boot-script-path "~/projects/audio/BootTidal.hs")) (use-package ess) (use-package sly :custom (inferior-lisp-program "sbcl")) (provide 'kj-development)