def _run_parser_via_panel(self): """ Returns `True` if the current parser needs to be run via a panel. If needed, it runs the input-panel-based parser. """ if not self.input_parsers: return False parser_def = inputs.get(self, self.input_parsers[-1]) if parser_def.type == input_types.VIA_PANEL: # Let the input-collection command collect input. sublime.active_window().run_command(parser_def.command) return True return False
def process_user_input(self, key): """ Returns `True` if the current input parser is satistied by @key. """ if not self.input_parsers: return _logger().info('[State] active input parsers: {0}'.format( self.input_parsers)) parser_def = inputs.get(self, self.input_parsers[-1]) # TODO: use translate_key? # XXX: Why can't we use the same logic as below? if key.lower() == '<cr>': _logger().info('[State] <cr> pressed, removing 1 parser') self.pop_parser() if parser_def.on_done: _logger().info('[State] running post parser: {0}'.format( parser_def.on_done)) self.view.window().run_command(parser_def.on_done, {'key': key}) return True self.user_input += key if (self.input_parsers and callable(parser_def.command) and parser_def.command(key)): _logger().info('[State] parser satisfied, removing one parser') self.pop_parser() if parser_def.on_done: _logger().info('[State] running post parser: {0}'.format( parser_def.on_done)) self.view.window().run_command(parser_def.on_done, {'key': key}) return True else: _logger().info('[State] more input expected by parser') # we need to keep collecting input return True
def process_user_input(self, key): """ Returns `True` if the current input parser is satistied by @key. """ if not self.input_parsers: return _logger().info('[State] active input parsers: {0}'.format(self.input_parsers)) parser_def = inputs.get(self, self.input_parsers[-1]) # TODO: use translate_key? # XXX: Why can't we use the same logic as below? if key.lower() == '<cr>': _logger().info('[State] <cr> pressed, removing 1 parser') self.pop_parser() if parser_def.on_done: _logger().info('[State] running post parser: {0}' .format(parser_def.on_done)) self.view.window().run_command(parser_def.on_done, {'key': key}) return True self.user_input += key if (self.input_parsers and callable(parser_def.command) and parser_def.command(key)): _logger().info('[State] parser satisfied, removing one parser') self.pop_parser() if parser_def.on_done: _logger().info('[State] running post parser: {0}' .format(parser_def.on_done)) self.view.window().run_command(parser_def.on_done, {'key': key}) return True else: _logger().info('[State] more input expected by parser') # we need to keep collecting input return True