Ugh. Here's the fixed patch that works for symbols without specified packages as well.
Index: swank.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank.lisp,v retrieving revision 1.387 diff -u -r1.387 swank.lisp --- swank.lisp 24 Jul 2006 14:01:15 -0000 1.387 +++ swank.lisp 1 Aug 2006 19:32:03 -0000 @@ -1270,7 +1270,9 @@ ;; FIXME: deal with #| etc. hard to do portably. (defun tokenize-symbol (string) (let ((package (let ((pos (position #: string))) - (if pos (subseq string 0 pos) nil))) + (cond + ((and pos (= pos 0)) "keyword") + (pos (subseq string 0 pos))))) (symbol (let ((pos (position #: string :from-end t))) (if pos (subseq string (1+ pos)) string))) (internp (search "::" string))) @@ -3089,6 +3091,7 @@ (defun format-completion-result (string internal-p package-name) (let ((prefix (cond (internal-p (format nil "~A::" package-name)) + ((equal package-name "keyword") ":") (package-name (format nil "~A:" package-name)) (t "")))) (values (concatenate 'string prefix string)