2020-06-18 23:07:37 +08:00
|
|
|
# ============================================================================
|
|
|
|
# FILE: __init__.py
|
|
|
|
# AUTHOR: Shougo Matsushita <Shougo.Matsu at gmail.com>
|
|
|
|
# License: MIT license
|
|
|
|
# ============================================================================
|
|
|
|
|
2022-04-23 12:09:55 +08:00
|
|
|
from importlib.util import find_spec
|
|
|
|
from pynvim import Nvim
|
2020-06-18 23:07:37 +08:00
|
|
|
import typing
|
|
|
|
|
|
|
|
from deoplete.deoplete import Deoplete
|
|
|
|
|
2022-04-23 12:09:55 +08:00
|
|
|
try:
|
|
|
|
# For Vim8
|
2020-06-18 23:07:37 +08:00
|
|
|
import vim
|
2022-04-23 12:09:55 +08:00
|
|
|
except ModuleNotFoundError:
|
|
|
|
# For neovim
|
|
|
|
# Note: neovim cannot import vim module
|
2020-06-18 23:07:37 +08:00
|
|
|
import pynvim as vim
|
|
|
|
|
|
|
|
Context = typing.Dict[str, typing.Any]
|
|
|
|
|
|
|
|
if hasattr(vim, 'plugin'):
|
|
|
|
# Neovim only
|
|
|
|
|
|
|
|
@vim.plugin
|
|
|
|
class DeopleteHandlers(object):
|
|
|
|
|
2022-04-23 12:09:55 +08:00
|
|
|
def __init__(self, _vim: Nvim):
|
|
|
|
self._vim = _vim
|
2020-06-18 23:07:37 +08:00
|
|
|
|
|
|
|
@vim.function('_deoplete_init', sync=False) # type: ignore
|
|
|
|
def init_channel(self,
|
|
|
|
args: typing.List[typing.Any]) -> None:
|
|
|
|
self._deoplete = Deoplete(self._vim)
|
|
|
|
self._vim.call('deoplete#send_event', 'BufReadPost')
|
|
|
|
|
|
|
|
@vim.rpc_export('deoplete_enable_logging') # type: ignore
|
|
|
|
def enable_logging(self, context: Context) -> None:
|
|
|
|
self._deoplete.enable_logging()
|
|
|
|
|
|
|
|
@vim.rpc_export('deoplete_auto_completion_begin') # type: ignore
|
|
|
|
def auto_completion_begin(self, context: Context) -> None:
|
|
|
|
self._deoplete.completion_begin(context)
|
|
|
|
|
|
|
|
@vim.rpc_export('deoplete_manual_completion_begin') # type: ignore
|
|
|
|
def manual_completion_begin(self, context: Context) -> None:
|
|
|
|
self._deoplete.completion_begin(context)
|
|
|
|
|
|
|
|
@vim.rpc_export('deoplete_on_event') # type: ignore
|
|
|
|
def on_event(self, context: Context) -> None:
|
|
|
|
self._deoplete.on_event(context)
|
|
|
|
|
|
|
|
|
|
|
|
if find_spec('yarp'):
|
|
|
|
|
|
|
|
global_deoplete = Deoplete(vim)
|
|
|
|
|
|
|
|
def deoplete_init() -> None:
|
|
|
|
global_deoplete._vim.call('deoplete#send_event', 'BufReadPost')
|
|
|
|
|
|
|
|
def deoplete_enable_logging(context: Context) -> None:
|
|
|
|
global_deoplete.enable_logging()
|
|
|
|
|
|
|
|
def deoplete_auto_completion_begin(context: Context) -> None:
|
|
|
|
global_deoplete.completion_begin(context)
|
|
|
|
|
|
|
|
def deoplete_manual_completion_begin(context: Context) -> None:
|
|
|
|
global_deoplete.completion_begin(context)
|
|
|
|
|
|
|
|
def deoplete_on_event(context: Context) -> None:
|
|
|
|
global_deoplete.on_event(context)
|