### 8.1 Loading Contrib Packages ¶

Contrib packages aren’t loaded by default. You have to modify your setup a bit so that Emacs knows where to find them and which of them to load. Generally, you set the variable `slime-contribs` with the list of package-names that you want to use. Its default value is `slime-fancy` which loads almost everything. For example, a setup to load the `slime-scratch` and `slime-editing-commands` packages looks like:

    ;; Setup load-path and autoloads
    (add-to-list 'load-path "~/dir/to/cloned/slime")
    (require 'slime-autoloads)

    ;; Set your lisp system and some contribs
    (setq inferior-lisp-program "/opt/sbcl/bin/sbcl")
    (setq slime-contribs '(slime-scratch slime-editing-commands))

After starting SLIME, the commands of both packages should be available.

#### 8.1.1 Loading and unloading “on the fly” ¶

We recommend that you setup contribs before starting SLIME via `M-x slime`, but if you want to enable more contribs after you do that, you can set the `slime-contribs` variable to another value and call `M-x slime-setup`. Note this though:

- If you’ve removed contribs from the list they won’t be unloaded automatically.
- If you have more than one SLIME connection currently active, you must manually repeat the `slime-setup` step for each of them.

Short of restarting Emacs, a reasonable way of unloading contribs is by calling an Emacs Lisp function whose name is obtained by adding `-unload` to the contrib’s name, for every contrib you wish to unload. So, to remove `slime-repl`, you must call `slime-repl-unload`. Because the unload function will only, if ever, unload the Emacs Lisp side of the contrib, you may also need to restart your lisps.