|
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