def _multi(self, view: View, defx: Defx, context: Context) -> None: for arg in context.args: args: typing.List[str] if isinstance(arg, list): args = arg else: args = [arg] do_action(view, defx, args[0], context._replace(args=args[1:]))
def _multi(self, view: View, defx: Defx, context: Context) -> None: for arg in context.args: args: typing.List[typing.Union[str, typing.List[str]]] if isinstance(arg, list): args = arg else: args = [arg] action_args = ((args[1] if isinstance(args[1], list) else [args[1]]) if len(args) > 1 else []) do_action(view, defx, str(args[0]), context._replace(args=action_args))
def do_action(self, action_name: str, action_args: typing.List[str], new_context: dict) -> None: """ Do "action" action. """ if not self._candidates: return cursor = new_context['cursor'] defx_targets = { x._index: self.get_selected_candidates(cursor, x._index) for x in self._defxs } import defx.action as action for defx in self._defxs: targets = defx_targets[defx._index] if not targets: continue context = self._context._replace(targets=targets, args=action_args, cursor=cursor) ret = action.do_action(self, defx, action_name, context) if ret: error(self._vim, 'Invalid action_name:' + action_name) return
def do_action(self, action_name: str, action_args: typing.List[str], new_context: typing.Dict[str, typing.Any]) -> None: """ Do "action" action. """ cursor = new_context['cursor'] visual_start = new_context['visual_start'] visual_end = new_context['visual_end'] defx_targets = { x._index: self.get_selected_candidates(cursor, x._index) for x in self._defxs } all_targets: typing.List[typing.Dict[str, typing.Any]] = [] for targets in defx_targets.values(): all_targets += targets import defx.action as action for defx in [ x for x in self._defxs if not all_targets or defx_targets[x._index] ]: context = self._context._replace( args=action_args, cursor=cursor, targets=defx_targets[defx._index], visual_start=visual_start, visual_end=visual_end, ) ret = action.do_action(self, defx, action_name, context) if ret: error(self._vim, 'Invalid action_name:' + action_name) return
def do_action(self, action_name: str, action_args: typing.List[str], new_context: dict) -> None: """ Do "action" action. """ if not self._candidates: return cursor = new_context['cursor'] context = self._context._replace( targets=self.get_selected_candidates(cursor), args=action_args, cursor=cursor) import defx.action as action for defx in self._defxs: action.do_action(self, defx, action_name, context)
def _repeat(self, view: View, defx: Defx, context: Context) -> None: do_action(view, defx, view._prev_action, context)