diff --git a/modules/home/users/msyds/emacs/lisp/syd/clojure.el b/modules/home/users/msyds/emacs/lisp/syd/clojure.el new file mode 100644 index 0000000..d9e066f --- /dev/null +++ b/modules/home/users/msyds/emacs/lisp/syd/clojure.el @@ -0,0 +1,69 @@ +;;; -*- lexical-binding: t; -*- + +(require 'syd/base) +(require 'syd/popups) + +(use-package clojure-mode + :mode (("\\.\\(clj\\|cljd\\|dtm\\|edn\\|lpy\\)\\'" . clojure-mode) + ("\\.cljc\\'" . clojurec-mode) + ("\\.cljs\\'" . clojurescript-mode) + ("\\(?:build\\|profile\\)\\.boot\\'" . clojure-mode)) + :interpreter (("bb" . clojure-mode) + ("nbb" . clojurescript-mode))) + +(use-package cider + :after clojure-mode + :config + ;; Correctly indent some common macros. + (put-clojure-indent 'match 1)) + +(use-package cider-mode + :straight nil ; Part of `cider'. + :hook (clojure-mode-local-vars . cider-mode) + :custom ((cider-show-error-buffer nil) + ;; Download Java source archives for local Javadoc and jump-to-def + ;; functionality. + (cider-download-java-sources t)) + :general + ;; DEPRECATED: Remove once a `map!' equivalent is implemented. + (:keymaps 'cider-repl-mode-map + :states '(normal insert) + "C-k" #'cider-repl-backward-input + "C-j" #'cider-repl-forward-input + "C-s" #'consult-history) + ;; DEPRECATED: Remove once a `map!' equivalent is implemented. + (:keymaps '(cider-repl-mode-map clojure-mode-map) + :states '(normal visual motion emacs insert) + :major-modes t + :prefix syd-localleader-key + :non-normal-prefix syd-alt-localleader-key + "\"" #'cider-jack-in-cljs + "'" #'cider-jack-in-clj + "c" #'cider-connect-clj + "C" #'cider-connect-cljs + "r l" #'cider-load-buffer + "r n" #'cider-repl-set-ns + "r r" #'cider-ns-refresh + "r R" #'cider-restart + "r q" #'cider-quit + "d d" #'cider-debug-defun-at-point + "M-:" #'cider-read-and-eval + "h d" #'cider-doc + "h c" #'cider-cheatsheet + "h j" #'cider-javadoc + "h n" #'cider-browse-ns + "T n" #'cider-test-run-ns-tests + "T r" #'cider-test-rerun-failed-tests + "T R" #'cider-test-rerun-test + "x" #'cider-scratch) + (:keymaps 'cider-repl-mode-map + :states 'insert + "S-" #'cider-repl-newline-and-indent) + :config + (add-hook 'cider-mode-hook #'eldoc-mode) + (with-eval-after-load 'consult + (add-to-list + 'consult-mode-histories + '(cider-repl-mode cider-repl-input-history nil cider-repl-bol-mark)))) + +(provide 'syd/clojure) diff --git a/modules/home/users/msyds/emacs/lisp/syd/popups.el b/modules/home/users/msyds/emacs/lisp/syd/popups.el index ae05dc3..672c324 100644 --- a/modules/home/users/msyds/emacs/lisp/syd/popups.el +++ b/modules/home/users/msyds/emacs/lisp/syd/popups.el @@ -29,6 +29,7 @@ (setq popper-display-control nil popper-reference-buffers (list #'shackle-match)) :config + ;; Close on escape. (syd-add-hook 'syd-escape-hook (defun syd-escape-close-popups-h () "If the current buffer is a popup, close it. Otherwise, close all popups."