Here all it takes to use Dr.Cubitt's `completion-ui' package with SLIME. Completion-UI is available at URL:http://www.dr-qubit.org/emacs.php#completion
In the code shown below I'm using the contrib function `slime-completions' from contrib/slime-c-p-c, which must be enabled. You may prefer to replace (slime-completions prefix) with (slime-simple-completions prefix) if you did not wish to use slime-c-p-c, [slime-c-p-c is broken in new emacsen by default but it work OK via completion-ui as shown]
(completion-ui-register-source (lambda (prefix &optional maxnum) (let* ((completions-from-swank (slime-completions prefix)) ; <--- (completions (car completions-from-swank))) (if maxnum (butlast completions (- (length completions) maxnum)) completions))) :prefix-function (lambda () "Return prefix string at point for completion." (let* ((end (point)) (beg (save-excursion (backward-sexp 1) (while (= (char-syntax (following-char)) ?') (forward-char 1)) (point)))) (buffer-substring-no-properties beg end))) :name 'lisp-symbol-swank)
(defun default-slime-completion-ui-bindings () "Enable `complete-lisp-symbol-swank' which is registered via completion-ui on the M-TAB and TAB keys in `slime-mode' and `slime-repl-mode' respectively." (define-key slime-mode-map "\C-[\C-i" 'complete-lisp-symbol-swank) (define-key slime-repl-mode-map "\t" 'complete-lisp-symbol-swank))
(default-slime-completion-ui-bindings)