Example #1
0
 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:]))
Example #2
0
 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))
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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)
Example #6
0
 def _repeat(self, view: View, defx: Defx, context: Context) -> None:
     do_action(view, defx, view._prev_action, context)