slime-c-p-c provides a different symbol completion
algorithm, which performs completion “in parallel” over the
hyphen-delimited sub-words of a symbol name.
Formally this means that “
a-b-c” can complete to any symbol
matching the regular expression “
^a.*-b.*-c.*” (where “dot”
matches anything but a hyphen). Examples give a more intuitive
w-openis ambiguous: it completes to either
with-open-stream. The symbol is expanded to the longest common completion (
with-open-) and the point is placed at the first point of ambiguity, which in this case is the end.
slime-c-p-c-unambiguous-prefix-p specifies where
point should be placed after completion. E.g. the possible
force-output. By the default point is moved after the
f, because that is the unambiguous prefix. If
slime-c-p-c-unambiguous-prefix-p is nil, point moves to
the end of the inserted text, after the
o in this case.
slime-c-p-c provides completion for character names
(mostly useful for Unicode-aware implementations):
Here SLIME will usually complete the character to
in a Unicode-aware implementation, this might provide the following
Space Space Sparkle Spherical_Angle Spherical_Angle_Opening_Left Spherical_Angle_Opening_Up
slime-c-p-c also provides context-sensitive
completion for keywords. Example:
CL-USER> (find 1 '(1 2 3) :s<TAB>
Here SLIME will complete
:start, rather than suggesting all
ever-interned keywords starting with
Looks up and inserts into the current buffer the argument list for the
function at point, if there is one. More generally, the command
completes an incomplete form with a template for the missing arguments.
There is special code for discovering extra keywords of generic
functions and for handling
defmethod, and many other functions. Examples:
(subseq "abc" <C-c C-s> --inserts--> start [end]) (find 17 <C-c C-s> --inserts--> sequence :from-end from-end :test test :test-not test-not :start start :end end :key key) (find 17 '(17 18 19) :test #'= <C-c C-s> --inserts--> :from-end from-end :test-not test-not :start start :end end :key key) (defclass foo () ((bar :initarg :bar))) (defmethod print-object <C-c C-s> --inserts--> (object stream) body...) (defmethod initialize-instance :after ((object foo) &key blub)) (make-instance 'foo <C-c C-s> --inserts--> :bar bar :blub blub initargs...)
This style of completion is modelled on completer.el by Chris McConnell. That package is bundled with ILISP.