First: It's not really recommended to add ELPA directories to your load path by hand, in the fashion you've done; if you ever update those packages through ELPA, the new versions will be in different directories, and you'll have to revisit this part of your init code to load those versions instead. On the principle that it's best to automate as much as possible, you're better off explicitly initializing the package manager, which will automatically add all your installed packages to the load path, rather than waiting for it to initialize after init as is the default; see this answer for how that's done.
Now, then: I'm not sure where I got this stanza of initialization code for Slime, but it has never failed me yet:
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/slime")) (require 'slime) (add-hook 'lisp-mode-hook (lambda () (slime-mode t))) (add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t))) (setq inferior-lisp-program "sbcl") (slime-setup '(slime-fancy slime-asdf))
That said, I only use SBCL, and I see you use multiple implementations. Probably the best way to modify this init code for your case would be something like this:
(require 'slime) (add-hook 'lisp-mode-hook (lambda () (slime-mode t))) (add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t))) (setq slime-lisp-implementations `((sbcl ("/usr/bin/sbcl")) (ecl ("/usr/bin/ecl")) (clisp ("/usr/bin/clisp" "-q -I")))) (slime-setup '(slime-fancy slime-asdf hippie-expand-slime))
Since you've already initialized the package manager per my previous comments, there's no need to explicitly add anything to the load path; since you use several Lisps, we replace the (setq inferior-lisp-program "...")
as well.
With this in place, M-x slime
will invoke SBCL and give you a REPL, &c., while M-- M-x slime
will prompt for which Lisp implementation to invoke.