def _get_completion_model(self, completion, pos_args): """Get a completion model based on an enum member. Args: completion: A usertypes.Completion member. pos_args: The positional args entered before the cursor. Return: A completion model or None. """ if completion == usertypes.Completion.option: section = pos_args[0] model = instances.get(completion).get(section) elif completion == usertypes.Completion.value: section = pos_args[0] option = pos_args[1] try: model = instances.get(completion)[section][option] except KeyError: # No completion model for this section/option. model = None else: model = instances.get(completion) if model is None: return None else: return sortfilter.CompletionFilterModel(source=model, parent=self)
def _get_completion_model(self, completion, parts, cursor_part): """Get a completion model based on an enum member. Args: completion: A usertypes.Completion member. parts: The parts currently in the commandline. cursor_part: The part the cursor is in. Return: A completion model or None. """ if completion == usertypes.Completion.option: section = parts[cursor_part - 1] model = instances.get(completion).get(section) elif completion == usertypes.Completion.value: section = parts[cursor_part - 2] option = parts[cursor_part - 1] try: model = instances.get(completion)[section][option] except KeyError: # No completion model for this section/option. model = None else: model = instances.get(completion) if model is None: return None else: return sortfilter.CompletionFilterModel(source=model, parent=self)
def _get_completion_model(self, completion, parts, cursor_part): """Get a completion model based on an enum member. Args: completion: A usertypes.Completion member. parts: The parts currently in the commandline. cursor_part: The part the cursor is in. Return: A completion model. """ if completion == usertypes.Completion.option: section = parts[cursor_part - 1] model = instances.get(completion).get(section) elif completion == usertypes.Completion.value: section = parts[cursor_part - 2] option = parts[cursor_part - 1] try: model = instances.get(completion)[section][option] except KeyError: # No completion model for this section/option. model = None else: model = instances.get(completion) return model
def _get_new_completion(self, parts, cursor_part): """Get a new completion. Args: parts: The command chunks to get a completion for. cursor_part: The part the cursor is over currently. Return: A completion model. """ try: if parts[cursor_part].startswith('-'): # cursor on a flag return except IndexError: pass log.completion.debug("Before filtering flags: parts {}, cursor_part " "{}".format(parts, cursor_part)) parts, cursor_part = self._filter_cmdline_parts(parts, cursor_part) log.completion.debug("After filtering flags: parts {}, cursor_part " "{}".format(parts, cursor_part)) if not parts: return None if cursor_part == 0: # '|' or 'set|' model = instances.get(usertypes.Completion.command) return sortfilter.CompletionFilterModel(source=model, parent=self) # delegate completion to command try: completions = cmdutils.cmd_dict[parts[0]].completion except KeyError: # entering an unknown command return None if completions is None: # command without any available completions return None dbg_completions = [c.name for c in completions] try: idx = cursor_part - 1 completion = completions[idx] except IndexError: # More arguments than completions log.completion.debug("completions: {}".format( ', '.join(dbg_completions))) return None dbg_completions[idx] = '*' + dbg_completions[idx] + '*' log.completion.debug("completions: {}".format( ', '.join(dbg_completions))) model = self._get_completion_model(completion, parts, cursor_part) return model
def _get_new_completion(self, parts, cursor_part): """Get a new completion. Args: parts: The command chunks to get a completion for. cursor_part: The part the cursor is over currently. Return: A completion model. """ try: if parts[cursor_part].startswith('-'): # cursor on a flag return except IndexError: pass log.completion.debug("Before filtering flags: parts {}, cursor_part " "{}".format(parts, cursor_part)) parts, cursor_part = self._filter_cmdline_parts(parts, cursor_part) log.completion.debug("After filtering flags: parts {}, cursor_part " "{}".format(parts, cursor_part)) if not parts: return None if cursor_part == 0: # '|' or 'set|' model = instances.get(usertypes.Completion.command) return sortfilter.CompletionFilterModel(source=model, parent=self) # delegate completion to command try: cmd = cmdutils.cmd_dict[parts[0]] except KeyError: # entering an unknown command return None try: idx = cursor_part - 1 completion = cmd.get_pos_arg_info(idx).completion except IndexError: # user provided more positional arguments than the command takes return None if completion is None: return None model = self._get_completion_model(completion, parts, cursor_part) return model
def _get_new_completion(self, before_cursor, under_cursor): """Get a new completion. Args: before_cursor: The command chunks before the cursor. under_cursor: The command chunk under the cursor. Return: A completion model. """ if '--' in before_cursor or under_cursor.startswith('-'): # cursor on a flag or after an explicit split (--) return None log.completion.debug("Before removing flags: {}".format(before_cursor)) before_cursor = [x for x in before_cursor if not x.startswith('-')] log.completion.debug("After removing flags: {}".format(before_cursor)) if not before_cursor: # '|' or 'set|' model = instances.get(usertypes.Completion.command) return sortfilter.CompletionFilterModel(source=model, parent=self) try: cmd = cmdutils.cmd_dict[before_cursor[0]] except KeyError: log.completion.debug( "No completion for unknown command: {}".format( before_cursor[0])) return None argpos = len(before_cursor) - 1 try: completion = cmd.get_pos_arg_info(argpos).completion except IndexError: log.completion.debug("No completion in position {}".format(argpos)) return None if completion is None: return None model = self._get_completion_model(completion, before_cursor[1:]) return model
def _get_new_completion(self, before_cursor, under_cursor): """Get a new completion. Args: before_cursor: The command chunks before the cursor. under_cursor: The command chunk under the cursor. Return: A completion model. """ if '--' in before_cursor or under_cursor.startswith('-'): # cursor on a flag or after an explicit split (--) return None log.completion.debug("Before removing flags: {}".format(before_cursor)) before_cursor = [x for x in before_cursor if not x.startswith('-')] log.completion.debug("After removing flags: {}".format(before_cursor)) if not before_cursor: # '|' or 'set|' model = instances.get(usertypes.Completion.command) return sortfilter.CompletionFilterModel(source=model, parent=self) try: cmd = cmdutils.cmd_dict[before_cursor[0]] except KeyError: log.completion.debug("No completion for unknown command: {}" .format(before_cursor[0])) return None argpos = len(before_cursor) - 1 try: completion = cmd.get_pos_arg_info(argpos).completion except IndexError: log.completion.debug("No completion in position {}".format(argpos)) return None if completion is None: return None model = self._get_completion_model(completion, before_cursor[1:]) return model