136
139
self.installed_plugins.append(plugin)
139
def on_message(self, message):
140
method_handlers = self.method_handlers
141
event_handlers = self.event_handlers
142
if message.type == 'request':
143
handler = method_handlers.get(message.name, None)
145
msg = 'no method handlers registered for %s' % message.name
147
message.reply(msg , error=True)
150
debug("running method handler for '%s %s'", message.name,
153
rv = handler(message.arg)
156
debug("method handler for '%s %s' returns: %s",
161
except Exception as e:
162
if isinstance(e, VimExit):
164
err_str = format_exc(5)
165
warn("error caught while processing call '%s %s': %s",
169
message.reply(err_str, error=True)
170
elif message.type == 'event':
171
handlers = event_handlers.get(message.name, None)
173
debug("no event handlers registered for %s", message.name)
175
debug('running event handler for %s', message.name)
177
for handler in handlers:
179
except Exception as e:
180
if isinstance(e, VimExit):
182
err_str = format_exc(5)
183
warn("error caught while processing event '%s %s': %s",
142
def on_request(self, name, args):
143
handler = self.method_handlers.get(name, None)
145
msg = 'no method handlers registered for %s' % name
149
debug("running method handler for '%s %s'", name, args)
154
debug("method handler for '%s %s' returns: %s", name, args, rv)
158
def on_notification(self, name, args):
159
handlers = self.event_handlers.get(name, None)
161
debug("no event handlers registered for %s", name)
164
debug('running event handlers for %s', name)
165
for handler in handlers:
169
def on_error(self, err):
170
warn('exiting due to error: %s', err)
191
self.vim.message_loop(lambda m: self.on_message(m))
175
self.vim.loop_start(self.on_request,
176
self.on_notification,
194
180
# This was copied/adapted from vim-python help