def _GetKeyBindingsHelp(): """Returns the function key bindings help markdown.""" lines = [] for key in bindings.KeyBindings().bindings: if key.help_text: lines.append('\n{}:::'.format(key.GetLabel(markdown=True))) lines.append(key.help_text) return '\n'.join(lines)
def __init__(self, prompt='$ ', cosh=None): self.prompt = prompt self.coshell = cosh self.key_bindings = bindings.KeyBindings( edit_mode=self.coshell.edit_mode == 'emacs') # Create the CLI. self.cli = interface.CommandLineInterface( application=self._CreatePromptApplication(), eventloop=shortcuts.create_eventloop(), output=shortcuts.create_output()) self.key_bindings.Initialize(self.cli)
def __init__(self, cosh=None, args=None, config=None): self.args = args self.coshell = cosh self.config = config self.key_bindings = bindings.KeyBindings( edit_mode=self.coshell.edit_mode == 'emacs') # Load the default CLI trees. On startup we ignore out of date trees. The # alternative is to regenerate them before the first prompt. This could be # a noticeable delay for users that accrue a lot of trees. Although ignored # at startup, the regen will happen on demand as the individual commands # are typed. self.root = generate_cli_trees.LoadAll(ignore_out_of_date=True, warn_on_exceptions=True) # Add the exit command completer node to the CLI tree. self.root[parser.LOOKUP_COMMANDS]['exit'] = cli_tree.Node( command='exit', description='Exit the interactive shell.', positionals=[ { 'default': '0', 'description': 'The exit status.', 'name': 'status', 'nargs': '?', 'required': False, 'value': 'STATUS', }, ], ) # Create the parser and completer. shell_parser = parser.Parser(self.root, context=config.context, hidden=config.hidden) shell_completer = completer.ShellCliCompleter( shell_parser=shell_parser, args=args, cosh=self.coshell, hidden=config.hidden, manpage_generator=config.manpage_generator) # Make sure that complete_while_typing is disabled when # enable_history_search is enabled. (First convert to SimpleFilter, to # avoid doing bitwise operations on bool objects.) complete_while_typing = shortcuts.to_simple_filter(True) enable_history_search = shortcuts.to_simple_filter(False) complete_while_typing &= ~enable_history_search history_file = os.path.join(core_config.Paths().global_config_dir, 'shell_history') multiline = shortcuts.to_simple_filter(False) # Create the default buffer. self.default_buffer = pt_buffer.Buffer( enable_history_search=enable_history_search, complete_while_typing=complete_while_typing, is_multiline=multiline, history=pt_history.FileHistory(history_file), validator=None, completer=shell_completer, auto_suggest=(auto_suggest.AutoSuggestFromHistory() if config.suggest else None), accept_action=pt_buffer.AcceptAction.RETURN_DOCUMENT, ) # Create the CLI. self.cli = CLI( config=config, cosh=cosh, root=self.root, shell_parser=shell_parser, application=self._CreatePromptApplication(config=config, multiline=multiline), eventloop=shortcuts.create_eventloop(), output=shortcuts.create_output(), ) self.key_bindings.Initialize(self.cli)