Source code for xonsh.completers.environment

from xonsh.built_ins import XSH
from xonsh.completers.tools import (
    RichCompletion,
    contextual_completer,
    non_exclusive_completer,
)
from xonsh.parsers.completion_context import CompletionContext


[docs] @contextual_completer @non_exclusive_completer def complete_environment_vars(context: CompletionContext): """Completes environment variables.""" if context.command: prefix = context.command.prefix elif context.python: prefix = context.python.prefix else: return None dollar_location = prefix.rfind("$") if dollar_location == -1: return None key = prefix[dollar_location + 1 :] lprefix = len(key) + 1 if context.command is not None and context.command.is_after_closing_quote: lprefix += 1 env = XSH.env vars = [k for k, v in env.items() if key.lower() in k.lower()] return ( RichCompletion( "$" + k, display=f"${k} [{type(env[k]).__name__}]", description=env.get_docs(k).doc, ) for k in vars ), lprefix