diff --git a/rplugin/python3/deoplete/child.py b/rplugin/python3/deoplete/child.py index 2203946a..79ee53fb 100644 --- a/rplugin/python3/deoplete/child.py +++ b/rplugin/python3/deoplete/child.py @@ -259,6 +259,8 @@ def _get_result(self, context: UserContext, if ctx['max_menu_width'] > 0: ctx['max_menu_width'] = max(10, ctx['max_menu_width']) + self._set_context_case(source, ctx) + # Gathering self._profile_start(ctx, source.name) ctx['vars'] = self._vim.vars @@ -300,6 +302,19 @@ def _gather_async_results(self, result: Result, except Exception as exc: self._handle_source_exception(source, exc) + def _set_context_case(self, source: typing.Any, + context: UserContext) -> None: + case = source.smart_case or source.camel_case + ignorecase = source.ignore_case + if case: + if re.search(r'[A-Z]', context['complete_str']): + ignorecase = False + else: + ignorecase = True + context['camelcase'] = source.camel_case + context['ignorecase'] = ignorecase + context['smartcase'] = source.smart_case + def _handle_source_exception(self, source: typing.Any, exc: Exception) -> None: if isinstance(exc, SourceInitError): @@ -359,17 +374,7 @@ def _get_candidates(self, result: Result, ctx['complete_str'] = context_input[ctx['char_position']:] ctx['is_sorted'] = False - # Set ignorecase - case = source.smart_case or source.camel_case - ignorecase = source.ignore_case - if case: - if re.search(r'[A-Z]', ctx['complete_str']): - ignorecase = False - else: - ignorecase = True - ctx['camelcase'] = source.camel_case - ctx['ignorecase'] = ignorecase - ctx['smartcase'] = source.smart_case + self._set_context_case(source, ctx) # Match matchers = [self._filters[x] for x @@ -410,8 +415,6 @@ def _get_candidates(self, result: Result, for candidates in sorted_candidates: ctx['candidates'] += candidates - ctx['ignorecase'] = ignorecase - # On post filter if hasattr(source, 'on_post_filter'): ctx['candidates'] = source.on_post_filter(ctx)