editor:complete-with-non-focus
editor:complete-with-non-focus
complete-func
&key
extract-func
skip-func
insert-func
Performs a non-focus completion at the editor current point.
complete-func should be a function designator with signature:
complete-func
string
&optional
user-arg
=>
result
string
should be a string to complete.
user-arg
is the second return value of
extract-func
, if this is not
nil
.
result
should be a list of items to be displayed in the list panel of the non-focus window.
extract-func must be a function designator with signature
extract-func
point
=>
string
,
user-arg
point should be a Point object
extract-func needs to move point to the beginning of the text that will be replaced if the user confirms. It should return two values: string is the string to complete, and user-arg can be any Lisp object. string is passed to the function complete-func , and if user-arg is non-nil it is also passed.
The default value of
extract-func
is a function which searches backwards until it finds a non-alphanumeric character, or the beginning of the buffer. It then moves its
point
argument forward to the next character. The function returns its first value
string
the string between this and the original location of the point, and it returns
nil
as the second value
user-arg
.
skip-func , if supplied, must be a function designator with signature
skip-func
point
point should be a Point object
point will be used as the end of the region to replace by the completion. At the call to skip-func , the point is located at the same place as the point that was passed to extract-func (after it moved). skip-func needs to move point forward to the end of the text that should be replaced when the user wants to do the completion. If skip-func is not supplied, the end point is set to the current point.
insert-func , if supplied, must be a function designator with signature
insert-func
result
string
user-arg
=>
string-to-use
result
is the item selected by the user,
string
is the original string that was returned by
extract-func
, and
user-arg
is the second value returned by
extract-func
(regardless of whether this value is
nil
). It must return a string,
string-to-use
, which is inserted as the the completion.
If
insert-func
is not supplied, the completion item is inserted. If it is not a string it is first converted by
prin1-to-string
.
When
editor:complete-with-non-focus
is called, it makes a copy of the current point and passes it to
extract-func
. It then copies this point and positions it either using
skip-func
or the current point. These two points define the text to be replaced.
editor:complete-with-non-focus
then calls
complete-func
, and use the result to raise a non-focus window next to the current point. The interaction of this window is as described in
LispWorks CAPI User Guide
.