|
48 | 48 | :lighter " Typed"
|
49 | 49 | :keymap typed-clojure-mode-map)
|
50 | 50 |
|
51 |
| -(defconst current-alias-clj |
| 51 | +(defconst typed-clojure-current-alias-clj |
52 | 52 | "(if-let [[al typedns] (first (filter #(=
|
53 | 53 | (find-ns 'clojure.core.typed)
|
54 | 54 | (val %))
|
55 | 55 | (ns-aliases *ns*)))]
|
56 | 56 | (str al \"/\")
|
57 | 57 | \"clojure.core.typed/\")")
|
58 | 58 |
|
59 |
| -(defconst CLJ-qualify-ann-var |
60 |
| - "(let [s '%s |
| 59 | +(defconst typed-clojure-clj-qualify-ann-var |
| 60 | + "(let [s '%s |
61 | 61 | ^clojure.lang.Var v (when (symbol? s) (resolve s))]
|
62 | 62 | (cond
|
63 | 63 | ; if unresolved just insert whatever is given
|
|
71 | 71 | (str (.sym v))))
|
72 | 72 | :else
|
73 | 73 | (str (name (symbol s)))))"
|
74 |
| -) |
75 |
| - |
76 |
| -(defun qualify-ann-var (n) |
| 74 | + ) |
| 75 | + |
| 76 | +(defun typed-clojure-qualify-ann-var (n) |
77 | 77 | (cider-eval-and-get-value
|
78 |
| - (format CLJ-qualify-ann-var n))) |
| 78 | + (format typed-clojure-clj-qualify-ann-var n))) |
79 | 79 |
|
80 |
| -(defun current-alias () |
81 |
| - (cider-eval-and-get-value current-alias-clj)) |
| 80 | +(defun typed-clojure-current-alias () |
| 81 | + (cider-eval-and-get-value typed-clojure-current-alias-clj)) |
82 | 82 |
|
83 |
| -(defun lowest-ns (s) |
| 83 | +(defun typed-clojure-lowest-ns (s) |
84 | 84 | (interactive)
|
85 |
| - (current-alias)) |
| 85 | + (typed-clojure-current-alias)) |
86 | 86 |
|
87 | 87 | (defun typed-clojure-check-form (&optional prefix)
|
88 | 88 | "Typecheck the preceding form."
|
89 | 89 | (interactive "P")
|
90 |
| - (let ((ca (lowest-ns 'cf))) |
| 90 | + (let ((ca (typed-clojure-lowest-ns 'cf))) |
91 | 91 | (if prefix
|
92 | 92 | (cider-interactive-eval-print
|
93 | 93 | (format "(%scf %s)" ca
|
|
96 | 96 | (format "(%scf %s)" ca
|
97 | 97 | (cider-last-sexp))))))
|
98 | 98 |
|
99 |
| -(defconst CLJ-check-ns-code " |
| 99 | +(defconst typed-clojure-clj-check-ns-code " |
100 | 100 | (let [_ (require 'clojure.core.typed)
|
101 | 101 | check-ns-info (find-var 'clojure.core.typed/check-ns-info)
|
102 | 102 | _ (assert check-ns-info
|
|
110 | 110 | (:source env) (-> env :ns :name str))))
|
111 | 111 | '()))")
|
112 | 112 |
|
113 |
| -(defun print-handler (cb buffer) |
| 113 | +(defun typed-clojure-make-print-handler (cb buffer) |
114 | 114 | (lexical-let ((cb cb))
|
115 | 115 | (nrepl-make-response-handler
|
116 | 116 | buffer
|
|
142 | 142 | (insert ") ")
|
143 | 143 | (insert (format "%s\n" msg))
|
144 | 144 | (insert (format "in: %s\n\n" form))
|
145 |
| - ))) |
146 |
| - rd)))) |
147 |
| - '() |
148 |
| - '() |
149 |
| - '()))) |
| 145 | + )) |
| 146 | + rd))))) |
| 147 | + '() |
| 148 | + '() |
| 149 | + '()))) |
150 | 150 |
|
151 | 151 | (defun typed-clojure-check-ns ()
|
152 | 152 | "Type check and pretty print errors for the namespace."
|
153 | 153 | (interactive)
|
154 | 154 | (let ((cb (current-buffer)))
|
155 |
| - (cider-tooling-eval CLJ-check-ns-code |
156 |
| - (print-handler cb |
157 |
| - (cider-popup-buffer |
158 |
| - cider-error-buffer |
159 |
| - nil)) |
| 155 | + (cider-tooling-eval typed-clojure-clj-check-ns-code |
| 156 | + (typed-clojure-make-print-handler cb |
| 157 | + (cider-popup-buffer |
| 158 | + cider-error-buffer |
| 159 | + nil)) |
160 | 160 | (cider-current-ns))))
|
161 | 161 |
|
162 | 162 | (defun typed-clojure-ann-var ()
|
|
167 | 167 | (backward-sexp))
|
168 | 168 | (mark-sexp)
|
169 | 169 | (kill-ring-save (region-beginning) (region-end))
|
170 |
| - ; turn off mark |
| 170 | + ; turn off mark |
171 | 171 | (set-mark-command 0)
|
172 | 172 | (lexical-let ((sym (car kill-ring)))
|
173 |
| - (lexical-let ((p (qualify-ann-var sym))) |
| 173 | + (lexical-let ((p (typed-clojure-qualify-ann-var sym))) |
174 | 174 | (if p
|
175 | 175 | (progn
|
176 | 176 | (beginning-of-defun)
|
177 | 177 | (insert "\n")
|
178 | 178 | (previous-line)
|
179 |
| - (insert (format "(%sann " (lowest-ns 'ann))) |
| 179 | + (insert (format "(%sann " (typed-clojure-lowest-ns 'ann))) |
180 | 180 | (insert (concat p " " (if (= 0 (length t)) "Any" t) ")"))
|
181 | 181 | ())
|
182 | 182 | (error (concat "Current form is not a symbol: " sym)))
|
183 | 183 | ))
|
184 | 184 | (backward-sexp))
|
185 |
| - ) |
| 185 | + ) |
186 | 186 |
|
187 | 187 | (defun typed-clojure-ann-form ()
|
188 | 188 | (interactive)
|
189 | 189 | (lexical-let ((t (read-string "Annotate form with type (default Any): ")))
|
190 | 190 | (paredit-wrap-round)
|
191 |
| - (insert (format "%sann-form " (lowest-ns 'ann-form))) |
| 191 | + (insert (format "%sann-form " (typed-clojure-lowest-ns 'ann-form))) |
192 | 192 | (forward-sexp)
|
193 | 193 | (insert (concat "\n" (if (= 0 (length t)) "Any" t)))
|
194 | 194 | (backward-up-list)
|
195 | 195 | (paredit-reindent-defun)
|
196 |
| - ; navigate to type |
| 196 | + ; navigate to type |
197 | 197 | (forward-sexp)
|
198 | 198 | (backward-char)
|
199 | 199 | (backward-sexp)))
|
200 | 200 |
|
201 | 201 | (provide 'typed-clojure-mode)
|
202 | 202 |
|
203 |
| -;;; typed-clojure.el ends here |
| 203 | +;;; typed-clojure-mode.el ends here |
0 commit comments