array completeCommand (
This function finds possible command completions for
text is first split at whitspaces, and completion is performed on the last segment. Note that this currently does not recognize escaped whitspaces.
If the last segment starts with a
/, then it is considered to be an absolute path. Otherwise, if it is the first segment (ie. there is only one segment), it will be treated as a path relative to the home directory or a path relative to an element of
PATH. Finally, if it is not an absolute path and not a first segment, it will be treated as a path relative to the home directory.
To perform the completion, first the directory of the last segment is calculated. For example, if the last segment is
/foo/bar/hel, then the directory is
/foo/bar/. Then everything in the directory is listed, and it checks which items starts with
hel. All the items will then be listed in the
completions array. The common part of all possible completions is put in the
postfix variable, and the tuple
[postfix, completions] is returned.
It is important to note that the returned variables are just the part added by completion. So if
/foo/bar/hel completes to
lo is returned, instead of
/foo/bar/hello. This is the case for both the
A special case is when the last segment is empty. In this case, an empty tuple is returned.