Created
July 12, 2018 14:11
-
-
Save jpmonettas/6b315e11eceb33f687f5d972ace0a60c to your computer and use it in GitHub Desktop.
Quickly define let bindings in Emacs Cider
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun cider-binding-defit-init () | |
(interactive) | |
(cider-nrepl-request:eval | |
"(in-ns 'defit) | |
(defn get-bindings [form] | |
(cond | |
(vector? form) (into () form) | |
(map? form) (into () (:keys form)) | |
:else (list form)))" | |
(lambda (x) (message "DONE")))) | |
(defun cider-binding-defit () | |
(interactive) | |
(let ((end (point)) | |
(mid nil) | |
(beg nil)) | |
(save-excursion | |
(sp-backward-sexp) | |
(setq mid (point)) | |
(sp-backward-sexp) | |
(setq beg (point))) | |
(lexical-let ((binding (buffer-substring beg mid)) | |
(form (buffer-substring mid end))) | |
(message "binding %s to %s" binding form) | |
(cider-interactive-eval (format "(defit/get-bindings (quote %s))" binding) | |
(lambda (dict) | |
(let* ((result (nrepl-dict-get dict "value")) | |
(defs "")) | |
(when result | |
(message "All bingindgs %s" result) | |
(dolist (b (car (read-from-string result))) | |
(setq defs (concat defs (format "(def %s %s)" b b)))) | |
(cider-interactive-eval (format "(let [%s %s] %s)" binding form defs))))))))) | |
(define-key cider-mode-map (kbd "C-x C-3") 'cider-binding-defit) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment