diff --git a/init.el b/init.el index 1d7eb1e..2fecbd8 100644 --- a/init.el +++ b/init.el @@ -418,6 +418,41 @@ ;; (Emacs 27+ on some systems may not have a monocolor fallback font set after multicolor emoji fonts.) (set-fontset-font t 'symbol "Symbola" nil 'append) +;; Download and configure ligature.el to enable font ligatures in prog-mode. (Emacs >28) +(when (>= emacs-major-version 28) + (unless (file-directory-p (concat user-emacs-directory "/ligature")) + (make-directory (concat user-emacs-directory "/ligature"))) + (unless (file-exists-p (concat user-emacs-directory "/ligature/ligature.el")) + (url-copy-file "https://raw.githubusercontent.com/mickeynp/ligature.el/master/ligature.el" (concat user-emacs-directory "/ligature/ligature.el") t)) + (use-package ligature + :load-path + "ligature" + :config + (ligature-set-ligatures 'prog-mode '("|||>" "<|||" "<==>" "" "---" "-<<" + "<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->" + "<--" "<-<" "<<=" "<<-" "<<<" "<+>" "" "###" "#_(" "..<" + "..." "+++" "/==" "///" "_|_" "www" "&&" "^=" "~~" "~@" "~=" + "~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|" + "[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:" + ">=" ">>" ">-" "-~" "-|" "->" "-<" "<~" "<*" "<|" "<:" "<$" + "<=" "<>" "<-" "<<" "<+" "" "++" "?:" "?=" + "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)" "://" + "=~" "!~" "\\\\" "#####" "--" "---")) + (ligature-set-ligatures 'prog-mode '(("-" (rx (| (+ (: (? "-") (? (| "<" ">" "<<" ">>" "|" "||")))) + (| "~" )))) + ("=" (rx (| (+ (: (? "=") (? (| "<" ">" "<<" ">>" "|" "||" "/" "//" ":" "!")))) + (| "~" )))) + ("#" (rx (| (+ "#") + (| "{" "[" ":" "=" "!" "(" "?" "_")))) + ("/" (rx (| (+ "/") + (| "==" "*" "=" ">")))) + ("0" (rx "x" (+ hex))))) + :hook + (prog-mode . ligature-mode))) + ;;==================== ;; Theme ;;==================== @@ -629,6 +664,24 @@ ("M-." . lsp-ui-peek-find-definitions) ("M-?" . lsp-ui-peek-find-references))) +;;==================== +;; SLIME (Lisp Interaction Framework) +;;==================== + +;; Load SLIME +(use-package slime + :config + (setq inferior-lisp-program (executable-find "sbcl")) + :commands + (slime)) + +;; Load SLIME-docker +(use-package slime-docker + :custom + (slime-docker-program "sbcl") + :commands + (slime-docker)) + ;;==================== ;; Package-Lint (Elisp Package Linter) ;;==================== @@ -936,6 +989,7 @@ :demand t :custom + (fussy-filter-fn 'fussy-filter-fast) (completion-styles '(fussy basic)) (completion-category-defaults nil) (completion--category-overrides nil))