1(defun roswell-configdir () 2 (substring (shell-command-to-string "ros roswell-internal-use version confdir") 0 -1)) 3 4(defun roswell-load (system) 5 (let ((result (substring (shell-command-to-string 6 (concat "ros -L sbcl-bin -e \"(format t \\\"~A~%\\\" (uiop:native-namestring (ql:where-is-system \\\"" 7 system 8 "\\\")))\"")) 0 -1))) 9 (unless (equal "NIL" result) 10 (load (concat result "roswell/elisp/init.el"))))) 11 12(defun roswell-opt (var) 13 (with-temp-buffer 14 (insert-file-contents (concat (roswell-configdir) "config")) 15 (goto-char (point-min)) 16 (re-search-forward (concat "^" var "\t[^\t]+\t\\(.*\\)$")) 17 (match-string 1))) 18 19(defun roswell-directory (type) 20 (concat 21 (roswell-configdir) 22 "lisp/" 23 type 24 "/" 25 (roswell-opt (concat type ".version")) 26 "/")) 27 28(defvar roswell-slime-contribs '(slime-fancy)) 29 30(let ((type (or (ignore-errors (roswell-opt "emacs.type")) "slime"))) 31 (cond ((equal type "slime") 32 (let ((slime-directory (roswell-directory type))) 33 (add-to-list 'load-path slime-directory) 34 (require 'slime-autoloads) 35 (setq slime-backend (expand-file-name "swank-loader.lisp" 36 slime-directory)) 37 (setq slime-path slime-directory) 38 (slime-setup roswell-slime-contribs))) 39 ((equal type "sly") 40 (add-to-list 'load-path (roswell-directory type)) 41 (require 'sly-autoloads)))) 42 43(setq inferior-lisp-program "ros run") 44