"""Constructor for xonsh completer objects."""
import collections
from xonsh.completers._aliases import complete_aliases
from xonsh.completers.base import complete_base
from xonsh.completers.bash import complete_from_bash
from xonsh.completers.commands import (
complete_end_proc_keywords,
complete_end_proc_tokens,
complete_skipper,
complete_xompletions,
)
from xonsh.completers.environment import complete_environment_vars
from xonsh.completers.imports import complete_import
from xonsh.completers.man import complete_from_man
from xonsh.completers.path import complete_path
from xonsh.completers.python import complete_python
[docs]
def default_completers(cmd_cache):
"""Creates a copy of the default completers."""
defaults = [
# non-exclusive completers:
("end_proc_tokens", complete_end_proc_tokens),
("end_proc_keywords", complete_end_proc_keywords),
("environment_vars", complete_environment_vars),
# exclusive completers:
("base", complete_base),
("skip", complete_skipper),
("alias", complete_aliases),
("xompleter", complete_xompletions),
("import", complete_import),
]
for cmd, func in [
("bash", complete_from_bash),
("man", complete_from_man),
]:
if cmd in cmd_cache:
defaults.append((cmd, func))
defaults.extend(
[
("python", complete_python),
("path", complete_path),
]
)
return collections.OrderedDict(defaults)