Next: Fuzzy Completion, Previous: inferior-slime-mode, Up: Contributed Packages [Contents][Index]
The package 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.
5
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
feeling:
m-v-b completes to multiple-value-bind.
w-open is ambiguous: it completes to either
with-open-file or 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.
w--stream completes to with-open-stream.
The variable slime-c-p-c-unambiguous-prefix-p specifies where
point should be placed after completion. E.g. the possible
completions for f-o are finish-output and
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.
In addition, slime-c-p-c provides completion for character names
(mostly useful for Unicode-aware implementations):
CL-USER> #\Sp<TAB>
Here SLIME will usually complete the character to #\Space, but
in a Unicode-aware implementation, this might provide the following
completions:
Space Space Sparkle Spherical_Angle Spherical_Angle_Opening_Left Spherical_Angle_Opening_Up
The package 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 :s.
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 make-instance,
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.
Next: Fuzzy Completion, Previous: inferior-slime-mode, Up: Contributed Packages [Contents][Index]