Source code for xonsh.completers.base
"""Base completer for xonsh."""
import collections.abc as cabc
from xonsh.completers.path import complete_path
from xonsh.completers.python import complete_python
from xonsh.completers.commands import complete_command
[docs]def complete_base(prefix, line, start, end, ctx):
"""If the line is empty, complete based on valid commands, python names,
and paths. If we are completing the first argument, complete based on
valid commands and python names.
"""
# get and unpack python completions
python_comps = complete_python(prefix, line, start, end, ctx)
if isinstance(python_comps, cabc.Sequence):
python_comps, python_comps_len = python_comps
else:
python_comps_len = None
# add command completions
out = python_comps | complete_command(prefix, line, start, end, ctx)
# add paths, if needed
if line.strip() == "":
paths = complete_path(prefix, line, start, end, ctx, False)
return (out | paths[0]), paths[1]
elif prefix == line:
if python_comps_len is None:
return out
else:
return out, python_comps_len
return set()