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.
"""
if line.strip() == "":
out = complete_python(prefix, line, start, end, ctx) | complete_command(
prefix, line, start, end, ctx
)
paths = complete_path(prefix, line, start, end, ctx, False)
return (out | paths[0]), paths[1]
elif prefix == line:
python_comps = complete_python(prefix, line, start, end, ctx)
if isinstance(python_comps, cabc.Sequence):
return (
python_comps[0] | complete_command(prefix, line, start, end, ctx),
python_comps[1],
)
else:
return python_comps | complete_command(prefix, line, start, end, ctx)
return set()