|
6 | 6 | import sys
|
7 | 7 |
|
8 | 8 | from .decorators import plugin, rpc_export
|
9 |
| -from ..api import SessionHook |
| 9 | +from ..api import Nvim |
10 | 10 |
|
11 | 11 | __all__ = ('ScriptHost',)
|
12 | 12 |
|
@@ -36,7 +36,7 @@ def __init__(self, nvim):
|
36 | 36 | nvim.script_context = self.module
|
37 | 37 | # it seems some plugins assume 'sys' is already imported, so do it now
|
38 | 38 | exec('import sys', self.module.__dict__)
|
39 |
| - self.legacy_vim = nvim.with_hook(LegacyEvalHook()) |
| 39 | + self.legacy_vim = LegacyVim.from_nvim(nvim) |
40 | 40 | sys.modules['vim'] = self.legacy_vim
|
41 | 41 |
|
42 | 42 | def setup(self, nvim):
|
@@ -161,20 +161,14 @@ def writelines(self, seq):
|
161 | 161 | self.redirect_handler('\n'.join(seq))
|
162 | 162 |
|
163 | 163 |
|
164 |
| -class LegacyEvalHook(SessionHook): |
165 |
| - |
166 |
| - """Injects legacy `vim.eval` behavior to a Nvim instance.""" |
167 |
| - |
168 |
| - def __init__(self): |
169 |
| - super(LegacyEvalHook, self).__init__(from_nvim=self._string_eval) |
170 |
| - |
171 |
| - def _string_eval(self, obj, session, method, kind): |
172 |
| - if method == 'vim_eval': |
173 |
| - if IS_PYTHON3: |
174 |
| - if isinstance(obj, (int, float)): |
175 |
| - return str(obj) |
176 |
| - elif isinstance(obj, (int, long, float)): |
| 164 | +class LegacyVim(Nvim): |
| 165 | + def eval(self, expr): |
| 166 | + obj = self.request("vim_eval", expr) |
| 167 | + if IS_PYTHON3: |
| 168 | + if isinstance(obj, (int, float)): |
177 | 169 | return str(obj)
|
| 170 | + elif isinstance(obj, (int, long, float)): |
| 171 | + return str(obj) |
178 | 172 | return obj
|
179 | 173 |
|
180 | 174 |
|
|
0 commit comments