[Load SLIME js-expander
clinton@unknownlamer.org**20081216084021] {
hunk ./init.d/slime.el 11
+
+(setq slime-enable-evaluate-in-emacs t)
+(setq slime-repl-return-behaviour :send-if-complete)
+
+(define-key slime-repl-mode-map [(shift meta ?s)]
+  #'slime-repl-next-matching-input)
+(define-key slime-repl-mode-map [(shift meta ?r)]
+  #'slime-repl-previous-matching-input)
+
+(require 'js-expander)
+
+; (setq slime-filename-translations nil)
+
addfile ./site-lisp/js-expander.el
hunk ./site-lisp/js-expander.el 1
-
+;;; this would go into slime.el
+(defun slime-eval-custom-expand (expander exp-str package buffer-name buffer-mode printer)
+  (lexical-let ((package package)
+                (buffer-name buffer-name)
+                (buffer-mode buffer-mode)
+                (printer printer))
+    (slime-eval-async
+     (list 'swank:eval-and-grab-output (format "(%s %s)" expander exp-str))
+     (lambda (expansion)
+       (with-current-buffer (slime-get-temp-buffer-create buffer-name :mode buffer-mode :reusep t)
+         (setq slime-buffer-connection (slime-connection))
+         (setq slime-buffer-package package)
+         (setq buffer-read-only nil)
+         (erase-buffer)
+         (insert (funcall printer (second expansion)))
+         (setq buffer-read-only t)
+         (font-lock-fontify-buffer)))
+     package)))
+
+(defun* slime-add-custom-expander (key expander buffer-name &optional (buffer-mode 'slime-mode) (printer #'identity))
+  (slime-define-key key (lexical-let ((expander expander)
+                                      (buffer-name buffer-name)
+                                      (buffer-mode buffer-mode)
+                                      (printer printer))
+                          (lambda (&rest _)
+                            (interactive "P")
+                            (slime-eval-custom-expand expander
+                                                      (first (slime-sexp-at-point-for-macroexpansion))
+                                                      (slime-current-package)
+                                                      buffer-name
+                                                      buffer-mode
+                                                      printer)))
+                    :prefixed t :inferior t))
+
+;;; This stuff would go into .emacs
+(slime-add-custom-expander "j" 'ps:ps "*ParenScript generated Javascript*" 'js-mode #'read)
+
+(provide 'js-expander)
}