about summary refs log tree commit diff stats
path: root/.emacs.d/lisp/init-clojure.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/lisp/init-clojure.el')
-rw-r--r--.emacs.d/lisp/init-clojure.el41
1 files changed, 29 insertions, 12 deletions
diff --git a/.emacs.d/lisp/init-clojure.el b/.emacs.d/lisp/init-clojure.el
index 2bfaf78..7673565 100644
--- a/.emacs.d/lisp/init-clojure.el
+++ b/.emacs.d/lisp/init-clojure.el
@@ -28,7 +28,8 @@
       ("st" "#spy/t")))
 
   (defalias 'cape-clojure (cape-capf-super #'cider-complete-at-point
-                                           #'lsp-completion-at-point))
+                                           #'lsp-completion-at-point
+                                           #'cape-dabbrev))
   (defun set-clojure-capf ()
     (add-hook 'completion-at-point-functions #'cape-clojure -99 t))
 
@@ -101,14 +102,13 @@
   :init
   ;; Always show more of the path in clj buffer names.
   ;; Using setq-local in clojure-mode-hook is not enough, as it runs too late
-  (defun clj-uniquify-get-proposed-name (orig base dirname &optional depth original-dirname)
+  (defun clj-uniquify-get-proposed-name (orig base dirname &optional depth)
     (when (and (> (length base) 4)
                (string= ".clj" (substring base -4))
                (not (string= "project.clj" base)))
       (setq-local uniquify-min-dir-content 3))
-    (funcall orig base dirname depth original-dirname))
+    (funcall orig base dirname depth))
   (advice-add 'uniquify-get-proposed-name :around 'clj-uniquify-get-proposed-name)
-  :bind
   :hook
   (clojure-mode . clojure-mode-hook-fn))
 
@@ -152,10 +152,10 @@
     (cider-jack-in params))
   (defun load-debug-namespaces ()
     (interactive)
-    (cider-interactive-eval "(require 'snitch.core)" nil nil (cider--nrepl-pr-request-map))
-    (cider-interactive-eval "(require 'miracle.save)" nil nil (cider--nrepl-pr-request-map))
-    (cider-interactive-eval "(require 'sc.api)" nil nil (cider--nrepl-pr-request-map))
-    (cider-interactive-eval "(require '[debux.cs.core :refer [dbg dbgn dbgt]])" nil nil (cider--nrepl-pr-request-map)))
+    (cider-interactive-eval "(require 'snitch.core)" nil nil (cider--nrepl-pr-request-plist))
+    (cider-interactive-eval "(require 'miracle.save)" nil nil (cider--nrepl-pr-request-plist))
+    (cider-interactive-eval "(require 'sc.api)" nil nil (cider--nrepl-pr-request-plist))
+    (cider-interactive-eval "(require '[debux.cs.core :refer [dbg dbgn dbgt]])" nil nil (cider--nrepl-pr-request-plist)))
   (defun cider-toggle-boolean ()
     (interactive)
     (let ((opposite (pcase (cider-symbol-at-point)
@@ -196,30 +196,47 @@
         cider-connection-message-fn nil
         cider-show-error-buffer 'except-in-repl
         cider-test-fail-fast nil
+        cider-download-java-sources t
         clojure-toplevel-inside-comment-form t)
   (setq cider-clojure-compilation-error-phases nil)
   (setq-default cider-use-overlays t)
   (unbind-key "C-c C-l" cider-mode-map)
   (unbind-key "C-c C-b" cider-mode-map)
   (unbind-key "C-c C-b" cider-repl-mode-map)
+  (unbind-key "M-." cider-repl-mode-map)
 
   (defun fix-duplicate-windows ()
     "When all windows are the same, delete all of them except the current one."
     (when (apply #'eq (mapcar 'window-buffer (window-list)))
       (delete-other-windows)))
   (advice-add #'cider-close-ancillary-buffers :after #'fix-duplicate-windows)
+
   :bind
   (:map cider-mode-map
         ("C-c M-l" . cider-load-file)
-        ("C-c M-b" . cider-interrupt))
+        ("C-c M-b" . cider-interrupt)
+        ("C-c C-j C-;" . cider-pprint-eval-last-sexp-to-comment)
+        ("C-c C-M-p" . cider-pprint-eval-last-sexp-to-repl)
+        ("C-x M-i e" . cider-inspect-last-sexp)
+        ("C-x M-i f" . cider-inspect-defun-at-point)
+        ("C-x M-i l" . cider-inspect-last-result)
+        ("C-x M-i v" . cider-inspect-expr))
   (:map cider-repl-mode-map
-        ("C-c M-b" . cider-interrupt))
+        ("C-c M-b" . cider-interrupt)
+        ;; sp commands sometimes behave strangely in the cider repl buffer
+        ("M-d" . paredit-forward-kill-word)
+        ("M-DEL" . paredit-backward-kill-word)
+        ("C-k" . paredit-kill)
+        ("C-x M-i e" . cider-inspect-last-sexp)
+        ("C-x M-i f" . cider-inspect-defun-at-point)
+        ("C-x M-i l" . cider-inspect-last-result)
+        ("C-x M-i v" . cider-inspect-expr))
   (:map cider-start-map
-        ("C-c M-i" . cider-jack-in-and-run-main))
+        ("C-c C-M-j" . cider-jack-in-and-run-main))
   (:map clojure-mode-map
         ("C-c C-r C-m" . run-main)
         ("C-c C-r C-d" . load-debug-namespaces)
-        ("C-c M-i" . cider-jack-in-and-run-main)
+        ("C-c C-M-j" . cider-jack-in-and-run-main)
         ("C-x p q" . project-clojure-test-switch)
         ("C-c C-M-c" . (lambda () (interactive) (cider-clear-compilation-highlights t)))
         ("C-c C->" . cider-find-dwim)