Exemplo n.º 1
0
 def _get_results(self, context):
     is_async = False
     results = []
     for cnt, parent in enumerate(self._parents):
         if cnt in self._prev_results:
             # Use previous result
             results += copy.deepcopy(self._prev_results[cnt])
         else:
             result = parent.merge_results(context)
             is_async = is_async or result[0]
             if not result[0]:
                 self._prev_results[cnt] = result[1]
             results += result[1]
     return [is_async, results]
Exemplo n.º 2
0
 def _get_results(self, context):
     is_async = False
     results = []
     for cnt, parent in enumerate(self._parents):
         if cnt in self._prev_results:
             # Use previous result
             results += copy.deepcopy(self._prev_results[cnt])
         else:
             result = parent.merge_results(context)
             is_async = is_async or result[0]
             if not result[0]:
                 self._prev_results[cnt] = result[1]
             results += result[1]
     return [is_async, results]
Exemplo n.º 3
0
    def _merge_results(self, context):
        use_prev = (context['input'] == self._prev_input
                    and context['next_input'] == self._prev_next_input
                    and context['event'] != 'Manual')
        if not use_prev:
            self._prev_merged_results = {}

        is_async = False
        merged_results = []
        for cnt, parent in enumerate(self._parents):
            if use_prev and cnt in self._prev_merged_results:
                # Use previous result
                merged_results += copy.deepcopy(
                    self._prev_merged_results[cnt])
            else:
                result = parent.merge_results(context)
                is_async = is_async or result[0]
                if not result[0]:
                    self._prev_merged_results[cnt] = result[1]
                merged_results += result[1]
        self._prev_input = context['input']
        self._prev_next_input = context['next_input']

        if not merged_results:
            return (is_async, -1, [])

        complete_position = min(x['complete_position']
                                for x in merged_results)

        all_candidates = []
        for result in sorted(merged_results,
                             key=lambda x: x['rank'], reverse=True):
            candidates = result['candidates']
            prefix = context['input'][
                complete_position:result['complete_position']]

            if prefix != '':
                for candidate in candidates:
                    # Add prefix
                    candidate['word'] = prefix + candidate['word']

            all_candidates += candidates

        # self.debug(candidates)
        max_list = self._vim.call('deoplete#custom#_get_option', 'max_list')
        if max_list > 0:
            all_candidates = all_candidates[: max_list]

        return (is_async, complete_position, all_candidates)
Exemplo n.º 4
0
    def _merge_results(self, context):
        use_prev = (context['input'] == self._prev_input
                    and context['next_input'] == self._prev_next_input
                    and context['event'] != 'Manual')
        if not use_prev:
            self._prev_merged_results = {}

        is_async = False
        merged_results = []
        for cnt, parent in enumerate(self._parents):
            if use_prev and cnt in self._prev_merged_results:
                # Use previous result
                merged_results += copy.deepcopy(self._prev_merged_results[cnt])
            else:
                result = parent.merge_results(context)
                is_async = is_async or result[0]
                if not result[0]:
                    self._prev_merged_results[cnt] = result[1]
                merged_results += result[1]
        self._prev_input = context['input']
        self._prev_next_input = context['next_input']

        if not merged_results:
            return (is_async, -1, [])

        complete_position = min(x['complete_position'] for x in merged_results)

        all_candidates = []
        for result in sorted(merged_results,
                             key=lambda x: x['rank'],
                             reverse=True):
            candidates = result['candidates']
            prefix = context['input'][
                complete_position:result['complete_position']]

            if prefix != '':
                for candidate in candidates:
                    # Add prefix
                    candidate['word'] = prefix + candidate['word']

            all_candidates += candidates

        # self.debug(candidates)
        max_list = self._vim.call('deoplete#custom#_get_option', 'max_list')
        if max_list > 0:
            all_candidates = all_candidates[:max_list]

        return (is_async, complete_position, all_candidates)
Exemplo n.º 5
0
 def _get_results(self, context: UserContext) -> typing.List[typing.Any]:
     is_async = False
     needs_poll = False
     results: typing.List[Candidates] = []
     for cnt, parent in enumerate(self._parents):
         if cnt in self._prev_results:
             # Use previous result
             results += copy.deepcopy(
                 self._prev_results[cnt])  # type: ignore
         else:
             result = parent.merge_results(context)
             is_async = is_async or result[0]
             needs_poll = needs_poll or result[1]
             if not result[0]:
                 self._prev_results[cnt] = result[2]
             results += result[2]
     return [is_async, needs_poll, results]