;; -*- lexical-binding: t; -*- (require 'sly) (define-sly-contrib sly-retro "Enable SLIME to connect to a SLY-started SLYNK" (:slynk-dependencies slynk/retro) (:on-load (setq sly-net-send-translator #'sly-retro-slynk-to-swank)) (:on-unload (setq sly-net-send-translator nil))) (defun sly-retro-slynk-to-swank (sexp) (cond ((and sexp (symbolp sexp) (string-match "^slynk\\(.*\\)$" (symbol-name sexp))) (intern (format "swank%s" (match-string 1 (symbol-name sexp))))) ((and sexp (listp sexp)) (cl-loop for (x . rest) on sexp append (list (sly-retro-slynk-to-swank x)) into foo finally (return (append foo (sly-retro-slynk-to-swank rest))))) (t sexp))) (provide 'sly-retro)