Source code for xonsh.completers.xompletions
"""Provides completions for xonsh internal utilities"""
import xonsh.xontribs as xx
import xonsh.tools as xt
[docs]def complete_xonfig(prefix, line, start, end, ctx):
"""Completion for ``xonfig``"""
args = line.split(' ')
if len(args) == 0 or args[0] != 'xonfig':
return None
curix = args.index(prefix)
if curix == 1:
possible = {'info', 'wizard', 'styles', 'colors', '-h'}
elif curix == 2 and args[1] == 'colors':
possible = set(xt.color_style_names())
else:
raise StopIteration
return {i for i in possible if i.startswith(prefix)}
def _list_installed_xontribs():
meta = xx.xontrib_metadata()
installed = []
for md in meta['xontribs']:
name = md['name']
spec = xx.find_xontrib(name)
if spec is not None:
installed.append(spec.name.rsplit('.')[-1])
return installed
[docs]def complete_xontrib(prefix, line, start, end, ctx):
"""Completion for ``xontrib``"""
args = line.split(' ')
if len(args) == 0 or args[0] != 'xontrib':
return None
curix = args.index(prefix)
if curix == 1:
possible = {'list', 'load'}
elif curix == 2:
if args[1] == 'load':
possible = _list_installed_xontribs()
else:
raise StopIteration
return {i for i in possible if i.startswith(prefix)}