Skip to content

Instantly share code, notes, and snippets.

@saikyun
saikyun / gist:a83bed977b2e16855c74776238ca1196
Last active January 24, 2019 19:22
Replace print by Tims
(defonce old-print-method-impl print-method) ; the clojure.lang.MultiFn instance itself
(def ^:dynamic *overriding-print-method* false)
(defn print-method-override-dispatch [x writer]
(if *overriding-print-method*
(type x)
:default))
(defmulti print-method-override #'print-method-override-dispatch)
@saikyun
saikyun / save.clj
Last active February 11, 2019 23:49
Proto repl save functionality for ClojureCLR
(ns miracle.tools.save
(:require [clojure.walk :refer [postwalk]]))
(def ^:dynamic *max-saves* 1000000000)
(defn gensym? [s]
(re-find #"__\d+" s))
(defn fn->var
"Takes a function and returns a var. Works even on function objects."
@saikyun
saikyun / init.el
Last active January 1, 2019 21:27
Monroe jump to def for Arcadia
(require 'monroe)
(add-hook 'clojure-mode-hook 'clojure-enable-monroe)
(defvar *monroe-project-path* nil)
(defun monroe-new-session-handler (process)
"Returns callback that is called when new connection is established."
(lambda (response)
(monroe-dbind-response response (id new-session)
(when new-session
@saikyun
saikyun / gist:79750e99f0b504167fe59c58b1138772
Created December 28, 2018 09:44
Get source of function in arcadia + emacs.
(defun inf-clojure-eval-in-ns (nsn command)
(interactive "sNamespace to go to: \nsCommand: ")
(inf-clojure--process-response
(concat "(do (if-not (find-ns '" nsn ") (try (require '" nsn " :reload) (catch Exception e (ns " nsn " )))) (in-ns '" nsn ")" command ")")
(inf-clojure-proc)))
(defun inf-clojure-eval-in-ns-of-current-file (command)
(interactive "sCommand: ")
(if-let ((ns (clojure-find-ns)))
(inf-clojure-eval-in-ns ns command)
@saikyun
saikyun / break
Last active July 20, 2018 09:41
Taken from Joy of Clojure by Fogus and Houser. Use (break) to get a repl in the spot were break was called.
(defn contextual-eval [ctx expr]
(eval
`(let [~@(mapcat (fn [[k v]] [k `'~v]) ctx)]
~expr)))
(defn readr [prompt exit-code]
(let [input (clojure.main/repl-read prompt exit-code)]
(if (= input ::tl)
exit-code