diff options
author | w0rp <devw0rp@gmail.com> | 2019-05-21 13:53:09 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2019-05-21 13:53:09 +0100 |
commit | 3e3801e81ef70d3b35b7c527fbd1b4f62d50bae5 (patch) | |
tree | 79ce1ca62632864002e002bef38e957fe46025bb /rplugin/python3/deoplete/sources/ale.py | |
parent | 89db85121c001fc60787647f012978a2328816a5 (diff) | |
download | ale-3e3801e81ef70d3b35b7c527fbd1b4f62d50bae5.zip |
Revert "Fix #2492 - Remove all Deoplete support for now"
This reverts commit 975cc7af8fbabe234a220c84e56b7ff719d8d959.
Diffstat (limited to 'rplugin/python3/deoplete/sources/ale.py')
-rw-r--r-- | rplugin/python3/deoplete/sources/ale.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/rplugin/python3/deoplete/sources/ale.py b/rplugin/python3/deoplete/sources/ale.py new file mode 100644 index 00000000..7ed2f6c0 --- /dev/null +++ b/rplugin/python3/deoplete/sources/ale.py @@ -0,0 +1,54 @@ +""" +A Deoplete source for ALE completion via tsserver and LSP. +""" +__author__ = 'Joao Paulo, w0rp' + +try: + from deoplete.source.base import Base +except ImportError: + # Mock the Base class if deoplete isn't available, as mock isn't available + # in the Docker image. + class Base(object): + def __init__(self, vim): + pass + + +# Make sure this code is valid in Python 2, used for running unit tests. +class Source(Base): + + def __init__(self, vim): + super(Source, self).__init__(vim) + + self.name = 'ale' + self.mark = '[L]' + self.rank = 100 + self.is_bytepos = True + self.min_pattern_length = 1 + + # Returns an integer for the start position, as with omnifunc. + def get_completion_position(self): + return self.vim.call('ale#completion#GetCompletionPosition') + + def gather_candidates(self, context): + # Stop early if ALE can't provide completion data for this buffer. + if not self.vim.call('ale#completion#CanProvideCompletions'): + return None + + if context.get('is_refresh'): + context['is_async'] = False + + if context['is_async']: + # Result is the same as for omnifunc, or None. + result = self.vim.call('ale#completion#GetCompletionResult') + + if result is not None: + context['is_async'] = False + + return result + else: + context['is_async'] = True + + # Request some completion results. + self.vim.call('ale#completion#GetCompletions', 'deoplete') + + return [] |