(defvar *racket* (which "racket")) (defvar *guile* (which "guile")) (defvar *scribble-dir* nil) (defun scribble-mode-install () (shell-command "racket -e '(require (planet neil/scribble-emacs))'")) (defun racket-local-top () (cond ((equal *osname* 'darwin) "~/Library/") ((equal *osname* 'bsd) "~/.racket") (t "~/.racket"))) (defun racket-init () (when *racket* (progn (setf geiser-racket-binary *racket*) (let ((local-top (racket-local-top))) (let ((scribble (find-file-by-search-dir local-top "scribble.el"))) (if scribble (setf *scribble-dir* (file-name-directory scribble)) (progn (scribble-mode-install) (setf *scribble-dir* (file-name-directory (find-file-by-search-dir local-top "scribble.el"))))))) *scribble-dir*)) (when *guile* (setf geiser-guile-binary *guile*))) (defun racket-config () (when *scribble-dir* (add-to-list 'load-path *scribble-dir*) (require 'scribble))) (register-mypkg (list :name "racket" :enabled (or *racket* *guile*) :packages '(geiser) :init #'racket-init :config #'racket-config))