Source code for xontrib.fish_completer
"""Populate rich completions using fish and remove the default bash based completer"""
from xonsh.completers import completer
from xonsh.completers.tools import complete_from_sub_proc, contextual_command_completer
from xonsh.parsers.completion_context import CommandContext
[docs]@contextual_command_completer
def fish_proc_completer(ctx: CommandContext):
if not ctx.args:
return
line = ctx.text_before_cursor
script_lines = [
f"complete --no-files {ctx.command}", # switch off basic file completions for the executable
f"complete -C '{line}'",
]
return (
complete_from_sub_proc(
"fish",
"-c",
"; ".join(script_lines),
),
False,
)
def _load_xontrib_(**_):
completer.add_one_completer("fish", fish_proc_completer, "<bash")