src/middleware/macroexpand.lisp @ 051685b12e07

Make macroexpand less ugly on CCL
author Steve Losh <steve@stevelosh.com>
date Sat, 09 Apr 2016 23:22:05 +0000
parents 9d3d9514dbd8
children 6eb527beb6b9
(in-package #:nrepl)

(defun pretty-string (form)
  "Return a prettified string version of `form`, indented nicely."
  #-ccl (format nil "~A" form)
  ;; CCL's format doesn't indent forms nicely
  #+ccl (with-output-to-string (*standard-output*)
          (pprint form)))

(define-middleware wrap-macroexpand "macroexpand" message
  ;; TODO: handle mangled input
  (let ((form (read-from-string (fset:lookup message "form"))))
    (respond message
             (make-map
               "status" '("done")
               "macroexpand" (pretty-string (macroexpand form))
               "macroexpand-1" (pretty-string (macroexpand-1 form))))))