jonase/kibit — pull request #73 by cemerick (2013-02-13 22:58:02+00:00)
Title: "statically" maintain *ns* to yield proper namespacing of ::keywords, fixes gh-72

`*ns*` is now tracked reasonably well (i.e. top-level `ns` and `in-ns` forms affect it properly), so current-namespace `::keyword`s end up being properly qualified.

One wrinkle I ran into is that, outside of `'user`, syntax-quote ends up qualifying bare symbols within `*ns*`; this means that this:

```clojure
`(when-let ~foo ...)
```

…is read as:

```clojure
(your-namespace/when-let value-of-foo ...)
```

I got around this by referring vars in from `clojure.core` (being careful not to stomp on any that might already be interned). The relevant function is `kibit.check/careful-refer`.

----

This patch also works around `*default-data-reader-fn*` not being available in Clojure 1.4.