@@ -38,7 +38,9 @@ def __init__(self, nvim):
38
38
self ._specs = {}
39
39
self ._loaded = {}
40
40
self ._load_errors = {}
41
- self ._notification_handlers = {}
41
+ self ._notification_handlers = {
42
+ 'nvim_error_event' : self ._on_error_event
43
+ }
42
44
self ._request_handlers = {
43
45
'poll' : lambda : 'ok' ,
44
46
'specs' : self ._on_specs_request ,
@@ -49,8 +51,16 @@ def __init__(self, nvim):
49
51
self ._decode_default = IS_PYTHON3
50
52
51
53
def _on_async_err (self , msg ):
54
+ # uncaught python exception
52
55
self .nvim .err_write (msg , async_ = True )
53
56
57
+ def _on_error_event (self , kind , msg ):
58
+ # error from nvim due to async request
59
+ # like nvim.command(..., async_=True)
60
+ errmsg = "{}: Async request caused an error:\n {}\n " .format (
61
+ self .name , decode_if_bytes (msg ))
62
+ self .nvim .err_write (errmsg , async_ = True )
63
+
54
64
def start (self , plugins ):
55
65
"""Start listening for msgpack-rpc requests and notifications."""
56
66
self .nvim .run_loop (self ._on_request ,
@@ -153,6 +163,7 @@ def _load(self, plugins):
153
163
name = "python{}-{}-host" .format (sys .version_info [0 ], kind )
154
164
attributes = {"license" : "Apache v2" ,
155
165
"website" : "github.com/neovim/pynvim" }
166
+ self .name = name
156
167
self .nvim .api .set_client_info (
157
168
name , VERSION .__dict__ , "host" , host_method_spec ,
158
169
attributes , async_ = True )
0 commit comments