diff --git a/modules/lang/clojure/autoload.el b/modules/lang/clojure/autoload.el new file mode 100644 index 000000000..2b2ad3ec1 --- /dev/null +++ b/modules/lang/clojure/autoload.el @@ -0,0 +1,8 @@ +;;; lang/clojure/autoload.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun +clojure/repl () + "Open a Cider REPL and return the buffer." + (interactive) + (cider-jack-in) + (current-buffer)) diff --git a/modules/lang/clojure/config.el b/modules/lang/clojure/config.el index 5254ae0a2..8cc08d1df 100644 --- a/modules/lang/clojure/config.el +++ b/modules/lang/clojure/config.el @@ -5,9 +5,43 @@ :mode ("\\.cljs$" . clojurescript-mode) :mode ("\\.cljc$" . clojurec-mode) :config - (add-hook 'clojure-mode #'rainbow-delimiters-mode) + (add-hook 'clojure-mode #'rainbow-delimiters-mode)) - (map! :map clojure-mode-map + +(def-package! clj-refactor + :after clojure-mode + :config + ;; setup some extra namespace auto completion for great awesome + (nconc cljr-magic-require-namespaces + '(("re-frame" . "re-frame.core") + ("reagent" . "reagent.core") + ("str" . "clojure.str")))) + + +(def-package! cider + ;; NOTE: if you don't have an org directory set (the dir doesn't exist), cider + ;; jack in won't work. + :commands (cider-jack-in cider-jack-in-clojurescript) + :hook (clojure-mode . cider-mode) + :config + (setq nrepl-hide-special-buffers t + cider-stacktrace-default-filters '(tooling dup) + cider-prompt-save-file-on-load nil + cider-repl-use-clojure-font-lock t + ;; Setup cider for clojurescript / figwheel dev. + cider-cljs-lein-repl + "(do (require 'figwheel-sidecar.repl-api) + (figwheel-sidecar.repl-api/start-figwheel!) + (figwheel-sidecar.repl-api/cljs-repl))") + + (set! :popup "^\\*cider-repl" nil '((quit) (select))) + (set! :repl 'clojure-mode #'+clojure/repl) + (set! :eval 'clojure-mode #'cider-eval-region) + (set! :lookup 'clojure-mode + :definition #'cider-browse-ns-find-at-point + :documentation #'cider-browse-ns-doc-at-point) + + (map! :map cider-mode-map :localleader :n "'" #'cider-jack-in :n "\"" #'cider-jack-in-clojurescript @@ -19,35 +53,3 @@ :n "c" #'cider-repl-clear-buffer :n "p" #'cider-eval-sexp-at-point :n "r" #'cider-eval-region)) - - -(def-package! clj-refactor - :after clojure-mode - :config - ;; setup some extra namespace auto completion for great awesome - (dolist (mapping '(("re-frame" . "re-frame.core") - ("reagent" . "reagent.core") - ("str" . "clojure.str"))) - (add-to-list 'cljr-magic-require-namespaces mapping t))) - - -(def-package! cider - ;; NOTE: if you don't have an org directory set (the dir doesn't exist), cider - ;; jack in won't work. - :commands (cider-jack-in cider-mode cider-jack-in-clojurescript) - :config - (setq nrepl-hide-special-buffers t) - - ;; settings for cider repl as a popup (prevent it from being closed on escape, - ;; especially.) - (set! :popup "^\\*cider" nil '((quit) (select))) - - (set! :lookup 'clojure-mode - :definition #'cider-browse-ns-find-at-point - :documentation #'cider-browse-ns-doc-at-point) - - ;; Setup cider for clojurescript / figwheel dev. - (setq cider-cljs-lein-repl - "(do (require 'figwheel-sidecar.repl-api) - (figwheel-sidecar.repl-api/start-figwheel!) - (figwheel-sidecar.repl-api/cljs-repl))"))